- 1. 【環境構築】Pythonの実行環境構築のベストプラクティス
- 2. PythonでPC用通知システムを作る
- 3. python GUI tcl/tk ウィンドウ全体リサイズ時にフォームサイズも伸縮させる
- 4. 【Python】「FileExistsError: [Errno 17] File exists: ‘xxx’」エラーには`exist_ok=True`オプションを
- 5. python GUI tcl/tk 子ウィンドウ起動 改善版:起動引数
- 6. Pythonの例外ハンドリング
- 7. 機械学習における重み減衰率を理解して過学習を防ごう
- 8. SMILES 化合物構造を文字列でPythonに入力する方法
- 9. pycordで作成したdiscord botのトークンをenvファイルに保存して、githubにpushしよう
- 10. Pythonの備忘録 (初心者)
- 11. Pythonの備忘録 (超初心者)
- 12. 包括的に効果検証を自動化する関数を作ってみた
- 13. ROS2とQt5を使って自作UIを作ろう!!(1)
- 14. [Django]Serializerのテストを作成してみる
- 15. PostgreSQL: バイナリーデータの取り扱い
- 16. df.assign(column=lambda)でif文がうまく機能しない件
- 17. 【pygame】pythonのpygameを使ってパズルゲームを作ってみた
- 18. pipで–break-system-packagesの問題について
- 19. ABC352 with Python (A~E)
- 20. CUDA環境構築のやり方(Pytorchも入れるよ)
【環境構築】Pythonの実行環境構築のベストプラクティス
– `python`の実行環境には`docker`を使用していたが、電力消費が多いのと接続クラッシュがしやすく悩んでいた。
– 仮想環境の構築が苦手だったが、一番良さそうな方法をLLMが教えてくれたのでメモ。はい、以下の手順でHomebrewを使ってpyenvをインストールし、pyenvで仮想環境を作成して、VSCodeで使用できるようにする方法をまとめました。
1. Homebrewでpyenvをインストールする
– ターミナルで以下のコマンドを実行 [1][2][4][10][13]
“`
brew install pyenv
“`
– シェルの設定ファイル(~/.bash_profileまたは~/.zshrc)に以下を追記 [1][3][4][13]
“`
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init -)”
“`
– 設定ファイルを再読み
PythonでPC用通知システムを作る
# PC用通知システム
notify-pyライブラリを使うことでPC用の通知システムが簡単に作れます。pip install notify-py
でライブラリをインストールできる
## テストコード(Linux用)
“`python:ntf
#!/usr/bin/python3from notifypy import Notify
# 通知オブジェクトを作る
n=Notify()
# 何も操作しなければ通知エリアにメッセージが残るように設定
n.urgency=”normal”
# メッセージタイトル
n.title=”テスト通知”
# メッセージ
n.message=”メッセージテスト”
# 通知送信
n.send()
# この他にも、アイコンや音 等も設定できる。“`
このファイルに実行権をつけてください。## 応用
外部データベースやAPIと連携することで、独自通知システムが可能になる。
python GUI tcl/tk ウィンドウ全体リサイズ時にフォームサイズも伸縮させる
# 実行サンプル
tcltk の GUIレイアウト配置で
grid や pack のオプションを適切に設定して
ユーザーがウィンドウを大きくしたり、小さくしたときに
配置された各部品(フォーム) が同時にサイズ伸縮するようにした例。設定していないと、フォームのサイズが変わらず、
違和感のある表示になってしまう。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423803/a2d20aae-4678-8c4d-f02b-a67d81707f52.png)
# 実行環境
windows10
python3.9.5pythonモジュール tcl/tk
# 実行手順
ソースコードを作成する
windowsコマンドプロンプトでプログラム作成したフォルダに移動し、下記実行する
“`
python プログラム名.py
“`# 参考 URL
https://tkdocs.com/tutorial/grid.html# ソースコード
https://github.
【Python】「FileExistsError: [Errno 17] File exists: ‘xxx’」エラーには`exist_ok=True`オプションを
# エラー内容
Pythonアプリで以下のエラーが発生。> FileExistsError: [Errno 17] File exists: ‘loggings’
# 原因と解決方法
BEFORE:
“`py
import osos.makedirs(“loggings”)
# FileExistsError: [Errno 17] File exists: ‘loggings’
“`AFTER:
“`py
import osos.makedirs(“loggings”, exist_ok=True)
“``os.makedirs`関数は、既に存在するディレクトリを作成しようとすると`FileExistsError`を発生させる。
これを防ぐためには、`os.makedirs`関数の`exist_ok`パラメータを`True`に設定すると良いです。デフォルトでは`False`になっています。
`True`にすると、ディレクトリが既に存在していてもエラーが発生せず、ディレクトリが存在しない場合のみ新たに作成されるようになりました。
python GUI tcl/tk 子ウィンドウ起動 改善版:起動引数
# 実行サンプル
子ウィンドウ起動![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423803/6bc2b158-ec33-a9a1-c926-df86e9aa1c94.png)
・ボタン押下で mode 指定して、子ウィンドウ起動
モード指定により、画面GUIが違うものとして表示される・ChildWindowが既に存在する場合はメッセージボックスで通知し、新たに開かないようにする
・childWin.py で mode を引数として受け取る
・childWin 起動後、画面が閉じられるまで、次の処理は実行されないようにする
・00_mainWin.py と childWin.py で情報受け渡しする
・ childWin.py func_initを複数用意することで、GUI表示や、渡す引数を自由度高く切り替えできるようにする
例)↓これらを 00_mainWin.py から呼び出す
func_init_01(),
func_init_02(self,
Pythonの例外ハンドリング
## Pythonの例外ハンドリングについて学習
Javaと同じ点や異なる点を整理しながらPythonの例外ハンドリングについて学習する。## try節
Javaと同じで、例外が発生する可能性のある箇所で使う。exceptかfinallyのどちらかは必須。## except節
Javaのcatchと同じで例外を捕まえることができる。
asで一時変数を定義することができる。## else節
すべてのexcept節よりも後ろにelse節を置くことができ、例外が発生していない場合の処理を記載することができる。:::note info
どのような使い方をすれば効果的なのかを調べる。
:::## finally節
Javaと同じで、例外の発生有無にかかわらず実行される処理を書くところ## 基底クラスでの例外捕捉
Javaと同じで、except節で基底クラスを指定することで、継承しているクラス例外を捕捉することができる。## raiseで例外送出
Javaのthrowsと同じようにraiseで例外を送出することができる。## with文
Javaの[try-with
機械学習における重み減衰率を理解して過学習を防ごう
モデルの過学習を防ぐための手法の1つ。数学的にはL2正則化と同義。
重みの値が大きくなりすぎるのを防ぐために、重みの大きさに比例したペナルティを損失関数 L に与える。
$$L’ = L + \frac{\lambda}{2} \sum_{i=1}{w_i^2}$$
ここでλは正則化の強さを調整するハイパーパラメータであり、Transformersライブラリに含まれるTrainingArgumentsで引数として使えるweight_decayではこの値を設定している。
– λの役割: 過学習の防止
重みが大きいと、小さな入力の変化に対しても出力が大きく変動することがある。
これはモデルがデータの微小な変動やノイズに対して敏感に反応している状態を示しており、過学習の典型的兆候である。
λを増やすことで、モデルはデータの本質的なパターンを捉えつつ、訓練データのノイズに過剰に適合することを防げる。
その結果、モデルによる予測は入力データの微小な変化に対して頑健になる。
SMILES 化合物構造を文字列でPythonに入力する方法
# はじめに
こんにちは、@sasshi_iです。ケモインフォマティクスの分野では、化合物の構造を計算機に入力するため様々な表現方法があります。
今回は文字列で分子構造を表現するSMILESについて紹介します。
# SMILESとは?
## 概要
SMILES(Simplified Molecular Input Line Entry System)は、**分子の構造を表現するために文字列を使用する表記法**です。1980年代に開発されたこの表記法は、分子や化学反応をコンピュータプログラムに簡単に入力し、保存するために広く使用されています。
例えば、解熱鎮痛薬のバファリンの成分であるアスピリンはSMILESだと `CC(=O)Oc1ccccc1C(=O)O`と表現されます。
SMILESはrdkitを用いてプログラムに入力できます。
rdkitはケモインフォマティクスの分野で広く使用されるpythonのライブラリです。“`python
from rdkit import Chem
Chem.MolFromSmiles(‘CC(=O)Oc1ccccc1C(=O)O’
pycordで作成したdiscord botのトークンをenvファイルに保存して、githubにpushしよう
# はじめに
前回の記事で[pycordを使ったdiscord botの作成記事](https://qiita.com/maooz4426/items/2c39929756af5541648f)を書いたのですが、discordbotのアカウントトークンを直書きしていました。
これをGitでpushすると、、、“`
git push origin main
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1.02 KiB | 1.02 MiB/s, done.
Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local
Pythonの備忘録 (初心者) <数学の基礎計算(三角関数)>
僕がPythonのmath library使い方をド忘れした時のための備忘録を作成します。
:::note warn
あくまで記事は使用例です
厳密さを必要とする場合は下記LINKを参照してください。
https://docs.python.org/ja/3/library/math.html
:::math libraryのimport “`python
import math
“`
:::note info
:::
三角関数の使用例 “`python
theta = math.radians(45)
print(theta)
“`
:::note
出力
0.7853981633974483
:::
角度からラジアンに変換
詳細は下記wiki参照
[^KEY]:
https://ja.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0三角関数の計算結果 “`
Pythonの備忘録 (超初心者)
僕がPythonの使い方をド忘れした時のための備忘録を作成します。
Pythonのif文では制御構造を使用して、同じコードブロックを正誤判定を実行することができる
![スクリーンショット 2024-04-22 14.24.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575336/19c43b75-d615-a729-5d44-3510f747cffc.png):::note warn
あくまで上記はイメージです
厳密さを必要とする場合は下記LINKを参照してください。
https://www.python.org/
:::
今回はif文の使い方の基本を書き下ろしておきます。if文を設定
“`python
if 5/2 = 2.5
print(“5は2で割った時2.5になります”)
“`
:::note alert
エラー
if 5/2 = 2.5
^
Sy
包括的に効果検証を自動化する関数を作ってみた
以前に効果検証のプログラムを作ったのですが、
https://qiita.com/murasaki1994/items/1b3bc37ee01203363edc
これについて図を作り差・t値・p値を各因子から自動で算出するプログラムを作ってみました。
# 関数
“`Python3
import scipy.stats as stats
import matplotlib.pyplot as plt
def effecttest2(df, columns, y_name, auto=False):
ave = []
dtr = []
pos = []
lab = []
x = 0
for col in columns:
values = list(set(df[col].values))
tmp_ave = []
tmp_dtr = []
tmp_pos = []
tmp_lab = []
for val in values:
ROS2とQt5を使って自作UIを作ろう!!(1)
# はじめに
ロボコンをしていると、強豪校は自作のコントロールUIを作ったりしているのをよく目にします。
今回私がUIを書こうと思ったのは、それが単純にかっこいいと思ったからです。しかし、いざ書こうとすると、どのように書いたらいいかわかんなくなると思います。そんな人のためにこの記事を書きました。少しでも役に立つと幸いです。思ったより長くなりそうなのでpartを分けます。今回はROS2とQt5の連携の仕方です。
# 今回の学ロボで作ったUIの機能(ざっくり)
今回のUIに求めた機能は以下のようになっています。
* ロボットに乗せてあるカメラの画像の表示
* ボタンによってロボットに司令を送信する
* ロボットが今どこにいるのかの可視化
* ロボットの状態の表示
完成品はもう少しタイマー等の機能が増えて以下のようになりました。
![IMG_8558.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3531353/1104d68c-f8b1-fdee-bd7e-3045a1123874.jpeg)
この記事では
[Django]Serializerのテストを作成してみる
## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。## 環境
django5.0
↓ dockerでの開発環境作成はこちらhttps://qiita.com/mkthrkw/private/588226d30690c707d2b8
↓ 認証ユーザーモデルはこちらをそのまま利用
https://qiita.com/mkthrkw/private/b2ea8fb8f33a68faab87
## やりたいこと
Serializerのテストを一通り書いてみる## 前回
### Modelのテスト
https://qiita.com/mkthrkw/items/c3fcebcbc17fe761bdd1
### Viewのテスト
https://qiita.com/mkthrkw/items/acd54a56f5cf600ca97b
## テストについて下調べ
おもに下記のようなテストをやる模様。
|No|カテゴリ|内容|
|–|—-|—-|
|1|シリアライザインスタンスの作成|テスト対象のシリアライザインスタンスを作成|
|2|バリ
PostgreSQL: バイナリーデータの取り扱い
こちらのページを参考にしました。
[Aurora(PostgreSQL)のbytea列にバイナリデータをpythonでインサートする](https://zatoima.github.io/aws-aurora-bytea-insert-binary-data.html)## PostgreSQL への接続情報
User: scott
Password: tiger123
DataBase: db_pdf## テーブルの用意
“`sql:create_table.sql
create table table_pdf
(
id int primary key,
pdf bytea not null
);
“`“`text
$ psql -U scott db_pdf < create_table.sql CREATE TABLE ``` ## データの挿入 fuji.pdf というデータを挿入します。 ```py:pdf_insert.py #! /usr/bin/python import psycopg2 import psycopg2.
df.assign(column=lambda)でif文がうまく機能しない件
## 概要
以下のコードの実行するとどうなるでしょう?
### コード
“`python
import pandas as pd
df = pd.DataFrame(data={ “A”: [1, 0, 1], “B”: [101, 102, 103]})
df = df.assign(C=lambda x: x.B if x.A == 1 else 0)
df
“`### 結果
“`shell
—————————————————————————
ValueError Traceback (most recent call last)
/var/folders/vr/jqnz40rd3hnfhg8qrp388zyr0000gn/T/ipykernel_29170/1740181337.py in ?()
1 import pandas as pd
2 df = pd.DataFrame(dat
【pygame】pythonのpygameを使ってパズルゲームを作ってみた
## はじめに
みなさんこんにちは!今回はpythonのpygameを使ってパズルゲームを作りたいと思います!
みなさんが知っているかわかりませんが自分はとある国民的アニメ作品のバイオハザードのゲーム実況を見ることが大好きでした!(念の為詳しい名前は伏せさせていただきます…)
その作品の終盤に閉じ込められたガキ大将を助けるイベントがあるのですが助けるためのパズルゲームが妙に印象的だったのを覚えています!
前置きが長くなりましたが今回はpygameを用いてそのパズルゲームをなるべく再現しようと思います!## 準備すること
### 環境
M1 MacBook
pythonバージョン : 3.9.12
pygame : 2.5.1### 環境構築
pythonは事前に入れていることを前提にします1.ターミナルを開いていただき、今回実行するためのフォルダーを新しく作成してください!今回はpuzzleというファイル名にします!そしてpuzzleフォルダーに移動してください!
“`
mkdir puzzle
“`
“`
cd puzzle
“`2.次に環境の構築を行います
pipで–break-system-packagesの問題について
“`
python3 -m pip install ultralytics
error: externally-managed-environment× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.If you wish to install a Python library that isn’t in Homebrew,
use a virtual environment:python3 -m venv path/to/venv
source path/to/venv/bin/activate
python3 -m pip install xyzIf you wish to install a Python app
ABC352 with Python (A~E)
ABC352のA~E問題をpythonで解説していきます。筆者はA-Eの5完でした。
# A – AtCoder Line
## 問題
鉄道の AtCoder 線には $N$ 個の駅があり、それぞれ $1, 2, \ldots, N$ の番号が付けられています。AtCoder 線では、駅 $1$ を始発駅として駅 $2, 3, \ldots, N$ の順に各駅に停車する **上り列車** および、駅 $N$ を始発駅として駅 $N – 1, N – 2, \ldots, 1$ の順に各駅に停車する **下り列車** が運行されています。
高橋君は AtCoder 線の上り列車あるいは下り列車の一方のみを使うことで駅 $X$ から駅 $Y$ まで移動しようとしています。
この移動の間に高橋君が乗っている電車が駅 $Z$ に停車することがあるか判定してください。
https://atcoder.jp/contests/abc352/tasks/abc352_a
## 考察
2つの駅について、番号が小さいほうを$X$、大きいほうを$Y$とすれば、後は$Z$がその間にあるかを確か
CUDA環境構築のやり方(Pytorchも入れるよ)
# はじめに
今回はyoloをgpu環境で使うための環境構築をします。
# 実行環境
* ubuntu20.04
* kernal 5.11
# nvidia_driver環境構築
* nouveau ドライバの無効化(上から順に実行)
“`
echo ‘blacklist nouveau’ | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
echo ‘options nouveau modeset=0’ | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
cat /etc/modprobe.d/blacklist-nouveau.conf
sudo update-initramfs -u
“`
* 現状確認
“`
lspci | grep -i nvidia
dpkg -l | grep nvidia
dpkg -l | grep cuda
“`
* cudaとdriverの削除
“`
sudo apt-get –purge remove nvidia-*
sud