文書の表示以前のリビジョンバックリンク文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ~~DISCUSSION~~ ==== 本計算(サンプリング) ==== 公式参考ページ\\ http://docs.openmm.org/latest/userguide/application.html#writing-trajectories 以下\\ \\ ここでは、MD計算の方法例を紹介する。\\ 具体的な流れを以下に記述する。\\ \\ 0.実際の計算例\\ 1.トラジェクトリを出力するための設定\\ 2.シミュレーションに関する情報を出力するための設定\\ 3.MD計算\\ 4.シミュレーション最終状態の保存\\ \\ ここでは、[[tutorial_openmm:tutorial:prepare-simulation|シミュレーションの設定]]で作成したSimulationクラスのインスタンスを使用する。 ===== 0.実際の計算例 ===== <code> 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') </code> ===== 1. トラジェクトリ出力の設定 ===== トラジェクトリの出力の設定には、simulation.reporter.appendメソッドを使用する。\\ トラジェクトリの形式(Reporter)として指定できるのは以下の三種である。 * CHARMM DCD(DCDReporter) * PDB(PDBReporter) * PDBx/mmCIF(PDBxReporter) 「トラジェクトリファイルの形式」、「ファイル名」、「出力頻度」の指定をまとめて、 <code> simulation.reporter.append(DCDReporter('output.dcd', 5000)) </code> のように、〇〇Reporterの引数に * トラジェクトリファイル名 * 出力頻度(上のコード例の場合は5000ステップに一度出力) を指定して行う。 ===== 2. シミュレーション情報出力の設定 ===== 次に、シミュレーションの現在の状態(ステップ数、経過時間、残り予想時間など)を専用ファイルに記録する設定を行う。\\ このためには、simulation.reporter.appendメソッドの引数にStateDataReporterを指定する。\\ \\ StateDataReporterの引数には様々な設定をしてすることができ、次はその一例である。 <code> simulation.reporters.append(StateDataReporter('data.tsv', 5000, step=True, separator=' ')) </code> 第一、第二引数は必須の引数で、それぞれ * 作成するファイルの名前 * 更新頻度(例の場合は5000ステップに一度書き込みを行う) を指定する。\\ \\ 残りの引数はすべてオプションとなる。以下に紹介する。\\ 次の引数は、すべて "〇〇=True" の形で指定することでファイルに出力される。 * ''step'' : 現在のステップ数 * ''time'' : 現在の(シミュレーション系内での)時間 * ''progress'' : シミュレーション進行度(%) * ''potentialEnergy'' : 系のポテンシャルエネルギー * ''kineticEnergy'' : 系の運動エネルギー * ''totalEnergy'' : 系の全エネルギー * ''temperature'' : 系の温度 * ''speed'' : シミュレーション進行スピード * ''volume'' : 系の周期境界ボックスの体積 * ''density'' : 系の密度 * ''remainingTime'' : シミュレーション残り時間の予測 なお、__''progress''と''remainingTime''を出力するには、引数に''totalSteps=10000''のように総ステップ数を指定することが必須となる__。\\ \\ また、出力ファイルはデフォルトではCSV(comma-separated values)形式だが、 ''separator='(好きな区切り文字)' ''として指定することが可能である。\\ (よく指定されるのは、半角スペースやタブ文字あたり。区切り文字としては「タブ文字」が、ファイルを開いた際に圧倒的に見やすいため筆者のおすすめ。) ===== 3. MD計算 ===== simulation.stepメソッドが実際のシミュレーションを流す操作である。\\ 引数として総ステップ数を渡す。 <code> simulation.step(100000000) </code> (上記は100,000,000ステップのシミュレーションの例) ===== 4. シミュレーション最終状態の保存 ==== OpenMMには次の3つの方法が用意されている。 * PDB形式で出力 * XML形式で出力 * checkpointファイルとして出力 \\ PDB形式の保存では、粒子の位置情報のみが保存されるのに対して、XML形式およびcheckpointファイルとして出力する場合は位置情報と速度情報も保存される。\\ すなわちxmlとcheckpointはシミュレーションのリスタートファイルとして利用可能である。\\ リスタートの方法は、[[tutorial_openmm:tutorial:restart-simulation|次のページ]]に任せることとする。 ==== XML形式で保存する場合 ==== <code> simulation.saveState('output.xml') </code> のように、simulation.saveStateメソッドにてシミュレーション終了後の状態の保存が可能である。\\ 引数にはファイル名を指定する。 ==== checkpointファイルとして保存する場合 ==== <code> simulation.saveCheckpoint('output.chk') </code> 上記のように、simulation.saveCheckpointメソッドの引数にファイル名を指定することで保存可能である。\\ \\ 次ページ: [[tutorial_openmm:tutorial:restart-simulation|リスタート]]