Example #1
0
def get_fstates(decay):
    global db
    global br_cutoff
    if decay['branching'] < br_cutoff:
        return
    if decay['branching'] > 1:
        return
    if len(decay['products'])>max_decay_chain:
        return
    if len(decay['products'])<1:
        return 
    #print decay['history'], decay['products']
    db_dec = Decay(father = decay['father'], scheme = decay['history'], branching = decay["branching"], fstate = ' '.join(decay['products'])).order_history()
    #db_dec.printdecay()
    try:
        db_dec.save()
    except:
        #print "Failed to save decay!"
        #db_dec.printdecay()
        return
    #try:
    #    #print json.dumps(decay, sort_keys=True, indent=4)
    #    fstates.insert({
    #        'scheme': decay['history'],
    #        'branching': decay['branching'],
    #        'fstate': ' '.join(decay['products']),
    #        'father': decay['father']
    #    })
    #except pymongo.errors.DuplicateKeyError:
    #    return

    #if not 1 <= len(decay['products']) <= max_decay_chain: # Not full db build
    #if len(decay['products']) == 1: # Full DB build
    #    return

    for p in decay['products']:
        if not p in db:
            continue
        for k in db[p]:
            work_copy = deepcopy(decay)

            work_copy['products'].remove(k['father'])
            work_copy['products'] += k['products']

            history = work_copy['history'].split('; ') + \
                ["{} --> {}".format(k['father'], ' '.join(k['products']))]

            work_copy['history'] = '; '.join(history[:1] + sorted(history[1:]))

            work_copy['branching'] *= k['branching']

            get_fstates(work_copy)
Example #2
0
def get_fstates(decay):
    global db
    global br_cutoff
    if decay['branching'] < br_cutoff:
        return
    if decay['branching'] > 1:
        return
    if len(decay['childs'])>max_decay_chain:
        return
    if len(decay['childs'])<1:
        return 
    #print decay['history'], decay['products']
    db_dec = Decay(parent = decay['parent'], childs = decay['childs'], branching = decay["branching"])
    #db_dec.printdecay()
    #db_dec.save()
    try:
        db_dec.save()
    except:
        print "Failed to save decay!"
        db_dec.printdecay()
        return
Example #3
0
            work_copy = deepcopy(decay)
            #work_copy['history'] = "{} --> {}".format(
            #    parent, ' '.join(decay['products']))

            get_fstates(work_copy)

        end = datetime.now()

        print "{}\t{}".format(parent, end-start)


if __name__ == "__main__":
    from fstate import get_fstates
    #from fstate import get_fstates
    connect(db_name)
    Decay.objects().delete()
    #fstates.drop()
    #fstates.create_index("fstate")
    #fstates.create_index("scheme", unique=True)


    #do_work(test_set['decays'].keys())
    
    print "DB build started on {}.".format(datetime.now())
    
    start = datetime.now()
    
    workers  = cpu_count()
    p = Pool(processes=workers)
    p.map(do_work, get_jobs(workers))