WindowsでpyEITを動かす(備忘録)
EIT(electrical impedance tomography,電気化学インピーダンストモグラフィ)は,印加した電流に対する電圧のパターンを計測することで各位置のインピーダンスを推定し,内部構造を可視化するトモグラフィである。EITのシミュレーションには主に2つあり,Matlab向けのEIDORS,Python向けのPyEITがある。EIDORSが昔から広く使われている一方で,PyEIT(https://github.com/liubenyuan/pyEIT)はオブジェクト指向,電圧の計測機器との相性などの観点から最近導入された完全Pythonベースのソフトである。
本稿は,PyEITの導入&動作確認に関して簡単に解説する(ソフトが新しいということもあり,解説ブログがまだほとんどなかったため)。なお,計算環境としては,Anaconda/Windowsを仮定する。
①PyEITインストール
1-1 Githubにアクセス。
https://github.com/liubenyuan/pyEIT
1-2 ローカルに一括ダウンロード後解凍。
1-3 Anaconda Promptを開き,cdでディレクトリを1-2の場所に移動
1-4 以下コマンドを打つ。
python setup.py build
python setup.py install
②デモコード(demo_dynamic_bp.py)を動かす
2-1 最新版だとなぜかdemoフォルダが消失しているので,過去サイトにアクセス
https://github.com/liubenyuan/pyEIT/tree/c3c944ed93373ab9f244acc1c8fde2c60cfc7522
2-2 Demoフォルダのみ1-2のディレクトリに追加ダウンロード。
2-3 Demoフォルダ内の「demo_dynamic_bp.py」を適当なエディタで開く
2-4 以下のようにコードを修正
・l19: anomaly = [{'x': 0.5, 'y': 0.5, 'd': 0.1, 'perm': 10.0}]
→ anomaly = [{'x': 0.5, 'y': 0.5, 'd': 0.1, 'alpha': 10.0}]
・l20: ms1 = mesh.set_perm(ms, anomaly=anomaly, background=1.0)
→ ms1 = mesh.set_alpha(ms, anomaly=anomaly, background=1.0)
・l23: delta_alpha = np.real(ms1['perm'] - ms['perm'])
→ delta_alpha = np.real(ms1['alpha'] - ms['alpha'])
・l41: f0 = fwd.solve(ex_mat, step=step, perm=ms['perm'])
→ f0 = fwd.solve_eit(ex_mat, perm=ms['alpha'])
・l42: f0 = fwd.solve(ex_mat, step=step, perm=ms1['perm'])
→ f0 = fwd.solve_eit(ex_mat, perm=ms1['alpha'])
2-5 Anaconda promptでdemoフォルダに行き,python demo_dynamic_bp.pyで実行。エラー箇所は適宜訂正。