JSON 出力リファレンス¶
pdb2reaction は、AI エージェント・スクリプト・下流ツールがプログラムから扱える機械可読の JSON 出力を提供します。
--out-json フラグ¶
MLIP を使用するすべてのサブコマンドが --out-json / --no-out-json(デフォルト: off)に対応しています。
有効にすると、出力ディレクトリに result.json が生成されます。
pdb2reaction opt -i r.pdb -q -1 --out-json --out-dir result_opt
cat result_opt/result.json | python -m json.tool
all / path-search は常に summary.json を出力します(--out-json 不要)。
summary.json ミラー¶
write_result_json は、ステージごとの result.json のペイロードをすべて同じディレクトリの summary.json にミラーリングします。これにより、エージェントスクリプトはどのサブコマンドでも単一のファイル名(summary.json)を読めばよく、隣に書き出される result.json も同一のペイロードを持ちます。
共通エンベロープ¶
すべての result.json に自動付与されるフィールド:
フィールド |
型 |
説明 |
|---|---|---|
|
string |
エンベロープのスキーマバージョン。現在値は |
|
string |
サブコマンド名(例: |
|
string |
パッケージバージョン |
|
string |
|
|
float |
実行時間(秒) |
|
object |
ハードウェア情報(下表参照) |
environment:
フィールド |
型 |
例 |
|---|---|---|
|
string |
|
|
string |
|
|
float |
|
|
string |
|
|
string |
|
|
int |
|
|
float |
|
エラーエンベロープ(status == "error" のとき)¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
元の例外の |
|
string |
例外クラス名 |
|
list[string] |
MRO 全体のクラス名。エージェントがテキストを解析せずに階層を照合できます |
|
string |
例外クラスが定義されたモジュール |
|
string |
高レベルの CLI ステージラベル |
エラー処理¶
ジョブが失敗した場合(クラッシュ、OOM、収束失敗による sys.exit など)でも、"status": "error" と失敗種別を表す "error_type" を含む result.json が書き出されます。詳細なトレースバックは .out ログファイルを参照してください。失敗判定には result.json の不在ではなく status == "error" を使用してください。
収束しなかったが完了したジョブでは、"status": "not_converged" と最終 force/step 値を含む result.json が書き出されるため、AI エージェントはサイクル数を増やして再試行するかどうかをこの情報をもとに判断できます。
サブコマンド別スキーマ¶
opt¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
float |
最終エネルギー (Hartree) |
|
int |
最適化サイクル数 |
|
string |
|
|
string |
MLIP バックエンド ( |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
int |
原子数 |
|
int |
凍結原子数 |
|
string |
暗黙溶媒 or |
|
string |
収束閾値プリセット名 |
|
int |
最大サイクル数 |
|
string |
入力ファイル名 |
|
float |
最終 max gradient (Hartree/Bohr) |
|
float |
最終 RMS gradient |
|
float |
最終 max 変位 (Bohr) |
|
float |
最終 RMS 変位 |
|
object |
|
|
object |
出力ファイルマップ |
tsopt¶
opt と同じフィールドに加え:
フィールド |
型 |
説明 |
|---|---|---|
|
int |
虚振動の数 |
|
float[] |
虚振動数 (cm⁻¹, 負の値) |
|
string |
|
files には imaginary_mode_files(vib ファイルリスト)を含む場合があります。
収束詳細 (force/step) は rsirfo モードで利用可能です。dimer モードも runner.is_converged に応じて status に "converged" / "not_converged" を返しますが、n_opt_cycles のみを出力し、rsirfo モードが出すサイクルごとの力・ステップ収束の詳細キーは省略されます。
freq¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
基準振動モードの総数 |
|
int |
虚モード数 |
|
float[] |
全振動数 (cm⁻¹) |
|
float[] |
負の振動数のみ |
|
object|null |
熱化学データ(下表参照) |
|
string |
MLIP バックエンド |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
int |
原子数 |
|
int |
凍結原子数 |
|
string |
暗黙溶媒 or |
|
float |
温度 (K) |
|
float |
圧力 (atm) |
|
string |
入力ファイル名 |
|
object |
|
thermochemistry (thermoanalysis 利用不可時は null):
フィールド |
型 |
単位 |
|---|---|---|
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
Hartree |
|
float |
cal/mol |
|
float |
cal/(mol K) |
|
float |
cal/(mol K) |
irc¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
前方 IRC フレーム数 |
|
int |
後方 IRC フレーム数 |
|
int |
全フレーム数 |
|
float |
反応物エネルギー |
|
float |
TS エネルギー |
|
float |
生成物エネルギー |
|
bool | null |
前方 IRC 収束? インテグレータがフラグを公開しない場合は |
|
bool | null |
後方 IRC 収束? インテグレータがフラグを公開しない場合は |
|
string |
MLIP バックエンド |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
int |
凍結原子数 |
|
string |
暗黙溶媒 or |
|
object |
|
|
float |
IRC ステップ長 (Bohr) |
|
int |
最大 IRC ステップ数 |
|
string |
入力ファイル名 |
|
object |
軌跡ファイル (xyz + pdb) |
scan¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP バックエンド |
|
string |
MLIP モデル名 |
|
string |
暗黙溶媒 or |
|
bool |
事前最適化を実行したか |
|
float |
1 ステップ当たりの最大結合長変位 (Å) |
|
int |
スキャンステージ数 |
|
object[] |
ステージごとのデータ(下記参照) |
|
object |
出力ファイル |
stages[]:
フィールド |
型 |
説明 |
|---|---|---|
|
int |
1-based ステージインデックス |
|
int |
ステップ数 |
|
bool |
拘束最適化の収束? |
|
list |
原子ペア (1-based) |
|
list |
初期距離 |
|
list |
目標距離 |
|
float |
最終エネルギー |
|
float[] |
ステップごとのエネルギー |
|
object |
|
scan2d / scan3d¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP バックエンド |
|
string |
MLIP モデル名 |
|
string |
暗黙溶媒 or |
|
float |
1 ステップ当たりの最大結合長変位 (Å, |
|
int |
グリッド点数 |
|
int[] |
グリッド次元 ( |
|
object |
|
|
float |
表面最小エネルギー |
|
object |
CSV + プロットファイル |
path-opt¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
bool |
収束判定 |
|
string |
|
|
string |
MLIP バックエンド |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
string |
暗黙溶媒 or |
|
float[] |
全イメージエネルギー |
|
int |
イメージ数 |
|
int |
最高エネルギーイメージのインデックス |
|
float |
HEI エネルギー |
|
float |
前方障壁 (kcal/mol) |
|
float |
反応エネルギー (kcal/mol) |
|
object |
軌跡 + HEI ファイル |
path-search¶
path-search は --out-json フラグを持たず、summary.json を出力ディレクトリに常に書き出します。共通エンベロープ(command, pdb2reaction_version, environment)に加え、以下を含みます:
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
再帰 MEP のセグメント数 |
|
object[] |
セグメントごとの |
|
object[] |
セグメントごとのラベル付きエネルギープロファイル (kcal/mol) |
|
string |
バックエンド / モデル名 |
|
int |
系の電荷 |
|
int |
スピン多重度 |
all がさらに追加するフィールドは下の summary.json セクション を参照してください。
dft¶
注:
dftは SCF が収束した場合 (exit 0) のみresult.jsonを書き出します。SCF が収束しなかった場合は exit code 3 を返しresult.jsonは作成されません。SCF 状態はconverged: boolフィールドと exit code で表現され、statusフィールドは持ちません。上記の汎用 “not_converged” ステータスはdftには適用されません。ただし、想定外の例外(unhandled exception)が発生した場合は、他サブコマンドと同じ標準の “error” エンベロープ(result.json+ ミラーのsummary.json)が書き出されます。
フィールド |
型 |
説明 |
|---|---|---|
|
bool |
SCF 収束? |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
int |
原子数 |
|
int |
DFT グリッドレベル |
|
float |
SCF 収束閾値 |
|
int |
最大 SCF サイクル数 |
|
string |
入力ファイル名 |
|
float |
DFT エネルギー |
|
float |
DFT エネルギー (kcal/mol) |
|
string |
汎関数 |
|
string |
基底関数 |
|
string |
実効エンジンラベル ( |
|
bool |
GPU 使用? |
|
bool |
|
|
object |
|
|
object |
|
|
object |
|
extract¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
入力 PDB の原子数 |
|
int |
抽出後の原子数 |
|
float |
合計電荷 |
|
float |
タンパク質電荷 |
|
float |
リガンド電荷合計 |
|
float |
イオン電荷合計 |
|
list |
|
|
object |
|
|
int |
切断された C/N 結合に追加されたキャップ水素数 |
|
bool |
バックボーンを除外したか |
|
bool |
結晶水を含めたか |
|
string |
ユーザ指定 |
|
string |
中心残基 |
|
float |
抽出半径 (angstrom) |
|
string[] |
入力 PDB パス |
|
object |
出力 PDB / クラスターファイル |
trj2fig¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
軌跡フレーム数 |
|
float |
フレーム中の最小エネルギー |
|
float |
フレーム中の最大エネルギー |
|
string |
MLIP バックエンド |
|
object |
出力プロットファイル |
energy-diagram¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
エネルギーデータ点数 |
|
object |
出力ダイアグラムファイル |
bond-summary¶
--json 有効時、bond-summary は JSON を標準出力に出力します(result.json ファイルは書き出しません。永続化したい場合は stdout をリダイレクトしてください)。上の MLIP 系サブコマンドが out_dir に result.json を書き出すのとは異なる挙動です:
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
object[] |
ペアごとの比較( |
summary.json (path-search / all)¶
all / path-search は、より構造化された summary.json を出力します:
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
int |
セグメント数 |
|
object[] |
セグメントごとの |
|
object[] |
エネルギーダイアグラム(ラベル + kcal/mol) |
|
string |
モデル名 |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
object |
ハードウェア情報 |
all はさらに以下を含みます:
フィールド |
型 |
説明 |
|---|---|---|
|
object |
律速段階のセグメント番号と障壁 |
|
float |
全体反応エネルギー |
|
list |
セグメントごとの TS/IRC/freq/DFT 結果 |
|
object |
主要出力ファイル一覧 |
使用例¶
Python¶
import json
with open("result_opt/result.json") as f:
result = json.load(f)
if result["status"] == "converged":
print(f"Energy: {result['energy_hartree']:.6f} Hartree")
else:
print(f"Not converged after {result['n_opt_cycles']} cycles")
print(f"Max force: {result['final_max_force']:.6f}")
jq¶
# 収束確認
jq '.status' result.json
# 障壁エネルギー取得
jq '.barrier_kcal' result.json
# 虚振動数の確認
jq '.imaginary_frequencies_cm' result.json
# 自由エネルギー取得
jq '.thermochemistry.sum_EE_and_thermal_free_energy_ha' result.json