目次
はじめに
pfcc-extras は モデリングや結果の可視化などに使える便利なツールを集めたライブラリパッケージです。
試験的なライブラリパッケージとして提供しているため、新しい機能との互換性を保証するものではなく、将来予告なく変更、削除される可能性があることを予めご了承ください。
pfcc-ase-extrasの機能紹介はこちら
2024.9 note)
2024.5にASE3.23がリリースされました。
pfcc-extras v0.9.0以降はASE3.23のみに対応しています。
ASE3.22をご利用の場合はpfcc-extras v0.8.0以前をご利用ください。
この記事で紹介する機能とそれぞれの example ファイルの場所は次の通りです。
| 分類 | 機能 | サンプルスクリプト ※ | 対応Ver |
| モデリング |
原子の衝突判定 (collision detector) |
|
>0.10.0 |
| モデリング |
MaterialsProjectから構造抽出 (data) |
|
>0.5.0 |
| モデリング |
溶液構造構築 (liquid generator) |
|
>0.8.0 |
| モデリング |
分子結晶の表面構築 (make_mol_surface) |
|
>0.5.0 |
| モデリング |
占有率≠1の構造の前処理 (partial_occupancy) |
|
>0.9.0 |
| モデリング |
|
|
>0.8.0 |
| モデリング |
|
>0.5.0 | |
| モデリング |
|
>=0.11.0 | |
| モデリング |
合金構造探索 (select_subset) |
|
>=0.12.0 |
| モデリング |
|
>=0.12.0 | |
| モデリング |
|
>=0.12.0 | |
| 計算方法 |
吸着構造探索 (adsorption_structure_search) |
|
>0.6.0 |
| 計算方法 |
化学ポテンシャルの相安定性 (chemical_window) |
|
>0.7.0 |
| 計算方法 |
|
>0.5.0 | |
| 計算方法 |
|
>=0.11.0 | |
計算方法 |
|
>=0.12.0 | |
計算方法 |
|
>=0.12.0 | |
| 可視化 |
拡散経路可視化 (isosurface) |
|
>0.5.0 |
| 可視化 |
ビデオ作成 (povray animation) |
|
>0.5.0 |
| 可視化 |
|
>0.5.0 | |
可視化 |
|
>=0.12.0 | |
| 可視化 |
セル内への配置変換 (wrap_molecule) |
|
>0.5.0 |
| その他 |
等方性フィルター (isotropic_filter) |
|
>0.5.0 |
| その他 |
ノートブックの直列実行 (jupyter_run) |
|
>0.10.0 |
| その他 |
|
|
>0.10.0 |
その他 |
|
>=0.12.0 | |
| その他 |
|
>0.5.0 |
※ すべて "/pfcc-extras-v0.x.0/examples/" 以降のパス です。ipynb形式のスクリプト提供がない場合、tests内を参考にご利用いただくことも可能です。
インストール方法
- Package Launcher を開き、ページ下部から最新のバージョンを探します。
- zip形式で保存します。
- 保存した zipファイルを右クリックして “Extract Archive”で展開します。
-
/pfcc-extras-v0.x.0/examples/install.ipynb ファイルを開き下記のセルを実行してください。
!pip install ..
-e オプションを付けると、編集可能な状態でインストール可能です。
- 4まででインスートールは完了です。インストール実行前から実行中のPythonカーネルの場合、カーネルの再起動が必要です。
インストールが完了したことの確認として以下のように実行して、インストールしたバージョンが返ってくるかお試しください。(このセルは install.ipynb に含まれます)- カーネル再起動の方法
- Kernel メニュー > Restart Kernel...
- メイン画面上部のバーから"Restart the kernel"のアイコンをクリックします。
- Kernel メニュー > Restart Kernel...
-
バージョン v0.6.0 の場合
import pfcc_extras
print("pfcc_extras version: ", pfcc_extras.__version__)pfcc_extras version: 0.6.0
- カーネル再起動の方法
各機能のご紹介
pfcc-extras に含まれる主な機能を紹介します。
■ adsorption_strucuture_search
オープンソースのハイパーパラメータ自動最適化フレームワークである OptunaTM を用いて吸着構造を求めます。以下の3つの事例を用意しています。
| ファイル名 | 吸着剤(adsorbent) | 吸着質(adsorbate) |
| adsorption_structure_search_for_slab | Ru(111) slab | acrolein |
| adsorption_structure_search_for_porous | SiO2 zeolite | H2O |
| adsorption_structure_search_for_cluster | AuCu cluster | 2-Propen-1-thiol |
| cluster_on_slab | CeO2 slab | Co half cluster |
- Ru(111) 表面モデル(slab)に対するアクロレインの吸着
- SiO2 多孔性結晶 に対する 水分子の吸着
- AuCu クラスタ に対する 2-プロペン-1-チオール の吸着
- CeO2 表面モデル(slab)に対する Co クラスタ
■ chemical_window
構成元素の化学ポテンシャルを変数として、目的材料が安定に存在できる化学ポテンシャルの範囲を計算します。
実験的に異相が析出する場合に、析出相と化学ポテンシャルの関係がわかります。
これにより、結晶欠陥や表面など化学量論組成から外れた構造のエネルギーを評価するのに必要な化学ポテンシャルの値を推定できます。
■ collision_detector
作成した系中に衝突原子(ファンデルワールス半径よりも距離が短い原子ペア)があるかを判定します
周期境界条件をありとした場合の衝突や手動で原子を配置した際の衝突を発見しやすくなります
■ data
MaterialsProjectからmp_apiを用いて構造情報を取得するサンプルスクリプトを提供しています。
(注)ご利用には、MaterialsProjectに登録の上、APIキーの取得が必要です。
■ get_hkl_bulk_structure
固体のバルク構造を任意のmiller指数で切った面をZ軸とするバルク構造に変換します。
=>
■ isotropic_filter
セルにかかる圧力を等方的に変換するフィルタです。
溶液・気体等、等方的な圧力が期待される系におけるMD計算時に利用します。
■ isosurface
Trajectory データから特定の元素の拡散経路を可視化するためのGaussian cube ファイルを作成します。cube ファイルは OVITO, VESTA, NGLViewer などで読み込むことができます。
手順:
- Trajectory ファイルを準備します。(trj とする)
-
次のように実行します。
iso = IsosurfaceCalculator(trj, grid_size = 0.5) )
iso.calculate(symbol = ‘Li’) x
iso.export(‘./output.cube’)
■ jupyter_run
ノートブックから別のノートブックを順番に呼び出して実行します
ステップごとの処理を分けて直列実行したい場合にご利用ください
■ liquid_generator
分子をパッキングした溶液系を作成します
■ math
gaussian_broadening
ガウシアンブロードニング法によるグラフ変換を行います
■ make_mol_surface
有機分子などの表面構造を作成します。
手順:
- バルク構造の準備
- 構成要素を定義
- make_mol_surface を実行
- 表面構造を作る
- 構成要素を探す
- 構成要素にマッチしないものを取り除く。
(a) アントラセン, (b) グラフェン, (c) SiO2, (d) CH3, NH3, Pbl3
■ monte_carlo
GCMC
グランドカノニカルモンテカルロ(Groud canonical Monte Carlo, GCMC)法を用いたシミュレーションを実行できます。多孔質材料である Metal-organic-framework (MOFs)に対する CO2 分子の吸着の事例で、入力ファイル、パラメタ設定から実行、結果の解析までの手順を紹介しています。
Lattice MC
格子モンテカルロ(Lattice Monte Carlo, LMC)法を用いて金属スラブの構造探索をシミュレーションします。この事例では、Pt3Auのスラブ構造を用います。
■ partial_occupancy
占有率が1でない元素があるCIFファイルを取り扱う際に、占有率に基づいて確率的に構造を作成します
■ povray_animation
povray を用いて traj ファイルの動画を作成します。
- .gif
- .png
■ shift_energy(deprecated)
Matlantisで用いているエネルギーの基準値をVASPで用いているエネルギーの基準値に変換します。
pfp-api-clientのestimator.get_shift_energy_table()を利用することで算出が可能になりましたので、deprecatedとしています
■ structure
composition
任意の比率の合金・一部元素置換した結晶構造を作成します。
■ solid_solid_interface
固体固体界面接合モデルを作成します。
※ pymatgen が必要です。
手順:
- 2つの異なる bulk 構造を用意
- それぞれ直方晶に切り取り(make_rectangular_slab)
- 重ねた時のセルサイズのギャップを最小にする乗数を計算(make_similar_lattice_const_slabs)
- 2つを重ねて界面構造を作成(surface_stack)
- 単位格子を抽出(make_primitive)
- 保存
■ select_subset
ランダム置換、貪欲法、アニーリング法により、合金の最安定構造を探索するアルゴリズムを追加しました。
貪欲法を使って合金の安定配置を探索します。Monte Carlo法の初期配置の作成や簡易的なスクリーニングに有効です。
■find_interstitial_sites
結晶構造内の格子間サイトを見つけて原子を挿入します。ドーピングや拡散のシミュレーション、および、新規化合物の探索などに有効です。
■generate_conformers
入力したsmilesまたはatomsについて、atoms型でconformerを得ることができます。用途により引数の詳細な設定も可能です。
■ deposition_scheduler
計算系に分子を追加・削除するようなMDを実施するための機能を追加しました。
- DepositionScheduler: MD計算中に系に分子を追加するスケジューラ
- DeleteMoleculeScheduler: MD計算中に系外に飛び出した分子を削除するスケジューラ
- TemperatureScaleScheduler: 指定した原子の温度を単純な温度スケーリングで制御するスケジューラ
■virtual_wall
非周期系のMD計算においてセル境界で分子を弾性反射させる機能を追加しました。
■ uniform_electric_field
系全体に均一な力場をかけたシミュレーションを実行します。
■ visualization
view_ngl
view_ngl は使いやすくカスタマイズを加えた可視化ツールです。
いくつかの描画表現をインタラクティブに変更可能です。
- 表示する元素の種類
- カラースキーム
- 元素球のサイズ
ファイル名を指定してファイルの保存もできます。
※ Show force、 Show charge を有効にするためにはAtomsにcalculatorを設定して計算が必要です。
SurfaceEditor
SurfaeEditor はさまざまな編集機能を含む可視化ツールです。
※ 事前に Calculator の設定が必要です。
次のような機能があります。
- カラースキームの変更
- 描画の軸方向の変更
- 選択した原子に以下の変更を適用
- 削除 / 置換
- 並行移動 / 回転
- エネルギーや最大の力の表示
- 簡単な最適化計算の実行
- 画像の保存
- XYZ軸の表示
- ポインターを合わせてIDと座標の表示
■addEditor
SurfaceEditorの機能を拡張し、GUI上で分子の成型が可能なAddEditorを追加しました。
操作のやり直し(Undo, Redo)、クリックしたindexの炭素鎖増長、触媒表面の水素被覆などが容易に実行可能です。
■ wrap_molecule
- wrap_molecule() … 周期境界を跨いだ分子を分割せずにwrap します。
- get_mol_index() … 分子ごとに index 番号付け、および ラベル付けします
- get_mol_list() … Atoms オブジェクトを分子ごとに分割します。
例:wrap_molecule()
■reaction_path_MIC
NEB計算の初期配置作成において、image間で原子が周期境界をまたぐ場合に minimum image convention (MIC)を用いて原子位置を修正します。
下記の例では、[1,0,0]にあるスラブの原子が、[1,1,0]の位置の周期境界をまたいだ位置にあると判定され、補間の構造がおかしくなることがありますが、そのような際に正しく周期境界内の原子を選択して補完することが可能になります