ebilabの思想
ブログに書こうと思っている内容の下書き
こちらも固まったらリリースして、書きたい
Motivation
LabViewみたいなものを作りたい
ライセンスが必要なので
カスタムできるやつがいい
ebilabの前身と得られた知見、課題
pyvisaを生で触って、実験装置を制御。
コマンドを覚えられない
最初は計測結果を標準出力に流してリダイレクトで保存していた
matplotlibを使い、 plt.pause(0.1) を用いてリアルタイムでグラフ描画を実施
実験中はデータを可視化して大まかな傾向を把握しながら(うまくいっているかどうか見ながら)進めたい
matplotlibの描画が遅く、実験装置からのデータの取得に悪影響が出てしまう
→マルチスレッド化して並行処理を行う
→コードの複雑化
全体の見通しがしづらくなる
少し実験の処理を変えたいだけなのにスレッド処理まわりでバグらせてしまう
python初心者に書き換えてもらうのは困難
実験パラメータを引数で与えてargparseしていた
引数の指定方法を忘れてしまう問題
どのパラメータを指定して実験したかを忘れると実験データが意味を為さなくなってしまう
引数でスイッチしているとif分がどんどん増えていってしまう
これらの課題を解決することを重視してebilabを実装した
設計時に考えたこと
実験のセットアップを誰でも簡単に変えられるようにしたい
Lab memberにソースコードを渡した時に、簡単にメンテナンスができるようにする
そのために
みんなが慣れているpythonを採用
パラメータとソースコードの書き換えどちらでも対応できるようにする
実験時の操作が少なくて済むようにしたい
単一のソースコードではなく、頻繁に書き換える部分(実験のセットアップ・グラフ描画など)とライブラリ部分(実験装置の制御やGUIの制御、マルチスレッド処理や結果の書き出しなど)を分割する
難しい部分をライブラリ部分に投げることによって
実験セットアップは部外秘であることも多い。共通部分だけでも公開して再利用できるようにする。
この共通部分がebilab
具体的に
ExperimentProtocol と ExperimentPlotter を定義すればいつでも実験を始めることができる
単一の .py ファイルに書いて指定フォルダに入れるだけ
pip install ebilab
python -m ebilab experiment <dir>
単一ファイル運用を推奨することにする
単一ファイル運用によって、編集やリロード周りの処理をしやすくなる。
APIを用意しているので単一ファイル運用以外もできるようになっている
今後やりたいこと
タイマーを大きく表示する
メモを入れれるようにする
ラベリングできるように