xrd_fit プログラム仕様
X線回折(XRD)データ解析スクリプト
概要: このスクリプトは、実験的に測定されたX線回折(XRD)パターンと、結晶構造情報ファイル(CIF)から計算された理論的なXRDパターンを比較・分析するためのツールです。 主な機能として、パターンプロット、相関分析、オーバーラップチェック、およびLASSO回帰による混合相の定量フィッティングを提供します。
詳細説明: 本スクリプトは、様々なモードでXRDデータ解析を実行します。 - plot_all: 実験XRDパターンと各CIF由来の理論XRDパターンを個別のグラフに表示します。 - plot_one: 実験XRDパターンと各CIF由来の回折ピーク位置を一つのグラフに表示します。 - plot_one2: 実験XRDパターンと各CIF由来の理論XRDパターンを一つのグラフに表示します。 - overwrap: 異なるCIFパターン間のオーバーラップ(重なり)を評価します。 - CIFcorrelation: CIFパターン間の相関係数を評価します。 - correlation: 実験パターンとCIFパターン間の相関係数を評価します。 - fit: LASSO回帰を用いて実験パターンを背景とCIFパターンでフィッティングし、各相の寄与を定量化します。 スマアリング(ブロードニング)効果や背景処理もサポートしています。
関連リンク: xrd_fit.py 技術ドキュメント
- XRD.xrd_fit.CIF_correlation(inf, app, cparams)[ソース]
CIFファイルから生成されたXRDパターン間の相関係数を計算し、可視化する。
詳細説明: すべてのCIFファイルから生成された理論XRDパターン間の相関係数を計算し、結果をテキストで出力する。 また、各CIFパターンと入力実験パターンとの相関係数を、スマアリングFWHMを変化させながらプロットし、 最も相関の高いスマアリング条件や、異なる相間の類似性を評価する。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.check_overwrap(inf, app, cparams)[ソース]
異なるCIFファイル由来のXRDパターン間のオーバーラップ(重なり)をチェックし、可視化する。
詳細説明: 各CIFファイルの回折ピークが、他のCIFファイルから生成された回折パターンとどの程度重なっているかを計算し、 その結果をプロットする。これにより、複数の結晶相が混在する場合に、各相のピークが互いに干渉する度合いを評価できる。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.collect_data(inf, app, cparams, is_print=True)[ソース]
フィッティングや相関分析のために、実験および理論XRDデータを収集・前処理する。
詳細説明: 入力された実験XRDデータと各CIFファイルから計算された理論XRDデータを統一された2θ範囲に補間し、 スマアリング(畳み込み)と正規化を適用する。さらに、背景多項式のための基底関数も準備する。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
is_print -- bool. 処理の詳細をコンソールに出力するかどうか。
- 戻り値:
tuple. (Q2_list, yobs_infile, ysim_infile, bg_names, bg_list, sample_names, ycif_list, labels_train, x_train)。 - Q2_list: list. 共通の2θ座標のリスト。 - yobs_infile: list. 前処理された実験XRD強度データ。 - ysim_infile: list or None. 前処理されたシミュレーションXRD強度データ(存在する場合)。 - bg_names: list. 背景多項式のラベルのリスト。 - bg_list: list. 背景多項式の基底関数(レジェンドル多項式)のリスト。 - sample_names: list. CIFファイルから取得した試料名またはファイルボディ名のリスト。 - ycif_list: list. 各CIFファイルから計算され前処理された理論XRD強度データのリスト。 - labels_train: list. 学習データ(x_train)の各列に対応するラベルのリスト。 - x_train: list. 学習データとなる背景多項式と理論XRD強度のリスト。
- XRD.xrd_fit.convolution(x, y, filter, nskip=1)[ソース]
データ y を指定された filter で畳み込む。
詳細説明: 離散的な畳み込み演算を実行し、y の各点において filter を適用して 平滑化された(またはブロードニングされた)データ yc を生成する。 nskip パラメータで畳み込みの計算間隔を制御し、結果のデータ点数を減らすことができる。
- パラメータ:
x -- list or array. x座標のリスト。
y -- list or array. 畳み込み対象のy座標のリスト。
filter -- list or array. 畳み込みに使用するフィルタの配列。
nskip -- int. 畳み込み計算をスキップする間隔。1の場合、すべての点で計算する。
- 戻り値:
tuple. (_x, _y). 畳み込み後のx座標とy座標のリスト。y がNoneの場合はNoneを返す。
- XRD.xrd_fit.correlation(inf, app, cparams)[ソース]
入力された実験XRDパターンとCIFファイルから生成された理論パターンとの相関係数を計算し、可視化する。
詳細説明: 実験XRDパターンと、読み込まれた各CIFファイルから計算された理論XRDパターン間の相関係数を計算し、 結果をテキストで出力する。さらに、これらの相関係数をスマアリングFWHMを変化させながらプロットし、 最も相関の高い相や適切なスマアリング条件を評価する。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.fit(inf, app, cparams)[ソース]
LASSO回帰を用いて実験XRDパターンを背景とCIF由来の理論パターンでフィッティングする。
詳細説明: 実験XRDパターンを目的変数、背景多項式と各CIFファイルから計算された理論XRDパターンを説明変数として、 LASSO回帰を実行する。異なるalpha値での係数変化とRMSEの変化をプロットし、最終的に指定されたalpha値での フィッティング結果(係数、RMSE、MAV)とフィッティングされたパターンをプロットで表示する。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.initialize(app=None, cparams=None)[ソース]
アプリケーションのパラメータを初期値で設定する。
詳細説明: デバッグフラグ、プラグインディレクトリ、モード、入力ファイルパス、CIFファイルパス、X線波長、 2θ範囲、FWHM、ガウス比率、Yスケール、背景次数、LASSOのalphaなどの初期値を設定する。
- パラメータ:
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.main()[ソース]
メイン関数。XRD解析スクリプトのエントリポイント。
詳細説明: アプリケーションの初期化、パラメータの読み込みと更新、プラグインモジュールのロード、 および指定されたモードに応じたXRD解析処理(プロット、相関分析、フィッティングなど)を実行する。 処理のログはファイルにも出力される。
- 戻り値:
なし
- XRD.xrd_fit.max_none(x)[ソース]
None値を含むリストまたはイテラブルの最大値を返す。
詳細説明: 入力されたリスト x の要素からNoneを除外し、残りの数値の最大値を計算する。 数値要素が一つもない場合は、非常に小さい負の値を返す。
- パラメータ:
x -- list or iterable. 数値とNoneを含むリストまたはイテラブル。
- 戻り値:
float. 最大値。
- XRD.xrd_fit.min_none(x)[ソース]
None値を含むリストまたはイテラブルの最小値を返す。
詳細説明: 入力されたリスト x の要素からNoneを除外し、残りの数値の最小値を計算する。 数値要素が一つもない場合は、非常に大きい正の値を返す。
- パラメータ:
x -- list or iterable. 数値とNoneを含むリストまたはイテラブル。
- 戻り値:
float. 最小値。
- XRD.xrd_fit.normalize(l, Amin=0.0, Amax=1.0, vmin=None, vmax=None)[ソース]
数値リストの要素を指定された範囲に正規化する。
詳細説明: リスト l の要素を [vmin, vmax] の範囲から [Amin, Amax] の範囲に線形変換して正規化する。 vmin または vmax が指定されない場合は、リスト内の要素から自動的に計算される。 入力リストがNoneの場合はNoneを返す。
- パラメータ:
l -- list. 数値のリスト。
Amin -- float. 正規化後の最小値。デフォルトは 0.0。
Amax -- float. 正規化後の最大値。デフォルトは 1.0。
vmin -- float, optional. 元データの最小値。指定しない場合は自動計算。
vmax -- float, optional. 元データの最大値。指定しない場合は自動計算。
- 戻り値:
list or None. 正規化されたリスト、または入力がNoneの場合はNone。
- XRD.xrd_fit.normalize_none(l, Amin=0.0, Amax=1.0, vmin=None, vmax=None)[ソース]
None値を含むリストの要素を指定された範囲に正規化する。
詳細説明: リスト l の数値要素を [vmin, vmax] の範囲から [Amin, Amax] の範囲に線形変換して正規化する。 vmin または vmax が指定されない場合は、リスト内のNone以外の要素から自動的に計算される。 None値は変更されない。
- パラメータ:
l -- list. 数値とNoneを含むリスト。
Amin -- float. 正規化後の最小値。デフォルトは 0.0。
Amax -- float. 正規化後の最大値。デフォルトは 1.0。
vmin -- float, optional. 元データの最小値。指定しない場合は自動計算。
vmax -- float, optional. 元データの最大値。指定しない場合は自動計算。
- 戻り値:
list. 正規化されたリスト。
- XRD.xrd_fit.plot_all(inf, app, cparams)[ソース]
実験XRDパターンとCIFからの理論パターンを個別のサブプロットに表示する。
詳細説明: 入力された実験XRDパターンを最上段のサブプロットに表示し、 その後、読み込まれた各CIFファイルから計算されたXRDパターンをそれぞれ異なるサブプロットに表示する。 各理論パターンには回折ピーク位置もプロットされる。すべてのプロットは共通の2θ軸を共有する。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.plot_input(inf, app, cparams)[ソース]
入力された実験XRDパターンのみをプロットする。
詳細説明: inf から実験XRDデータを取得し、一つのグラフにプロットする。 Y軸のスケールは cparams.yscale に従う。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.plot_one(inf, app, cparams)[ソース]
実験XRDパターンとCIFからの回折ピーク位置を同じグラフに表示する。
詳細説明: 入力された実験XRDパターンと、読み込まれた各CIFファイルから計算された回折ピーク位置(強度は正規化)を 同一のグラフにプロットする。これにより、実験パターンと各結晶相のピーク位置の関係を一度に確認できる。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.plot_one2(inf, app, cparams)[ソース]
実験XRDパターンとCIFからの理論XRDパターンを同じグラフに表示する。
詳細説明: 入力された実験XRDパターンと、読み込まれた各CIFファイルから計算された理論XRDパターン(ブロードニング適用済み)を 同一のグラフにプロットする。これにより、実験パターンと各結晶相の回折プロファイルの形状を一度に比較できる。
- パラメータ:
inf -- dict. 読み込まれたデータを含む辞書。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
なし
- XRD.xrd_fit.read_all_files(app, cparams, input_only=False)[ソース]
入力XRDファイルとすべてのCIFファイルを読み込む。
詳細説明: cparams.infile で指定された入力XRDファイルを読み込み、その2θ範囲に基づいて解析範囲を調整する。 cparams.cif_files で指定されたマスクに一致するCIFファイルをすべて読み込み、変換処理を行う。 input_only が`True`の場合、入力ファイルのみを読み込む。
- パラメータ:
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
input_only -- bool. Trueの場合、入力ファイルのみを読み込む。
- 戻り値:
dict. 読み込まれたモジュールとデータを含む辞書。 キーは "module_input", "module_cif", "inf_input", "inf_cif_list"。
- XRD.xrd_fit.read_file(path, app, cparams)[ソース]
指定されたパスのファイルを読み込み、その内容を処理する。
詳細説明: 登録されているモジュールを順に試行し、ファイルのタイプを判別する。 ファイルタイプが一致したモジュールを使用してデータを読み込み、必要に応じて変換する。
- パラメータ:
path -- str. 読み込むファイルのパス。
app -- tkApplicationのインスタンス。
cparams -- 設定パラメータを保持するオブジェクト。
- 戻り値:
tuple. (module, inf). module はファイルを読み込んだモジュールオブジェクト、 inf は読み込まれたデータを含む辞書。ファイルが読み込めない場合は (None, None).