LoginSignup
7
4

More than 1 year has passed since last update.

cif2cellことはじめ

Last updated at Posted at 2020-02-18

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

が必要。これがないと、cif2cellfrom utils import *のところでコケる。
PyCifRWインストールの時に指定したPYTHONPATHは、cif2cellの実行時にも引き続き指定しておく必要がある。

cif2cellの使い方

ベーシックな使い方

cif2cellの基本的なコマンドの使い方は

cif2cell *.cif -p abinit

で、elkやvaspでの入力ファイルを作りたい場合はabinitの個所をelkvaspに変える。
出力ファイル名したい場合は

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 で調べてみるのもいいのかも(使ったことはない)。

7
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4