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 forpmd
programPOSCAR
: VASP POSCAR filedump
: LAMMPS dump filexsf
extxyz
: 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.735335774534
nappy.pmd.PMD クラスは pmd を実行するいくつかの関数を提供します.PMDは pmd を実行するのに必要なファイル(in.params.XXX
など)が作業ディレクトリ内に存在していることを仮定しています.
jupyter notebook上での原子構造の可視化
Py3Dmolパッケージがインストールされていれば,nappyは系をjupyter notebook上で可視化することができます.
nsys.view()
しかし,この機能は試験的なもので動作も微妙なので,構造ファイルを書き出して他の可視化ソフトで表示することをオススメします.