トラブルシューティング¶
症状を早見表で探し、示された節で対処を読んでください。
早見表¶
症状 |
最初にやること |
詳細(節) |
|---|---|---|
入力 / 抽出 |
||
元素欄が空で |
元の PDB に |
|
|
同じ前処理ツール・同じ設定で全 PDB を作り直してください。原子の順序を決めた後は並べ替えないでください |
|
ユーティリティのコマンド( |
そのコマンドのページでメッセージを探してください。エラーは「使用上の注意点」に、 |
add-elem-info、fix-altloc、bond-summary、energy-diagram、trj2fig |
|
同じ原子が同じ順に並ぶ構造どうしを比べてください |
|
|
|
|
電荷 / スピン |
||
|
|
|
|
電荷と多重度が電子数と合いません。 |
|
計算は通るが状態やエネルギーが不自然 |
渡した電荷と多重度を見直してください |
|
計算 / 収束 |
||
|
各行に、失敗したセグメントと段(TS 最適化・MEP・IRC・端点の最適化)が出ます。その段を下の行で探してください。 |
|
UMA で |
解析 Hessian には |
|
実行時に CUDA のメモリ不足( |
デフォルトの |
|
TS 最適化は収束したが n_imag が 1 でない |
n_imag ≥ 2( |
|
TS 最適化が収束しない( |
まず TS 候補を確かめ、次にオプティマイザを切り替え( |
|
IRC が正常に終了しない |
単独の |
|
エネルギーが変わらなくなり、opt / TS 最適化が |
未収束として扱い、final geometry と力・ステップの条件を確かめてから、別の閾値やオプティマイザの設定で再実行してください |
|
MEP(最小エネルギー経路)探索(GSM / DMF)が失敗する( |
|
|
|
動ける原子を 1 つ以上残してください |
|
DFT の SCF が収束しない |
|
|
DFT で GPU メモリが足りない |
小さい基底関数を使う、モデルを削る、メモリの大きい GPU に移る。 |
|
インストール / 環境 |
||
DMF モードのインポートエラー( |
詳細なインストール手順 の手順 2〜3 のとおり、cyipopt と PyTorch を conda-forge から入れて環境を作ってください( |
|
UMA モデルで 401 / 403 / アクセス制限付きリポジトリのエラー( |
|
|
|
MACE 専用の環境を使ってください |
|
|
バックエンドの追加パッケージを入れてください: |
|
CUDA / GPU の実行時エラー |
GPU、PyTorch のビルド、ドライバをまとめて確かめてください |
|
図の出力に失敗する |
|
実行前チェックリスト¶
長い計算を回す前に、次を確かめてください。
このマシンで Hugging Face にログインできている(デフォルトの UMA に必要)。
入力の PDB/mmCIF に水素と元素記号が入っている。
複数の PDB を与える場合、同じ原子が同じ順序で並んでいる。
入力 / 抽出の問題¶
Element symbols are missing in '...'¶
症状:
extractがElement symbols are missing in '...'. For PDB input, run pdb2reaction add-elem-info -i ... before extractで止まる。allは抽出の前に空の元素欄を自分で埋め、割り当てられない原子が残ると同じメッセージで止まる。原因:PDB の元素欄(77–78 列)が空のことが多く、
extractは原子の種類を決めるために元素記号を使います。mmCIF の入力では_atom_site.type_symbolが必要です。対処:
add-elem-infoで元素欄を埋め、新しいファイルで再実行してください。[WARN] Could not confidently assign N atomsの下に並んだ原子は、元素記号を手で 77–78 列に右詰めで書いてください。pdb2reaction add-elem-info -i input.pdb -o input_with_elem.pdb
[multi] Atom count mismatch / [multi] Atom order mismatch¶
症状:複数の入力を与えた実行が
[multi] Atom count mismatch between input #1 and input #2: ...や[multi] Atom order mismatch between input #1 and input #2.で止まる。原因:構造ごとに別のツールや設定で前処理した、またはプロトン化やパラメータ化をやり直した後に原子の順序が変わった。
対処:すべての構造を、同じプロトン化ツール・同じ設定で作り直してください。MD のスナップショットなら、同じトポロジーと軌跡からフレームを取り出します。トポロジーを作った後は、PDB の原子を並べ替えないでください。
活性部位モデルが空になる・触媒残基が入らない¶
症状:切り出したモデルが想定より小さい、または触媒残基が含まれない。
原因:この部位には半径
-r/--radius(デフォルト 2.6 Å)が小さすぎる、または--exclude-backboneで削りすぎた。対処:
--radiusを大きくするか(例:2.6 → 3.5 Å)、残基を足してください。--selected-resn 'A:TYR:44'は少なくともその側鎖を足し、-cに足すと、-rが 0 より大きければ残基が丸ごと残ります。詳しくは モデルを広げる と 残基セレクタ にあります。--exclude-backboneを付けていて削りすぎる場合は、--no-exclude-backboneを渡してください。
エネルギーや障壁がモデルの大きさで変わる¶
症状:エネルギーや障壁が不自然に見える、またはモデルを大きくすると大きく変わる。
原因:切り出したモデルが小さすぎる。
対処:半径を大きくし、結果がモデルの大きさと境界の位置でどう変わるかを確かめてください。
pdb2reaction extract -i complex.pdb -c 'SUB' -o model.pdb -r 4.0
修飾残基が切断されない¶
症状:登録されていない修飾アミノ酸の主鎖が切られず、キャップ水素も付かない。
原因:主鎖の切断とキャップ水素の付加には、アミノ酸カタログへの登録が必要です。SEP、TPO、MLY は登録済みです。
対処:未登録の残基だけを、
--modified-residue "XAA:0"のように公称電荷を付けて登録してください。名前だけを書くと電荷 0 になるため、電荷を持つ登録済みの残基の再登録には使えません。主鎖のトポロジーが特殊な場合は、活性部位モデルを手で組み、下流のコマンドに直接渡してください。
電荷 / スピンの問題¶
まず、総電荷と多重度が対象の状態に合っているか、-l/--ligand-charge の各残基名が構造にあるかを確かめてください。重要な実行では -q/--charge か -l/--ligand-charge と -m を明示します。決まりは 電荷の指定 にあります。
-q/--charge is required / Total charge could not be resolved¶
症状:
.gjf以外の入力で、-q/--charge is required unless the input is a .gjf template with charge metadata.、allでは[all] Total charge could not be resolved.で止まる。原因:
-q/--chargeを省くと、電荷は-l/--ligand-charge(PDB/mmCIF、または--ref-pdb付きの XYZ/GJF)、YAML のcalc.charge、.gjfテンプレートから決まりますが、この実行ではそのどれも使えませんでした。対処:電荷と多重度を明示するか、抽出ありの場合は残基ごとの電荷を与えてください。
pdb2reaction path-search -i R.pdb P.pdb -q 0 -m 1 pdb2reaction -i R.pdb P.pdb -c 'SAM,GPP' -l 'SAM:1,GPP:-3'
インストール / 環境の問題¶
まず、使っている環境にオプションのパッケージが入っているか、PyTorch から GPU が見えるかを確かめてください。直した後は pdb2reaction --version と python -c "import torch; print(torch.cuda.is_available())" で確かめ、本番の前に一度 --dry-run を付けて実行し、オプションと入力を確かめます。
症状 |
原因 |
対処 |
|---|---|---|
UMA のダウンロードに失敗する( |
Hugging Face にログインしていない、または UMA モデルのライセンスに同意していない |
環境・マシンごとに一度 |
|
バックエンドのパッケージがこの環境に入っていない |
ORB: |
|
UMA の環境に MACE を入れた。 |
MACE 専用の conda 環境を使ってください: |
追加パッケージを入れても ORB のインポートに失敗する |
環境の中のパッケージが |
|
|
PyTorch のビルドが計算ノードの GPU・ドライバに合っていない |
|
|
|
詳細なインストール手順 の手順 2〜3 のとおり、cyipopt と PyTorch を conda-forge から入れて環境を作ってください。 |
図の出力に失敗する(Plotly / Chrome) |
ヘッドレス Chrome が無い |
|
DMF が IPOPT 内で極端に遅い¶
IPOPT/MUMPS が並列版 BLIS を使う環境では、入れ子の並列化で長い待ちが生じることがあります。ジョブスクリプトなどで、Python や CLI の起動前に BLIS_NUM_THREADS=1 を設定してください。OMP_NUM_THREADS などほかのスレッド設定は変えずにおきます。BLIS_JC_NT、BLIS_PC_NT、BLIS_IC_NT、BLIS_JR_NT、BLIS_IR_NT の手動設定はこの制限より優先されるため、そのジョブの設定から外してください。起動済みの Notebook は、設定変更後にカーネルを再起動します。詳しくは BLIS のスレッド設定を参照してください。
計算 / 収束の問題¶
まず TS 候補を確かめてください。TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます。ν < −5.00 cm⁻¹ のモードを虚振動として数えます。閾値は YAML の freq.zero_cutoff_cm で変えられます。TS 最適化が収束しないときは TS 最適化 を、収束したが n_imag が 1 でないときは TS が取れないとき を読んでください。
最適化が max_cycles に達し、max(force) が閾値をわずかに超える¶
症状:オプティマイザが
max_cyclesまで回り、最後の要約でmax(force)やrms(force)が選んだ閾値をわずかに上回る。一方でエネルギーはもう変わっていない。原因:MLIP の力のノイズや平坦さで、力の閾値に届かないことがあります。その程度はバックエンド、モデル、精度、系、ハードウェアで変わります。
対処:final geometry と力を確かめてから、次の手で再実行してください。
収束の基準を
--thresh gau_looseに緩めます。デフォルトはoptではgau、tsoptではbakerです。--max-cyclesまで回さずに早く止めたいときは、--stop-plateauを付けます。直近--stop-plateau-window(デフォルト 50)ステップのエネルギーの幅が--stop-plateau-thresh(デフォルト1×10⁻⁴ au)を下回ると、stalled(未収束)として止まります。
TS 最適化が収束しない・虚振動が複数残る¶
症状:TS 最適化が多くのサイクルを回しても収束しない、または最適化の後に n_imag が 2 以上になる。
報告される内容:RS-P-RFO・RS-I-RFO・TRIM・Dimer の TS 最適化がサイクル上限に達して未収束のときは Hessian を計算しないので、n_imag は出ません。エネルギーが変わらなくなって止まったときは、必ず Hessian を計算して n_imag を出します。
最適化が収束しないときの対処:次を順に試してください。
オプティマイザを RS-P-RFO(デフォルト)と Dimer 法の間で切り替える:単独では
tsopt --opt-mode hess/dimer、allでは--opt-mode-post hess/grad(Dimer)。YAML でステップサイズを小さくする:RS-P-RFO・RS-I-RFO・TRIM では
rsirfo.trust_radius/trust_min/trust_max、Dimer ではhessian_dimer.lbfgs.max_step。YAML 設定の一覧 を参照してください。経路のよりよい HEI(最高エネルギーのイメージ)など、別の候補から始める。
n_imag ≥ 2 が残るときの対処:
--flattenを付けて最適化し直すか、単独ではtsopt --thresh、allでは--thresh-postで、収束の基準をデフォルトのbakerからgau_tightかgau_vtightに締めてください。--refine-path、反応を段に分ける、初期構造を作り直すなどのほかの手は、TS が取れないとき にあります。
IRC が正常に終了しない¶
IRC が収束せずに止まっても、端点の最適化で狙った R と P に着けば使えます。まず最適化後の端点を確かめてください。
症状:IRC が明確な極小構造に着く前に止まる、またはエネルギーが振動し勾配ノルムが大きいままになる。
原因:この曲面にはステップが大きすぎる、サイクル上限が低すぎる、または開始構造に虚振動が 2 つ以上ある。
対処:
単独の
irc:--step-size 0.05(デフォルト 0.10 bohr)、必要なら--max-cycles 200(デフォルト 125)。all:--irc-step-size 0.05、必要なら--irc-max-cycles 200。開始構造が n_imag = 1 であることを確かめてください。
物理的な停止条件を無視してサイクル上限まで追うには、単独で
irc --never-stop、allで--irc-never-stopを指定し、軌跡と端点を確かめてください。
MEP 探索(GSM / DMF)が失敗する・結合変化を取りこぼす¶
症状:経路探索が使える MEP を作らずに終わる、または予想した結合変化が出ない。
対処:
複雑な反応では
--max-nodes(デフォルト 20)を 30 や 40 に増やしてください。端点の事前最適化はデフォルトで有効です。
--no-preoptを付けていたら外してください。別の手法を試してください:
--mep-mode dmf↔gsm。YAML の
bond.bond_factorとbond.delta_fractionで結合変化の検出を調整してください。
freq がエラーで止まる¶
すべての原子を固定した:動ける原子が無いと解析する振動が無いので、
freqはエラーで止まります。--freeze-atoms、YAML のgeom.freeze_atoms、--freeze-linksで固定されるキャップ水素の親原子を確かめてください。原子の固定と距離の拘束 を参照してください。--uma-workersを 2 以上にして--hessian-calc-mode Analyticalと併用した:パフォーマンス を参照してください。
パフォーマンス / 安定性のヒント¶
workers > 1:ハードウェアと計算の内容によっては UMA のスループットが上がりますが、並列の推論では解析 Hessian を計算できません。
Analyticalを明示すると、RuntimeErrorのサブクラスのBackendErrorがAnalytical Hessian cannot be combined with UMA workers>1を出して止まります。解析 Hessian には--uma-workers 1、並列実行にはFiniteDifferenceを指定してください。複数のノードでワーカーを動かすときは、HPC 実行例 のジョブスクリプトを使ってください。大規模系:化学的に妥当な小さい活性部位モデルを作り、半径と境界の位置で結果がどう変わるかを確かめてください。複数 GPU への対応はバックエンドとワークフローごとに異なり、GPU を増やしてもワーカーあたりのメモリが減るとは限りません。
HPC で DFT を回すとき:PySCF/GPU4PySCF が選んだ計算で一時ディスクを使う場合は、容量と速度を確かめたファイルシステムを
PYSCF_TMPDIRに指定してください。ノードの/tmp、$PBS_O_WORKDIR、ほかの共有ディレクトリのどれが向くかは、計算機ごとに異なります。
GPU メモリ(VRAM)の目安¶
VRAM は原子数だけでは決まらず、MLIP モデル、数値精度、Hessian の計算モード、固定した原子で変わるので、同じ設定の代表的な試行で測ってください。torch.cuda.OutOfMemoryError が出たら、次を順に試します。
デフォルトの
--hessian-calc-mode FiniteDifferenceを維持するか、それに切り替える。解析 Hessian は、通常メモリのピークが大きくなります。--max-nodesを減らすか、--backend-modelで小さい MLIP モデルを使う。optとscanでは、hessではなく、Hessian を使わない --opt-mode grad(L-BFGS)のままにする。メモリの大きい GPU に移る。
クラスターモデルを縮小する。必要な残基が残ることと境界の位置を確かめてからにします。
不具合の報告¶
問題の報告や機能の要望は GitHub Issues へお寄せください。実行したとおりのコマンド、run.log(all・path-search では summary.log も)、再現する最小の入力、OS・Python・CUDA・PyTorch の版を添えていただくと助かります。
関連ドキュメント¶
反応機構を調べるコツ — TS が取れないときに試すこと
インストール — 環境の構築とオプションのバックエンド
MLIP バックエンド — バックエンドの選び方
クラスターモデルの組み方 — 活性部位モデルを確かめる・削る・広げる