シミュレーションの設定
概要
シミュレーションを実行するにあたり、まずはじめに扱う対象の系やシミュレーション方などを設定する。
具体的には以下の項目を設定する必要がある。
- 全原子の座標情報
- トポロジー
- 力場の情報
- 積分法(integrator)
最終的に、これらの情報をすべて含んだSimulationクラスのインスタンスを作成することが目標となる。
これを用意するにはいくつかの方法がある。順に見ていこう。
PDB+任意の力場を使用する場合
シミュレーション設定からMD計算までを行うサンプルコードは以下。
(引用:http://docs.openmm.org/latest/userguide/application.html#a-first-example)
from simtk.openmm.app import * from simtk.openmm import * from simtk.unit import * from sys import stdout pdb = PDBFile('input.pdb') forcefield = ForceField('amber14-all.xml', 'amber14/tip3pfb.xml') system = forcefield.createSystem(pdb.topology, nonbondedMethod=PME, nonbondedCutoff=1*nanometer, constraints=HBonds) integrator = LangevinIntegrator(300*kelvin, 1/picosecond, 0.002*picoseconds) simulation = Simulation(pdb.topology, system, integrator) simulation.context.setPositions(pdb.positions) simulation.minimizeEnergy() simulation.reporters.append(PDBReporter('output.pdb', 1000)) simulation.reporters.append(StateDataReporter(stdout, 1000, step=True, potentialEnergy=True, temperature=True)) simulation.step(10000)
Amber形式のファイルを使用する場合
シミュレーション設定からMD計算までを行うサンプルコードは以下。
(引用:http://docs.openmm.org/latest/userguide/application.html#using-amber-files)
from simtk.openmm.app import * from simtk.openmm import * from simtk.unit import * from sys import stdout prmtop = AmberPrmtopFile('input.prmtop') inpcrd = AmberInpcrdFile('input.inpcrd') system = prmtop.createSystem(nonbondedMethod=PME, nonbondedCutoff=1*nanometer, constraints=HBonds) integrator = LangevinIntegrator(300*kelvin, 1/picosecond, 0.002*picoseconds) simulation = Simulation(prmtop.topology, system, integrator) simulation.context.setPositions(inpcrd.positions) if inpcrd.boxVectors is not None: simulation.context.setPeriodicBoxVectors(*inpcrd.boxVectors) simulation.minimizeEnergy() simulation.reporters.append(PDBReporter('output.pdb', 1000)) simulation.reporters.append(StateDataReporter(stdout, 1000, step=True, potentialEnergy=True, temperature=True)) simulation.step(10000)