公式参考ページ
http://docs.openmm.org/latest/userguide/application.html#writing-trajectories 以下

ここでは、MD計算の方法例を紹介する。
具体的な流れを以下に記述する。

0.実際の計算例
1.トラジェクトリを出力するための設定
2.シミュレーションに関する情報を出力するための設定
3.MD計算
4.シミュレーション最終状態の保存

ここでは、シミュレーションの設定で作成したSimulationクラスのインスタンスを使用する。

simulation.reporters.append(DCDReporter('output.dcd', 5000))
simulation.reporters.append(StateDataReporter('data.tsv', 5000, step=True,\
            time=True, progress=True, remainingTime=True, potentialEnergy=True,\
            kineticEnergy=True, totalEnergy=True, temperature=True, speed=True,\
            totalSteps=100000, separator=','))
simulation.step(100000)
simulation.saveState('output.xml')

トラジェクトリの出力の設定には、simulation.reporter.appendメソッドを使用する。
トラジェクトリの形式(Reporter)として指定できるのは以下の三種である。

  • CHARMM DCD(DCDReporter)
  • PDB(PDBReporter)
  • PDBx/mmCIF(PDBxReporter)

「トラジェクトリファイルの形式」、「ファイル名」、「出力頻度」の指定をまとめて、

simulation.reporter.append(DCDReporter('output.dcd', 5000))

のように、〇〇Reporterの引数に

  • トラジェクトリファイル名
  • 出力頻度(上のコード例の場合は5000ステップに一度出力)

を指定して行う。

次に、シミュレーションの現在の状態(ステップ数、経過時間、残り予想時間など)を専用ファイルに記録する設定を行う。
このためには、simulation.reporter.appendメソッドの引数にStateDataReporterを指定する。

StateDataReporterの引数には様々な設定をしてすることができ、次はその一例である。

simulation.reporters.append(StateDataReporter('data.tsv', 5000, step=True, separator=' '))

第一、第二引数は必須の引数で、それぞれ

  • 作成するファイルの名前
  • 更新頻度(例の場合は5000ステップに一度書き込みを行う)

を指定する。

残りの引数はすべてオプションとなる。以下に紹介する。
次の引数は、すべて “〇〇=True” の形で指定することでファイルに出力される。

  • step : 現在のステップ数
  • time : 現在の(シミュレーション系内での)時間
  • progress : シミュレーション進行度(%)
  • potentialEnergy : 系のポテンシャルエネルギー
  • kineticEnergy : 系の運動エネルギー
  • totalEnergy : 系の全エネルギー
  • temperature : 系の温度
  • speed : シミュレーション進行スピード
  • volume : 系の周期境界ボックスの体積
  • density : 系の密度
  • remainingTime : シミュレーション残り時間の予測

なお、progressremainingTimeを出力するには、引数にtotalSteps=10000のように総ステップ数を指定することが必須となる

また、出力ファイルはデフォルトではCSV(comma-separated values)形式だが、 separator='(好きな区切り文字)' として指定することが可能である。
(よく指定されるのは、半角スペースやタブ文字あたり。区切り文字としては「タブ文字」が、ファイルを開いた際に圧倒的に見やすいため筆者のおすすめ。)

simulation.stepメソッドが実際のシミュレーションを流す操作である。
引数として総ステップ数を渡す。

simulation.step(100000000)

(上記は100,000,000ステップのシミュレーションの例)

OpenMMには次の3つの方法が用意されている。

  • PDB形式で出力
  • XML形式で出力
  • checkpointファイルとして出力


PDB形式の保存では、粒子の位置情報のみが保存されるのに対して、XML形式およびcheckpointファイルとして出力する場合は位置情報と速度情報も保存される。
すなわちxmlとcheckpointはシミュレーションのリスタートファイルとして利用可能である。
リスタートの方法は、次のページに任せることとする。

simulation.saveState('output.xml')

のように、simulation.saveStateメソッドにてシミュレーション終了後の状態の保存が可能である。
引数にはファイル名を指定する。

simulation.saveCheckpoint('output.chk')

上記のように、simulation.saveCheckpointメソッドの引数にファイル名を指定することで保存可能である。

次ページ: リスタート