インタラクティブモード (Jupyter Notebook)
最終更新日:2026年10月16日
準備
CrySPYをインストールすればASEは自動的にインストールされている. ワークステーションやローカルPCでJupyterを使えるようにしておく. このチュートリアルでは,構造最適化にPure Python EMT calculatorを用いる.このEMTポテンシャルの精度は悪く,デモ用のものなので注意.
exampleのノートブックには汎用機械学習ポテンシャルのCHGNetを使用するコードも書いてあるので,CHGNetを試したい場合は事前にpipでインストールしておく.
入力ファイル
どこか適当なワーキングディレクトリに移動して,まずはexampleをコピーしてくる.下記のどちらからコピー してきても良い.
- CrySPY_utility/examples/interactiveからダウンロード
- インストールしておいたCrySPY utilityからコピーする
インタラクティブモードでも,cryspy.inを入力ファイルとして使用する.
インタラクティブモードではcalc_inディレクトリは使用しない.
input_examplesディレクトリの中に,いくつかの入力ファイル例が入っているので参考にしてほしい.
ここではEA-vcを用いた下記のcryspy.inを使用する.EA-vcについてはEA-vcのチュートリアルを見ること.
ノートブック
cryspy_interactive.ipynbを開いて,上から実行していく.
Check Current Working Directory
最初のセルはファイルやcryspy.inの中身を確認しているだけ.
Import
コメントアウトされているものは今回は無視して,CrySPYのインタラクティブモードで核となるライブラリをインポートするセルを実行する.
Initialize CrySPY
このセルは通常の初回実行に対応している.cryspy.inを読み込んで初期構造が生成される.
Set Calculator
このセルでASEのcalculatorをセットする.ここではASEのEMTを用いる.
Restart CrySPY
このセルを実行すると,先ほど生成した初期構造の最適化が始まる. インタラクティブモードでは一つ一つ順番に構造最適化計算を行う.その際に進捗バーも表示される.
- njob: 一度の実行で最適化計算を行う構造数.0の場合は
cryspy.inに書いてある値が使用される. - calculator: 先に設定したcalculatorを代入
- optimizer:
FIRE,BFGS,LBFGSから選択.文字列で指定する. - symmetry: Trueなら対称性を維持した構造最適化を行う
- fmax: 収束判定に使われる原子に働く力の最大値(eV/Å)
- steps: 最大最適化ステップ数
njobの値を小さくしている場合は,何度かこのセルを実行して,全ての初期構造の最適化を終了させる.
EA-vcを用いている場合,すべて終わると以下のように表示される.
もう一度このセルを実行すると世代交代が行われるので,次世代の構造生成が終了したら,あとは同様にこのセルの実行を繰り返す.
Show Results
このセルを実行すると,cryspy_rslt_energy_ascなどのファイルを表示できる.
Structure Visualization
初期構造や最適化済みの構造をインタラクティブに可視化できる.
action.get_atoms('opt', cid=0)のところでoptをinitに変えると,初期構造が確認できる.
cidで構造IDを指定する.
ASEの機能を使用しているのでviewerにはngl, ase, x3dが利用できる.
nglを使うにはnglviewのインストールが必要なのでpipでインストールしておく.
Energy Plot for RS, EA
ランダムサーチ(RS)や進化的アルゴリズム(EA)の場合,下記画像のようなエネルギーグラフを表示できる. EA-vcの場合は原子数が異なるので単純にエネルギーを比較できないので,後述のconvex hullプロットを使う.
Convex Hull Plot for EA-vc
Interactive Plot Using Plotly
EA-vcの場合はPlotlyを用いたconvex hullのインタラクティブプロットが利用できる. CrySPYをインストールすればPlotlyは自動的にインストールされている. このconvex hullプロットはpymatgenの機能を用いている.
- cgen: どの世代までプロットするかを指定.Noneであれば最新の世代までプロットされる.
- show_unstable: 描画するhull distanceの最大値.
- ternary_style
- 2元系: ternary_style = ‘2d’
- 3元系: ternary_style = ‘2d’, ‘3d’
- 4元系: ternary_style = ‘3d’
2元系ではなく,3元系や4元系で計算しているときは下記のようなインタラクティブプロットが得られる. 左から順に,3元系(ternary_style = ‘2d’),3元系(ternary_style = ‘3d’),4元系(ternary_style = ‘3d’)のプロット
Binary System Using matplotlib
このセルを実行すると,matplotlibを用いて2元系のconvex hullをプロットできる.
- cgen: どの世代までプロットするかを指定.Noneであれば最新の世代までプロットされる.
- show_max: 描画するhull distanceの最大値.
- label_stable: 安定相のラベルを表示するかどうか.
- vmax: カラーバーのhull distaceの最大値.
- bottom_margin: y軸の下部のマージン.
Ternary System Using matplotlib
もし3元系の探索をしている場合は,このセルを実行することでmatplotlibを使ったconvex hullのプロットができる.
- cgen: どの世代までプロットするかを指定.Noneであれば最新の世代までプロットされる.
- show_max: 描画するhull distanceの最大値.
- label_stable: 安定相のラベルを表示するかどうか.
- vmax: カラーバーのhull distaceの最大値.
例えば以下のようなプロットが得られる.







