Esempio n. 1
0
    def testAppend(self):
        """Test appending to the StateDataReporter output."""
        with tempfile.TemporaryDirectory() as tempdir:
            # Create a Simulation and produce 10 steps of output.
            filename = os.path.join(tempdir, 'templog.txt')
            simulation = app.Simulation(
                self.pdb.topology, self.system,
                mm.LangevinMiddleIntegrator(300 * unit.kelvin,
                                            1.0 / unit.picosecond,
                                            0.002 * unit.picoseconds))
            simulation.context.setPositions(self.pdb.positions)
            simulation.reporters.append(
                app.StateDataReporter(filename, 1, step=True))
            simulation.step(10)

            # Create a new Simulation and append 5 more steps of output.
            simulation = app.Simulation(
                self.pdb.topology, self.system,
                mm.LangevinMiddleIntegrator(300 * unit.kelvin,
                                            1.0 / unit.picosecond,
                                            0.002 * unit.picoseconds))
            simulation.context.setPositions(self.pdb.positions)
            simulation.reporters.append(
                app.StateDataReporter(filename, 1, step=True, append=True))
            simulation.step(5)

            # See if the log contents are correct.
            del simulation
            lines = open(filename).read().split('\n')
            self.assertTrue(lines[0].startswith('#'))
            for i in range(10):
                self.assertEqual(lines[i + 1], f'{i+1}')
            for i in range(5):
                self.assertEqual(lines[i + 11], f'{i+1}')
Esempio n. 2
0
def equilibrate(
    pdb_file: str,
    top_file: str,
    log_file: str,
    output_pdb: str,
    solvent_type: str,
    gpu_index: int,
    log_steps: int,
    dt_ps: float,
    temperature_kelvin: float,
    heat_bath_friction_coef: float,
):
    """Run equilibration and output PDB file at the end"""
    sim = configure_simulation(
        pdb_file,
        top_file,
        solvent_type,
        gpu_index,
        dt_ps,
        temperature_kelvin,
        heat_bath_friction_coef,
    )

    # Configure simulation output log
    sim.reporters.append(
        app.StateDataReporter(
            log_file,
            log_steps,
            step=True,
            time=True,
            speed=True,
            potentialEnergy=True,
            temperature=True,
            totalEnergy=True,
        ))

    # Run equilibration
    sim.step(nsteps)

    # Report a PDB file at the end of equilibration
    state = sim.context.getState(getPositions=True)
    with open(output_pdb, "w") as f:
        app.PDBFile.writeFile(sim.topology, state.getPositions(), f)
Esempio n. 3
0
)

# Define the platform to use; CUDA, OpenCL, CPU, or Reference. Or do not specify
# the platform to use the default (fastest) platform
platform = mm.Platform.getPlatformByName('CUDA')
prop = dict(CudaPrecision='mixed')  # Use mixed single/double precision

# Create the Simulation object
sim = app.Simulation(top.topology, system, integrator, platform, prop)

# Set the particle positions
sim.context.setPositions(top.positions)

# Minimize the energy
print('Minimizing energy')
sim.minimizeEnergy(maxIterations=500)

# Set up the reporters to report energies and coordinates every 100 steps
sim.reporters.append(
    app.StateDataReporter(sys.stdout,
                          100,
                          step=True,
                          potentialEnergy=True,
                          kineticEnergy=True,
                          temperature=True))
sim.reporters.append(NetCDFReporter('dhfr_gb.nc', 100, crds=True))

# Run dynamics
print('Running dynamics')
sim.step(10000)
Esempio n. 4
0
modeller = msm.convert(molsys, to_form='openmm.Modeller')
forcefield = app.ForceField("amber14-all.xml", "amber14/tip3p.xml")
system = forcefield.createSystem(modeller.topology,
                                 nonbondedMethod=app.PME,
                                 nonbondedCutoff=1.2 * unit.nanometer,
                                 constraints=app.HBonds)
integrator = mm.LangevinIntegrator(300 * unit.kelvin, 1.0 / unit.picosecond,
                                   2.0 * unit.femtoseconds)
platform = mm.Platform.getPlatformByName('CUDA')
simulation = app.Simulation(modeller.topology, system, integrator, platform)
simulation.context.setPositions(modeller.positions)
simulation.minimizeEnergy()
simulation.context.setVelocitiesToTemperature(300 * unit.kelvin)
simulation.reporters.append(
    app.StateDataReporter(stdout,
                          50000,
                          progress=True,
                          potentialEnergy=True,
                          temperature=True,
                          remainingTime=True,
                          totalSteps=1000000))
simulation.reporters.append(
    app.DCDReporter('villin_hp35_solvated.dcd', 50000,
                    enforcePeriodicBox=True))
simulation.reporters.append(HDF5Reporter('villin_hp35_solvated.h5', 50000))
simulation.step(1000000)
simulation.reporters[2].close()
final_positions = simulation.context.getState(getPositions=True).getPositions()
app.PDBFile.writeFile(modeller.topology, final_positions,
                      open('villin_hp35_solvated_last.pdb', 'w'))