出力ディレクトリのレイアウト¶
このページでは、各 pdb2reaction サブコマンドが出力ディレクトリに書き出すファイルと、エージェントや下流スクリプトが依拠すべき規約をまとめます。
ファイル名の規約¶
ファイル名 |
書き出し元 |
用途 |
|---|---|---|
|
|
標準的な JSON 形式(JSON 出力リファレンス を参照)。最初にこれを読んでください。純粋なユーティリティ系サブコマンド(例: |
|
ステージ別サブコマンド( |
別名ファイル — |
|
|
人間可読な実行ログ(セグメント/ステージごとに 1 行)。 |
|
|
最適化された構造(XYZ、完全精度)。 |
|
|
反応経路のフレーム(PDB / XYZ)。 |
|
|
スタンドアロンの path-opt 軌跡(経路全体)と最高エネルギーイメージ(変換が有効な場合は対応する |
|
|
MEP のエネルギープロファイル(PNG)。( |
|
|
IRC 軌跡(経路全体およびブランチ別。参照 PDB が利用可能な場合は対応する |
|
|
振動モードの一覧。 |
|
各種( |
Gaussian 形式の構造ファイル。 |
デフォルトの --out-dir¶
サブコマンド |
デフォルトの |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--out-dir <path>(または -o)で上書きします。
スタンドアロン と all の比較¶
単独で実行したサブコマンドはフラットな結果ディレクトリを書き出します。同じ書き出し処理でも、all によってオーケストレーションされると構造化されたツリーにネストされます。この 2 つのレイアウトは設計上異なります。
スタンドアロンのサブコマンド → 上記のファイルを含むフラットな
result_<subcmd>/。segments/も_work/もありません。これらはallが 1 回の実行で複数の書き出し処理を協調させるときにのみ現れます。allの内部では、リーフの書き出し処理はそのままネストされます。segments/seg_NN/<subcmd>/にあるセグメント別のリーフ出力は、スタンドアロンのresult_<subcmd>/と構造的に同一です —allは同じ書き出し処理に別の出力ディレクトリを渡すだけです。path-search/path-optはエンジンの例外です。 スタンドアロンで実行すると、それぞれの出力が成果物となります:path-search→result_path_search/(summary.log、mep.pdb、mep_trj.xyz、mep_plot.png、energy_diagram_MEP.png)、path-opt→result_path_opt/(final_geometries_trj.xyz、hei.xyz)。allの内部では、その生のエンジン出力は_work/path_opt/(--refine-path指定時は_work/path_search/)下のスクラッチとして扱われ、マージされた成果物(mep.pdb、mep_trj.xyz、mep_w_ref.pdb、energy_diagram_MEP.png)のみがパイプラインのルートに配置されます。 したがってallのツリーには 3 つのゾーンがあります。
result_all/
├─ summary.log · summary.json # ルートに書き出し
├─ mep.pdb · mep_w_ref.pdb · mep_trj.xyz # エンジンから配置された MEP 成果物
├─ energy_diagram_MEP.png · energy_diagram_*.png
├─ segments/
│ └─ seg_NN/ # 反応セグメント別の成果物(2桁番号)
│ ├─ reactant.{pdb,xyz,gjf} · ts.* · product.* # 正準の R/TS/P
│ └─ ts/ · irc/ · freq/{R,TS,P}/ · dft/ # ステージ別の作業ファイル(--tsopt / --thermo / --dft)
└─ _work/ # パイプラインのスクラッチ(rm -rf 可)
├─ models/ · scan/ · add_elem_info/ · fix_altloc/
└─ path_opt/ # MEP エンジンの生出力(--refine-path 時は path_search/)
TSOPT のみのモードでは MEP ステージがないため、_work/path_opt/ は存在せず、成果物は segments/seg_01/ 下に置かれます。モードごとの完全な内訳は all を参照してください。
エージェント向けレシピ¶
# Read whichever subcommand's output, single filename across the board.
import json
from pathlib import Path
summary = json.loads((Path(out_dir) / "summary.json").read_text())
if summary["status"] == "error":
chain = summary.get("error_class_chain", [])
if "OptimizationError" in chain:
# retry with looser convergence threshold
...
else:
raise RuntimeError(summary["error"])
summary.json / result.json は all と path-search が書き出し、ステージ別サブコマンドでは --out-json 指定時のみ(デフォルト --no-out-json)書き出されます。書き出される場合はスキーマバージョン + status(失敗パスではエラークラスチェーンも)を保持しますが、ステージ別サブコマンドでデフォルトのまま summary.json が存在すると仮定しないでください。