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. 詳細説明

  1. コマンドライン引数またはデフォルト設定に基づいて入力CIFファイルパスを決定します。

  2. tklib.tkApplication を使用して、標準出力に加え、ログファイルへの出力リダイレクトを設定します。

  3. pymatgenStructure.from_file メソッドでCIFファイルを読み込み、Structure オブジェクトを作成します。

  4. 作成された Structure オブジェクトについて、print_inf 関数を呼び出して詳細情報を表示します。

  5. SpacegroupAnalyzer を用いて構造を対称化し、その対称化された Structure オブジェクトについても同様に print_inf 関数で詳細情報を表示します。

  6. 表示される情報には、空間群のシンボルと番号、対称操作の行列、格子定数、格子ベクトル、単位胞体積、独立なサイトおよび全サイトの原子種、分数座標、占有率が含まれます。

関連リンク: :doc:cif_inf_pymatgen_usage

2. 必須ライブラリ

本スクリプトの実行には、以下の非標準ライブラリが必要です。

  • pymatgen

    • 結晶学、材料科学、計算材料科学のためのPythonライブラリ。

    • 使用モジュール:

      • pymatgen.io.cif.CifParser

      • pymatgen.symmetry.analyzer.SpacegroupAnalyzer

      • pymatgen.core.structure.Structure

      • pymatgen.core.lattice.Lattice

      • pymatgen.core.periodic_table.Element

  • tklib

    • tkApplication やユーティリティ関数を提供するカスタムライブラリ。

    • 使用モジュール:

      • tklib.tkapplication.tkApplication

      • tklib.tkutils.terminate

      • tklib.tkutils.pint

      • tklib.tkutils.pfloat

      • tklib.tkutils.getarg

      • tklib.tkutils.getintarg

      • tklib.tkutils.getfloatarg

標準ライブラリとしては、pprint および re が使用されています。

3. グローバル変数

スクリプトの実行中に使用される主要なグローバル変数は以下の通りです。

  • infile: 入力CIFファイルのパスを格納する文字列変数。デフォルト値は SrTiO3.cif です。コマンドライン引数で上書き可能です。

  • app: tklib.tkApplication クラスのインスタンス。アプリケーションの管理(ログ出力リダイレクト、終了処理など)に使用されます。

4. 関数リファレンス

main()

プログラムの主要な実行フローを定義します。

概要

指定されたCIFファイルを読み込み、元の構造と対称化された構造の両方について詳細情報を表示します。

詳細説明

  1. 入力CIFファイル名からログファイル名と、対称化されたCIFファイルの出力パスが生成されます。

  2. app.redirect() を使用して、標準出力をログファイルにもリダイレクトします。

  3. 入力CIFファイルを pymatgen.core.structure.Structure オブジェクトとして読み込みます。

  4. 読み込んだ元の構造の情報を print_inf 関数を使って表示します。

  5. SpacegroupAnalyzer を使用して構造を対称化し、その対称化された構造の情報を print_inf 関数を使って表示します。

  6. 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. 著作権とライセンス

コードからは、著作権情報やライセンスに関する記述は確認できません。