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
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
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))
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))
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
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')
def periodic_res(eve_fname, period, res_name, injection): ca.alter_eve(eve_fname, period + ' ' + 'SetCellResource ' +'0' + ' ' +res_name+ ' ' + str(injection))
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
def periodic_res(eve_fname, period, res_name, injection): ca.alter_eve( eve_fname, period + ' ' + 'SetCellResource ' + '0' + ' ' + res_name + ' ' + str(injection))