Exemple #1
0
def main():

    # launch grid
    print "launching grid"
    grid = launch_grid()

    #publish the shared object
    print "publishing sfo"
    sfo = sf.sfo()
    sfo_id = grid.publish(sfo)

    print "communication test"
    #get a worker to do a task
    #proxy = grid.acquire_service(sfo_id)
    #print proxy.hello().get()
    #grid.release_service(proxy)

    print "broadcast test"
    print grid.gather(grid.broadcast(sfo_id, 'hello'))

    #call init on all nodes
    print "initializing model"
    mkdir_p(tmpdir)
    mkdir_p(outfolder)
    requests = grid.broadcast(sfo_id, 'init_model', tmpdir, sequence, initpdb, restraints)
    #wait til init is done
    results = grid.gather(requests)

    #turn off verbose noise (works because IMP.base.NONE is picklable, being an int.
    grid.gather(grid.broadcast(sfo_id, 'set_checklevel', IMP.base.NONE))
    grid.gather(grid.broadcast(sfo_id, 'set_loglevel', IMP.base.NONE))

    # evaluate the score of the whole system (without derivatives, False flag)
    print "initial energy"
    grid.gather(grid.broadcast(sfo_id, 'm', 'evaluate', False))

    #berendsen 300K tau=0.5ps
    #perform two independent MC moves for sigma and gamma
    print "initializing simulation and statistics"
    grid.gather(grid.scatter(sfo_id, 'init_simulation',
        zip(lambdas, tau)))
    grid.gather(grid.scatter(sfo_id, 'init_stats', zip(nums, stat_rate)))
    replica = ReplicaTracker(nreps, lambdas, grid, sfo_id,
            rexlog=rexlog,
            scheme=rex_scheme, xchg=rex_xchg,
            tune_temps=tune_temps, tune_data=tune_data, templog=templog)

    print "thermalization"
    for i in range(n_therm):
        print "\rgibbs step %d" % i,
        sys.stdout.flush()
        grid.gather(grid.scatter(sfo_id, 'set_inv_temp',
            [ n_therm/float(i+1) * l for l in lambdas ]))
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_hmc_therm))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))

    print "start gibbs sampling loop: first relaxation"
    for i in range(n_gibbs1):
        print "\rgibbs step %d" % i,
        sys.stdout.flush()
        #print " md"
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_md))
        #print " mc"
        grid.gather(grid.broadcast(sfo_id, 'do_mc', n_mc))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))
        #print " swaps"
        replica.tune_data['dumb_scale']=0.5
        replica.replica_exchange()
        #print " stats"
        replica.write_rex_stats()

    print "start gibbs sampling loop: second relaxation"
    for i in range(n_gibbs2):
        print "\rgibbs step %d" % i,
        sys.stdout.flush()
        #print " md"
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_md))
        #print " mc"
        grid.gather(grid.broadcast(sfo_id, 'do_mc', n_mc))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))
        #print " swaps"
        replica.tune_data['dumb_scale']=0.2
        replica.replica_exchange()
        #print " stats"
        replica.write_rex_stats()

    print "start gibbs sampling loop: production"
    for i in range(n_gibbs3):
        print "\rgibbs step %d" % i,
        sys.stdout.flush()
        #print " md"
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_md))
        #print " mc"
        grid.gather(grid.broadcast(sfo_id, 'do_mc', n_mc))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))
        #print " swaps"
        replica.tune_temps=False
        replica.replica_exchange()
        #print " stats"
        replica.write_rex_stats()

    print "terminating grid"
    grid.terminate()
    print "done."
Exemple #2
0
def main():

    # launch grid
    print("launching grid")
    grid = launch_grid()

    # publish the shared object
    print("publishing sfo")
    sfo = sf.sfo()
    sfo_id = grid.publish(sfo)

    print("communication test")
    # get a worker to do a task
    #proxy = grid.acquire_service(sfo_id)
    # print proxy.hello().get()
    # grid.release_service(proxy)

    print("broadcast test")
    print(grid.gather(grid.broadcast(sfo_id, 'hello')))

    # call init on all nodes
    print("initializing model")
    mkdir_p(tmpdir)
    mkdir_p(outfolder)
    requests = grid.broadcast(sfo_id, 'init_model', tmpdir, sequence, initpdb,
                              restraints)
    # wait til init is done
    results = grid.gather(requests)

    # turn off verbose noise (works because IMP.base.NONE is picklable, being
    # an int.
    grid.gather(grid.broadcast(sfo_id, 'set_checklevel', IMP.base.NONE))
    grid.gather(grid.broadcast(sfo_id, 'set_loglevel', IMP.base.NONE))

    # evaluate the score of the whole system (without derivatives, False flag)
    print("initial energy")
    grid.gather(grid.broadcast(sfo_id, 'm', 'evaluate', False))

    # berendsen 300K tau=0.5ps
    # perform two independent MC moves for sigma and gamma
    print("initializing simulation and statistics")
    grid.gather(grid.scatter(sfo_id, 'init_simulation', zip(lambdas, tau)))
    grid.gather(grid.scatter(sfo_id, 'init_stats', zip(nums, stat_rate)))
    replica = ReplicaTracker(nreps,
                             lambdas,
                             grid,
                             sfo_id,
                             rexlog=rexlog,
                             scheme=rex_scheme,
                             xchg=rex_xchg,
                             tune_temps=tune_temps,
                             tune_data=tune_data,
                             templog=templog)

    print("thermalization")
    for i in range(n_therm):
        print("\rgibbs step %d" % i, end=' ')
        sys.stdout.flush()
        grid.gather(
            grid.scatter(sfo_id, 'set_inv_temp',
                         [n_therm / float(i + 1) * l for l in lambdas]))
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_hmc_therm))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))

    print("start gibbs sampling loop: first relaxation")
    for i in range(n_gibbs1):
        print("\rgibbs step %d" % i, end=' ')
        sys.stdout.flush()
        # print " md"
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_md))
        # print " mc"
        grid.gather(grid.broadcast(sfo_id, 'do_mc', n_mc))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))
        # print " swaps"
        replica.tune_data['dumb_scale'] = 0.5
        replica.replica_exchange()
        # print " stats"
        replica.write_rex_stats()

    print("start gibbs sampling loop: second relaxation")
    for i in range(n_gibbs2):
        print("\rgibbs step %d" % i, end=' ')
        sys.stdout.flush()
        # print " md"
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_md))
        # print " mc"
        grid.gather(grid.broadcast(sfo_id, 'do_mc', n_mc))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))
        # print " swaps"
        replica.tune_data['dumb_scale'] = 0.2
        replica.replica_exchange()
        # print " stats"
        replica.write_rex_stats()

    print("start gibbs sampling loop: production")
    for i in range(n_gibbs3):
        print("\rgibbs step %d" % i, end=' ')
        sys.stdout.flush()
        # print " md"
        grid.gather(grid.broadcast(sfo_id, 'do_md', n_md))
        # print " mc"
        grid.gather(grid.broadcast(sfo_id, 'do_mc', n_mc))
        grid.gather(grid.broadcast(sfo_id, 'write_stats'))
        # print " swaps"
        replica.tune_temps = False
        replica.replica_exchange()
        # print " stats"
        replica.write_rex_stats()

    print("terminating grid")
    grid.terminate()
    print("done.")