예제 #1
0
pressure = 1.0 * unit.atmospheres
temperature = 300.0 * unit.kelvin
temperature_hot = 600.0 * unit.kelvin
frequency = 25

# If system is periodic, equilibrate at 1 atm at 300 K.
if system.usesPeriodicBoundaryConditions():
    print('Equilibrating with barostat...')
    import copy
    barostat = openmm.MonteCarloBarostat(pressure, temperature, frequency)
    system_with_barostat = copy.deepcopy(system)
    system_with_barostat.addForce(barostat)
    collision_rate = 10.0 / unit.picoseconds
    timestep = 2.0 * unit.femtoseconds
    #integrator = openmm.LangevinIntegrator(temperature, collision_rate, timestep)
    integrator = VVVRIntegrator(temperature, collision_rate, timestep)
    context = openmm.Context(system_with_barostat, integrator)
    context.setPositions(positions)
    niterations = 20
    nsteps = 500
    for iteration in range(niterations):
        print('Iteration %5d / %5d: volume = %8.3f nm^3' %
              (iteration, niterations,
               context.getState().getPeriodicBoxVolume() / unit.nanometers**3))
        integrator.step(nsteps)
    positions = context.getState(getPositions=True).getPositions(asNumpy=True)
    box_vectors = context.getState().getPeriodicBoxVectors()
    system.setDefaultPeriodicBoxVectors(*box_vectors)
    del context, integrator, system_with_barostat
else:
    print(
# In[2]:


# this cell is all OpenMM specific
forcefield = app.ForceField('amber96.xml', 'tip3p.xml')
pdb = app.PDBFile("AD_initial_frame.pdb")
system = forcefield.createSystem(
    pdb.topology, 
    nonbondedMethod=app.PME, 
    nonbondedCutoff=1.0*unit.nanometers,
    constraints=app.HBonds, 
    rigidWater=True,
    ewaldErrorTolerance=0.0005
)
hi_T_integrator = VVVRIntegrator(
    500*unit.kelvin, 
    1.0/unit.picoseconds, 
    2.0*unit.femtoseconds)
hi_T_integrator.setConstraintTolerance(0.00001)


# The storage file will need a template snapshot. In addition, the OPS OpenMM-based `Engine` has a few properties and options that are set by these dictionaries.

# In[3]:


template = omm.snapshot_from_pdb("AD_initial_frame.pdb")
openmm_properties = {'OpenCLPrecision': 'mixed'}
engine_options = {
    'n_steps_per_frame': 10,
    'n_frames_max': 2000
}