解析と可視化
最終更新日:2026年10月16日
自動凸包プロット
EA-vcでは2元系および3元系の探索シミュレーションの場合,デフォルトで各世代の計算終了時に凸包のグラフが自動プロットされる.
画像は ./data/convex_hull/conv_hull_gen_{gen}.{fig_fotmat}に保存される。
バージョン1.5.0以降は,[option]セクションのenergy_output_intervalで出力間隔(世代数)を変更できる.デフォルトは1(毎世代)で,0なら凸包の図と凸包からの距離のファイルの自動出力を無効にする.凸包と凸包からの距離の計算自体は毎世代行われる.詳細は入力ファイル > [option] Sectionを参照.
2元系
上の図は第3世代まで探索した時の例であり,cryspy.inの[visual]セクションで,下記のような入力変数を設定できる.
詳細は CrySPY > Input file > [visual] section.
ここで,vmaxはhull distanceのカラーバーの最大値,bottom_marginは形成エネルギーの最小値とy軸の最小値の間のマージンを表す.
左の図に示すように,axis_order = lr(デフォルト設定)としたとき,atype[0]が左端,aypte[1]が右端になるように描画される.
右の図はaxis_order = rlにしたもの,つまり,atype = Cu Auの場合, 純Cu結晶がグラフの右端,純Au結晶が左端に配置される.
3元系
上の図は3元系の例であり,cryspy.inの[visual]セクションで,下記のような入力変数を設定できる.
詳細は CrySPY > Input file > [visual] section.
ここで,show_maxはプロットするhull distanceの最大値であり,上記の例ではコメントアウトしてあるので
デフォルト値のNoneが適用されている.
左の図に示すように,axis_order = tlr(デフォルト設定)としたとき,atype[0]が上,aypte[1]が左,atype[2]が右のendpointになる.
trlやltrなど配置したい順番で指定できる.
右の図は axis_order = ltrのとした時の例で,
atype = Cu Ag Auの場合だと,Cuが左,Agが上,Auが右のendpointに配置される.
電荷中性条件
chargeを指定して電荷中性条件を課した場合の凸包プロットを以下に示す.
入力例や電荷の指定方法は機能 > 電荷中性条件を参照.
2元系(左:single-valence,右:multi-valence).
- single-valence:
(Cu, Au) = (+1, -1) - multi-valence:
(Cu, Au) = ((+2, +3), -2)
3元系(左:single-valence,右:multi-valence).
- single-valence:
(Cu, Ag, Au) = (+1, +2, -1) - multi-valence:
(Cu, Ag, Au) = (+1, (+2, +3), -2)
組成制限
バージョン1.5.0以降では,min_compとmax_compで探索する組成範囲を制限できる.
組成制限を設定した場合,凸包プロットでは組成の許容範囲が青色の領域で示される.
入力例や図の見方は機能 > 組成制限を参照.
2元系(左)と3元系(右)の第3世代までの探索結果の例.
探索結果を使わずに入力した組成範囲を確認するには,cryspy-Eplotの-cオプションを利用できる.
電荷中性条件と組成制限の併用
組成制限はchargeによる電荷中性条件とも併用できる.
その場合,青色の領域は組成制限のみを表し,生成される構造はその領域内で電荷中性条件も満たすものに限られる.
入力例は機能 > 組成制限を参照.
両方の条件を課した3元系の第3世代までの探索結果の例.
cryspy-Eplotを用いた再プロット
もしプロットされた図を調整して再プロットしたい場合は,cryspy-Eplotコマンドを使えば簡単に実行できる.
世代を指定した再プロット
cryspy-Eplotコマンドを用いる場合は,専用の以下の入力変数も利用可能となっている.
plot_min_genplot_max_genref_gen
例えば,2世代目における図を再プロットするには,[visual]セクションを下記のように書く.
cryspy-Eplotを実行すると
この場合,CrysPYは ./data/convex_hull/conv_hull_gen_{gen}.{fig_fotmat}にファイルを上書き保存する.
plot_min_genとplot_max_genを用いることで,プロットする世代の範囲を指定することも可能である.
plot_min_genに値が設定された場合,たとえそれが1であっても普段と異なる次のファイルに図が保存される.
./data/convex_hull/conv_hull_gen_{plot_min_gen}-{plot_max_gen}.{fig_fotmat}.
例えば上の図は左から,第1世代.第2世代,第3世代の構造だけを抜き出してきたものである.
ただし,ref_gen = 3を使って,凸包(実線)は第3世代ものを常に用いて描いている.
ref_genの値はplot_max_gen以上に設定する必要がある.
中央の図のように第2世代だけ抜き出したい場合は,[visual]セクションで下記のように設定する.
もしref_genが指定された場合は,出力されるファイル名は次のようになる.
conv_hull_gen_{plot_min_gen}-{plot_max_gen}_ref_{ref_gen}.{fig_format}.
化合物を基準とした凸包
[visual]セクションのterminalsで基準となる化合物組成を指定すると,化合物を基準とした凸包も描画できる.設定例はコマンド > cryspy-Eplot > 化合物を基準とした凸包を参照.
以下は,電荷中性条件を課したLi–Al–O系の第30世代までの探索結果の例.左は元素を基準とした3元系の凸包,右はLi2OとAl2O3を基準とした擬2元系の凸包.
データのダウンロード
ここでは,CrySPYのデータをローカルPCで解析・可視化することを前提としている.
CrySPYをスーパーコンピュータやワークステーションで使用している場合は,データをローカルPCにダウンロードすること.
work や backup ディレクトリは,ファイルサイズが非常に大きくなる可能性があるため,不要であれば削除してよい.
Jupyter Notebook
先ほどダウンロードした結果の中にある data/ ディレクトリに移動する.
その後,CrySPY utilityがローカルにダウンロード してある場合は cryspy_analyzer_EA-vc.ipynb をコピーする.
またはGitHubから直接ダウンロードしてくる(CrySPY_utility/notebook/).
Jupyter notebookファイルには,CrySPYのコードと同じ関数が書かれており,自由に凸包のプロットをカスタマイズできる. 適宜順番に実行していき,下記のどちらかを選ぶと自動プロットと同じものが得られる
- Binary system, matplotlib
- Ternary system, matplotlib
途中にある
- Interactive plot using Plotly
では,2元系,3元系および4元系において,Plotlyを用いたインタラクティブプロットができる.


