たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

python

Pythonのデフォルト引数とクラスインスタンス - 再利用が引き起こすバグ

Pythonは言語仕様としてデフォルト引数を再利用する。これは mutable オブジェクトとの組み合わせで容易にバグを引き起こす。 言語仕様 関数定義時にデフォルト引数が評価されて確定し(=評価は一度きり)、これが関数呼び出し時に渡される。 The default va…

OmegaConf の入れ子構造化コンフィグ

OmegaConf は構造化コンフィグの入れ子(Nesting structured configs)をサポートしている(docs - Nesting structured configs)。 その際、default_factory の利用が推奨されている。 @dataclass class Group: name: str = MISSING admin: User = field(de…

パディング/padding in PyTorch

幅のある入力をスライドさせながら処理していくとき、左右端をどうするかという問題がでてくる。 端を何かしらの値で埋める(入力をちょっと大きくしておく)処理をパディングという。 特にPyTorchにおけるパディング実装のまとめ。 F.pad torch.nn.function…

librosa `amplitude_to_db` の最小dB

librosa.amplitude_to_db の最小dBは aminパラメータで規定される. デフォルト値は amin=1e-05 、これはdBとしていくつになるか. import librosa import numpy as np mel = np.array([[1.01*10**-5, 1.0*10**-5, 1.0*10**-6]]) dB = librosa.amplitude_to_db…

librosaの`amplitude_to_db`は扱い注意

librosa.amplitude_to_db は linear-amplitude spec を log-power spec へ変換する関数1. linear-ampをlog-ampにするのではない, 注意. この用途で楽をしたい場合、librosa.power_to_db へ linear-ampを突っ込めばいい. # 300/3 = 100 = 10^2 = 2B = 20dB S …

PyTorchラッパーとCheckpointing

※CoI: PyTorch-Lightning のcontributor (Checkpointing周り) です 比較 wrapper checkpoint local/remote resume/nullable Catalyst ☑ ☑ / □ ☑ / ? Lightning ☑ ☑ / ☑ ☑ / ☑ Ignite ☑ ☑ / △ ☑ / ? △: no direct support, but implementable (handler argume…

S3アクセス抽象化

ファイルシステムアクセスに抽象化。 fsspec -> S3Fs -> botocore

Python iterable/iteratorの定義

iterable iterable1は自身のメンバーを1度に1つ返しうるオブジェクトである2。具体例はlist, str, tuple, dict, file obj, iterを実装するclassなどなど。 build-in関数のiter()に渡すとiteratorが返る。 iter()関数相当の操作を様々な言語機能が暗示的にサ…

Python Buildとinstallの架け橋 - wheel -

wheelとは、ビルド済みパッケージのインターフェス/フォーマットである。 Specification PEP 427 -- The Wheel Binary Package Format 1.0 This PEP describes a built-package format for Python called "wheel". 背景 ライブラリの導入にはbuildとinstalla…

PyTorch Lightning

datamodule LightningDataModuleはPyTorch Datasetの軽いWrapper. Train/Eval/Testの分割やDataset preparation & runtime setupなどを包括. moduleがやってくれる仕事はほとんど無くて、どうも分散環境だといいことがあるみたい. newしてtrainerにぼんっと…

Pythonモジュール/パッケージの闇にのまれないために

module resolution (モジュール解決) find build-in module find from sys.path directory list sys.pathのデフォルトlistは 実行スクリプトの場所 || cd PYTHONPATH インストールごとのデフォルト (?) パッケージ / package Python用語. モジュールの詰め合…

PyQt5: matplotlib

PyQt5を用いたGUIに対してmatplotlibの描写システムを埋め込むことは可能 必要な知識は Qt5自体の知識 Matplotlib自体の知識 のみで対応可能。 具体的には FigureCanvasQTAgg classを用いる。 このclassが何者かはこちら このFigureCanvas内において、通常の…

matplotlib: subplot(Axes)の軸ラベル

subplotを含むAxesの軸ラベル設定法 axes = fig.subplot(111) axes.set_xlabel("label名") axes.set_ylabel("label名") axes — Matplotlib 1.4.3 documentation subplot()あたりで仕込む方法ありそうなものだが、公式API reference仕事しろ

matplotlib: FigureCanvasの継承関係

matplotlibのグラフをPyQt5などのGUIに埋め込むとき、次のように書くことが多いですよね from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas class MyMplWidget(FigureCanvas): def __init__(self, parent=None): fig = Fig…

matplotlib: 概要-図が表れるまでの流れ-

matplotlibがそもそも何者かは他のサイトを当たってくだされ。ここではプログラムの流れを説明 1. 部品の組み立て plot()とかsetTitle()とか 2. 実際のグラフ描写 show()とか うん、シンプル極まりない 1.部品の組み立て plot()やsetTitle()で図のアウトライ…

PyQt5: ドラッグ&ドロップ/ drop

dragとdropは別々のものと考えること dropに必要な3要件: acceptDrops = True であること dragEnterEvent()がオーバーライドされていること dropEvent()がオーバーライドされていること 1. acceptDrops = Trueであること QWidgetクラスのメンバ変数、初期値…

python: イテレータ

iterate[íṭərèɪt]: ~を繰り返す (weblio) iterateの意味 - 英和辞典 Weblio辞書 pythonにおけるイテレータとは、中身を順番に取り出す仕組みのこと for文でrange(10)から1,2,3...と取り出すときとかに裏で仕事してる __iter__()と__next__()を実装したclass…