Quantum ESPRESSOのcp.xのMD計算結果をDeePMD-kitの学習データとして使用する方法のメモです。
cp.xの計算時に必要なこと
各原子に働く力を出力する必要がありますので、forceを出力するためにtprnforをtrueにする必要があります。
ファイル名について、入力ファイル名と出力ファイル名が一致している必要があります。出力ファイル名はデフォルトではcp.posやcp.velなどになり、これに合わせるなら入力ファイルはcp.inにする必要があります。(これを変えたい場合はprefixを指定し、入力ファイルも同名にします)
&CONTROL
tprnfor=.true.
また対応しているibravは0, 1, 2, 3, -3で、それ以外を指定して計算をした場合はデータ変換ができません。
以上に気を付けてcp.xの計算を行います。
結果データの変換
DeePMD-kitのチュートリアル通りの方法で学習データと検証データを作成してみます。
チュートリアルのコードでは200枚のスナップショットを学習データと検証データに分けています。QEのcp.xのデータを読む際に変更するのは赤字の部分です。
import dpdata
import numpy as np
data = dpdata.LabeledSystem('cp', fmt = 'qe/cp/traj')
index_validation = np.random.choice(200,size=40,replace=False)
index_training = list(set(range(200))-set(index_validation))
data_training = data.sub_system(index_training)
data_validation = data.sub_system(index_validation)
data_training.to_deepmd_npy('training_data')
data_validation.to_deepmd_npy('validation_data')
print('# the training data contains %d frames' % len(data_training))
print('# the validation data contains %d frames' % len(data_validation))
‘cp’がファイル名、fmt=の部分がQEのcp.xのフォーマット指定です。こうすることで以下のファイルを読み込みます。
- cp.in
- cp.pos
- cp.cel
- cp.for
作成されるファイルはtraining_dataとvalidation_dataのそれぞれで、
- type.raw
- type_map.raw
- set.000
- box.npy
- coord.npy
- energy.npy
- force.npy
以上のデータを使用してDeePMD-kitのdeep learningを実行できます。
学習データ作成、dp trainの実行については以下で解説しています。
コメント
大変参考になりました。
ありがとうございます。