cif_inf_pymatgen.py ドキュメント
このドキュメントは、Pythonスクリプト cif_inf_pymatgen.py の機能と使用方法について説明します。
1. スクリプトの概要
cif_inf_pymatgen.py は、CIF(Crystallographic Information File)ファイルから結晶構造情報を読み込み、pymatgen ライブラリを用いて解析し、その詳細を標準出力に表示するスクリプトです。
1.1. 概要
本スクリプトは、指定されたCIFファイルから結晶構造データを読み込み、pymatgen ライブラリの機能を用いて、その構造に関する詳細な情報を解析し、標準出力に表示します。具体的には、空間群の情報、格子定数、対称操作、原子サイトの座標と組成などが含まれます。また、元の構造に加え、対称化された構造の解析結果も提示します。
1.2. 詳細説明
コマンドライン引数またはデフォルト設定に基づいて入力CIFファイルパスを決定します。
tklib.tkApplicationを使用して、標準出力に加え、ログファイルへの出力リダイレクトを設定します。pymatgenのStructure.from_fileメソッドでCIFファイルを読み込み、Structureオブジェクトを作成します。作成された
Structureオブジェクトについて、print_inf関数を呼び出して詳細情報を表示します。SpacegroupAnalyzerを用いて構造を対称化し、その対称化されたStructureオブジェクトについても同様にprint_inf関数で詳細情報を表示します。表示される情報には、空間群のシンボルと番号、対称操作の行列、格子定数、格子ベクトル、単位胞体積、独立なサイトおよび全サイトの原子種、分数座標、占有率が含まれます。
関連リンク:
:doc:cif_inf_pymatgen_usage
2. 必須ライブラリ
本スクリプトの実行には、以下の非標準ライブラリが必要です。
pymatgen結晶学、材料科学、計算材料科学のためのPythonライブラリ。
使用モジュール:
pymatgen.io.cif.CifParserpymatgen.symmetry.analyzer.SpacegroupAnalyzerpymatgen.core.structure.Structurepymatgen.core.lattice.Latticepymatgen.core.periodic_table.Element
tklibtkApplicationやユーティリティ関数を提供するカスタムライブラリ。使用モジュール:
tklib.tkapplication.tkApplicationtklib.tkutils.terminatetklib.tkutils.pinttklib.tkutils.pfloattklib.tkutils.getargtklib.tkutils.getintargtklib.tkutils.getfloatarg
標準ライブラリとしては、pprint および re が使用されています。
3. グローバル変数
スクリプトの実行中に使用される主要なグローバル変数は以下の通りです。
infile: 入力CIFファイルのパスを格納する文字列変数。デフォルト値はSrTiO3.cifです。コマンドライン引数で上書き可能です。app:tklib.tkApplicationクラスのインスタンス。アプリケーションの管理(ログ出力リダイレクト、終了処理など)に使用されます。
4. 関数リファレンス
print_matrix(m)
3x3行列を整形して標準出力に表示します。
概要
与えられた3x3の数値行列を行と列にフォーマットして表示します。
詳細説明
行列の各要素は小数点以下4桁の浮動小数点数としてフォーマットされ、パイプ記号で囲まれた見やすい形式で出力されます。
パラメータ
m(list[list[float]]): 表示する3x3の数値行列。リストのリスト形式で指定します。
戻り値
None
print_inf(structure)
pymatgen の Structure オブジェクトから詳細な結晶構造情報を抽出し、表示します。
概要
与えられた Structure オブジェクトの空間群、対称操作、格子情報、およびサイト情報を整形して表示します。
詳細説明
以下の情報が表示されます。
構造全体の概要 (
structure.__str__)空間群のシンボルと番号
全ての対称操作の数と各対称操作の行列
格子定数 (a, b, c, alpha, beta, gamma)
格子ベクトル
単位胞の体積
独立なサイトの原子種と分数座標
全てのサイトの原子種、分数座標、および占有率
パラメータ
structure(pymatgen.core.structure.Structure): 解析対象のpymatgenStructureオブジェクト。
戻り値
None
main()
プログラムの主要な実行フローを定義します。
概要
指定されたCIFファイルを読み込み、元の構造と対称化された構造の両方について詳細情報を表示します。
詳細説明
入力CIFファイル名からログファイル名と、対称化されたCIFファイルの出力パスが生成されます。
app.redirect()を使用して、標準出力をログファイルにもリダイレクトします。入力CIFファイルを
pymatgen.core.structure.Structureオブジェクトとして読み込みます。読み込んだ元の構造の情報を
print_inf関数を使って表示します。SpacegroupAnalyzerを使用して構造を対称化し、その対称化された構造の情報をprint_inf関数を使って表示します。app.terminate(pause = True)により、プログラムの実行終了時に一時停止します。
戻り値
None
5. 入出力
5.1. 入力ファイル
結晶構造ファイル:
ファイル形式: CIF(Crystallographic Information File)
デフォルトパス:
SrTiO3.cif指定方法: コマンドライン引数の1番目としてファイルパスを指定します。
5.2. 出力
標準出力:
解析された結晶構造情報(空間群、格子定数、対称操作、サイト情報など)が出力されます。
ログファイル:
標準出力と同じ内容がログファイルにも書き込まれます。
ファイル名: 入力ファイル名に基づいて自動生成されます。例:
SrTiO3-out.txt(入力ファイルがSrTiO3.cifの場合)
対称化されたCIFファイルのパス (生成のみ):
対称化された構造を保存するためのファイルパスが生成されます。
ファイル名: 入力ファイル名に基づいて自動生成されます。例:
SrTiO3-symmetrized.cif(入力ファイルがSrTiO3.cifの場合)注意: このパスは生成されますが、コード内にはそのパスに実際にファイルを書き込む処理は含まれていません。
6. 使用方法
6.1. コマンドラインからの実行
スクリプトは、Pythonインタープリタを使用してコマンドラインから実行します。入力CIFファイルは引数として指定できます。
python cif_inf_pymatgen.py [input_cif_file]
6.2. 引数
input_cif_file(オプション): 解析対象のCIFファイルのパス。省略された場合は、デフォルト値のSrTiO3.cifが使用されます。
7. 実行例
7.1. デフォルトファイルでの実行
SrTiO3.cif がカレントディレクトリに存在する場合、引数なしで実行できます。
python cif_inf_pymatgen.py
7.2. 特定のファイルを指定して実行
例えば、my_crystal.cif というファイルを解析する場合。
python cif_inf_pymatgen.py my_crystal.cif
7.3. 出力例(抜粋)
Open logfile [./SrTiO3-out.txt]
input: SrTiO3.cif
log file: ./SrTiO3-out.txt
output symmetrized CIF file: ./SrTiO3-symmetrized.cif
Read [SrTiO3.cif]
Structure as original input:
Full Formula (Sr1 Ti1 O3)
Reduced Formula: SrTiO3
abc : 3.905, 3.905, 3.905
angles: 90.0, 90.0, 90.0
Sites (5)
0 Sr (0.0, 0.0, 0.0)
1 Ti (0.5, 0.5, 0.5)
2 O (0.5, 0.0, 0.0)
3 O (0.0, 0.5, 0.0)
4 O (0.0, 0.0, 0.5)
structure keys: dict_keys(['@module', '@class', 'lattice', 'sites'])
Space group: Pm-3m #221
Symmetry operatoins: 48
op #1
| 1.0000 0.0000 0.0000 |
| 0.0000 1.0000 0.0000 |
| 0.0000 0.0000 1.0000 |
... (以下、対称操作が続く)
Lattice:
Lattice parameters: 3.905 3.905 3.905 90.0 90.0 90.0
Lattice vectors:
[[3.905, 0.0, 0.0],
[0.0, 3.905, 0.0],
[0.0, 0.0, 3.905]]
Volume: 59.50742125
No information for equivalent sites
All sites:
Sr [0.0, 0.0, 0.0] occ= 1.0
Ti [0.5, 0.5, 0.5] occ= 1.0
O [0.5, 0.0, 0.0] occ= 1.0
O [0.0, 0.5, 0.0] occ= 1.0
O [0.0, 0.0, 0.5] occ= 1.0
Symmetrized structure:
Full Formula (Sr1 Ti1 O3)
Reduced Formula: SrTiO3
abc : 3.905, 3.905, 3.905
angles: 90.0, 90.0, 90.0
Sites (5)
0 Sr (0.0, 0.0, 0.0)
1 Ti (0.5, 0.5, 0.5)
2 O (0.5, 0.0, 0.0)
3 O (0.0, 0.5, 0.0)
4 O (0.0, 0.0, 0.5)
structure keys: dict_keys(['@module', '@class', 'lattice', 'sites'])
Space group: Pm-3m #221
Symmetry operatoins: 48
... (以下、同様の情報が続く)
8. 著作権とライセンス
コードからは、著作権情報やライセンスに関する記述は確認できません。