- 1. Memo
- 1.1. code
- 1.1.1. python で別のアプリのウィンドウハンドルを取得
- 1.1.2. GitHub Actions で簡単なビルドチェックを作る
- 1.1.3. Flaskを開発サーバーで起動させてみた
- 1.1.4. M1MAX でStable Diffusionを動かしてみたかった話
- 1.1.5. 閏年か否かを求めるコード
- 1.1.6. [python] 存在するファイルを探す方法 -glob-
- 1.1.7. 夏目漱石さんの「こころ」の心を感情分析プログラムで解析してみた
- 1.1.8. 3分で python仮想環境作成 ~ ダブルクリックで実行 できるようにする
- 1.1.9. 気象庁の過去の1時間毎の気象データをPythonでスクレイピングしてPostgreSQLにINSERTしてみた
- 1.1.10. OpenCVとPILでアクリルバッジの型枠画像を作成する
- 1.1.11. 色の塗り分け問題をアルゴリズムで解いてみる
- 1.1.12. ASEでGNNを用いたCalculatorを自作する
- 1.1.13. pandas dataframeの結合、分割をしてみた
- 1.1. code
Render.comにPythonアプリをデプロイしてみた(Herokuが無料利用できなくなることに備えて)
# はじめに
Herokuユーザには衝撃的だった「Heroku無料やめるってさ!([heroku next chapter](https://blog.heroku.com/next-chapter))」事変。。僕も個人で作ったWebアプリはHerokuで稼働させてもらっていたので、かなりの衝撃でした。
ただ、無料で使えていること自体が奇跡的だったのでHerokuの皆様には感謝しかないです。とは言え、いきなり有料で使うことができなかったり、テスト環境として無料で簡単にデプロイできる環境がほしいのが現実。
そういう背景もあり、Herokuに代わるPaaSを探していたところ出会ったのが「Render.com」でした。
「Render」は端的にいうとHerokuライクに使えて無料枠もかなり充実しているPaaSです。
今回初めて使ってみたのですが、使い方・デプロイ方法はHerokuとよく似ています。
基本的にはコードをそのまま移植できるので、代替サービスとしては優秀すぎるサービスでした。ただ、DBは無料で使い続けることができないので、その点は要注意。
また、日本ではHerok
[OpenCV]inRange(), floodFill()で取得したマスクの「座標」と「元の色」を取得する
inRange()で色範囲を絞ってマスクを取得したとき、
範囲内の色のピクセルの座標と、実際の各ピクセルのBGR情報の取得の、numpyを駆使した実装方法をご紹介します。np.where()の戻り値は、条件を満たす**要素のインデックスのリスト**なので、今回のケースでは要素のインデックス=y,x座標のため、簡単に座標が取得できちゃいます
また、**ファンシーインデックス**で配列の[]にリストを渡すことで複数の要素を取得可能なので
取得した座標のリストをそのまま渡すことで、たった一行でマスクしたピクセルの実際のBGRのリストを取得が可能!
この手の処理に多重forブン回さなくて済むpythonサイコー?# inRange()で取得したマスクの座標・元の色を取得
“`python
import cv2
import numpy as npimg = cv2.imread(r”src.bmp”)
lower = (21, 61, 57)
upper = (21, 61 ,57)
mask = cv2.inRange(img, lower, upper)
Blenderの「辺ループのブリッジ」
## 概要
Blenderの「辺ループのブリッジ」を紹介します。
2つの面を選んで辺ループのブリッジをすると、面をブリッジすることができます。
下図は、2つの球の面をランダムに選んでブリッジを作成したものです。30回繰り返しています。## Pythonで実行
下記では、`bpy.ops.mesh.bridge_edge_loops(number_cuts=20)`で辺ループのブリッジをしています。`number_cuts`はブリッジの分割数です。最後にスムーズとサブディビジョンサーフェスをかけて紐っぽくしています。面の向きによっては内側を通るので穴が空いたようになります。
“`py
import numpy as np
import bmesh
import bpy
import randomdef center
Google Colab環境でpystan3.3 (2)
## はじめに
前回からの続きで、PyStan 3で結果の要約やのグラフ(Rstan教科書に出てくるやつ)の出し方のメモ。
[Google Colab環境でpyStan 3.3を利用する](https://qiita.com/msx222/items/37da015a06758a05c990)
## 結論
ArviZを利用する。
※google colabに初めからインストール済。
※pyMC3, NumPyro など他のライブラリも対応。[ArviZ: Exploratory analysis of Bayesian models](https://python.arviz.org/en/latest/index.html)
“`python
# Pystan 3.5 Quick Start
import stanschools_code = “””
data {
intJ; // number of schools
real y[J]; // estimated treatment effec
python、画像の読み込みと表示
# やること
– 画像の読み込み# ライブラリ
– cv2 : python用のOpenCV# コード
“`py
import os
import cv2 # cv2のインポートimg_dir = “img_dir” # img_dir:画像データのディレクトリ
img_names = os.listdir(img_dir)for img_name in img_names:
img_path = os.path.join(img_dir, img_name)#画像の読み込み、-1は元画像のチャネルのまま読み込むフラグ
img = cv2.imread(img_path, -1)#画像の表示
cv2.imshow(“img_title”, img)
cv2.waitKey(0) # 0の数字を変えると表示のタイミングが変わる。#画像表示ウィンドウを閉じる
cv2.destroyAllWindows()“`
[python] Excelの散布図グラフを作成する
# はじめに
グラフの作成は範囲の指定だったり、タイトルの追加だったり、単純作業として時間がかかってしまう。
私の会社では古い機械で測定をすることが多く、エクセルのフォーマットが複雑で`pandas`で扱いにくい場合が多い。
`openpyxl`を用いて`.xlsx`のグラフの作成を自動化することを目標とする。# 環境
python 3.7.8
window 10# Data
![スクリーンショット 2022-09-18 235948.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821152/aa07349d-edb4-7835-1bc8-03ef39b578b8.png)
自分が会社で扱うデータを再現したエクセルでデータ同士が離れている。(実際はもっと複雑で前処理が必要)# Code
### ファイルの開いてシートを選ぶ
“`python
import openpyxlfile_path = ‘./excel_file.xlsx’
## .xlsxの場合
wb = op
pandasで同じコラムで結合(左右どっちかを優先)
Memo
こちらの記事はメモとして、記載しました。
内容はとても簡単であり、pandasのドキュメントに書いてあることを書いただけです。
[pandasのドキュメント]
https://note.nkmk.me/python-pandas-merge-join/code
“`:python
import pandas as pd
df_left = pd.DataFrame({‘a’: [‘a_1’, ‘a_2’, ‘a_3’], ‘b’: [‘b_1’, ‘b_2’, ‘b_3’]})
df_right = pd.DataFrame({‘a’: [‘a_1’, ‘a_2’, ‘a_4’], ‘c’: [‘c_1’, ‘c_2’, ‘c_4’]})print(df_left)
# a b
# 0 a_1 b_1
# 1 a_2 b_2
# 2 a_3 b_3print(df_right)
# a c
# 0 a_1 c_1
# 1 a_2 c_2
# 2 a_
python で別のアプリのウィンドウハンドルを取得
何かしら windows の作業を自動化をするときは、特定のアプリのウィンドウだけ扱うことが少なくない。ウィンドウ操作について最小限のコードをメモしておく。
—
方法2つ記載する
・外部アプリを開始してそのウィンドウハンドルを取得
・既に起動しているアプリのウィンドウハンドルを取得( 「# %%」の行は jupyter notebook 形式のセル区切りに相当します)
“`py:window_test
# %%
import subprocess
import time
import pyautoguiimport win32gui
import win32con
import win32process# %%
# プロセスIDからウィンドウハンドルを取得する関数
def get_hwnds_from_pid(pid):
def callback(hwnd, hwnds):
if win32gui.IsWindowVisible(hwnd) and win32gui.IsWindowEnabled(hwnd):
_
GitHub Actions で簡単なビルドチェックを作る
# この記事は?
最近、GitHub Actions をちょっと勉強し、その練習ついでにつくったものを紹介。
Linux コマンドの基礎が分かっている前提です。また、GitHub Actions の詳しい使い方などについては説明していません。
# C/C++ のビルドチェック
さして難しいことはありません。全ての `.c` ファイルを gcc にかける、ただそれだけです。
“`yml
name: Build Checkon: push
jobs:
build_test:
runs-on: ubuntu-latest
steps:
– uses: actions/checkout@v3
– name: Building test in GCC
run: find * -type f -name ‘*.c’ | xargs -r -t -L 1 gcc -c -o /dev/null
“`1. `actions/checkout@v3` で、リポジトリのファイルをワークスペースに出力
2. `find` コ
Flaskを開発サーバーで起動させてみた
# 準備
flaskと、jinja2が必須となります。
“`
# pip install flask
# pip install jinja2
“`
# 基本構成
最低限の機能だけで動かすのであれば、以下の構成だけでよいです。
– index.py : 裏処理プログラム、ルーティングを書いたり、色々な処理を書く
– templates : HTMLテンプレートを保存するディレクトリ(名称変更不可)
– index.html : HTMLテンプレートファイル
“`
# tree
.
├── index.py
└── templates
└── index.html
“`
# プログラムを書いてみる
設定したブックマークを表示させるだけのページを作成する。
“`python:index.py
from flask import Flask
from flask import render_templateapp = Flask(__name__)
@app.route(‘/’)
def index():
site = {
‘title’:’ブ
M1MAX でStable Diffusionを動かしてみたかった話
M1/M2などのApple Silicon搭載のMacで生成モデルStable Diffusionを実装してみたので共有します。
この記事は、Stable DiffusionはPython3.8でなければならない部分やM1特有の問題がありますが、
Anacondaも使わずにPython3.9系で頑張って動かすと言う涙なみだのドキュメンタリーです。# 動作させるMacの情報
今回使用するMacは
14インチMacBook Pro 2021
M1MAX 10コアCPU 24コアGPU
メモリ32GB
となります。stable-diffusionのリポジトリをクローンしましょう。
“`
git clone https://github.com/CompVis/stable-diffusion
“`stable-diffusionフォルダに移動します
“`
cd stable-diffusion
“`https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
にアクセスして、ユーザー登録して
Dow
閏年か否かを求めるコード
# 閏年か否かを求めるコード
“`
import tkinter as tkdef dispLabel():
a = int(EditBox.get())
str_a=str(a)if a%400 == 0 :
lbl3.configure(text = str_a + “年は閏年です。”)elif a%100 == 0 :
lbl3.configure(text = str_a + “年は閏年ではありません。”)elif a%4 == 0 :
lbl3.configure(text = str_a + “年は閏年です。”)else :
lbl3.configure(text = str_a + “年は閏年はありません。”)root = tk.Tk()
root.geometry(“300×200”)EditBox = tk.Entry(width=6)
EditBox.place(x = 230, y = 20)btn = tk.B
[python] 存在するファイルを探す方法 -glob-
# はじめに
業務の自動化を進めるにあたって`glob`を使用してファイルのパスを得る方法をまとめる。# 環境
python 3.7.8
window 10
# Code### 特定のパスに属するファイル
文字の長さに関係なく、文字を含む場合は`*`をつける
“`python
import glob## listとして結果を得る
file_list =glob.glob(r’C:\Users\junsa\Desktop\paison\*.py’)
print(file_list)
# [‘C:\\Users\\junsa\\Desktop\\paison\\labo.py’, ‘C:\\Users\\junsa\\Desktop\\paison\\9abo.py’]## 下位フォルダも含めたファイルを探す
file_list =glob.glob(r’C:\Users\junsa\Desktop\paison\**\*.py’, recursive=True)
print(file_list)
# [‘C:\\Users\\junsa\\Desktop\\paison
夏目漱石さんの「こころ」の心を感情分析プログラムで解析してみた
こんにちにゃんです。
水色桜(みずいろさくら)です。
今回は言語商会・長岡技術科学大学、山本先生の日本語感情表現辞書( https://www.jnlp.org/GengoHouse/snow/d18 )を用いて夏目漱石さんの「こころ」(青空文庫( https://www.aozora.gr.jp/
))の感情分析を行っていきたいと思います。
山本先生のコーパスは単語に対して被験者の3人が48の感情のうちどの感情を感じたかが記されています。このコーパスを用いることで、文章に含まれている最も強い感情を特定することが可能です。
解析結果は次のような感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2847349/148cce5c-431b-0c30-4581-ad4bfe50d081.png)
内訳を見ると、好きという感情が最も多く出現していることがわかります。ネタバレになってしまうので詳しくは言えませんが、「こころ」という文章の内容を鑑みると適切な内訳であると感じました。
3分で python仮想環境作成 ~ ダブルクリックで実行 できるようにする
windows 10 で python スクリプトをダブルクリックで動かすまでためのテンプレート。
全部スクリプトでセットアップするので早い。—
PowerShellの設定
“`ps1:管理者powershellで叩く
Set-ExecutionPolicy -ExecutionPolicy Bypass
# 大丈夫か?と聞かれたら「A」や「Yes」を叩く
“`1. [python 3.6.8](https://www.python.org/downloads/release/python-368/)をインストール
バージョンは不問。例として3.6系。
「Pathに通すか?」というチェックがあったらチェックを入れます。2. python仮想環境
[create_venv.zip](https://www.dropbox.com/s/tya79dlc7ksq5zt/create_venv_v05.zip?dl=1)をダウンロードして展開する。
フォルダの中身を仮想環境を設置したいフォルダにコピー
python3仮想環境作成.ps1 を
気象庁の過去の1時間毎の気象データをPythonでスクレイピングしてPostgreSQLにINSERTしてみた
# はじめに
過去に投稿した下記の記事の続編です。今度は1時間ごとのデータをスクレイピングします。
– [気象庁の1日毎の過去の気象データをPythonでスクレイピングしてPostgreSQLにINSERTしてみた]( https://qiita.com/hase-k0x01/items/491d2d80596e014eb7d3)## やること
– 気象庁の1時間ごとの気象データをスクレイピングする
– 取得したデータをPostgreSQLのDBにINSERTする## 環境等
– プログラミング言語: Python3.10
– DBサーバ: Amazon AWS RDB
– 実行環境: Amazon AWS EC2
– スクレイピングに使うライブラリ: BeautifulSoup## 参考にした情報
制作にあたり、以下の記事と記載のコードを参考にさせていただきました。
– [GoogleColaboratoryで気象庁の過去気象データをスクレイピングしてみた。](https://qiita.com/Cyber_Hacnosuke/items/122ce
OpenCVとPILでアクリルバッジの型枠画像を作成する
## 概要
こんな画像から
![side.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175214/a869d441-1bef-11ae-6acd-fba5aa194129.png)
出典:[フォクすけの画像](https://foxkeh.jp/downloads/materials/)こんな画像を作成します。
![ret.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175214/d8990a15-a2e2-3559-98f4-bd2e244ea65c.png)
画像は透過PNGであることが前提です。## コード
“`Python
import numpy as np
import cv2
from PIL import Image, ImageFilter# 上下左右に縁取りを追加
def add_border(img, size):
border_h = np.zeros((size,
色の塗り分け問題をアルゴリズムで解いてみる
## はじめに
身近なもので何かないかなと考えていたのですが、昔やった色塗り問題を思い出しました。例えば下のように3マスあって、3色で色を塗り分けた場合、塗り方が何通りあるかです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1259951/22dacff6-5637-a8f4-3899-a56e3a8d44ef.png)
マスを区別するので全体は3×3×3=27通りです。この時、隣同士で色が重複しない塗り方は何通りあるか考えてみましょう。
・・・正直アルゴリズム使わなくても、ごり押しで求められます(★の部分で12通り)。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1259951/5cb97427-a171-4420-a942-8bce4061157d.png)
でもせっかくなので、アルゴリズムを使って考えてみることにしました。
## アルゴリズム的な何かを書いてみる
ASEでGNNを用いたCalculatorを自作する
## はじめに
この記事ではASEで自作の`Calculator`を実装する方法について解説します。材料分野でよく使われるGNNモデルを用いて結晶構造のエネルギーを算出する`Calculator`を例とします。## 必要なパッケージ
* ase
* torch
* ocpmodels## コード
いきなりですが、コードは以下になります。“`python
from __future__ import annotationsfrom ase import Atoms
from ase.calculators.calculator import Calculator, all_changes
from ocpmodels.models import BaseModel
from ocpmodels.preprocessing.atoms_to_graphs import AtomsToGraphs
import torchALL_CHANGES = tuple(all_changes)
class NNPCalculator(Calculator):
“””
pandas dataframeの結合、分割をしてみた
米国国勢調査のデータを使って、データの並べ替えをしてみました。
[nst-est2019-01](https://science-log.com/wp/wp-content/uploads/2021/07/nst-est2019-01.csv)## 環境
Python version:3.9.7
OS: windows 10.0## イメージ
下記用に年ごとに並べられたデータを年ごとに下に追加していくようにデータを並び替えをします。また、並び替えをしたデータをもとの形に戻します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176158/340c8e5b-a6c2-d927-d7e9-2cb894d7d230.png)## プログラム
まず、上記csvファイルをダウンロードして、実行させるプログラムを同じディレクトリに配置します。
行っていることは、単純で並べたいデータフレームを各年毎に作って、それをconcatでどんどん下へ結合しているだけの操作になります。
データフレー