JSON 出力の一覧¶
このページでは、--out-json で書き出す result.json と summary.json の欄(key)を、全コマンドに共通の欄とコマンドごとの欄に分けて示します。
--out-json フラグ¶
ML/MM 計算機を使用するサブコマンドとレポート系サブコマンドのほとんどは --out-json / --no-out-json(デフォルト: 無効)に対応しています。有効にすると、通常の出力と同じ場所に result.json と summary.json を書き出します。2 つのファイルの中身は同じなので、result.json を読みます。
mlmm opt -i r_complex_layered.pdb --parm7 real.parm7 -q 0 -m 1 \
--max-cycles 5 --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 も記録します。
共通エンベロープ¶
どの結果ファイルにも下の欄があります。「任意」と書いた欄は、そのコマンドが対応するデータを持つときだけ出ます。
フィールド |
型 |
説明 |
|---|---|---|
|
string |
ファイルのスキーマの版。版が上がると構造が変わったことを示します。 |
|
string |
単体のコマンドはサブコマンド名(例: |
|
string |
パッケージバージョン(単体のコマンドの結果は |
|
string |
実行の完了状況: |
|
string |
結果の利用可否: |
|
string |
任意。現在の呼び出しの UUID。 |
|
float |
任意。実行時間(秒)。時間を記録しないコマンドでは省きます |
|
object |
ハードウェア情報(下表参照) |
ML/MM 計算機を評価するコマンドは、さらに以下を記録します。
フィールド |
型 |
説明 |
|---|---|---|
|
string | null |
バックエンドの識別子( |
|
string | null |
正確なモデル/チェックポイント名。 |
|
string | null |
正確な識別子から導出した論文表記用のモデル名 |
|
string | null |
複数ドメインのモデルで使ったバックエンドのタスク(UMA では |
|
string | null |
実効精度の共通表記( |
|
string | null |
MM のエネルギー/Hessian のバックエンド( |
|
string | null |
リンク原子の置き方( |
|
bool | null |
CMAP 項を有効にしたか。描画だけの出力では 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 ステージラベル(例: |
エラー処理¶
opt、tsopt、freq、irc、sp、dft、scan、scan2d、scan3d、path-opt、path-search が出力ディレクトリを用意した後に例外で止まった場合は、--out-json が無くても "execution_status": "failed" と "error_type" を含む result.json と summary.json を書き出します。それより前の失敗は使用上の注意点を参照してください。
最適化が収束せずに終わった場合、result.json には "optimization_status": "not_converged" が記録されます。再実行の前に何を変えるかは、トラブルシューティングの計算 / 収束 を参照してください。
オプティマイザは "optimization_status": "stalled" を返すこともあります。これは、力/ステップの収束基準を満たさないまま、設定した数の直近のサイクル(ウィンドウ)でエネルギーが下がらなくなった状態(エネルギープラトー)です。停滞は未収束の一種で、converged にはなりません。stop_reason にはエネルギーの範囲、ウィンドウ、満たせなかった基準が記録されます。--flatten を指定した opt と tsopt は、--max-cycles の残りがあれば、停滞の後も flatten ループを実行します。マイクロイテレーションでは、マクロステップと直近の MM 緩和の両方が収束したときだけ収束とみなします。MM 緩和が停滞しても、その時点で力が閾値を下回っていれば収束として扱います。
サブコマンド別スキーマ¶
sp¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
string |
入力構造のパス |
|
string |
全系の Amber トポロジーのパス |
|
int / int |
ML 領域の電荷とスピン多重度 |
|
float |
ONIOM の一点エネルギー (Hartree) |
|
string |
|
|
string | null |
|
|
string |
人間が読める形の経過時間 |
opt¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
string |
オプティマイザが収束せずに止まったとき( |
|
float |
最終 ONIOM エネルギー (Hartree) |
|
int |
最適化サイクル数 |
|
string |
|
|
int |
ML 領域の電荷 |
|
int |
ML 領域のスピン多重度 |
|
int |
全原子数(全層) |
|
int |
固定原子数 |
|
string |
収束閾値プリセット名 |
|
int |
最大サイクル数 |
|
string |
入力ファイル名 |
|
float |
最終 max gradient (Hartree/Bohr) |
|
float |
最終 RMS gradient |
|
float |
最終 max 変位 (Bohr) |
|
float |
最終 RMS 変位 |
|
object |
プリセットの収束閾値の数値 |
|
object |
出力ファイルマップ |
|
object | null |
任意。 |
tsopt¶
フィールド |
型 |
説明 |
|---|---|---|
|
bool |
flatten 反復を設定したかどうか |
|
string | null |
それ以上 flatten のステップを行わなかった理由(該当時) |
|
string |
数値オプティマイザの結果: |
|
string |
最後の厳密な PHVA(部分 Hessian 振動解析)による |
|
bool |
|
|
string |
|
|
int|null |
|
|
float|null |
選んだ負のモードの振動数 |
|
string|null |
モードの選び方(参照方向にそろえたか、0 番の代用か) |
|
float |
TS エネルギー (Hartree) |
|
int|null |
虚振動モードの数。PHVA を実行しなかった場合は |
|
int|null |
大きさを問わない負の振動数の数(閾値以内も含む)。 |
|
float[]|null |
虚振動数 (cm⁻¹, 負の値)。PHVA 未実行時は |
|
float / string / float |
デフォルト値は |
|
string |
|
|
string |
CLI で要求したプリセット |
|
string |
実際に使用したオプティマイザのアルゴリズム |
|
int |
全原子数 |
|
int |
最適化サイクル数 |
|
int |
ML 領域の電荷 |
|
int |
ML 領域のスピン多重度 |
|
string|null |
|
|
object |
Hessian を使う TS 最適化の診断: 却下したステップと回復、厳密な鞍点の確認、目標モードの同一性 |
|
object |
Dimer、flatten、最後の鞍点解析の剛体モードと Hessian の記録。剛体モードの射影の記録を参照 |
|
object |
final geometry と振動モードのファイル。 |
TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます。このとき saddle_validation: "first_order"、n_imaginary_modes: 1 です。最後の PHVA は、オプティマイザが収束したときかエネルギープラトーで止まったとき(stalled)に実行し、それ以外では実行しなかったこと(skipped)を記録します。PHVA が失敗した場合は、final geometry を残したまま hessian_status: "failed" を記録します。optimization_status と saddle_validation は独立しているので、収束した実行が saddle_validation: "higher_order" で終わることもあり、それは一次の TS ではありません。all が IRC に進む条件は tsopt の TS の判定 を参照してください。
freq¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
基準振動モードの総数 |
|
int |
虚振動モードの数 |
|
int |
大きさを問わない負の振動数の数(閾値以内も含む) |
|
float[] |
全振動数 (cm⁻¹) |
|
float[] |
負の振動数のみ |
|
object|null |
熱化学データ(下表参照) |
|
int |
ML 領域の電荷 |
|
int |
ML 領域のスピン多重度 |
|
int |
全原子数 |
|
int |
固定原子数 |
|
object |
出力マップ。 |
|
object |
振動解析と熱化学で使った剛体モードと Hessian の記録。 |
thermochemistry:
フィールド |
型 |
単位 |
|---|---|---|
|
float |
K |
|
float |
atm |
|
string |
自動検出した分子の点群 |
|
string |
|
|
int |
外部回転の対称数 |
|
string |
|
|
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 に記録します。連結した経路は最初のフレームから TS を通って最後のフレームまで続き、単体の irc はどちらの端が反応物でどちらが生成物かを決めません。IRC がどう止まったかは scientific_status に入りません。単体の irc は、積分が通常どおり終われば completed / success で、all は TS と端点の最適化から判定します。
フィールド |
型 |
説明 |
|---|---|---|
|
int |
IRC フレーム数 |
|
bool |
サイクル上限に達する前に 3 フレーム以内で止まった分岐。診断用のみ |
|
float |
連結経路の最初のフレームのエネルギー |
|
float |
TS エネルギー |
|
float |
連結経路の最後のフレームのエネルギー |
|
string |
|
|
bool |
各方向を要求したか |
|
bool|null |
RMS 勾配の停留判定が働いて止まったか。診断専用で、 |
|
bool|null |
TS から下り方向に離れたことを確認できたか |
|
string|null |
数値的な積分が失敗した場合だけ空でない理由 |
|
bool |
|
|
int |
実際に迂回した、エネルギー上昇または 1 ステップのエネルギー変化による停止の回数 |
|
object |
初期/更新 Hessian の剛体モードと Hessian の記録。剛体モードの射影の記録を参照 |
|
string |
初期 Hessian の出どころ。 |
|
object |
最初→最後の方向の |
|
string |
|
|
object |
軌跡と端点のファイル(XYZ と、利用できる場合は PDB/CIF 版) |
scan¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
指定した |
|
string |
実際のオプティマイザ: |
|
int |
スキャンステージ数 |
|
object[] |
ステージごとの結果 |
|
int |
ML 領域の電荷 |
|
int |
ML 領域の多重度 |
|
object |
出力ファイル |
stages[] は n_steps、converged、pairs_1based、energies_hartree、final_energy_hartree、bond_changes、optimizer_status(converged / not_converged / stalled)を含みます。その段の最後の最適化が収束せずに止まった場合は stop_reason も記録します。
scan2d / scan3d¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
格子点数 |
|
int |
新規計算で試行した格子点数(事前最適化を除く) |
|
int |
明示的に収束し、有限のエネルギー・座標と構造ファイルを持つ点の数 |
|
object[] |
格子インデックス、距離、エネルギー、収束結果、 |
|
string[] |
今回の実行が書いた CSV・HTML・PNG と格子点の構造。前の実行で残ったファイルは並びません |
|
object |
|
|
float |
表面上の最小エネルギー |
|
int | null |
ML 領域の電荷。作図のみの |
|
int | null |
ML 領域の多重度。作図のみの |
|
object |
CSV・プロットファイル |
新規の scan2d / scan3d には共通の計算機の欄も記録します。作図のみの scan3d --csv では同じ欄を null で書きます。作図のみの結果は n_points_attempted を出さず、n_points_usable は CSV にすべての点の収束と構造ファイルの記録がある場合だけ出します。
path-opt¶
フィールド |
型 |
説明 |
|---|---|---|
|
string |
|
|
bool | null |
収束判定: エンジン自身の収束シグナルによる |
|
string |
|
|
float[] |
全イメージのエネルギー |
|
int |
イメージ数 |
|
int |
最高エネルギーイメージのインデックス |
|
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 が収束したか |
|
float |
ML 領域の DFT エネルギー。 |
|
float |
ML 領域の DFT エネルギー |
|
float |
組み合わせた DFT/MM エネルギー |
|
string |
汎関数 |
|
string |
基底関数 |
|
bool |
GPU を使ったか |
|
bool |
実際の低メモリ状態と、要求した低メモリ状態 |
|
object |
正規化した計算設定と、実際に使ったホストの資源 |
|
string/object | null |
PySCF へ渡した ECP |
|
object |
点電荷の埋め込み: 有効かどうか、cutoff、電荷の数、電荷を識別するダイジェスト |
|
object |
|
|
object |
|
|
int |
ML 領域の原子数 |
|
int |
DFT のグリッドレベル |
|
float |
SCF の収束閾値 |
|
int |
YAML と CLI を適用した後の SCF 最大反復数 |
|
string |
実行に使ったエンジンの表記( |
|
int |
ML 領域の電荷 |
|
int |
ML 領域のスピン多重度 |
|
string |
入力構造のパス |
|
object |
|
extract¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
抽出後の原子数 |
|
float |
合計電荷 |
|
float |
タンパク質電荷 |
|
float |
リガンド電荷合計 |
|
float |
イオン電荷合計 |
|
object |
|
|
string |
基質指定( |
|
float |
抽出半径 (Å) |
|
string[] |
入力 PDB パス |
|
int |
主鎖の除外や切り詰めの前の、選んだ残基の原子数(入力構造全体ではない) |
|
int |
切断結合に付加したリンク H 原子数 |
|
object |
書き出したファイルのマップ(入力ごとのポケット PDB 等) |
|
bool |
実行時の |
|
bool |
実行時の |
|
string |
与えた |
|
array |
イオン残基の |
trj2fig¶
フィールド |
型 |
説明 |
|---|---|---|
|
int |
軌跡のフレーム数 |
|
float |
フレームエネルギーの最小値と最大値 |
|
string |
|
|
string | null |
エネルギーの再計算に使った計算機。コメントモードではすべて null |
|
int | null |
再計算に使った電荷とスピン多重度。コメントモードでは null。片方だけを指定した場合、もう片方は 0 または 1 |
|
string[] |
すべての出力のパスを順序どおりに並べたもの。別ディレクトリに同名ファイルがあっても保持される |
|
object |
ベース名からパスへの対応表。同じベース名の出力が 2 つあると一方だけが残るので、 |
-q/--charge または -m/--multiplicity のいずれかを指定すると、選択した MLIP で全フレームを再計算します。この再評価は MLIP だけで行い、トポロジーや ML 領域の入力を受け取らず、ONIOM エネルギーは計算しません。
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[] |
期待された段と観測された段の ID。 |
|
int |
セグメント数 |
|
int |
実効の再帰分割階層上限。 |
|
string[] |
経路の準備・精密化で実際に使用した単一構造オプティマイザ( |
|
bool / bool | null |
端点の事前最適化を実行したか、および全端点が収束したか。読み取れない端点があれば |
|
object[] |
セグメントごとの |
|
object[] |
ラベルと kcal/mol の値を持つエネルギーダイアグラム |
|
string |
バックエンド名( |
|
string | null |
正確なモデル/チェックポイント名。 |
|
string | null |
論文表記用のモデル名 |
|
string | null |
複数ドメインのモデルで使ったバックエンドのタスク |
|
string | null |
実効の |
|
int |
ML 領域の電荷 |
|
int |
ML 領域のスピン多重度 |
|
object |
ハードウェア情報 |
|
object[] |
実行で実際に使った手法の |
all はさらに以下を含みます。
フィールド |
型 |
説明 |
|---|---|---|
|
object |
実効設定。 |
|
int |
bridge 以外の反応セグメント数 |
|
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 の停止の診断、端点の向き付け、端点の最適化の収束記録。TS-only モードでは |
|
object |
各段の freq が報告した状態別の点群と回転の対称数の記録。TS-only モードを含む R/TS/P を対象とし、有効な対称数の記録を持つ状態だけを含みます。欠けた状態は省き、どの状態にも有効な記録が無い場合だけ欄全体を省きます。 |
|
object |
今回の実行の出力の索引。ルートのファイルはファイル名 → 説明、各 |
|
string[] |
|
使用例¶
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")
if result.get("final_max_force") is not None:
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を書くため、早い段階の入力エラーではファイルが残りません。
関連ドキュメント¶
終了コード — 終了コードの意味
出力ディレクトリのレイアウト —
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, bond-summary —
--out-jsonを付けたときだけ JSON を出すサブコマンド(bond-summaryは--json)