cif2cellの概要
CIF2Cell download | SourceForge.net
結晶構造のフォーマットであるcif(crystallographic Information File)から、第一原理計算コード(abinit, elk, vasp, pwscf他)の入力ファイル(原子配置の指定部分)を出力してくれる、pythonで書かれたアプリ。
一般ユーザー権限でインストール
ものは試しで一般ユーザー権限で出来る範囲でのインストールを試みる。
例としてcif2cell-1.2.10.tar.gz
を取ってきたとする。
$ tar -zxvf cif2cell-1.2.10.tar.gz
で、展開し出来たcif2cell-1.2.10
を/home/user/sources
に移動。そのディレクトリに移動する。
PyCiRWを一般ユーザー権限でインストール
実は、cif2cellをインストールするには、PyCiRWなるアプリが必要で、これはcif2cellのコードに同梱されている。$ tar -zxvf PyCifRW-3.3.tar.gz
で展開してできるPyCifRW-3.3
に移動する。
基本的には所謂python setup.py install
でインストールされる類のもの。ただ、この手続きで管理者権限がないとファイル追加できない/usr/lib64/python2.7/site-packages
にファイルを生成しようとするため、一工夫が必要。
pythonで参照されるpathの確認
pythonを実行して、
import sys
print(sys.path)
で、現在参照できるpathの確認をしよう。この中にhome/user/.local/lib/python2.7/site-packages
のような、一般ユーザーが編集できる箇所があれば、そこに入れることができる。但し、私は極度の潔癖でインストールしたものは、それとわかるように別に置いておきたいので、明確に入れる先を作ることにする。
インストール用ディレクトリを作成してインストール
インストールする先を、/home/user/opt/PyCifRW-3.3
とする。
のちに、インストールのprefixとして、このディレクトリを指定してインストールを試みると、適切なpathが設定されていないと怒られる。これは上で調べたpathの中に、これから入れるディレクトリに付随した箇所にpathが通っていないため。なので、適切にpathを追加することにする。
このpathの設定にはいくつか方法があるが、ここでは環境変数PYTHONPATH
を設定することで解決することにする。
export PYTHONPATH=/home/user/opt/PyCifRW-3.3/lib64/python2.7/site-packages:$PYTHONPATH
で、環境変数PYTHONPATH
が適切に設定される。このディレクトリはインストール前には存在していないが、これからインストールする先の下に先読みしてlib64/python2.7/site-packages
を補っておかないと、引き続くインストールのところでコケる。
python setup.py install --prefix=/home/user/opt/PyCifRW-3.3
で晴れてインストール終了。ソースのあるディレクトリにあるINSTALL
に、
import CifFile
でインポートできれば、インストール成功とある。
多分だけど、これはpython setup.py install
を一般ユーザー権限で行うときにいつも使える手続きのように思う。
cif2cellを一般ユーザー権限でインストール
ここまでくれば、晴れてcif2cellがインストールできる。cif2cellのソースがあるディレクトリに移って、
python setup.py install --prefix=/home/user/opt/cif2cell-1.2.10
でインストール完了。
cif2cellにpathを通しておくのは当然にして、
export PYTHONPATH=/home/user/opt/cif2cell-1.2.10/lib/python2.7/site-packages:$PYTHONPATH
が必要。これがないと、cif2cell
のfrom utils import *
のところでコケる。
PyCifRWインストールの時に指定したPYTHONPATHは、cif2cellの実行時にも引き続き指定しておく必要がある。
cif2cellの使い方
ベーシックな使い方
cif2cellの基本的なコマンドの使い方は
cif2cell *.cif -p abinit
で、elkやvaspでの入力ファイルを作りたい場合はabinit
の個所をelk
やvasp
に変える。
出力ファイル名したい場合は
cif2cell *.cif -p abinit -o hoge.in
のように-o
に引き続いて所望のファイル名を指定。
ソースコードの入っているディレクトリのcifs
か/home/user/opt/cif2cell-1.2.10/lib/sample_cifs
にcifの例が入っているので、すぐに実行できる。
オプションの指定
オプションを指定することで、凝った使い方が出来る。例えば
cif2cell *.cif -p abinit --no-reduce
で、プリミティブではないセル(多分Bravais格子のこと)で入力ファイルを表示。
他のオプションは$ cif2cell -h
で確認できるし、/home/user/opt/cif2cell-1.2.10/lib/docs
に公式のマニュアルpdfがある。プリミティブセルから適当な大きさのsuper cellを作ったりなんかも出来るみたい(使ったことはない)。
トラブルシューティング
*.cif
のあるディレクトリでcif2cell
コマンドを実行するとコケる
*.cif
のあるディレクトリでcif2cell
コマンドを実行すると、以下のerrorを吐いてコケる。
***Error: could not read ./4296217772-1-2.cif.
Something may be wrong with the CIF file, you can check it with the free IUCr CIF valitation tool at http://http://checkcif.iucr.org/
Traceback (most recent call last):
File "/opt/cif2cell-1.2.10/bin/cif2cell", line 368, in <module>
sys.stderr.write(e.value+"\n")
AttributeError: 'exceptions.ValueError' object has no attribute 'value'
cifファイルがあるのとは別のディレクトリでcif2cell
を決めると、すんなり通る。こうならない書かれ方をしたcifもあるのかもしれないけれど。
おまけ
pwscf形式で出力してXCrySDenで表示
XCrySDenを使うと、結晶構造の可視化が容易にできたり、対応するBrillouin域のk空間のパスが容易に生成できたりする。
XCrySDenは、pyscf形式の入力ファイルを読み込めるので、こうした用途用にpwscfで出力もしておくと便利。
cifってどこで手に入れるの?
「(物質名や化学式) cif」でググって探しても出てくる。
出所のわからないcifもなんだかアレなので、私はいつもNIMSの無機材料データベース (AtomWork) で探してくる。基本的に文献での報告値がベースなので、出所がわかるのが良い。
初めて計算する構造の結晶とかはcifをVESTAにいれてぐりぐり回して見たり、結晶のデータを直接論文から読み取って、VESTA経由でcifを生成したりして、コンシステンシーを確認する。
Materials Project で調べてみるのもいいのかも(使ったことはない)。