Beispiel #1
0
def equilibrate(testsystem,
                temperature,
                timestep,
                steps=40000,
                npt=False,
                minimize=True,
                steps_per_hmc=25,
                use_hmc=False,
                platform_name=PLATFORM,
                precision=PRECISION):
    system, topology, positions = testsystem.system, testsystem.topology, testsystem.positions

    if npt:
        barostat_index = system.addForce(
            mm.MonteCarloBarostat(1.0 * u.atmospheres, temperature, 1))
        print(system.getDefaultPeriodicBoxVectors())

    if use_hmc:
        integrator = hmc_integrators.GHMCIntegrator(
            temperature=temperature,
            steps_per_hmc=steps_per_hmc,
            timestep=timestep)
    else:
        integrator = mm.LangevinIntegrator(temperature, 2.0 / u.picoseconds,
                                           timestep)

    simulation = build(testsystem,
                       integrator,
                       temperature,
                       platform_name=platform_name,
                       precision=precision)

    if minimize:
        simulation.minimizeEnergy()

    integrator.step(steps)

    state = simulation.context.getState(getPositions=True, getParameters=True)
    positions = state.getPositions()
    boxes = state.getPeriodicBoxVectors()

    if use_hmc:
        print(integrator.acceptance_rate)

    if npt:
        system.removeForce(barostat_index)

    system.setDefaultPeriodicBoxVectors(*boxes)  # Doesn't hurt to reset boxes

    testsystem.positions = positions
    return positions, boxes, state
Beispiel #2
0
def inner_objective(args):
    steps_per_hmc, timestep = args
    print("*" * 80)
    print("steps=%d, timestep=%f, extra_chances=%d" %
          (steps_per_hmc, timestep, 0))
    current_timestep = timestep * u.femtoseconds
    steps_per_hmc = int(steps_per_hmc)
    integrator = hmc_integrators.GHMCIntegrator(temperature,
                                                steps_per_hmc=steps_per_hmc,
                                                timestep=current_timestep,
                                                collision_rate=collision_rate)
    simulation = lb_loader.build(testsystem,
                                 integrator,
                                 temperature,
                                 precision=precision,
                                 platform_name=platform_name)
    simulation.integrator.step(n_steps)
    return integrator, simulation  # Have to pass simulation to keep it from being garbage collected
Beispiel #3
0
def kw_to_int(**kwargs):
    steps_per_hmc = kwargs["steps_per_hmc"]
    timestep = kwargs["timestep"]
    group0_iterations = kwargs["group0_iterations"]
    temperature = kwargs["temperature"]
    print("*" * 80)
    print("steps=%d, timestep=%f, extra_chances=%d, group0_iterations=%d" %
          (steps_per_hmc, timestep, 0, group0_iterations))
    timestep = timestep * u.femtoseconds
    steps_per_hmc = int(steps_per_hmc)
    group0_iterations = int(group0_iterations)
    n_groups = max(
        kwargs["groups"]
    ) + 1  # 1 group means group number = 0, assumes zero index and ordering
    groups = num_to_groups(group0_iterations, n_groups)
    print(n_groups)
    print(groups)

    if kwargs["group0_iterations"] == 0 and kwargs["extra_chances"] == 0:
        integrator = hmc_integrators.GHMCIntegrator(
            temperature, steps_per_hmc=steps_per_hmc, timestep=timestep)
    elif kwargs["group0_iterations"] > 0 and kwargs["extra_chances"] > 0:
        integrator = hmc_integrators.XCGHMCRESPAIntegrator(
            temperature,
            steps_per_hmc=steps_per_hmc,
            timestep=timestep,
            groups=groups)
    elif kwargs["group0_iterations"] > 0 and kwargs["extra_chances"] == 0:
        integrator = hmc_integrators.GHMCRESPAIntegrator(
            temperature,
            steps_per_hmc=steps_per_hmc,
            timestep=timestep,
            groups=groups)
    elif kwargs["group0_iterations"] == 0 and kwargs["extra_chances"] > 0:
        integrator = hmc_integrators.XCGHMCIntegrator(
            temperature,
            steps_per_hmc=steps_per_hmc,
            timestep=timestep,
            groups=groups)

    return integrator
def get_grid(sysname, temperature, timestep, langevin_timestep, groups, steps_per_hmc=100, extra_chances=5):

    integrators = OrderedDict()

    for timestep in [1.0 * langevin_timestep, 4.0 * langevin_timestep]:
        collision_rate = 1.0 / u.picoseconds
        integrator = mm.LangevinIntegrator(temperature, collision_rate, timestep)
        itype = type(integrator).__name__
        prms = dict(sysname=sysname, itype=itype, timestep=timestep / u.femtoseconds, collision=lb_loader.fixunits(collision_rate))
        fmt_string = lb_loader.format_name(prms)
        integrators[fmt_string] = integrator

    collision_rate = None
    for timestep in [timestep, 20 * u.femtoseconds]:
        integrator = hmc_integrators.GHMCIntegrator(temperature=temperature, steps_per_hmc=steps_per_hmc, timestep=timestep, collision_rate=collision_rate)
        itype = type(integrator).__name__
        prms = dict(sysname=sysname, itype=itype, timestep=timestep / u.femtoseconds, collision=lb_loader.fixunits(collision_rate))
        fmt_string = lb_loader.format_name(prms)
        integrators[fmt_string] = integrator

    collision_rate = None
    for timestep in [timestep]:
        integrator = hmc_integrators.XCGHMCIntegrator(temperature=temperature, steps_per_hmc=steps_per_hmc, timestep=timestep, extra_chances=extra_chances, collision_rate=collision_rate)
        itype = type(integrator).__name__
        prms = dict(sysname=sysname, itype=itype, timestep=timestep / u.femtoseconds, collision=lb_loader.fixunits(collision_rate))
        fmt_string = lb_loader.format_name(prms)
        integrators[fmt_string] = integrator


    xcghmc_parms = dict(timestep=32.235339 * u.femtoseconds, steps_per_hmc=16, extra_chances=1, collision_rate=None)
    integrator = hmc_integrators.XCGHMCIntegrator(temperature=temperature, **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname, itype=itype, timestep=integrator.timestep / u.femtoseconds, collision=lb_loader.fixunits(None))
    fmt_string = lb_loader.format_name(prms)
    integrators[fmt_string] = integrator

    return integrators
            return data


timestep = 75 * u.femtoseconds  # LJ Cluster
n_iter = 100000
data = {}

integrator = mm.LangevinIntegrator(temperature, 1.0 / u.picoseconds, timestep)
context = mm.Context(system, integrator)
context.setPositions(positions)
context.setVelocitiesToTemperature(temperature)

data["langevin"] = pd.DataFrame(sample(context, n_iter=n_iter, n_steps=20))

integrator = hmc_integrators.GHMCIntegrator(temperature,
                                            steps_per_hmc=10,
                                            timestep=timestep,
                                            collision_rate=collision_rate)
context = mm.Context(system, integrator)
context.setPositions(positions)
context.setVelocitiesToTemperature(temperature)

data["ghmc"] = pd.DataFrame(sample(context, n_iter=n_iter, n_steps=1))

integrator = hmc_integrators.GHMCIntegrator(temperature,
                                            steps_per_hmc=10,
                                            timestep=timestep,
                                            collision_rate=1.0 / u.picoseconds)
context = mm.Context(system, integrator)
context.setPositions(positions)
context.setVelocitiesToTemperature(temperature)
Beispiel #6
0
steps_per_hmc = 5
k_max = 4

integrator = hmc_integrators.XHMCIntegrator(temperature, steps_per_hmc,
                                            timestep, collision_rate, k_max)
context = mm.Context(system, integrator)
context.setPositions(positions)
context.setVelocitiesToTemperature(temperature)

integrator.step(10)
data = integrator.vstep(50)
data.Enew[data.a == 1].mean(), data.Enew[
    data.a == 1].std(), data.Enew[data.a == 1].std() / sum(data.a == 1)**0.5
state = context.getState(getEnergy=True)
energy = state.getPotentialEnergy() + state.getKineticEnergy()
energy, state.getPotentialEnergy(), state.getKineticEnergy()
#columns = ["a", "flip", "deltaE"] + ["T%d" % i for i in range(4)] + ["pe%d" % i for i in range(4)] + ["ke%d" % i for i in range(4)]
#data[columns]

integrator = hmc_integrators.GHMCIntegrator(temperature, steps_per_hmc,
                                            timestep, collision_rate)
context = mm.Context(system, integrator)
context.setPositions(positions)
context.setVelocitiesToTemperature(temperature)

integrator.step(10)
data = integrator.vstep(50)
data["a"] = data.accept
data.Enew[data.a == 1].mean(), data.Enew[
    data.a == 1].std(), data.Enew[data.a == 1].std() / sum(data.a == 1)**0.5
Beispiel #7
0
    print(hydrogenMass)
    positions = pdb.positions
    system = forcefield.createSystem(pdb.topology, nonbondedMethod=app.PME, nonbondedCutoff=1.0*u.nanometers, hydrogenMass=hydrogenMass * u.amu, rigidWater=False)
    integrator = mm.LangevinIntegrator(temperature, 1.0 / u.picoseconds, 0.25 * u.femtoseconds)
    
    context = mm.Context(system, integrator)
    context.setPositions(positions)
    context.setVelocitiesToTemperature(temperature)
    integrator.step(100)
    positions = context.getState(getPositions=True).getPositions()

    collision_rate = 1.0 / u.picoseconds
    timestep = 0.5 * u.femtoseconds
    steps_per_hmc = 12

    integrator = hmc_integrators.GHMCIntegrator(temperature, steps_per_hmc, timestep)
    context = mm.Context(system, integrator)
    context.setPositions(positions)
    context.setVelocitiesToTemperature(temperature)

    integrator.step(1)
    integrator.step(n_steps)


    integrator = hmc_integrators.GHMCIntegrator(temperature, steps_per_hmc, timestep)
    context = mm.Context(system, integrator)
    context.setPositions(positions)
    context.setVelocitiesToTemperature(temperature)

    integrator.step(1)
    integrator.step(n_steps)
Beispiel #8
0
def enumerate_experiments():
    experiments = OrderedDict()
    ############################################################################
    sysname = "switchedljbox"
    system, positions, groups, temperature, timestep, langevin_timestep, testsystem, equil_steps, steps_per_hmc = lb_loader.load(
        sysname)
    ############################################################################
    for timestep in [2.5 * u.femtoseconds, 5.0 * u.femtoseconds]:
        collision_rate = 1.0 / u.picoseconds
        integrator = mm.LangevinIntegrator(temperature, collision_rate,
                                           timestep)
        prms = dict(sysname=sysname,
                    timestep=timestep / u.femtoseconds,
                    collision=lb_loader.fixunits(collision_rate))
        expt = Experiment(integrator=integrator, sysname=sysname, prms=prms)

    collision_rate = None
    for timestep in [20.0 * u.femtoseconds]:
        integrator = hmc_integrators.GHMCIntegrator(
            temperature=temperature,
            steps_per_hmc=steps_per_hmc,
            timestep=timestep,
            collision_rate=collision_rate)
        prms = dict(sysname=sysname,
                    timestep=timestep / u.femtoseconds,
                    collision=lb_loader.fixunits(collision_rate))
        expt = Experiment(integrator=integrator, sysname=sysname, prms=prms)

    timestep = 35.0 * u.femtoseconds
    extra_chances = 2
    collision_rate = 1.0 / u.picoseconds

    integrator = hmc_integrators.XCGHMCIntegrator(
        temperature=temperature,
        steps_per_hmc=steps_per_hmc,
        timestep=timestep,
        extra_chances=extra_chances,
        collision_rate=collision_rate)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=timestep / u.femtoseconds,
                collision=lb_loader.fixunits(collision_rate))
    expt = Experiment(integrator=integrator, sysname=sysname, prms=prms)

    return

    collision_rate = None
    for timestep in []:  # [2.0 * u.femtoseconds]:
        integrator = hmc_integrators.XCGHMCIntegrator(
            temperature=temperature,
            steps_per_hmc=steps_per_hmc,
            timestep=timestep,
            extra_chances=extra_chances,
            collision_rate=collision_rate)
        itype = type(integrator).__name__
        prms = dict(sysname=sysname,
                    itype=itype,
                    timestep=timestep / u.femtoseconds,
                    collision=lb_loader.fixunits(collision_rate))
        int_string = lb_loader.format_int_name(prms)
        key = (sysname, int_string)
        experiments[key] = integrator

    ############################################################################
    sysname = "switchedaccurateflexiblewater"
    system, positions, groups, temperature, timestep, langevin_timestep, testsystem, equil_steps, steps_per_hmc = lb_loader.load(
        sysname)
    ############################################################################

    for timestep in [
            0.10 * u.femtoseconds, 0.15 * u.femtoseconds, 0.5 * u.femtoseconds
    ]:
        collision_rate = 1.0 / u.picoseconds
        integrator = mm.LangevinIntegrator(temperature, collision_rate,
                                           timestep)
        itype = type(integrator).__name__
        prms = dict(sysname=sysname,
                    itype=itype,
                    timestep=timestep / u.femtoseconds,
                    collision=lb_loader.fixunits(collision_rate))
        int_string = lb_loader.format_int_name(prms)
        key = (sysname, int_string)
        experiments[key] = integrator

    xcghmc_parms = dict(timestep=0.668 * u.femtoseconds,
                        steps_per_hmc=10,
                        extra_chances=1,
                        collision_rate=None)
    integrator = hmc_integrators.XCGHMCIntegrator(temperature=temperature,
                                                  **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=integrator.timestep / u.femtoseconds,
                collision=lb_loader.fixunits(None))
    int_string = lb_loader.format_int_name(prms)
    key = (sysname, int_string)
    experiments[key] = integrator

    # hyperopt determined optimal settings obtain ~113 effective ns / day
    xcghmc_parms = dict(timestep=1.1868 * u.femtoseconds,
                        steps_per_hmc=23,
                        collision_rate=None,
                        groups=((0, 1), (1, 4)))
    integrator = hmc_integrators.GHMCRESPAIntegrator(temperature=temperature,
                                                     **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=integrator.timestep / u.femtoseconds,
                collision=lb_loader.fixunits(None))
    int_string = lb_loader.format_int_name(prms)
    key = (sysname, int_string)
    experiments[key] = integrator

    # Obtained by taking hyperopt optimal GHMCRespa parameters and adding 2 extra chances
    xcghmc_parms = dict(timestep=1.1868 * u.femtoseconds,
                        steps_per_hmc=23,
                        collision_rate=None,
                        extra_chances=2,
                        groups=((0, 1), (1, 4)))
    integrator = hmc_integrators.XCGHMCRESPAIntegrator(temperature=temperature,
                                                       **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=integrator.timestep / u.femtoseconds,
                collision=lb_loader.fixunits(None))
    int_string = lb_loader.format_int_name(prms)
    key = (sysname, int_string)
    experiments[key] = integrator

    # hyperopt determined optimal settings obtain ~79.8 effective ns/day
    xcghmc_parms = dict(timestep=0.6791 * u.femtoseconds,
                        steps_per_hmc=20,
                        collision_rate=None)
    integrator = hmc_integrators.GHMCIntegrator(temperature=temperature,
                                                **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=integrator.timestep / u.femtoseconds,
                collision=lb_loader.fixunits(None))
    int_string = lb_loader.format_int_name(prms)
    key = (sysname, int_string)
    experiments[key] = integrator

    xcghmc_parms = dict(timestep=0.6791 * u.femtoseconds,
                        steps_per_hmc=20,
                        collision_rate=None)
    xcghmc_parms.update(dict())
    integrator = hmc_integrators.XCGHMCIntegrator(temperature=temperature,
                                                  **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=timestep / u.femtoseconds,
                collision=lb_loader.fixunits(collision_rate))
    int_string = lb_loader.format_int_name(prms)
    key = (sysname, int_string)
    experiments[key] = integrator

    ############################################################################
    sysname = "switchedaccuratebigflexiblewater"
    system, positions, groups, temperature, timestep, langevin_timestep, testsystem, equil_steps, steps_per_hmc = lb_loader.load(
        sysname)
    ############################################################################

    experiments = OrderedDict()

    # hyperopt determined optimal settings obtain ~113 effective ns / day
    xcghmc_parms = dict(timestep=0.256927 * u.femtoseconds,
                        steps_per_hmc=24,
                        collision_rate=None,
                        groups=((0, 4), (1, 1)))
    integrator = hmc_integrators.GHMCRESPAIntegrator(temperature=temperature,
                                                     **xcghmc_parms)
    itype = type(integrator).__name__
    prms = dict(sysname=sysname,
                itype=itype,
                timestep=integrator.timestep / u.femtoseconds,
                collision=lb_loader.fixunits(None))
    int_string = lb_loader.format_int_name(prms)
    key = (sysname, int_string)
    experiments[key] = integrator