cif2rdf プログラム仕様
cif2rdf.py - CIFファイルから動径分布関数(RDF)および配位数RDFを計算するスクリプト
- 概要:
CIFファイルから動径分布関数(RDF)および配位数RDFを計算し、CSVとして出力、プロットするスクリプトです。
- 詳細説明:
結晶構造データを含むCIFファイルを読み込み、指定された原子種またはサイトに対するRDFおよび配位数RDFを計算します。 RDFの計算は、結晶内の全てのサイトペア間の距離を考慮して行われます。 配位数RDFは、中心原子から特定の配位数範囲にある原子の分布を示します。 結果はCSVファイルに保存され、Matplotlibを使用してグラフとして表示されます。 オプションでガウス関数による畳み込みを適用し、RDFを平滑化することも可能です。 スクリプトは'atom'、'site'、'cn'の3つのモードをサポートしており、 それぞれ原子タイプごと、非対称サイトごと、または配位数ごとにRDF/CNRDFを計算します。
- 関連リンク:
- crystal.cif2rdf.CalRDFi(cry, Rmin, Rmax, nR, atom0, iSite, normalize=True)[ソース]
特定の中心原子サイトからの部分動径分布関数(RDF)を計算します。
- 詳細説明:
cry`オブジェクト内の結晶構造データを使用し、`atom0`で指定された非対称サイトを中心として、 他の全てのサイトまでの距離を計算します。距離に基づいてRDFのビンをカウントし、オプションで正規化します。 計算は指定されたR範囲(`Rmin, Rmax)とビン数(nR)で行われます。
- パラメータ:
cry -- tkCrystal: 結晶構造データを含む`tkCrystal`オブジェクト。
Rmin -- float: 動径分布関数の最小距離(Å)。
Rmax -- float: 動径分布関数の最大距離(Å)。
nR -- int: 動径分布関数のR範囲のビン数。
atom0 -- tkAtomSite: 中心となる原子サイトオブジェクト。
iSite -- int: 中心となる非対称原子サイトのインデックス。
normalize -- bool, optional: RDFをステップサイズで正規化するかどうか。デフォルトはTrue。
- 戻り値:
tuple[list[float], numpy.ndarray]: R値のリストと、各原子タイプに対するRDFの2次元配列。
- crystal.cif2rdf.CalculateCNRDFs(cry, Rmin, Rmax, nR, nCN)[ソース]
配位数動径分布関数(CNRDF)と累積配位数(CNRCN)を計算します。
- 詳細説明:
各非対称サイトを中心とした総RDFを計算し、それを積分して累積配位数(RCN)を求めます。 その後、指定された最大配位数(nCN)までのCNRDFとCNRCNを、原子タイプごとに集計します。
- パラメータ:
cry -- tkCrystal: 結晶構造データを含む`tkCrystal`オブジェクト。
Rmin -- float: 動径分布関数の最小距離(Å)。
Rmax -- float: 動径分布関数の最大距離(Å)。
nR -- int: 動径分布関数のR範囲のビン数。
nCN -- int: 最大配位数。CNRDFの計算はこの値まで行われます。
- 戻り値:
tuple[list[float], numpy.ndarray, numpy.ndarray]: R値のリスト、原子タイプ、配位数ごとのCNRDF、および原子タイプ、配位数ごとのCNRCN。
- crystal.cif2rdf.CalculateRDFs(cry, Rmin, Rmax, nR, isprint=True)[ソース]
結晶構造から動径分布関数(RDF)と累積配位数(RCN)を計算します。
- 詳細説明:
`mode`グローバル変数に基づいて、原子タイプごとまたは非対称サイトごとのRDFおよびRCNを計算します。 `CalRDFi`関数を呼び出して各中心サイトからの部分RDFを計算し、それらを集計します。 RCNはRDFの数値積分によって求められます。
- パラメータ:
cry -- tkCrystal: 結晶構造データを含む`tkCrystal`オブジェクト。
Rmin -- float: 動径分布関数の最小距離(Å)。
Rmax -- float: 動径分布関数の最大距離(Å)。
nR -- int: 動径分布関数のR範囲のビン数。
isprint -- bool, optional: 計算情報を表示するかどうか。デフォルトはTrue。
- 戻り値:
tuple[list[float], numpy.ndarray, numpy.ndarray]: R値のリスト、計算されたRDFの2次元配列、および計算されたRCNの2次元配列。
- crystal.cif2rdf.main()[ソース]
スクリプトのメイン処理を実行します。
- 詳細説明:
まず`updatevars()`を呼び出してコマンドライン引数を処理し、グローバル変数を更新します。 その後、`rdf()`関数を呼び出して動径分布関数の計算とプロットを行う一連の処理を実行します。
- crystal.cif2rdf.rdf()[ソース]
CIFファイルを読み込み、動径分布関数(RDF)と配位数RDF(CNRDF)を計算、保存、プロットします。
- 詳細説明:
グローバル変数に基づいて計算パラメータを設定し、CIFファイルを解析して`tkCrystal`オブジェクトを生成します。 結晶構造の基本情報を表示した後、`mode`に応じてRDF、RCN、またはCNRDFとその累積関数を計算します。 必要に応じてガウス関数による畳み込みを適用し、結果をCSVファイルに保存します。 最後に、Matplotlibを使用して計算結果をグラフとして表示します。
- 戻り値:
None
- crystal.cif2rdf.read_csv(infile, xmin=None, xmax=None, delimiter=',')[ソース]
CSVファイルからデータを読み込みます。
- 詳細説明:
指定されたCSVファイルを読み込み、ヘッダーと最初の2列(xとy)のデータを抽出します。 `xmin`と`xmax`が指定されている場合、xの値がその範囲内にあるデータのみを読み込みます。
- パラメータ:
infile -- str: 入力CSVファイルのパス。
xmin -- float, optional: 読み込むxデータの最小値。デフォルトはNone。
xmax -- float, optional: 読み込むxデータの最大値。デフォルトはNone。
delimiter -- str, optional: CSVファイルの区切り文字。デフォルトは','。
- 戻り値:
tuple[list[str], list[float], list[float]]: ヘッダー、xデータ、yデータのタプル。
- crystal.cif2rdf.read_xyzfile(cfgfile, xyzfile)[ソース]
構造データと格子ベクトルをXYZ形式と設定ファイルから読み込み、tkCrystalオブジェクトを生成します。
- 詳細説明:
設定ファイル(cfgfile)から格子ベクトルとサンプル名を読み込み、 XYZファイル(xyzfile)から原子サイトの座標と名前を読み込みます。 これらの情報を使用して`tkCrystal`オブジェクトを構築し、原子サイトを分数座標に変換して追加、拡張します。
- パラメータ:
cfgfile -- str: 格子ベクトル情報を含む設定ファイルのパス。
xyzfile -- str: 原子座標情報を含むXYZファイルのパス。
- 戻り値:
tkCrystal: 読み込まれた構造データを持つ`tkCrystal`オブジェクト。
- crystal.cif2rdf.savecsv(outfile, header, datalist)[ソース]
データをCSVファイルに保存します。
- 詳細説明:
指定されたファイルパスにヘッダーとデータリストをCSV形式で書き込みます。 データリストは複数の列データ(各列がリスト)として扱われ、行ごとに結合されて出力されます。
- パラメータ:
outfile -- str: 出力CSVファイルのパス。
header -- list[str]: CSVファイルのヘッダー行の文字列リスト。
datalist -- list[list[float]]: 出力するデータ。各要素が1つの列データとなるリストのリスト。