pyZwxユーザーガイド
- 0. インストールとブートアップ
- 1. 大まかな使い方
- 2. メインウィンドウ
- 3. データの読み込み
- 4. Z-HIT機能 (KK変換テスト)
- 5. 等価回路エディターと回路表記
- 6. GUIによる初期値推定サポート
- 7. フィッティング
- 8. データ・マスク
- 9. 数値データテーブル表示
- 10. シミュレーション
- 11. レイアウト保存と初期化
- 12. 注意
0. インストールとブートアップ
pyZwxはWindows版のみです.
ダウンロードページからpyZwx_64bit.zip(64ビット版)またはpyZwx_324bit.zip(32ビット版)をダウンロードし,好きなフォルダに保存,解凍して下さい.
解凍されたpyZwx_64bitまたはpyZwx_32bitフォルダは任意の位置に移動しても大丈夫です.
フォルダ内にあるpyZwx64.exeまたはpyZwx32.exeをダブルクリックするとソフトウェアが立ち上がります.

注意:pyZwxはブートアップに15~20秒かかります.アイコンをダブルクリックしたあとメインウィンドウが表示されるまで,しばらくお待ち下さい.
データ・ビューワー・ソフトウェアであるpyZMultiPlotを同一のフォルダにコピーすると,FileメニューのCall pyZMultiPlotによりpyZMultiPlotをブートアップすることができます.
ページトップに戻る1. 大まかな使い方
pyZwxの大まかな使い方は,
データの読み込み→(Z-HITテストによるスペクトル確認)→等価回路モデル入力→GUIによる初期値入力またはマニュアル初期値入力→最適化→結果保存
です.
2. メインウィンドウ
最初のブートアップ時はメインフレームとメインメニューのみが表示されます.

メインメニュー項目は下記です.
- File
- 読み込みファイル選択メニュー
- Axis Setting
- 表示グラフ軸値設定
- zhit
- Z-HIT関連メニュー
- fit
- 等価回路エディター呼び出しメニュー
- Sim.
- シミュレーションエディター呼び出しメニュー
- About
- ライセンス表示
3. データの読み込み
Fileメニューの"Load Data File"サブメニューからファイルダイアログを用いてスペクトルデータを選択します.下記拡張子ファイルは直接読み込むことができます.
- z (ZView, Scribner)
- Scribner, SolarTron社製以外のソフトで変換された*.zファイルは読み込めない場合があります.極力変換していないファイルで読み込んで下さい.
- mpt(EC-Lab, BioLogic)
- 複数のスペクトルデータを含む*.mptファイルについては全てのデータを読み込むことができません.下記のSplit Mpt Fileで個別データに分割して読み込んで下さい.単一スペクトルデータのみを含む場合でも読み込みに失敗することがあります.その場合もSplit Mpt Fileでファイルフォーマットを変換して読み込みを試して下さい.
- EC-Labで変換されたZViewフォーマットファイルの拡張子はtxtになります.このファイルは拡張子名を変更せずに読み込むことができます.
- par(Versa Studio, Princeton Analytical Res.)
- Versa Studioで変換されたZViewフォーマットファイルは読み込めない可能性があります.ファイル変換せず*.parファイルで読み込んで下さい.
- dta(EChem Analyst, Gamry)
- EChem Analyst ver. 6.3で出力されたファイルで読み込み確認しています.
- idf (IviumSoft, Ivium Technologies)
- IviumSoft ver. 4.9で出力されたファイルで読み込み確認しています.旧バージョンIviumSoftで出力された*.idfファイルは読み込みに失敗する場合があります.
- txt
- デリミタ:タブ,コンマ,スペース;これらのデリミタは自動判定します.
- ヘッダ:無しまたは1行のみの列説明.EC-Labで変換されたZViewフォーマットファイルには対応しています.
- 配列:周波数,実数項,虚数項で配列.虚数項の符号は反転させないで下さい.
- SMaRT(Scribner)出力ファイル
- SMaRTの"Tools"メニュー,"Options.."の "Experiment"タブにある"Status grid and table/CSV quantitiles"の1を"Impedance", "Real"に,2を"Impedance", "Imaginary"に設定後,"Export Data Files"でCSVテキストに変換してください.変換されたファイルの拡張子を"smt"に変えれば直接読み込むことができます.
Fileメニューの"Load Fitted Results"サブメニューを選択するとpyZwxで保存した解析ファイル(*.fit)を読み込めます.正常に読み込まれると全てのウィンドウが開きます.
Split Mpt Fileサブメニュー
*.mptファイルで複数のインピーダンス・スペクトル・データを含むファイルから個別のスペクトル・データにファイル分割します.ファイル名は[オリジナルファイル名]#[2桁番号].txt]でオリジナルファイルと同じフォルダに保存されます.スペクトル・データが一つしか含まれていない*.mptファイルにも関わらずデータ読み込みに失敗する場合は,このコマンドを使ってtxtファイルに変換すると読み込める場合があります.
データの読み込みが成功するとフルパス名を含むファイル名と8つのグラフ,グラフのGUIを操作する ナビゲーションツールバーが表示されます.

測定データを読み込んだ時に表示されるグラフは下記の通りです.
- 上部:フルパス名を含むファイル名が表示されます.
- 右部:上から対数周波数とインピーダンス実数項(Zreal),実数項絶対値の対数,測定値とモデル値の残差(delta Zreal)
- 中央部:上から対数周波数とインピーダンス虚数項(Zimag),虚数項絶対値の対数,測定値とモデル値の残差(delta Zreal)
- 左部:上からインピーダンスプロットと測定値とモデル値の残差
GUIでグラフ表示を操作するナビゲーションツールバーはデータを読み込むと表示されます.ナビゲーションツールバーはpyZwxコードで使用しているMatplotlibのツールバー機能を使用しています.ツールバーについては
Matplotlib ver. 3.1.1のDocumentationも参照して下さい.機能は下記です.
初期値でのグラフ表示回帰ボタン
変更履歴のバックボタン
変更履歴のフォワードボタン
PANシフト・ズームボタン.このボタンを押した後,カーソルをグラフ内に移動しマウスを左クリックしながら移動すると
プロットのみが移動します.グラフ内でマウスを右クリックしながら移動するとプロット内部が拡大・縮小されます.
四角領域ズームボタン.このボタンを押した後,カーソルをグラフ内に移動し,マウスを左クリックしながら移動させて
拡大したい領域を掃引するとグラフが拡大されます.
グラフ間の空間サイズ調整ボタン
メインウィンドウ画像保存ボタン
インタラクティブ3Dプロットはマウス操作で回転させることはできますが,ナビゲーションツールバーによる操作はできません.
ページトップに戻る4. Z-HIT機能 (KK変換テスト)
インピーダンス(Z)のヒルベルト積分変換(Hilbert Integral Transformation)テストで,クラマース-クローニヒ変換テストに近いものです.クラマース-クローニヒ(KK)変換テストは測定されたインピーダンス・スペクトル・データが等価回路で解析できるか否かを判定する手法です.従来法はインピーダンスの虚数項が高周波数限および低周波数限で0に収束するスペクトルにしか適用できません.この制約により蓄電池やキャパシターのスペクトルに用いることができませんでした.
この欠点を改善できる新しい経験則式によるテスト法がZ-HIT法です.Z-HIT法はEhmらにより2000年に発表されました.
W. Ehm, H. Gohr, R. Kaus, B. Roseler, C. A. Schiller, "The evaluation of electrochemical impedance spectra using a modified logarithmic Hilbert transform", ACH Models in Chem. 137 (2000) 145-157. DOI:10.1039/b007678n
データを読み込んだ後、ZHITメニューにある"do ZHIT"サブメニューを選択するとグラフに計算結果が表示されます.測定データとZ-HIT結果が一致している場合は等価回路を用いてスペクトルを再現することができます.逆に測定結果とZ-HIT結果が一致しない場合,等価回路を用いてスペクトルを再現することはできません.
例としてコイン型リチウム電池(CR1620)で測定したインピーダンス・スペクトルのZ-HIT計算結果を示します.このスペクトルでは0.1 Hzよりも低周波数域で測定結果とZ-HITの間に不一致があり,かつ周波数が小さくなるほどその差が大きくなることが解ります.このスペクトルの場合,周波数が0.1 Hzよりも低い領域は等価回路モデルで再現できないことが解ります.

等価回路で解析できない周波数領域が現れる原因は,因果律,線形性,安定性の欠如によります.これらは系の劣化や電気化学とは無関係な化学反応の進行などが原因と考えられます.
以上の様にZ-HITでスペクトル解析の可否に関する事前情報を得ることができます.
注意:Z-HITテストは抵抗とインダクター(コイル)の並列接続によるスペクトルを精度良く再現できません.したがってインダクター成分が無視できないインピーダンス・スペクトルへの適用時には注意して下さい.
"Save Resukt"サブメニューを選択するとZ-HIT数値結果を保存することができます.
"rem ZHIT"サブメニューを選択するとグラフからZ-HIT結果を消去することができます.
5. 等価回路エディターと回路表記
データをロードした後,"Fit"メニューから”Equiv. Cir. Editor”サブメニューを選択すると等価回路エディターウィンドウが開きます.

等価回路はスクリプトで表記します.pyZwxで使用する回路要素,記号,パラメータ,要素ラベルの一覧を下記に示します.
$ω$:角周波数 = 2π$f$.$f$:周波数.$j$:単位虚数
Element Name | Index | Equation (Z = ) | Parameter | Label |
---|---|---|---|---|
Resistor | R | $R$ | R | R01, R1, R001, etc |
Capacitor | C | $\frac{1}{(Cjω)}$ | C | C01, C1, C001, etc |
Inductor | L | $Ljω$ | L | L01, L1, L001, etc |
Constant Phase Element | CPE | $\frac{1}{T(jω)^α}$ | T, α | CPE01, CPE1, CPE001, etc |
Infinite diffusion length Warburg Impedance | W_old | $\frac{1}{T(jω)^α}$ $α $= 0.5 is ideal |
R, T, α | W_old01, W_old1, W_old001, etc |
Finite diffusion length with transmissive boundary Warburg Impedance | W_fc | $[\frac{R}{T(jω)^α}]tanh\{T(jω)^α\}$ $α $ = 0.5 is ideal |
R, T, α | W_fc01, W_fc1, W_fc001, etc |
Finite diffusion length with reflective boundary Warburg Impedance | W_sb | $[\frac{R}{T(jω)^α}]coth\{T(jω)^α\}$ $α $ = 0.5 is ideal |
R, T, α | W_sb01, W_sb1, W_sb001, etc |
Gerischer Impedance | G | $\frac{R}{\{T+(jω)^α\}^β}$ $α$ = 1 and $β$ = 0.5 are the ideal |
T | G01, G1, G001, etc |
Havliriak-Negami Impedance | HN | $\frac{R}{\{1+(Tjω)^α\}^β}$ | T | HNG01, HN1, HN001, etc |
Serial Connector | + | NA | NA | NA |
Parallel Connector | // or / | NA | NA | NA |
Block | (), {}, and [] | NA | NA | NA |
等価回路スクリプトの記載法は下記文献と同じです.
K. Kobayashi, T. S. Suzuki, Electrochem., 88 (2020) 39-44. DOI:10.5796/electrochemistry.19-00058
固体電解質を用いた場合のWarburg,Gerischerインピーダンスに関する理論については下記論文を参照下さい.
K. Kobayashi et al., Solid State Ionics, 249-250 (2013) 78-85. DOI: 10.1016/j.ssi.2013.07.022
回路スクリプトの例です.

Warburgインピーダンスを表す近似回路は下記になります.

等価回路スクリプトをタイピングした後,"Read EQC"ボタンを押すとパラメータ・テーブルに入力用テーブルが現れます.R01+R02//C02モデルでパラメータ・テーブルを発生させると下図になります.

Val.列:パラメータ値入出力列
Err.列:複素非線形最小自乗回帰で計算されるパラメータの標準不確かさ
flag列:パラメータフラグ.1:可変.0:固定
L. B. 列:パラメータ下限値.拘束無しにする場合は-infに変更
U. B. 列:パラメータ上限値.
指数パラメータ(α, β)の下限値と上限値は自動で0と1に設定されます.
Warburg,Gerischerインピーダンスのデフォルト設定は.指数パラメータが理想値かつ固定値設定です.変更する場合はflag列を変更して下さい.
パラメータ値入力列には0以外の数値を入力して下さい.
demoDataフォルダにあるデモデータの場合,下記等価回路モデルと初期値で解くことができます.回路とパラメータ値をマニュアルで入力できます.
モデル1
R0 + R1//CPE1 + R2//CPE2 + R3//CPE3
R0: 11
R1: 3; CPE1_T: 1e-6; CPE1_a: 0.9
R2: 3; CPE2_T: 1e-4; CPE2_a: 0.9
R2: 3; CPE2_T: 1e-2; CPE2_a: 0.9
モデル2
R0 + R1//C1 + R2//C2 + R3//C3 + R4//C4 + R5//C5 + R6//C6
R0: 12
R1: 3; C1: 1e-7
R2: 2; C2: 5e-6
R3: 2; C3: 1e-6
R4: 2; C4: 5e-5
R5: 2; C5: 1e-5
R6: 2; C6: 5e-4
6. GUIによる初期値推定サポート
pyZwx ver. 1.0で実装した新しい機能です.部分スペクトル・モデルと必要なデータ・サンプリングをインタラクティブに行うことで容易に初期値を設定できます.初期値推定サポートは等価回路エディター・ウィンドウの中部にあります.設定は部分スペクトル・ポップアップ,部分スペクトル設定ボタン,パラメータ要素ポップアップ,推定ボタンで設定します.
初期値推定サポートで使用している関係式は下記論文に掲載されています.
K. Kobayashi, T. S. Suzuki, Electrochem., 88 (2020) 39-44. (Open Access) DOI:10.5796/electrochemistry.19-00058
一例としてdemoDataフォルダに梱包したデータ解析例を示します.demoDataを読み込むと下図が表示されます.このスペクトルを"R0 + R1//CPE1 + R2//CPE2 + R3//CPE3"モデルで解くとします.

初期値推定サポートには$\text{log} f - Z_{\text{imag}}$,$\text{log} f - \text{delta }Z_{\text{imag}}$,$\text{log} f - Z_{\text{real}}$,$\text{log} f - \text{delta }Z_{\text{real}}$プロットをインタラクティブに使用します.等価回路エディターを開き,回路スクリプトに"R0 + R1//CPE1 + R2//CPE2 + R3//CPE3"を入力後,"Read EQC"ボタンを押してパラメータテーブルを表示して下さい.その後,上図の矢印の先部分をクリックすると初期値推定サポートの"log f value"と"Zi or Zr value"が自動で入力されます.上図矢印部分にピークを持つR//CPE成分をR3//CPE3に割り当てるとします.初期値推定サポート部の"Part Circuits"ポップアップから"R//CPE"を選択後,隣の"Set"ボタンを押して下さい.セットボタンにより設定できるパラメータポップアップのみにパラメータ名が表示される様になります.R//CPEの場合,パラメータは"R", "T", "a"になります.それ以外のパラメータポップアップにはパラメータ名が表示されなくなります.

"R"ポップアップで"R3","T"ポップアップで"T3","a"ポップアップで"a3"を選択,"log f value"と"Zi or Zr value"値が入力されているのを確認した後に"Estimate"ボタンを押して下さい."Estimate"ボタンを押すと"log f value"値,"Zi or Zr value"値と"a"トグル値を使ってT値が計算されます.

a = 1で推定された$\text{log} f - Z_{\text{imag}}$計算曲線は測定値よりもピーク幅が狭いことがわかります.ピーク幅はa値を1より小さくすることで調整できます.初期値推定サポートの"log f value"下にある"a"トグル値を0.8に変更し再度"Estimate"ボタンを押すと測定値に近い結果になります.

$\text{log} f - \text{delta} Z_{\text{imag}}$曲線はR3//CPE3成分を取り除いたものになります.したがってR1//CPE1 + R2//CPE2成分はこの残差曲線に現れていることになるます.上図矢印部をクリックして下さい."log f value"と"Zi or Zr value"に残差曲線における値が入力されます.その後,"a"トグル値を1に設定,R", "T", "a"ポップアップをそれぞれ"R1","T1","a1"にして"Estimate"ボタンを押します.上記と同様にピーク幅が狭いので"a"トグル値を0.6に設定して再度"Estimate"ボタンを押すと下図になります.

R1//CPE1スペクトルの重なりによりR3//CPE3成分ピーク強度が高くなりますので強度調整します.上図の矢印部分をクリックして"log f value"と"Zi or Zr value"に値を入力します."a"トグル値を0.8にした後"Estimate"ボタンを押します.初期値推定サポートの比例係数を0.9にセットし"Estimate"ボタンを押すと該当ピーク絶対値が下がります."Estimate"ボタンを複数回押すとピーク絶対値は下がり続けます.ピーク絶対値を下げすぎてしまった場合は比例係数を1.1に設定して"Estimate"ボタンを押して下さい.今度は逆にピーク絶対値が上がります.

$\text{log} f - \text{delta} Z_{\text{imag}}$曲線からlog f~4.5付近にピークを持つ成分が残っていることがわかります.この部分にR2//CPE2成分を当てはめます.R2//CPE2成分を当てはめると下図の様になります.パラメータ初期値はあくまで非線形最小自乗が収束する値であれば良いので,わずかに測定値からずれているのは問題ありません.最後にR0値を推定するため下図の$\text{log} f - Z_{\text{real}}$プロットの矢印部分をクリック,初期値推定サポートの"Part Circuits"ポップアップを"R"に設定,"R"パラメータポップアップから"R0"を選択して"Estimate"ボタンを押してください.R0値が少し大きい値が入力されるため,比例係数を使って調整して下さい.

GUI操作のみで下図の様に測定値に近い初期値セットを設定できます.

"log f value"と"Zi or Zr value"はマニュアル入力もできます.$\text{log} f - Z_{\text{imag}}$プロットでピークが測定周波数外にある場合,推定ピーク周波数と概算ZiまたはZr値をマニュアル入力してから比例係数を利用してパラメータを調整することもできます.
ページトップに戻る7. フィッティング
等価回路エディター中の最小自乗設定部にある"Fit"ボタンを押すと複素非線形最小自乗回帰が実行されます.計算が収束した場合,LMFITモジュールからの出力ログとコメント入力ウィンドウが現れると共にパラメータ・テーブルのパラメータと標準不確かさ値が変わります.コメント入力ウィンドウに入力したコメントは等価回路エディターのFileメニューにある"Save All of Fitted Results as"サブメニューを選択して保存される*.fitファイルに書き込まれます.

計算でエラーが生じた場合,LMFIT出力ログ,コメントウィンドウなどが現れず,計算結果もメイン画面に現れません.この場合はモデルまたは初期値が悪いことが原因と考えられます.Fitボタンを押して1分以上何も変化が無い場合は計算エラーが生じていると考えて下さい.このエラーは初期値推定サポートを利用すると抑制できます.
"Fit Method"ポップアップから9種類の複素非線形最適化法を選択することができます.デフォルトは信頼領域Levenberg-Marquardt法です.最適化法によっては標準不確かさ計算でエラーが発生します.テストした限り信頼領域Levenberg-Marquardt法が最も安定していました.
他ソフトのModulus weightと同じ条件にする場合はWeight Typeを|Zm|または|Zcal|,Power factorを2にして下さい.
重み付けを使わない場合はWeight TypeをUnit Weightにして下さい.Unit Weightの場合,Power factorは作用しません.
他ソフトのProportinal weightと同じ条件にする場合はWeight Typeを|Zm_r| & |Zm_i|または|Zcal_r| & |Zcal_i|,Power factorを2にして下しさい.
パラメータ・テーブルはコピーしたい領域をマウスドラッグしたのち,"Edit"から"Copy"の選択でクリップボードへコピーできます. コピーされたデータはエクセルなどの他ソフトにペーストできます.
注意:テーブル配列のコピーでショートカットキーは使えません.ショートカットキーは等価回路スクリプトのコピーに使用できるのみです.
Fileメニューにある"Save All of Fitted Results as"でファイル保存すると一つのファイルにコメント,等価回路モデル,パラメータ値,標準不確かさ値,測定スペクトル値,計算スペクトル値,下記に示すマスクデータなどの情報が書き込まれます.その他,スペクトルデータのみ,パラメータ値のみを保存することもできます.
他スペクトル解析で用いたモデルは"Load Parameter File"で読み込めます."Load Parameter File"からは *.fitファイルまたは保存されたパラメータファイル(*.fprm)を読み込むことができます.
pyZwxで作成されるファイルは画像を除き,すべてUTF-8コードテキストフォーマットです.したがってテキストエディターなどを用いて内容を確認することができます.
ページトップに戻る
8. データ・マスク
pyZwxには一部のデータを複素非線形最小自乗回帰に用いない様にするマスク機能を実装しています.この機能はZ-HITテストで回帰できない領域データを外す,ノイズが重畳したデータを外しやすくする機能です.
マスク機能を使用する場合は等価回路エディターの"Data Mask"メニューにある"Data Mask Editor"でマスクコントロール・ウィンドウを立ち上げます.

マスクコントロール・ウィンドウを開いた状態でメインウィンドウのZimag-対数周波数プロットのマスクしたいデータをクリックするとマスクコントロール・ウィンドウの該当するデータ列がハイライトされます."Accept"ボタンを押すとMask Flagが1から0に変わります. "Set Mask"ボタンを押すとマスクするデータのマーカー色が緑に変わり,ソフトウェア内部でマスク設定されます.
マスクは手動でMask Flag列の該当行値を1から0に変更後,"Set Mask"ボタンを押しても設定できます.マスク処理後,"Fit"ボタンを押すとマスクされたデータを除いた最小自乗計算を実行できます.
注意:マスク機能を使ってフィッティングする場合はマスクコントロール・ウィンドウを閉じないで下さい.ウィンドウを閉じるとマスク設定が消去されます. ページトップに戻る
9. 数値データテーブル表示
等価回路エディターの"Data Table"メニューから"Show Data Table"を選択すると測定データ,モデル計算値,残差値などの数値データテーブルが表示されます.このテーブルデータはマウスドラッグ後,EditメニューのCopyでクリップボードにコピーできます.コピーされたデータはエクセルなど他ソフトにペーストすることができます.
ページトップに戻る10. シミュレーション
メインウィンドウの"Sim."メニューから"Sim Eqc. Editor"を選択するとシミュレーション用等価回路エディター・ウィンドウが開きます.

- 最大対数周波数と最小対数周波数は整数値にして下さい.
- 周波数1桁あたりの分割数(Counts / Order)は整数値にして下さい.分割は対数に対して等間隔に分割されます.
- "Set"ボタンを押して周波数配列を発生させます.問題無ければ”Success to Generate the Frequency!"ダイアログが現れます.
- 等価回路スクリプトを入力,"Read EQC"ボタンを押した後,パラメータ値を入力します.最後に"Cal. Imp"ボタンを押すとメインウィンドウに計算されたスペクトル図が表示されます.
- シミュレーション後,"Table"メニューから"Show Table"を選択すると計算されたすデータ値が表示されます.このテーブル値もクリップボードへのコピーが可能です.
11. レイアウト保存と初期化
pyZwxのメインウィンドウ,等価回路エディター,フィット結果表示ウィンドウなどのレイアウトを自身のPCで調整した後, メインメニューにあるSettingからSave Present Frame Appearanceを選択します.するとpyZwxと同一フォルダ内にpyZwx.iniファイルが生成されます.以降,調整されたフレームレイアウトに代わります. 初期化したい場合はSettingメニューからReset defaultを選択するかPyZwx.iniファイルを削除するとデフォルト設定に戻ります.
ページトップに戻る12. 注意
pyZwx操作に問題が生じた場合はプログラムを止めた後,再ブートアップしてください.
ページトップに戻る