ChunPom’s diary

数学、物理、機械学習に関する話題。あと院試、資格、大学入試まで。

WindowsでpyEITを動かす(備忘録)

EIT(electrical impedance tomography,電気化学インピーダンスモグラフィ)は,印加した電流に対する電圧のパターンを計測することで各位置のインピーダンスを推定し,内部構造を可視化するトモグラフィである。EITのシミュレーションには主に2つあり,Matlab向けのEIDORSPython向けの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で実行。エラー箇所は適宜訂正。