analyze_symmetry プログラム仕様
配位子構造の点群対称性を解析し、対称適合線形結合 (SALC) を構築するスクリプト。
詳細説明: 本スクリプトは、JSONファイルから配位子の構造データを読み込み、点群対称性を自動検出します。 検出された点群に基づいて、配位子の対称性を既約表現に分解し、 中心金属のd軌道とのハイブリダイゼーションの可否を評価します。 さらに、各既約表現に対応する対称適合線形結合 (SALC) を抽出し、その結果を出力します。
関連リンク: salc_calculation_overview
- Quantum.analyze_symmetry.center_positions(ligands_pos: ndarray) ndarray[ソース]
配位子の位置を重心が原点に来るように移動する。
詳細説明: 与えられた配位子の三次元座標群の重心を計算し、各座標から重心を引くことで、 重心を原点に移動した新しい座標群を生成します。
- パラメータ:
ligands_pos -- numpy.ndarray: shapeが(N, 3)の配位子座標配列。
- 戻り値:
numpy.ndarray: 重心が原点に移動された配位子座標配列。
- Quantum.analyze_symmetry.choose_point_group(plugins: list[dict], ligands_pos: ndarray, tol_match_geom: float, autodetect_cfg: dict | None) tuple[dict, list[dict]][ソース]
複数の点群プラグインを評価し、最も適切な点群を自動選択する。
詳細説明: 各プラグインが提供する`align_guess`と`symmetry_hit_rate`の結果を評価し、 以下のルールに基づいて最適な点群を選択します: 1. min_rate_strict`設定で定義された閾値`strict_ok`を満たすプラグインを優先します。 2. 残りの候補の中から、ヒット数 (`hits) が最大であるものを選択します。 3. 次に、群の位数 (Gorder) が最大であるものを選択します。 4. 最後に、ヒット率 (rate) が最大であるものを選択します。
- パラメータ:
plugins -- list[dict]: 点群プラグインのリスト。 各プラグインは辞書形式で、name (str), align_guess (callable), build_group (callable), d_irreps (dict), irreps (callable), irrep_dim (callable), irrep_char (callable) などの情報を含む。
ligands_pos -- numpy.ndarray: shapeが(N, 3)の配位子座標配列。
tol_match_geom -- float: 幾何学的な一致を判定するための許容誤差。
autodetect_cfg -- dict | None: 自動検出設定を含む辞書。 min_rate_strict (dict) などのキーを含むことができる。
- 戻り値:
tuple[dict, list[dict]]: - dict: 選択された最適な点群プラグインと評価結果を含む辞書。
キーとして`plugin` (dict), ok_align (bool), R_align (numpy.ndarray), pos_aligned (numpy.ndarray), hits (int), rate (float), Gorder (int), strict_thr (float), strict_ok (bool) を含む。
list[dict]: 評価された全ての点群プラグインの結果リスト。 各要素は上記の`dict`と同じ構造を持つ。
- Quantum.analyze_symmetry.load_structure_json(path: str) dict[ソース]
指定されたJSONファイルから構造設定を読み込む。
詳細説明: ファイルパスを引数として受け取り、配位子の位置、d軌道タイプ、解析モード、 許容誤差などの設定を辞書形式で抽出して返します。 欠損しているキーにはデフォルト値が適用されます。
- パラメータ:
path -- str: 構造設定を含むJSONファイルのパス。
- 戻り値:
dict: 読み込まれた設定値を含む辞書。 主なキーとして`ligands_pos` (numpy.ndarray), d_orbital (str), mode (str), tol_match_geom (float), tol_match_D (float), salc_eig_tol (float), coeff_tol (float), print_coeffs (bool), print_salc_thr (float), max_salc_per_irrep (int | None), autodetect (dict) などが含まれます。
- Quantum.analyze_symmetry.main() None[ソース]
コマンドライン引数からJSONファイルを読み込み、配位子構造の点群対称性解析を実行する。
詳細説明: 1. コマンドライン引数(--infile)から構造設定JSONファイルのパスを読み込みます。
デフォルトは`structure.json`です。
JSONファイルから設定を読み込み、配位子の位置を重心が原点となるように正規化します。
`tkpg`プラグインを使用して最適な点群を自動検出します。
検出された点群と設定されたd軌道に基づいて、配位子の既約表現への分解を行います。
中心金属d軌道とのハイブリダイゼーションの対称性による可否を判定します。
対称適合線形結合 (SALC) を抽出し、その係数を出力します。
- 戻り値:
None