コード例 #1
0
ファイル: avida_presets.py プロジェクト: bh0085/projects
def differential_mut(name, 
                     gen_name = None, 
                     geo_name = 'star',
                     mut = mu0,
                     delta = deltamu, 
                     dim = 20,
                     **kwargs):
    #CONFIG PARAMETERS
    mut_rate_source = 2
    params_dict = {'MUT_RATE_SOURCE':mut_rate_source,
                   'DIVIDE_INS_PROB':0.0,
                   'DIVIDE_DEL_PROB':0.0,
                   'COPY_MUT_PROB':0.00}

    #deal with filenames in KWARGS
    env = kwargs
    configure_paths(params_dict, env)
    globals().update(env)

    #make GEOMETRY
    geometry = make_geometry(params_dict,
                             name = geo_name, 
                             dim = dim)
    ntot =geometry['n']
    nofs = ntot/2
    globals().update(geometry)

    #STERILIZE 
    ca.alter_eve(eve_fname, 'i KillRectangle 0 0 '+str(x)\
                     + ' ' + str(y))    
    #BUILD LINEAGES AND INJECT
    linfun = diffmut_lin;
    linints= [0,nofs,ntot-1]
    make_lineage_squares(linints, linfun, mut, delta)
    
    #get a default set of resources, tasks, rxns and corresponding  params
    make_resources_and_tasks(params_dict,
                             n = ntot)


    #EXIT
    ca.alter_eve(eve_fname, 'g ' + str(default_gens) + ' Exit')

    #NOW THAT ALL OF THE PARAMETERS HAVE BEEN SET
    #MAKE THE GENESIS FILES AND GENOMES
    genesis = ca.make_gen(name,\
                          params_dict,
                          gen_name)
    make_genomes(genesis)
    out = {'geometry': geometry}
    return out
コード例 #2
0
ファイル: avida_presets.py プロジェクト: bh0085/projects
def differential_mut(name,
                     gen_name=None,
                     geo_name='star',
                     mut=mu0,
                     delta=deltamu,
                     dim=20,
                     **kwargs):
    #CONFIG PARAMETERS
    mut_rate_source = 2
    params_dict = {
        'MUT_RATE_SOURCE': mut_rate_source,
        'DIVIDE_INS_PROB': 0.0,
        'DIVIDE_DEL_PROB': 0.0,
        'COPY_MUT_PROB': 0.00
    }

    #deal with filenames in KWARGS
    env = kwargs
    configure_paths(params_dict, env)
    globals().update(env)

    #make GEOMETRY
    geometry = make_geometry(params_dict, name=geo_name, dim=dim)
    ntot = geometry['n']
    nofs = ntot / 2
    globals().update(geometry)

    #STERILIZE
    ca.alter_eve(eve_fname, 'i KillRectangle 0 0 '+str(x)\
                     + ' ' + str(y))
    #BUILD LINEAGES AND INJECT
    linfun = diffmut_lin
    linints = [0, nofs, ntot - 1]
    make_lineage_squares(linints, linfun, mut, delta)

    #get a default set of resources, tasks, rxns and corresponding  params
    make_resources_and_tasks(params_dict, n=ntot)

    #EXIT
    ca.alter_eve(eve_fname, 'g ' + str(default_gens) + ' Exit')

    #NOW THAT ALL OF THE PARAMETERS HAVE BEEN SET
    #MAKE THE GENESIS FILES AND GENOMES
    genesis = ca.make_gen(name,\
                          params_dict,
                          gen_name)
    make_genomes(genesis)
    out = {'geometry': geometry}
    return out
コード例 #3
0
ファイル: avida_presets.py プロジェクト: bh0085/projects
def make_lineage_squares(endpts, linfun, mut, delta):
    #convert from pythonic endpoints (zero based, open ended)
    #to avida's endpoint style
    intervals = [(e[0], e[1]) for e in zip(endpts, roll(endpts, -1))][:-1]

    #CALL LINFUN TO SET UP CONDITIONS FOR EACH LINEAGE
    lineage_lines = linfun(intervals, mut, delta)
    for l in lineage_lines:
        ca.alter_eve(eve_fname, l)

    #INJECT EACH LINEAGE
    for i, e in enumerate(intervals):
        ca.alter_eve(eve_fname,
                     'i InjectRange '+org_fname+\
                         ' {0} {1} '.format(*e)+\
                         ' -1 {0}'.format(i))
コード例 #4
0
ファイル: avida_presets.py プロジェクト: bh0085/projects
def make_lineage_squares(endpts, linfun,mut,delta):
    #convert from pythonic endpoints (zero based, open ended)
    #to avida's endpoint style
    intervals = [(e[0], e[1] ) 
                 for e in  zip(endpts, roll(endpts ,-1))][:-1]

    #CALL LINFUN TO SET UP CONDITIONS FOR EACH LINEAGE
    lineage_lines = linfun(intervals, mut,delta)
    for l in lineage_lines: ca.alter_eve(eve_fname, l)

    #INJECT EACH LINEAGE
    for i,e in enumerate(intervals):
        ca.alter_eve(eve_fname,   
                     'i InjectRange '+org_fname+\
                         ' {0} {1} '.format(*e)+\
                         ' -1 {0}'.format(i))
コード例 #5
0
ファイル: run_avida.py プロジェクト: bh0085/projects
def make_cfg(plot_params,
             name=default_name,
             geo='square',
             mut=.002,
             delta=.0005,
             dim=20):

    if not os.path.isdir(name):
        os.mkdir(name)

    import shutil
    flist = os.listdir(name)
    cfg_start = cfg.dataPath('avida_default_cfgfiles')

    for r, d, files in os.walk(cfg_start):
        for f in files:
            if f in flist:
                continue
            shutil.copyfile(os.path.join(r, f), os.path.join(name, f))

    #default_file = open(os.path.join(name,'avida.cfg'))
    outfile = open(os.path.join(name, 'avida.cfg.auto'), 'w')
    outfile.write('#avida.cfg generated by python.')
    #lines = default_file.readlines()

    auto_dir = os.path.join(name, os.path.join('autogen'))
    if not os.path.isdir(auto_dir):
        os.mkdir(auto_dir)
    eve_fname = ca.make_eve(name, default_evename)
    org_fname = ca.make_org(name, default_orgname)
    ana_fname = ca.make_ana(name, default_ananame)
    env_fname = ca.make_env(name, default_envname)
    ins_fname = ca.make_ins(name, default_insname)

    computed = presets.differential_mut(name,
                                        mut=mut,
                                        geo_name=geo,
                                        delta=delta,
                                        dim=dim,
                                        eve_fname=eve_fname,
                                        org_fname=org_fname,
                                        ana_fname=ana_fname,
                                        env_fname=env_fname,
                                        ins_fname=ins_fname,
                                        gen_name=default_genname)
    for pp in plot_params:
        pp['computed'] = computed

    print
    print 'setting print params: '
    print

    for p in plot_params:
        if p['type'] == 'ts':
            colstr = ''
            for col in p.get('command_params', []):
                colstr += col + ' '
            printstr = p['update'] + ' ' + p['command'] + ' ' + p[
                'fname'] + ' ' + colstr
            ca.alter_eve(eve_fname, printstr)
        elif p['type'] == 'grid':
            printstr = p['update'] + ' ' + p['command'] + ' ' + p['fname']
            ca.alter_eve(eve_fname, printstr)

    f = open(eve_fname).read()
    print f
コード例 #6
0
ファイル: avida_presets.py プロジェクト: bh0085/programming
def differential_mut(name, eve_fname, org_fname, ana_fname, env_fname,  ins_fname, gen_name):
    #CONFIG PARAMETERS
    mut_rate_source = 2
    x = default_x
    y = default_y
    params_dict = {'MUT_RATE_SOURCE':2,
                   'WORLD_X':x,
                   'WORLD_Y':y,
                   'WORLD_GEOMETRY':2,
                   'ENVIRONMENT_FILE':env_fname,
                   'ANALYZE_FILE':ana_fname,
                   'EVENT_FILE':eve_fname,
                   'INST_SET':ins_fname,
                   'START_CREATURE':org_fname,
                   'DIVIDE_INS_PROB':0.0,
                   'DIVIDE_DEL_PROB':0.0,
                   'COPY_MUT_PROB':0.00}

    genesis = ca.make_gen(name,\
                          params_dict,\
                          gen_name)
    #Create a genome and a complementing genome
    genome = au.genesis_seqs(genesis)
    seqprime = genome
    repeats = re.search(re.compile('c{3,}'),seqprime).group()
    seqprime =seqprime.replace(repeats,repeats.replace('c','b'))
    org_fname2 = au.save_genome(genesis,  seqprime, org_fname + '.comp')
    n = x * y
    ntot = x*y
    nofs = ntot/2
    #STERILIZE 
    ca.alter_eve(eve_fname, 'i KillRectangle 0 0 '+str(x) + ' ' + str(y))    
    #SET MUTATION PROBS

    highmut_strings = ['i SetMutProb COPY_MUT '+str((mu0 - deltamu)*kmut) + ' 1 '+str(nofs),
                       'i SetMutProb DIVIDE_INS '+str((mu0 - deltamu)*kdiv) + ' 1 '+str(nofs),
                       'i SetMutProb DIVIDE_DEL '+str((mu0 - deltamu)*kdiv) + ' 1 '+str(nofs)]

    lowmut_strings =  ['i SetMutProb COPY_MUT '+str((mu0 + deltamu)*kmut) + ' ' + str(nofs+1) + ' ' +str(ntot),
                       'i SetMutProb DIVIDE_INS '+str((mu0 + deltamu)*kdiv) + ' ' + str(nofs+1) + ' ' +str(ntot),
                       'i SetMutProb DIVIDE_DEL '+str((mu0 + deltamu)*kdiv) + ' ' + str(nofs+1) + ' ' +str(ntot)]

    for s in highmut_strings:
        ca.alter_eve(eve_fname, s)

    for s in lowmut_strings:
        ca.alter_eve(eve_fname, s)

    #INJECT
    ca.alter_eve(eve_fname,   
                 'i InjectRange '+org_fname+' 1 '+str(nofs)+' -1 0')
    ca.alter_eve(eve_fname,   
                 'i InjectRange '+org_fname+' '+str(nofs+1)+ ' ' +str(ntot) +' -1 1')

    #get a default set of resources, tasks, rxns and corresponding  params

    task_names, res_names, resource_ropts = get_resources()
    task_names_b, res_names_b, resource_ropts_b = get_resources(distribution = 'gravity',
                                                                ygrav = default_ygrav,
                                                                outflow = biproduct_outflow,
                                                                inflow = 0, 
                                                                kind = 'byproduct')


    if enable_biproducts:
        if biproduct_last: biproducts=  shift(res_names_b, -1)
        else: biproducts = res_names_b
    else:
        biproducts = None
    rxn_names, rxn_popts, rxn_ropts = get_reactions(res_names,
                                            
        conversion = conversion,
                                                    product_names = biproducts)

    if death_chain_reaction: b_prods = res_names_b
    else:b_prods = res_names

                                   
 
    rslines = au.resource_lines(res_names, resource_ropts)
    rxlines = au.reaction_lines(rxn_names, task_names,rxn_popts,rxn_ropts)


    ca.append_lines(env_fname, rslines)
    
    

    if enable_biproducts:
        rxn_names_b, rxn_popts_b, rxn_ropts_b = get_reactions(res_names_b, 
                                                              lethal = lethal_biproduct,
                                                              min_count = lethal_dose,
                                                              product_names = b_prods,
                                                              conversion = death_chain_mag,
                                                              bonus_type = 'mult',
                                                              values = [0 for i in res_names])
        rslines_b = au.resource_lines(res_names_b, resource_ropts_b)
        rxlines_b = au.reaction_lines(rxn_names_b, task_names_b,rxn_popts_b,rxn_ropts_b)
        ca.append_lines(env_fname, rslines_b)
        ca.append_lines(env_fname, rxlines_b)
    
    ca.append_lines(env_fname, rxlines)

    #EXIT
    ca.alter_eve(eve_fname, 'g ' + str(default_gens) + ' Exit')
コード例 #7
0
ファイル: avida_presets.py プロジェクト: bh0085/programming
def periodic_res(eve_fname, period, res_name, injection):
    ca.alter_eve(eve_fname, period + ' ' + 'SetCellResource ' +'0' + ' ' +res_name+ ' ' + str(injection)) 
コード例 #8
0
ファイル: run_avida.py プロジェクト: bh0085/projects
def make_cfg(plot_params,
             name =default_name,
             geo = 'square',
             mut = .002,
             delta = .0005,
             dim = 20):

    if not os.path.isdir(name):
        os.mkdir(name)

    import shutil
    flist = os.listdir(name)
    cfg_start = cfg.dataPath('avida_default_cfgfiles')

    for r,d,files in os.walk(cfg_start):
        for f in files:
            if f in flist:
                continue
            shutil.copyfile(os.path.join(r,f),
                            os.path.join(name, f))


    #default_file = open(os.path.join(name,'avida.cfg'))
    outfile = open(os.path.join(name,'avida.cfg.auto'),'w')
    outfile.write('#avida.cfg generated by python.')
    #lines = default_file.readlines()
    

    auto_dir =  os.path.join(name,os.path.join('autogen'))
    if not os.path.isdir(auto_dir):
        os.mkdir(auto_dir)
    eve_fname = ca.make_eve(name,default_evename)
    org_fname = ca.make_org(name,default_orgname)
    ana_fname = ca.make_ana(name,default_ananame)
    env_fname = ca.make_env(name,default_envname)
    ins_fname = ca.make_ins(name,default_insname)

    computed = presets.differential_mut(name,
                                        mut = mut,
                                        geo_name = geo, 
                                        delta = delta,
                                        dim = dim,
                                        eve_fname = eve_fname,
                                        org_fname = org_fname,
                                        ana_fname = ana_fname,
                                        env_fname = env_fname,
                                        ins_fname = ins_fname,
                                        gen_name = default_genname)
    for pp in plot_params:
        pp['computed'] = computed

    print
    print 'setting print params: '
    print

    for p in plot_params:
        if p['type'] == 'ts':
            colstr = ''
            for col in p.get('command_params',[]):
                colstr += col + ' '
            printstr = p['update']+' '+p['command'] +' '+p['fname'] + ' '+colstr
            ca.alter_eve(eve_fname, printstr)
        elif p['type'] == 'grid':
            printstr = p['update'] + ' ' + p['command'] + ' ' + p['fname']
            ca.alter_eve(eve_fname, printstr)
    
    f = open(eve_fname).read()
    print f
コード例 #9
0
ファイル: avida_presets.py プロジェクト: bh0085/projects
def periodic_res(eve_fname, period, res_name, injection):
    ca.alter_eve(
        eve_fname, period + ' ' + 'SetCellResource ' + '0' + ' ' + res_name +
        ' ' + str(injection))