openmm.Platform.getPlatformByName(name),
        dict(Precision='mixed') if name == 'CUDA' else dict()
    ]


integrator = openmm.LangevinIntegrator(temp, 0.1 / unit.femtoseconds,
                                       1.0 * unit.femtosecond)
system.addForce(openmm.MonteCarloBarostat(1 * unit.atmospheres, temp, 20))
simulation = app.Simulation(topology, system, integrator,
                            *platform(simulation_platform))
simulation.context.setPositions(modeller.getPositions())
simulation.context.setVelocitiesToTemperature(temp)

computer = atomsmm.PressureComputer(system, topology,
                                    *platform(pressure_computer_platform))
reporter = atomsmm.ExtendedStateDataReporter(stdout,
                                             100,
                                             step=True,
                                             speed=True,
                                             potentialEnergy=True,
                                             temperature=True,
                                             density=True,
                                             atomicPressure=(not rigid_water),
                                             molecularPressure=True,
                                             pressureComputer=computer,
                                             extraFile='properties.csv')

simulation.reporters.append(reporter)
simulation.minimizeEnergy()
simulation.step(100000)
simulation.context.setPositions(pdb.positions)
simulation.context.setVelocitiesToTemperature(temp, seed)

states_file = 'alchemical_states' + ('.inp' if args.part == 0 else
                                     f'_{args.part}.inp')
states_data = pd.read_csv(states_file, sep='\s+', comment='#')
parameterStates = states_data[['lambda_vdw', 'lambda_coul']]
simulate = states_data['weight'] != -np.inf
for state in reversed(states_data.index):
    if simulate[state]:
        for name, value in parameterStates.iloc[state].items():
            simulation.context.setParameter(name, value)
            print(f'{name} = {value}')
        dataReporter = atomsmm.ExtendedStateDataReporter(
            stdout,
            reportInterval,
            separator=',',
            step=True,
            potentialEnergy=True,
            temperature=True,
            speed=True,
            extraFile=f'{base}_data-{state:02d}.csv')
        multistateReporter = atomsmm.ExtendedStateDataReporter(
            f'{base}_energy-{state:02d}.csv',
            reportInterval,
            separator=',',
            step=True,
            globalParameterStates=parameterStates)
        simulation.reporters = [dataReporter, multistateReporter]
        simulation.step(steps_per_state)
                                   platform, properties)
simulation.context.setPositions(pdb.positions)
simulation.context.setVelocitiesToTemperature(temp, seed)

states_data = pd.read_csv('expanded_ensemble_states.inp',
                          sep='\s+',
                          comment='#')
parameterStates = states_data[['lambda_vdw', 'lambda_coul']]
state = len(states_data.index) - 1
for name, value in parameterStates.iloc[state].items():
    simulation.context.setParameter(name, value)
    print(f'{name} = {value}')
dataReporter = atomsmm.ExtendedStateDataReporter(stdout,
                                                 reportInterval,
                                                 separator=',',
                                                 step=True,
                                                 potentialEnergy=True,
                                                 temperature=True,
                                                 speed=True,
                                                 extraFile=f'{base}_data.csv')
expandedEnsembleReporter = atomsmm.reporters.ExpandedEnsembleReporter(
    f'{base}_energy.csv',
    reportInterval,
    separator=',',
    states=states_data,
    temperature=temp)
simulation.reporters = [dataReporter, expandedEnsembleReporter]
simulation.step(args.nsteps)
expandedEnsembleReporter.state_sampling_analysis()
expandedEnsembleReporter.walking_time_analysis()
    pdb.topology,
    #        openmm.Platform.getPlatformByName('CPU'),
    openmm.Platform.getPlatformByName('CUDA'),
    dict(Precision='mixed', DeviceIndex=args.secdev),
    temperature=temp)

dataReporter = atomsmm.ExtendedStateDataReporter(
    stdout,
    reportInterval,
    separator=',',
    step=True,
    potentialEnergy=True,
    kineticEnergy=True,
    #        totalEnergy=True,
    temperature=True,
    #        atomicVirial=True,
    atomicPressure=True,
    #        nonbondedVirial=True,
    #        molecularVirial=True,
    molecularPressure=True,
    #        molecularKineticEnergy=True,
    #        coulombEnergy=True,
    pressure_computer=computer,
    time_scales=(3 if args.timestep > 3 else 2),
    speed=True,
    extraFile=f'{base}.csv')

configReporter = atomsmm.XYZReporter(f'{base}.xyz', 4 * reportInterval)

simulation.reporters += [dataReporter, configReporter]
simulation.step(args.nsteps)
Beispiel #5
0
openmm_system.addForce(
    openmm.MonteCarloBarostat(1 * unit.atmospheres, temp, 25))

integrator = openmm.LangevinIntegrator(temp, 1.0 / unit.picoseconds,
                                       1.0 * unit.femtosecond)
simulation = openmm.app.Simulation(pdb.topology, openmm_system, integrator,
                                   platform, properties)
simulation.context.setPositions(pdb.positions)
simulation.context.setVelocitiesToTemperature(temp, seed)

reporter = atomsmm.ExtendedStateDataReporter(stdout,
                                             reportInterval,
                                             separator=',',
                                             step=True,
                                             potentialEnergy=True,
                                             kineticEnergy=True,
                                             totalEnergy=True,
                                             temperature=True,
                                             volume=True,
                                             density=True,
                                             speed=True,
                                             extraFile='properties.csv')
simulation.reporters.append(reporter)
simulation.step(nsteps)

state = simulation.context.getState(getPositions=True)
coords = state.getPositions(asNumpy=True).value_in_unit(unit.angstroms)
volume = state.getPeriodicBoxVolume().value_in_unit(unit.angstroms**3)
Lbox = [volume**(1 / 3)] * 3

out = open('box.temp', 'w')
print('box lengths {} {} {}'.format(*Lbox), file=out)
Beispiel #6
0
nbforce.setUseSwitchingFunction(True)
nbforce.setSwitchingDistance(rswitch)
nbforce.setUseDispersionCorrection(True)

Nd = 3 * (openmm_system.getNumParticles() - 1)
# integrator = my_integrators.MiddleNoseHooverChainIntegrator(dt, temp, tau, Nd)
integrator = my_integrators.MiddleNoseHooverLangevinIntegrator(
    dt, temp, gamma, tau, Nd)
simulation = openmm.app.Simulation(pdb.topology, openmm_system, integrator,
                                   platform, properties)
simulation.context.setPositions(pdb.positions)
simulation.context.setVelocitiesToTemperature(temp, seed)

dataReporter = atomsmm.ExtendedStateDataReporter(stdout,
                                                 reportInterval,
                                                 separator=',',
                                                 step=True,
                                                 potentialEnergy=True,
                                                 kineticEnergy=True,
                                                 totalEnergy=True,
                                                 temperature=True,
                                                 speed=True,
                                                 extraFile=f'{args.file}.csv')
comReporter = atomsmm.CenterOfMassReporter(f'{args.file}.xyz', reportInterval)
velReporter = atomsmm.CenterOfMassReporter(f'{args.file}.vel',
                                           reportInterval,
                                           velocities=True)

simulation.reporters += [dataReporter, comReporter, velReporter]
simulation.step(args.nsteps)
    properties['DeviceIndex'] = args.device

pdb = app.PDBFile('water.pdb')
forcefield = app.ForceField('water.xml')
openmm_system = forcefield.createSystem(pdb.topology,
                                        nonbondedMethod=openmm.app.PME,
                                        nonbondedCutoff=rcut,
                                        rigidWater=False,
                                        removeCMMotion=False)

nbforce = openmm_system.getForce(atomsmm.findNonbondedForce(openmm_system))
nbforce.setUseSwitchingFunction(True)
nbforce.setSwitchingDistance(rswitch)
nbforce.setUseDispersionCorrection(True)

integrator = openmm.CustomIntegrator(0)

simulation = openmm.app.Simulation(pdb.topology, openmm_system, integrator, platform, properties)
simulation.context.setPositions(pdb.positions)

dataReporter = atomsmm.ExtendedStateDataReporter(stdout, 1, separator=',',
        step=True,
        potentialEnergy=True,
        kineticEnergy=True,
        totalEnergy=True,
        temperature=True,
        speed=True)

simulation.reporters += [dataReporter]
simulation.step(1)
Beispiel #8
0
        if isinstance(force, openmm.NonbondedForce):
            force.setReciprocalSpaceForceGroup(1)
            force.setForceGroup(1)
    loops = [2*args.timestep, 1]

#integrator = atomsmm.integrators.LimitedSpeedStochasticVelocityIntegrator(dt, loops, temp, tau, gamma, L=args.L)
integrator = atomsmm.integrators.LimitedSpeedStochasticIntegrator(dt, loops, temp, tau, gamma, L=args.L)

simulation = openmm.app.Simulation(pdb.topology, respa_system, integrator, platform, properties)
simulation.context.setPositions(pdb.positions)
simulation.context.setVelocitiesToTemperature(temp, seed)

computer = atomsmm.PressureComputer(openmm_system,
        pdb.topology,
        openmm.Platform.getPlatformByName('CPU'),
#        dict(Precision='mixed', DeviceIndex=args.secdev),
        temperature=temp)

dataReporter = atomsmm.ExtendedStateDataReporter(stdout, reportInterval, separator=',',
        step=True,
        potentialEnergy=True,
        temperature=True,
#        atomicPressure=True,
#        molecularPressure=True,
#        pressureComputer=computer,
        speed=True,
        extraFile=f'{base}.csv')

simulation.reporters += [dataReporter]
simulation.step(args.nsteps)