初期構造の読み込み

最終更新日:2026年10月16日

ここでは,cifファイル3つからinit_struc_data.pklを作成し,初期構造として読み込む. RSによるCu 8原子の探索を例に,3構造を読み込み,不足する2構造をランダム生成して,合計5構造で探索を開始する. 読み込み時のチェックの詳細は,機能 > 初期構造の読み込みを参照.

準備

チュートリアル > ランダムサーチ(RS) > ASE on Your Local PCと同様に,cryspy.inとcalc_in/を新しい作業ディレクトリに用意する. calc_in/のase_in.pyとjob_cryspyは,そのチュートリアルと同じものを使用する.まだcryspyは実行しない.

変換にはCrySPY Utilityのpos2pkl.pyを用いる.以下では,pos2pkl.pyにPATHが通っていることを想定する.設定方法はインストール > CrySPY Utilityを参照.

動作確認用のcifファイルをダウンロードし,作業ディレクトリに置く.いずれもCuを8原子含む構造.

.
├── Cu8_1.cif
├── Cu8_2.cif
├── Cu8_3.cif
├── calc_in
│   ├── ase_in.py
│   └── job_cryspy
└── cryspy.in

構造データの変換

作業ディレクトリで次のコマンドを実行する.cifのように1ファイルに1構造を保存したデータには,-sを付ける.

pos2pkl.py -s Cu8_1.cif Cu8_2.cif Cu8_3.cif
Composition: Cu8

Converted. The number of structures: 3
Save init_struc_data.pkl

カレントディレクトリにinit_struc_data.pklが作成される.入力順に構造IDが割り振られ,Cu8_1.cif,Cu8_2.cif,Cu8_3.cifのIDはそれぞれ0,1,2となる. 変換方法の詳細はCrySPY Utility > pos2pkl.pyを参照.

cryspy.in

cryspy.inを次のように設定する.

[basic]
algo = RS
calc_code = ASE
tot_struc = 5
nstage = 1
njob = 5
jobcmd = zsh
jobfile = job_cryspy

[structure]
atype = Cu
nat = 8

[ASE]
ase_python = ase_in.py

[option]
load_struc_flag = True
  • atype = Cu,nat = 8は,読み込む3構造の原子種と原子数に合わせている.
  • tot_struc = 5とし,読み込んだ3構造にランダム生成した2構造を加える.
  • load_struc_flag = Trueで初期構造の読み込みを有効にする.
  • jobcmdは計算機環境に合わせて変更する.

データの配置と実行

初回のcryspy実行前に,作成した構造データを配置する.

mkdir -p data/pkl_data
cp init_struc_data.pkl data/pkl_data/
cryspy

3構造が読み込まれ,不足する2構造がランダム生成される.初期構造の準備が完了すると,一旦終了する. 以降は通常のRSと同様に,再びcryspyを実行して構造最適化を進める.

読み込み結果の確認

./data/init_POSCARSに,読み込んだ構造とランダム生成した構造を合わせた5構造が保存される.

構造ID初期構造
0Cu8_1.cifから読み込んだ構造
1Cu8_2.cifから読み込んだ構造
2Cu8_3.cifから読み込んだ構造
3,4ランダム生成した構造

./data/pkl_data/init_struc_data.pklも,この5構造を含む内容に更新される. 構造数や原子種・組成などの条件を満たさない場合はエラーになる.詳細は機能 > 初期構造の読み込み > 読み込み時のチェックを参照.