最近の機械学習ポテンシャルのための参照データ形式として,ASEパッケージで用いられている?extxyzフォーマットが良く利用されているのでメモしておく.
下のようなフォーマットとなっている.
128
Lattice="13.348 0.000 0.000 0.000 15.725 0.000 0.000 0.000 12.223" Properties=species:S:1:pos:R:3:forces:R:3 energy=-437.76068789171956
Li 1.8857 4.0571 4.3377 -2.921e-02 -1.009e-01 -1.176e-01
Li 11.0545 4.0424 1.8293 -1.132e-01 -3.853e-01 3.531e-01
Li 4.4235 3.5972 1.7773 3.852e-01 -5.604e-01 -4.473e-01
...
- 1行目:原子数
- 2行目:系に関する付加的情報
Lattice— セルベクトル要素Properties— 各原子の行に何が書かれているかの情報.上の例では,species情報として文字列Sが1つ,pos情報として実数Rが3つ,forces情報として実数Rが3つ.energy— エネルギー- 他にもいくらでも追記可能.
- 3行目以降:各原子情報.原子の位置座標は絶対座標(セルベクトルの相対座標ではない).
ASEでの出力方法
# atoms変数に構造情報が入っているとする
ase.io.write(filename='hoge.extxyz',
images=atoms,
format='extxyz')- 他にも
append=Trueというオプションを付けると,ファイルの末尾にデータを追加することになる.
nappyでの出力方法
# atoms変数にASEの構造情報が入っているとする
import nappy
nsys = nappy.io.from_ase(atoms, get_forces=True)
nappy.io.write(nsys, fname='hoge.extxyz')nappy.io.write()はファイル名にextxyzが入っている場合にはフォーマットを自動判定する.