I/O モジュール
使用頻度の高い機能
Atomsへ変換する
log2atoms
from grrmpy.io import log2atoms
eqs_list = log2atoms("XXX_EQ_list.log",com="XXX.com",poscar="POSCAR") # GRRM-VASPで計算した場合
eqs_list = log2atoms("XXX_EQ_list.log",com="XXX.com") # クラスターモデルでGRRM計算した場合
# FrozenAtomsがない場合,読み込みたくない時はcomファイルは指定しなくて良い
- grrmpy.io.read_listlog.log2atoms(logfile, com=None, poscar=None, constraints=[])[ソース]
logファイルからAtomsオブジェクトに変換する
Parameter:
- logfile: str or Path
_list.logファイルパス.
- com: str or Path
- FrozenAtomsを追加する場合にcomファイルを指定.その他comファイルの情報を確認したい時はgrrmpy.structure.comfile.COMを参照
- poscar: str or Path
POSCARパスを設定した場合.セル情報を読み取りAtomsオブジェクトに適用する.
- constraints: ase.constraints
- 与えたconstraintsは全てのAtomsに適用される.複数のconstraintsを与えたい場合はリストで与える
- 戻り値
Atomsオブジェクト
- 戻り値の型
Atoms
read_connections
from grrmpy.io import read_connections
connections = read_connections("XXX_TS_list.log")
print(connections)# --> [[0,1],[5,4],[4,6],[30,2],["??",1]]
frozen2atoms
read_traj
grrmpy.automate.auto_opt.AutoOpt
で計算を行なった後,計算後の構造を一括でAtomsに変換する際に用いる.
- grrmpy.io.read_traj.read_traj(folder, blank=True)[ソース]
- フォルダ内のtrajファイルを検索し,Atomsのリストする.trajファイル名には必ず数字が含まれている必要がある.例えば,0.traj, 3.traj, 2.trajファイルが存在する場合, 0.traj, 2.traj, 3.trajの順でファイルの読み込みを行ない,blank=Trueの場合,[Atoms,None,Atoms,Atoms]のように数字の存在しないファイルはNoneの要素になる.blank=Flaseの場合,None要素は作成されない.ファイル名には数字を含む必要があるが,例えばsample_1_1.trajの場合,始めの数字である"1"のみに注目しソートされる.従って,blank=Trueの際にsample_1_1.traj, sample_1_2.trajの2つのファイルが存在するとき"1"のファイルが2つ存在すると判断されるためエラーとなる.blank=Falseの場合このような問題は起きず,sample_1_1.traj, sample_1_2.trajの順で読み込まれる.
Parameters:
- folder: str or Path
フォルダ名
- 戻り値
Atomsのリスト,元々のファイルパス
- 戻り値の型
tuple
iread_traj
list.logファイルをマージする.
- class grrmpy.io.log.Log(eqfile=None, tsfile=None, ptfile=None)[ソース]
logファイルを与えた場合それをLogオブジェクトとして格納する.
Paramaters:
- eqfile: str or Path
- XXX_EQ_list.logファイルのパス.
- tsfile: str or Path
- XXX_EQ_list.logファイルのパス.
- ptfile: str or Path
- XXX_EQ_list.logファイルのパス.
サンプル
>>> log1 = log("XXX_EQ_list.log",ts="XXX_TS_list.log", pt="XXX_PT_list.log") >>> log2 = log("YYY_EQ_list.log",ts="YYY_TS_list.log", pt="YYY_PT_list.log") >>> marge_log = log1 + log2 # マージ >>> marge_log.write_log("margedEQ.log", "margedTS.log", "margedPT.log")
htmlに書き込む
write_html
- NEBイメージのエネルギーダイアグラムを作成
from grrmpy.io import write_html from ase.optimize import FIRE from ase.neb import NEB neb = NEB(images) opt = FIRE(neb,climb=True) opt.run(fmax=0.001) opt.attach(lambda:write_html("NEB.html",images),interval=10) # 10イタレーション毎に逐次書き込み write_html("NEB.html",images) # 書き込み
- 振動のエネルギーダイアグラムを作成
from grrmpy import pfp_calculator from ase.vibrations import Vibrations from ase.io import iread vib = Vibrations(ts) vib.run() vib.write_mode(n=0) # --> vib.0.trajが作成される vib_images = list(iread("vib.0.traj")) for image in vib_images image.calc = pfp_calculator() write_html("Vib.html",vib_images)
- 追記モード
from grrmpy.io import write_html from ase.optimize import FIRE from ase.neb import NEB write_html("NEB.html",images) # 計算前のNEBイメージを書き込み neb = NEB(images) opt = FIRE(neb,climb=True) opt.run(fmax=0.001) write_html("NEB.html",images,append=True) # 同一ファイル上にのNEBイメージを追記
BaderChargeの読み込み
read_afc
- grrmpy.io.read_acfdat.read_acf(file='ACF.dat') DataFrame [ソース]
ACF.datファイルの中身をDataFrameにして返す.
Parameters:
- fileobj: Union[str, Path]
ACF.dataファイルパス
- 戻り値
ACF.datのデータフレーム
- 戻り値の型
np.DataFrame
- grrmpy.io.read_acfdat.get_dader(atoms: Atoms, file='ACF.dat', displacement=0.0001) ndarray [ソース]
- ACF.datファイルからBaderChargeを計算する.BaderCharge = ZVAL - Charge(ACF.dat内に記載の)で計算される.
Parameters:
- atoms: Atoms
Atomsオブジェクト
- file: Union[str, Path, DataFrame]
ACF.dataファイルパス, DataFrame.
- displacement: float
原子の順番がACF.datとAtomsとで同じか検証するため.
- 戻り値
BaderChargeのリスト
- 戻り値の型
np.ndarray
VESTAのelement.iniやCSVファイルからclolorの辞書を作成する
- grrmpy.io.read_elementsini.read_elementsini(elements_ini_path, rgba=False)[ソース]
構造をViewerで可視化する際の原子の色を規定する辞書を作成する.
Parameters:
- elements_ini_path: Union[str, Path]
- elements.ini(VESTAで使われるやつ)のパス
- rgba: bool
- Trueの場合, (r,g,b,a) のタプル,RGBは最大値が1で規格化されるFalseの場合, 0xから始めるHEXで与えられる
- 戻り値
元素名,hexカラーコードの辞書.{'H':'0xffffff'}
- 戻り値の型
dict
高圧縮でシリアライズ化する
pickleのバイナリデータをbz2にさらに圧縮することでpythonオブジェクトを高い圧縮率でシリアライズ化する.