nappynap/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__)'

もし pmdnappy から呼び出したい場合は,以下のようにラッパープログラムをコンパイルしする.

cd nappy/pmd
make pmd_wrapper

正しく動作させるためには,makefile で MPI ライブラリの include および lib ディレクトリを正しく設定する必要がある.


Quick start

Older version

rev220118v0.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 for pmd program
  • POSCAR: VASP POSCAR file
  • dump: LAMMPS dump file
  • xsf
  • 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()

しかし,この機能は試験的なもので動作も微妙なので,構造ファイルを書き出して他の可視化ソフトで表示することをオススメします.