出力ディレクトリのレイアウト

このページでは、各 pdb2reaction サブコマンドが出力ディレクトリに書き出すファイルと、エージェントや下流スクリプトが依拠すべき規約をまとめます。

ファイル名の規約

ファイル名

書き出し元

用途

summary.json

allpath-search、およびステージ別サブコマンド(--out-json 指定時のみ。デフォルトは --no-out-json

標準的な JSON 形式(JSON 出力リファレンス を参照)。最初にこれを読んでください。純粋なユーティリティ系サブコマンド(例: fix-altlocadd-elem-infobond-summary)はこれを出力しません。

result.json

ステージ別サブコマンド(--out-json 指定時のみ。デフォルト --no-out-json)(opttsoptfreqircspscan / scan2d / scan3dpath-optdftextract

別名ファイル — summary.json と内容(ペイロード)が同一です。単一ファイル名の規約に従う場合は summary.json を読んでください。summary.json のみ利用なら中間ファイルとみなし無視して構いません。

summary.log

path-searchall

人間可読な実行ログ(セグメント/ステージごとに 1 行)。

final_geometry.xyz

opttsopt

最適化された構造(XYZ、完全精度)。

mep.pdb / mep_trj.xyz

path-search

反応経路のフレーム(PDB / XYZ)。

final_geometries_trj.xyz / hei.xyz

path-opt

スタンドアロンの path-opt 軌跡(経路全体)と最高エネルギーイメージ(変換が有効な場合は対応する .pdb / .gjf も)。

mep_plot.png

path-search

MEP のエネルギープロファイル(PNG)。(all では代わりに整形済みの energy_diagram_MEP.png をルートに配置します。)

finished_irc_trj.xyz / forward_irc_trj.xyz / backward_irc_trj.xyz

irc

IRC 軌跡(経路全体およびブランチ別。参照 PDB が利用可能な場合は対応する .pdb も)。

frequencies_cm-1.txt

freq

振動モードの一覧。

*.gjf

各種(--convert-files 指定時)

Gaussian 形式の構造ファイル。

デフォルトの --out-dir

サブコマンド

デフォルトの --out-dir

all

./result_all/

opt

./result_opt/

tsopt

./result_tsopt/

freq

./result_freq/

irc

./result_irc/

dft

./result_dft/

scan / scan2d / scan3d

./result_scan*/

path-opt / path-search

./result_path_*/

sp

./result_sp/

extract

./model.pdb を書き出し。入力が複数の場合は model_<input>.pdb

--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-searchresult_path_search/summary.logmep.pdbmep_trj.xyzmep_plot.pngenergy_diagram_MEP.png)、path-optresult_path_opt/final_geometries_trj.xyzhei.xyz)。all の内部では、その生のエンジン出力は _work/path_opt/--refine-path 指定時は _work/path_search/)下のスクラッチとして扱われ、マージされた成果物(mep.pdbmep_trj.xyzmep_w_ref.pdbenergy_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.jsonallpath-search が書き出し、ステージ別サブコマンドでは --out-json 指定時のみ(デフォルト --no-out-json)書き出されます。書き出される場合はスキーマバージョン + status(失敗パスではエラークラスチェーンも)を保持しますが、ステージ別サブコマンドでデフォルトのまま summary.json が存在すると仮定しないでください。