JSON 出力の一覧¶
このページでは、--out-json で書き出す result.json と summary.json の欄(key)を、全コマンドに共通の欄とコマンドごとの欄に分けて示します。
--out-json フラグ¶
opt、sp、tsopt、freq、irc、scan、scan2d、scan3d、path-opt、dft、extract、trj2fig、energy-diagram は --out-json / --no-out-json(デフォルト: 無効)に対応しています。有効にすると、通常の出力と同じ場所に result.json と summary.json を書き出します。2 つのファイルの中身は同じなので、result.json を読みます。
pdb2reaction opt -i r.pdb -q -1 --out-json --out-dir result_opt
cat result_opt/result.json | python -m json.tool
result_opt/result.json を開き、まず execution_status と scientific_status を読みます。opt、tsopt、path-opt は optimization_status も記録します。all と path-search が --out-json を付けなくても書き出す summary.json は、これとは構造が違う別のファイルです。
共通の欄¶
どの結果ファイルにも下の欄があります。「任意」と書いた欄は、そのコマンドが対応するデータを持つときだけ出ます。
フィールド |
型 |
説明 |
|---|---|---|
|
string |
ファイルのスキーマの版。版が上がると構造が変わったことを示します。 |
|
string |
単体のコマンドはサブコマンド名(例: |
|
string |
パッケージバージョン |
|
string |
実行の完了状況: |
|
string |
結果の利用可否: |
|
string |
任意。現在の呼び出しの UUID。 |
|
float |
任意。実行時間(秒)。時間を記録しないコマンドでは省きます |
|
object |
ハードウェア情報(下表参照) |
|
string | null |
任意。MLIP のバックエンドの識別子。描画だけのコマンドが calculator を評価しなかった場合は null |
|
string | null |
任意。バックエンドと分けて記録する、正確なモデル/チェックポイント名 |
|
string | null |
任意。正確な識別子から導出した論文表記用のモデル名 |
|
string | null |
任意。複数ドメインのモデルで使ったバックエンドのタスク。正確な識別子は |
|
string | null |
実効精度の共通表記( |
environment:
フィールド |
型 |
例 |
|---|---|---|
|
string |
|
|
string |
|
|
float |
|
|
string |
|
|
string |
|
|
int |
|
|
float |
|
実行の完了と指定した段の完了¶
すべての結果に execution_status と scientific_status を出します。複数段階の計算と scan は、各段の結果も下の欄に残します。
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
string |
指定したすべての段階が収束すれば |
|
string[] |
利用できない、または欠落した個別結果の理由。正常終了時は省略されます。 |
|
string[] |
集約結果の欠落を検出するための、期待された項目と観測された項目の ID。 |
|
object[] |
|
|
object[] |
|
エラー時の欄(コマンドが例外で停止した場合)¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
元の例外の |
|
string |
例外クラス名 |
|
list[string] |
例外のクラスとそのすべての親クラスの名前。エージェントはテキストを解析せずに階層を照合できます |
|
string |
例外クラスが定義されたモジュール |
|
string |
CLI の段の名前 |
エラー処理¶
出力ディレクトリを用意した後に例外で実行が止まった場合は、--out-json が無くても "execution_status": "failed" と "error_type" を含む result.json と summary.json を書き出します。それより前の失敗は使用上の注意点を参照してください。
最適化が収束せずに終わった場合、result.json には "optimization_status": "not_converged" が記録されます。オプティマイザの結果には該当する最終の力/ステップやサイクルの欄が入り、DFT と Dimer は持たない欄を出しません。再実行の前に何を変えるかは、トラブルシューティングの計算 / 収束の問題 を参照してください。
オプティマイザは "optimization_status": "stalled" を返すこともあります。これは、力/ステップの収束基準を満たさないまま、設定ウィンドウにわたってエネルギーが減少しなくなった状態(エネルギープラトー)です。停滞は未収束の一種で、converged にはなりません。止まった理由は stop_reason に記録されます。
サブコマンド別スキーマ¶
sp¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
string |
計算に使った入力のパス |
|
string / string | null |
MLIP のバックエンドとモデル。共通の |
|
string | null |
|
|
int / int |
総電荷とスピン多重度 |
|
int |
原子数 |
|
float |
一点エネルギー (Hartree) |
|
string |
|
|
string | null |
|
|
string |
読みやすい形の経過時間 |
opt¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
string |
オプティマイザが収束せずに早く止まったとき( |
|
float |
最終エネルギー (Hartree) |
|
int |
最適化サイクル数 |
|
string |
|
|
string |
calculator のバックエンド( |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名。 |
|
int |
原子数 |
|
int |
固定原子数 |
|
string |
陰溶媒または |
|
string |
収束閾値プリセット名 |
|
int |
最大サイクル数 |
|
string |
入力ファイル名 |
|
float |
最終 max 勾配 (Hartree/Bohr) |
|
float |
最終 RMS 勾配 |
|
float |
最終 max 変位 (Bohr) |
|
float |
最終 RMS 変位 |
|
object |
|
|
object |
出力ファイルマップ |
|
object |
任意。 |
tsopt¶
opt と同じフィールドに加え:
フィールド |
型 |
説明 |
|---|---|---|
|
string |
数値オプティマイザの結果: |
|
string |
終端の厳密な PHVA(部分 Hessian 振動解析)による |
|
string |
|
|
int|null |
|
|
int|null |
虚振動の数。PHVA を実行しなかった場合は |
|
int|null |
大きさを問わない負の振動数の数(閾値以内も含む)。 |
|
float[]|null |
虚振動数 (cm⁻¹, 負の値)。PHVA 未実行時は |
|
float |
閾値(cm⁻¹、デフォルト |
|
string |
数え方の規則の名前。値は |
|
float |
符号を負にした同じ閾値(デフォルト |
|
string |
|
|
string |
CLI で要求したプリセット( |
|
string |
実際に使用したオプティマイザのアルゴリズム |
|
string|null |
|
|
object |
厳密な鞍点の確認、最後に追ったモードの番号と重なり、止まった理由と、指定したときだけ働くモードの消失・回復の処理の記録。これらの回復の処理はデフォルトでは無効 |
|
object |
剛体モードと厳密な Hessian の記録。剛体モードの射影の記録を参照 |
files には imaginary_mode_files(vib ファイルの一覧)と hessian_npy(--dump-hess のファイルの絶対パス)が入ることがあります。TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます。このとき saddle_validation: "first_order"、n_imaginary_modes: 1 です。最後の PHVA は、オプティマイザが収束したときと、エネルギープラトーで止まったとき(stalled)に実行します。それ以外はスキップとして記録します。optimization_status と saddle_validation は独立なので、収束した実行が saddle_validation: "higher_order" で終わることがあり、これは一次の TS ではありません。all が IRC に進む条件は tsopt の TS の判定 を参照してください。Dimer の結果も同じ TS の欄を持ちますが、サイクルごとの力/ステップの詳細と safeguards はありません。
freq¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
基準振動モードの総数 |
|
int |
虚振動の数(n_imag)。− |
|
int |
大きさを問わない負の振動数の数(閾値以内も含む) |
|
float[] |
全振動数 (cm⁻¹) |
|
float[] |
|
|
object|null |
熱化学データ(下表参照) |
|
string |
MLIP バックエンド |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
int |
原子数 |
|
int |
固定原子数 |
|
string |
陰溶媒または |
|
float |
温度 (K) |
|
float |
圧力 (atm) |
|
string |
入力ファイル名 |
|
object |
|
|
object |
剛体モードと Hessian の記録。 |
thermochemistry:
フィールド |
型 |
単位 |
|---|---|---|
|
string |
自動判定した分子点群 |
|
string |
|
|
int |
外部回転対称数 |
|
string |
|
|
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¶
IRC は execution_status と scientific_status に加え、方向ごとの停止理由と軌跡を残します。all は、その後の端点最適化を endpoint_opt に記録します。つないだ経路は finished_first(前方の端)から TS を通って finished_last(後方の端)へ並びます。どちらが R でどちらが P かは並び順では決まりません。
フィールド |
型 |
説明 |
|---|---|---|
|
int |
前方 IRC フレーム数 |
|
bool |
サイクル上限前に 3 フレーム以内で停止した分岐。診断用のみ |
|
int |
後方 IRC フレーム数 |
|
int |
全フレーム数 |
|
float |
|
|
float |
TS エネルギー |
|
float |
|
|
string |
|
|
bool |
各方向を要求したか |
|
bool | null |
RMS 勾配の停止条件を満たして止まったか。診断専用で、 |
|
bool | null |
TS からエネルギーの下がる向きに離れたことを確認できたか |
|
string | null |
数値の積分が失敗したときだけ入る理由 |
|
bool | null |
前方の最終ステップで |
|
bool | null |
後方の最終ステップで |
|
string |
MLIP バックエンド |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
bool |
端点での物理的な停止を迂回するモード(指定したときだけ有効)を使ったか |
|
int |
エネルギーの上昇、または 1 ステップのエネルギー変化量による停止を、実際に迂回した回数 |
|
int |
固定原子数 |
|
string |
陰溶媒または |
|
object |
first→last 方向の |
|
string |
|
|
float |
IRC ステップ長 (Bohr) |
|
int |
最大 IRC ステップ数 |
|
string |
入力ファイル名 |
|
object |
軌跡ファイル(XYZ と、あれば PDB/CIF 形式のファイル) |
|
object |
剛体モードと初期 Hessian の記録。剛体モードの射影の記録を参照 |
scan¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
拘束緩和に使用したオプティマイザのプリセット |
|
string |
実効のオプティマイザの種類( |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP バックエンド |
|
string |
MLIP モデル名 |
|
string |
陰溶媒または |
|
bool |
事前最適化を実行したか |
|
float |
1 ステップ当たりの最大結合長変位 (Å) |
|
int |
スキャンステージ数 |
|
object[] |
ステージごとのデータ(下記参照) |
|
object |
出力ファイル |
stages[]:
フィールド |
型 |
説明 |
|---|---|---|
|
int |
1 始まりのステージインデックス |
|
int |
ステップ数 |
|
bool |
拘束最適化が収束したか |
|
list |
原子ペア (1 始まり) |
|
list |
初期距離 |
|
list |
目標距離 |
|
float |
最終エネルギー |
|
float[] |
ステップごとのエネルギー |
|
object |
|
scan2d / scan3d¶
フィールド |
型 |
説明 |
|---|---|---|
|
int | null |
系の電荷。描画だけの |
|
int | null |
スピン多重度。描画だけの |
|
string | null |
MLIP バックエンド。描画だけの |
|
string | null |
MLIP モデル名。描画だけの |
|
string | null |
陰溶媒または |
|
float |
1 ステップ当たりの最大結合長変位 (Å, |
|
int |
|
|
string |
実行レベルの完了状態 |
|
int |
新規実行で試行したグリッド点数(事前最適化を除く) |
|
int |
新規実行の点のうち、科学計算上再利用可能な点数 |
|
object[] |
各点の収束・エネルギー・成果物・再利用可否 |
|
object[] |
各格子点のインデックス、距離、エネルギー、収束、 |
|
string[] |
今回の実行が書いた CSV/HTML/PNG と格子点の構造。前の実行で残ったファイルは入りません |
|
int[] |
グリッド次元 ( |
|
object |
|
|
float |
エネルギー曲面上の最小エネルギー |
|
object |
CSV + プロットファイル |
試行した点と使える点の数の欄は、新しく scan したときに出力します。描画だけの scan3d --csv は試行数を出力せず、入力 CSV の記録が不完全なら使える点の数も省略する場合があります。
path-opt¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
bool | null |
収束判定: エンジン自身の収束シグナルによる |
|
string |
|
|
string |
MLIP バックエンド |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
string |
MLIP モデル名 |
|
string |
陰溶媒または |
|
bool |
端点の事前最適化を有効にしたか |
|
float |
最初のイメージのエネルギー (Hartree) |
|
float |
最後のイメージのエネルギー (Hartree) |
|
float[] |
全イメージエネルギー |
|
int |
イメージ数 |
|
int |
最高エネルギーイメージのインデックス |
|
float |
HEI エネルギー |
|
float |
前方障壁 (kcal/mol) |
|
float |
反応エネルギー (kcal/mol) |
|
object |
軌跡 + HEI ファイル |
path-search¶
path-search には --out-json フラグがありません。summary.json を書き出し、その欄は summary.json (path-search / all) に示します。
dft¶
注:
--out-json指定時、dftは SCF 収束・非収束の両方でresult.jsonとsummary.jsonを書き、非収束時はscientific_status: "failed"、converged: falseを記録します。SCF が収束しなかった実行は終了コード 1 で終わります。
フィールド |
型 |
説明 |
|---|---|---|
|
bool |
SCF が収束したか |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
int |
原子数 |
|
int |
DFT グリッドレベル |
|
float |
SCF 収束閾値 |
|
int |
最大 SCF サイクル数 |
|
string |
入力ファイル名 |
|
float |
DFT エネルギー |
|
float |
DFT エネルギー (kcal/mol) |
|
string |
汎関数 |
|
string |
基底関数 |
|
string |
実効エンジンラベル ( |
|
bool |
GPU を使ったか |
|
bool |
GPU4PySCF の低メモリのソルバーを実際に使ったか(開殻、CPU、 |
|
bool |
低メモリモードを要求したか |
|
object |
正規化した計算の設定と、実際に使ったホストの計算資源 |
|
string/object | null |
PySCF へ渡した実効 ECP |
|
string |
実効の組み込み陰溶媒の設定 |
|
object |
|
|
object |
|
|
object |
|
extract¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
選択残基に含まれる、主鎖の除外と切断の前の原子数(入力全体ではない) |
|
int |
切断後に保持した原子数(キャップ水素の追加前) |
|
float |
合計電荷 |
|
float |
タンパク質電荷 |
|
float |
リガンド電荷合計 |
|
float |
イオン電荷合計 |
|
list |
|
|
object |
|
|
int |
炭素原子側に残る切断結合へ追加されたキャップ水素数。モデルの原子数は |
|
bool |
主鎖を除外したか |
|
bool |
結晶水を含めたか |
|
string | null |
ユーザーが指定した |
|
string |
中心残基 |
|
float |
抽出半径 (angstrom) |
|
string[] |
入力 PDB / mmCIF パス |
|
object |
出力 PDB / クラスターファイル |
trj2fig¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
軌跡フレーム数 |
|
float |
フレーム中の最小エネルギー |
|
float |
フレーム中の最大エネルギー |
|
string |
|
|
string | null |
再計算の設定。軌跡コメントを読む場合はすべて null |
|
string[] |
フレームごとのエネルギーの出どころ |
|
string |
保存したエネルギーの単位( |
|
string | null |
フレームを再計算した場合のみ MLIP のバックエンド。軌跡コメントのエネルギーを読む場合は null |
|
int | null |
エネルギーを再計算したときの電荷と多重度。それ以外は null |
|
string | null |
再計算 calculator の溶媒設定。それ以外は null |
|
string[] |
すべての出力パスを順序どおりに保持する正規フィールド。別ディレクトリに同名ファイルがあっても保持される |
|
object |
ベース名からパスへの対応表。同じベース名の出力が 2 つあると一方だけが残るため、 |
energy-diagram¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
エネルギーデータ点数 |
|
object |
出力ダイアグラムファイル |
bond-summary¶
--json 有効時、bond-summary は JSON を標準出力に出し、上のサブコマンドと違って result.json を書き出しません:
フィールド |
型 |
説明 |
|---|---|---|
|
string / string |
すべての組を比較できれば |
|
object[] |
ペアごとの比較( |
剛体モードの射影の記録¶
freq、irc、tsopt の結果は rigid_projection object を含み、opt では --flatten 実行時に含みます。freq --dump は同じ object を thermoanalysis.yaml にも書きます。
フィールド |
型 |
説明 |
|---|---|---|
|
string |
固定の剛体モード処理: |
|
string |
射影の方法の名前 |
|
int |
動ける原子の Hessian から除いた剛体方向の数 |
|
int |
固定原子を考える前の、系全体の剛体運動のランク |
|
int |
固定原子を動かさない条件で除かれたランク |
|
float |
ランクの判定に用いる相対 SVD 許容値 |
|
int |
動ける原子と固定原子の数 |
|
int[] |
動ける原子と固定原子の 0 始まりのインデックス |
|
string |
入力 Hessian 空間: |
|
string |
Hessian の出どころ。 |
|
int[2] |
入力 Hessian の形状。 |
|
int / float[] |
± |
constrained は、固定原子を動かさない系全体の剛体運動だけを除きます。詳しくは freq を参照してください。
summary.json (path-search / all)¶
all / path-search は、より構造化された summary.json を出力します:
フィールド |
型 |
説明 |
|---|---|---|
|
string / string |
実行が完了したかと、指定した計算の段がすべて完了したか。 |
|
string[] |
要求した結果の欠損・未収束などの理由。正常終了時は省略されます。 |
|
object | なし |
早期停止時のみ存在。 |
|
string[] |
期待された集約項目と観測された集約項目。 |
|
object | なし |
scanを初期経路に使う |
|
int |
セグメント数 |
|
int |
実効の再帰分割階層上限。 |
|
string[] |
経路の準備・精密化で実際に使用した単一構造オプティマイザ( |
|
bool / bool | null |
端点事前最適化を実行したか、および全端点が収束したか。読み取れない端点があれば |
|
object[] |
セグメントごとの |
|
object[] |
エネルギーダイアグラム(ラベル + kcal/mol) |
|
string |
バックエンド名 |
|
string | null |
バックエンドと分離して記録するモデル名 |
|
string | null |
論文表記用のモデル名 |
|
string | null |
複数ドメインのモデルで使ったバックエンドのタスク |
|
string | null |
実効の |
|
int |
系の電荷 |
|
int |
スピン多重度 |
|
object |
ハードウェア情報 |
|
object[] |
実行で実際に使った手法の |
all はさらに以下を含みます:
フィールド |
型 |
説明 |
|---|---|---|
|
object |
実効設定。 |
|
object |
反応のあるすべてのセグメントで使える最上位の手法( |
|
float |
全体反応エネルギー |
|
string |
全体反応エネルギーを求めた手法( |
|
list |
セグメントごとの TS/IRC/freq/DFT 結果 |
|
int / float[] |
最適化した TS の n_imag と虚振動数 (cm⁻¹, 負の値) |
|
object |
1 つのレベルでの R・TS・P のエネルギーと、 |
|
bool |
|
|
int / int|null |
TS 最適化で実行したサイクル数と設定上限。通常の非収束時にも記録します。 |
|
object |
順に IRC 停止診断、端点の向き付け、端点 OPT の収束記録。 |
|
object |
freq が R・TS・P ごとに報告した点群と回転対称数とその出どころ。有効な対称数の出どころを持つ R/TS/P 状態だけを含み、欠けた状態は省略する。どの状態にも有効な出どころが無い場合だけフィールド全体を省略する。 |
|
string[] |
|
|
object |
現在の呼び出しの出力索引。ルートファイルはファイル名 → 説明、各 |
使用例¶
Python¶
opt --out-json が書き出す result_opt/result.json を読む例です。
import json
with open("result_opt/result.json") as f:
result = json.load(f)
status = result.get("optimization_status")
if result["execution_status"] == "failed":
raise RuntimeError(f"{result['error_type']}: {result['error']}")
elif status == "converged":
print(f"Energy: {result['energy_hartree']:.6f} Hartree")
elif status in {"not_converged", "stalled"}:
print(f"Not converged after {result['n_opt_cycles']} cycles")
print(f"Max force: {result['final_max_force']:.6f}")
else:
print(f"Status: {status}")
jq¶
# 収束確認
jq '{execution_status, scientific_status}' result.json
# path-opt の障壁
jq '.barrier_kcal' result.json
# tsopt の虚振動数
jq '.imaginary_frequencies_cm' result.json
# freq の自由エネルギー
jq '.thermochemistry.sum_EE_and_thermal_free_energy_ha' result.json
# all の各セグメントの障壁(--tsopt の後)
jq '.post_segments[] | {index, barrier_kcal: .mlip.barrier_kcal}' result_all/summary.json
使用上の注意点¶
CLI のオプションや入力を確かめている段階(出力ディレクトリを用意する前)で失敗すると、JSON を書かずに止まることがあります。0 以外の終了コードは失敗として扱い、標準エラー出力かジョブログでメッセージを確認してください。
allとpath-searchは要約の段に着いてからsummary.jsonを書くため、早い段階の入力エラーではファイルが残りません。コマンドごとの節にも、それぞれの
backend/model欄があります。複数のコマンドの結果を読むスクリプトでは、どのコマンドでも同じ意味のmlip_backend/mlip_model/mlip_precisionを使ってください。IRC がどう止まったかは
scientific_statusに入りません。単体のircは、積分が終われば--max-cyclesに達した場合もsuccessで、allは TS と端点の最適化から判定します。
関連ドキュメント¶
終了コード — 終了コードの意味
出力ディレクトリのレイアウト —
result.jsonとsummary.jsonを書き出す場所トラブルシューティング — 失敗・未収束の後に何を変えるか
YAML 設定の一覧 — これらのスキーマに現れる設定入力
all, path-search —
--out-jsonなしでsummary.jsonを書き出すサブコマンドopt, sp, tsopt, freq, irc, scan, scan2d, scan3d, path-opt, dft, extract, trj2fig, energy-diagram —
--out-json指定時にのみresult.jsonを書き出すサブコマンド