def main():

    time_start = time.time()

    print "-- create the universe"
    m = IMP.Model()
    m.set_log_level(IMP.SILENT)
    #    m.set_log_level(IMP.TERSE)
    #    m.set_log_level(IMP.VERBOSE)
    m.set_maximum_score(model_max_score)

    tfiihInfos = build_TFIIH_subunits_info(m)

    print "-- read the cover spheres"
    coverSpheres = read_cover_spheres(myBallsFileName)
    print "-- create and inject the EM sticking restraints"
    rs = get_enveloppe_restraints(coverSpheres, tfiihInfos.get_particles())
    for r in rs:
        m.add_restraint(r)


#    print "spheres :";
#    for s in coverSpheres : print s
    bb = get_bbox_from_cover_spheres(coverSpheres)
    print "BBOX:", bb

    HGM.helpers.mute_all_restraints(m)

    times = HGM.times.Times()

    mcs = HGM.representation.MyConfigurationSet(tfiihInfos)

    print "-- generate sample"
    loop_i = 1
    for i in sample_indexes:
        time_loop_start = time.time()
        #        generate_sample_md(i,tfiihInfos,mcs,bb)
        generate_sample_mccg(i, tfiihInfos, mcs, bb)
        time_loop_stop = time.time()
        elapse_time = int(time_loop_stop - time_loop_start)
        times.set_sample_time(i, elapse_time)
        print "{0:d}({1:d}s)..".format(i, elapse_time),
        if loop_i % 40 == 0: print ""
        sys.stdout.flush()
        loop_i += 1

    time_stop = time.time()

    print "full sample generated in {0:d}s".format(int(time_stop - time_start))
def main():

    time_start = time.time()

    m = IMP.Model()
    m.set_log_level(IMP.SILENT)
    tfiihInfos = build_TFIIH_subunits_info(m)
    HGM.helpers.mute_all_restraints(m)

    times = HGM.times.Times()

    #    For an unexplained reason, it seems that the MD motor loses speed during the game, I thus will use different motors for each sampling
    #    smd = HGM.sampling.SamplerSimpleMD(tfiihInfos,md_type,T,tau,sampling_step)

    mcs = HGM.representation.MyConfigurationSet(tfiihInfos)

    print "-- generate sample"
    for i in sample_indexes:
        time_loop_start = time.time()

        smd = HGM.sampling.SamplerSimpleMD(tfiihInfos, md_type, T, tau,
                                           sampling_step)

        smd.do_generate_sample(dryRun_size)  # a dry run before
        cs = smd.do_generate_sample(sample_size,
                                    False)  # actually generating the sample
        saveName = savePrefix + "--" + str(i) + ".txt"
        mcs.read_configurationSet(cs)
        mcs.save_all_configs_to_file(os.path.join(saveDirSample, saveName))
        mcs.delete_all_configs()
        time_loop_stop = time.time()
        elapse_time = int(time_loop_stop - time_loop_start)
        times.set_sample_time(i, elapse_time)
        print "{0:d}({1:d}s)..".format(i, elapse_time),
        sys.stdout.flush()

    time_stop = time.time()

    print "full sample generated in {0:d}s".format(int(time_stop - time_start))
def main(argv, seed):
    r = IMP.random_number_generator
    r.seed(seed)
    sample_indexes = [argv]

    time_start = time.time()

    print "-- create the universe"
    m = IMP.Model()
    m.set_log_level(IMP.SILENT)
    #    m.set_log_level(IMP.TERSE)
    #    m.set_log_level(IMP.VERBOSE)
    m.set_maximum_score(model_max_score)

    tfiihInfos = build_subunits_info(m)

    bbEM = tfiihInfos.emSpheres.compute_bbox()
    print "BBOX EM:", bbEM
    v = bbEM.get_corner(1) - bbEM.get_corner(0)
    bb = IMP.algebra.BoundingBox3D(
        bbEM.get_corner(0) - v / 2.,
        bbEM.get_corner(1) + v / 2.)

    HGM.helpers.mute_all_restraints(m)

    times = HGM.times.Times()

    #    mcs         = HGM.representation.MyConfigurationSet(tfiihInfos)

    print "-- generate sample"
    loop_i = 1
    for i in sample_indexes:
        time_loop_start = time.time()
        #        generate_sample_md(i,tfiihInfos,mcs,bb)
        #        generate_sample_mymccg(i,tfiihInfos,mcs,bb)

        print "MCCG SAMPLING   ", "-" * 10
        mcs = generate_sample_mccg(tfiihInfos, bb)

        #        mc  = HGM.representation.MyConfigurationSet(tfiihInfos)
        #        mc.save_current_config()
        print "MCCG REFINING   ", "-" * 10
        mcsr = refine_sample_mccg(tfiihInfos, mcs)
        #        mcsr = refine_sample_mccg(tfiihInfos,mc)

        configs = [(800, 100, 2), (600, 200, 1.5), (400, 300, 1.5),
                   (200, 500, 1)]
        #        configs = [ (800,100,2),(600,50,1.5),(400,100,1.5),(200,500,1)]
        #        mc  = HGM.representation.MyConfigurationSet(tfiihInfos)
        #        mc.save_current_config()
        print "MCCG SUBUNITS REFINING   ", "-" * 10
        mcsr2 = refine_sample_mccg_per_subunits(tfiihInfos, mcsr, configs)
        #        mcsr2 = refine_sample_mccg_per_subunits(tfiihInfos,mc,configs)
        print "MCCG SUBUNITS REREFINING   ", "-" * 10
        #        mc  = HGM.representation.MyConfigurationSet(tfiihInfos)
        #        mc.save_current_config()
        configs = [(400, 200, 1.5), (300, 400, 1), (100, 600, .5)]
        #        mcsr3 = refine_sample_mccg_per_subunits(tfiihInfos,mc,configs)
        mcsr3 = refine_sample_mccg_per_subunits(tfiihInfos, mcsr2, configs)

        #        mcs.read_configurationSet(mcsr)
        #        mcs.read_configurationSet(mcsr2)
        #        mcs.read_configurationSet(mcsr3)
        print "SAVE       ", "-" * 10
        print " ", mcs.get_number_of_configurations(), "configurations"
        save_sample(mcsr3, i)
        #        save_sample(mcsr,i)

        time_loop_stop = time.time()
        elapse_time = int(time_loop_stop - time_loop_start)
        times.set_sample_time(i, elapse_time)
        print "{0:d}({1:d}s)..".format(i, elapse_time),
        if loop_i % 40 == 0: print ""
        sys.stdout.flush()
        loop_i += 1

        mcs.delete_all_configs()

    time_stop = time.time()

    print "full sample generated in {0:d}s".format(int(time_stop - time_start))