nappy は nap/nappy/ に含まれているPythonユーティリティ群です.
Setup
Version info
rev250522 または v0.13.2 以降を仮定.
nap ディレクトリのルートで以下のコマンドを実行する.
python -m build
pip install -e .これにより napsys コマンドがインストールされ,which コマンドで確認できるようになる.
また,Python パッケージ nappy も利用可能になる.
python -c 'import nappy; print(nappy.__file__)'もし pmd を nappy から呼び出したい場合は,以下のようにラッパープログラムをコンパイルしする.
cd nappy/pmd
make pmd_wrapper正しく動作させるためには,makefile で MPI ライブラリの include および lib ディレクトリを正しく設定する必要がある.
Quick start
Older version
rev220118 か v0.10.12 より前のバージョンでは
napsysコマンドとしてはインストールされないので,napsys.pyを直接呼び出す.
上記のように pip を使って nappy をインストールしてあれば,napsysコマンドを使うことができます.
napsysコマンドは nappy を使って,ファイル形式を変換(convert)するか,構造ファイルの情報を表示(analyze)することができます.例えば,次のようにすると,pmdini に書かれている構造情報(セルサイズや原子数など)を表示してくれます.
$ napsys analyze pmdini次のように convert サブコマンドを使うと,ファイル形式を変形したり,系のサイズを変更したりできます.
$ napsys convert --periodic-copy 2,2,2 POSCAR pmdini上の例では,POSCARから構造データを読みこんで系を 2x2x2 倍にしてから pmdini として保存します.
nappy on jupyter or ipython
nappy内のいくつかのモジュールは jupyter notebook から呼び出して使うことができます.例えば,次の例では,pmdiniファイルを読み込んでその系の情報を表示します.
import nappy
from nappy.napsys import analyze
nsys = nappy.io.read('/path/to/nap/examples/pmd_W/pmdini')
print(nsys)上のコードの出力は次のようになります.
a1 vector = [ 10.254, 0.000, 0.000]
a2 vector = [ 0.000, 9.613, 0.000]
a3 vector = [ 0.000, 0.000, 9.613]
a = 10.254 A
b = 9.613 A
c = 9.613 A
alpha = 90.00 deg.
beta = 90.00 deg.
gamma = 90.00 deg.
volume= 947.617 A^3
number of atoms = 54
ファイルの入出力
次のようにしていくつかの形式のファイルを読み込むことができます.
import nappy
nsys = nappy.io.read('POSCAR')
nsys = nappy.io.read(fname='structure.dat', format='xsf')現在読み込み可能なファイル形式は以下です.
pmd: file format specific forpmdprogramPOSCAR: VASP POSCAR filedump: LAMMPS dump filexsfextxyz: extended xyz format used in ASE
書き出しは次のように書きます.
import nappy
nappy.io.write(nsys,'POSCAR')
nappy.io.write(nsys,'pmdini')
nappy.io.write(nsys,'dump')write関数はファイル名から形式を自動で読み取りますが,formatオプションでファイル形式を明示的に指定することもできます(例えば format='pmd').
ASE atoms オブジェクトからの変換
下のコードでは,ASE atoms オブジェクトと nappy オブジェクトの間で変換しています.
import nappy
nsys = nappy.io.from_ase(atoms)
atoms = nsys.to_ase_atoms()Call pmd from python
pmd_wrapper が f2py を使ってコンパイルされていれば,次のようにpython上からpmdを呼び出すことができます.
import nappy
nsys = nappy.io.from_ase(atoms)
pmd = nappy.pmd.PMD(nsys) # <== Set napsys as an atomic system used in pmd
pmd.load_inpmd() # <== assuming there is in.pmd file in the working directory
pmd.run() # <== Run MD
nsys = pmd.get_system() # <== Get the new system that contains MD results
nsys.get_potential_energy()
-11389.735335774534nappy.pmd.PMD クラスは pmd を実行するいくつかの関数を提供します.PMDは pmd を実行するのに必要なファイル(in.params.XXXなど)が作業ディレクトリ内に存在していることを仮定しています.
jupyter notebook上での原子構造の可視化
Py3Dmolパッケージがインストールされていれば,nappyは系をjupyter notebook上で可視化することができます.
nsys.view()しかし,この機能は試験的なもので動作も微妙なので,構造ファイルを書き出して他の可視化ソフトで表示することをオススメします.