materialsproject.orgで開発された材料科学計算支援のPythonスクリプト. これだけ大規模なパッケージを構築できるというのはすごい,先導したリーダーと有志学生やポスドクの能力とやる気がすばらしいのだろう. しかも無料で公開しているというのも素晴らしい.
- pymatgenサイト
- pymatgenのバージョンは3.1.0 であったり,5.0であったり.
- 以下はMac OS X 10.10 Yosemiteであったり,10.12 Sierraであったりでの情報.
Install
$ pip install pymatgen
でいける.
pip
を用いると,pymatgenが依存している他のモジュールも同時にインストールしてくれるので楽ちん.
pip
がインストールされていない場合はインストールした方が良い.(pythonを使う上で便利.)
CIF to POSCAR 変換
もしくは,pmg
コマンドを用いて
のように,サブコマンドとしてstructure
を指定し,そのオプションに-c
でconvertを指定し,-f
オプションにファイル名を二つ記載することで(今の場合,CIFからPOSCARへ)変換する.
POSCAR to CIF 変換
Structureオブジェクト
基本はStructureオブジェクトで,pymatgen.core.structure
内で定義されている.
様々な方法でStructureオブジェクトを作成できる.
- CIFファイルやPOSCARファイルから読み込み
- vasprun.xmlから読み込み
- materialsproject.orgから取得
- 地道に作る
いくつかの変数を持っている:
- density
- distance_matrix
- frac_coords
- lattice
- reciprocal_lattice
- sites
- volume
- ntypesp
- num_sites
これらの変数は,
structure.frac_coords
のようにして呼び出すことができる.
print文で出力させると,以下のようになる.
DOSデータ取得
上記のようにvasprun.xml
からDOSデータを取得することができる.
vasprun.xml
には多くの結果が格納されているため,上記でいうvasprun
オブジェクトから様々な情報を取り出すことができる.
例えば,
N_dos= vasprun.complete_dos.get_element_spd_dos('N')
などとすると,N原子へのprojected-DOSを取り出すことができる.
Ab-initio MDのデータ取得
DOSと同様,vasprun.xml
に格納されているデータを取得する.
各ionic stepにおけるデータが出力されていないと意味がないので,VASP計算の際に,INCAR
においてNWRITE = 1
を設定しておくべきだろう.
from pymatgen.io.vasp.vasp_output import Vasprun
vasprun= Vasprun("./vasprun.xml")
print vasprun.ionic_steps[0]
このionic_steps
配列には,各ionic stepの情報が格納されている.
materialsproject.orgからのデータ取得
API Keyの設定
materialsproject.orgからデータを取ってくるには,そこに登録されていなければならない. 登録されていれば,API Keyの取得が可能で,そのKeyを用いてpymatgenで接続することでデータ取得が可能. materialsproject.org/dashboardで「Generate API Key」というボタンを押せばKeyが生成されるので,それをコピーする.
データ取得例:SiO2
API Keyの部分はUSER_API_KEY
としてある.
このようにMPRester
というクラスを用いてデータ取得できる.
組成の指定の仕方として,Si-O
のように組成比を特に指定しない書き方や.
Si-O-*
のようにワイルドカードとしてどんな元素も取るというように指定することもできる.
受け取ったファイルをすべてCIF形式で保存したい場合,以下のようにする.
POSCAR形式で保存したい場合,以下のようにする.
つまり,Structure
オブジェクトでCIFテキストデータを読み込み,Structure
オブジェクトからPOSCAR形式で出力する.
PMG_MAPI_KEYの登録
pmg config --add PMG_MAPI_KEY <USER_API_KEY>
のように登録しておけば,生データを記入しなくてよくなるらしく,MPRester
を引数なしで呼んだ場合はこれが使用されるらしい.
~/.pmgrc.yaml
に保存される.
データの参照
例えば以下のようにして,データがどのようなkeyを持っているかを調べることができる.
各データのmaterial_id,空間群(space group)のsymbolとnumber,band_gapを表示する場合: