size=[popsize]*npops, loci=[nloci], lociPos=locus_position, infoFields=['ind_id','fitness','migrate_to']) pop.evolve( initOps=[ sim.InitSex(), sim.IdTagger(), ]+init_geno, preOps=[ sim.Migrator( rate=migr2DSteppingStoneRates( migr, m=width, n=width, diagonal=False, circular=False), mode=sim.BY_PROBABILITY), sim.AcgtMutator(rate=[mut_rate], model='JC69'), sim.PyMlSelector(GammaDistributedFitness(alpha, beta), output='>>'+selloci_file), ], matingScheme=sim.RandomMating( ops=[ sim.IdTagger(), sim.Recombinator(intensity=recomb_rate, output=outfile, infoFields="ind_id"), ] ), postOps=[ sim.Stat(numOfSegSites=sim.ALL_AVAIL, step=50), sim.PyEval(r"'Gen: %2d #seg sites: %d\n' % (gen, numOfSegSites)", step=50) ], gen = generations
# (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # # This script is an example in the simuPOP user's guide. Please refer to # the user's guide (http://simupop.sourceforge.net/manual) for a detailed # description of this example. # import simuPOP as sim pop = sim.Population(size=[2000], loci=1, alleleNames=['A', 'C', 'G', 'T']) pop.evolve( initOps=[sim.InitSex(), sim.InitGenotype(freq=[.1, .1, .1, .7])], matingScheme=sim.RandomMating(), preOps=[ sim.AcgtMutator(rate=[1e-4, 0.5], model='K80'), sim.Stat(alleleFreq=0, step=100), sim.PyEval( r"', '.join(['%.3f' % alleleFreq[0][x] for x in range(4)]) + '\n'", step=100), ], gen=500)
import simuOpt simuOpt.setOptions(alleleType='lineage', quiet=True) import simuPOP as sim pop = sim.Population(size=10000, loci=[10] * 10, infoFields='ind_id') # just to make sure IDs starts from 1 sim.IdTagger().reset(1) pop.evolve( initOps=[ sim.InitSex(), sim.InitGenotype(freq=[0.2, 0.3, 0.4, 0.1]), sim.IdTagger(), sim.InitLineage(mode=sim.FROM_INFO), ], # an extremely high mutation rate, just for demonstration preOps=sim.AcgtMutator(rate=0.01, model='JC69'), matingScheme=sim.RandomMating(ops=[ sim.IdTagger(), sim.MendelianGenoTransmitter(), ]), gen=10) lin = pop.lineage() # Number of alleles from each generation for gen in range(10): id_start = gen * 10000 + 1 id_end = (gen + 1) * 10000 num_mut = len([x for x in lin if x >= id_start and x <= id_end]) print('Gen %d: %5.2f %%' % (gen, num_mut / (2 * 10000 * 100.) * 100))
barrier=True) pop.evolve( initOps=[ sim.InitSex(), ] + init_geno, preOps=[ sim.PyOperator(lambda pop: rc.increment_time() or True), sim.Migrator(rate=migr_init, mode=sim.BY_PROBABILITY, begin=0, end=args.switch_time), sim.Migrator(rate=migr_change, mode=sim.BY_PROBABILITY, begin=args.switch_time), sim.AcgtMutator(rate=[args.sel_mut_rate], model='JC69'), sim.PyMlSelector(GammaDistributedFitness(args.gamma_alpha, args.gamma_beta), output=">>" + selloci_file), ], matingScheme=sim.RandomMating(ops=[ id_tagger, sim.Recombinator(intensity=args.recomb_rate, output=rc.collect_recombs, infoFields="ind_id"), ]), postOps=[ sim.Stat(numOfSegSites=sim.ALL_AVAIL, step=50), sim.PyEval(r"'Gen: %2d #seg sites: %d\n' % (gen, numOfSegSites)", step=50), sim.PyOperator(lambda pop: rc.simplify(pop.indInfo("ind_id")) or True,
if loc in self.coefMap: s = self.coefMap[loc] else: s = random.gammavariate(self.alpha, self.beta) self.coefMap[loc] = s # print(str(loc)+":"+str(alleles)+"\n") # needn't return fitness for alleles=(0,0) as simupop knows that's 1 if 0 in alleles: return 1. - s else: return 1. - 2. * s simu.evolve(initOps=[sim.InitSex(), meioser] + init_geno, preOps=[ sim.AcgtMutator(rate=[0.0001], model='JC69'), sim.PyMlSelector(GammaDistributedFitness(alpha, beta), output='>>sel_loci.txt'), sim.PyOperator(func=step_gen, param=(1, )), ], matingScheme=reproduction, postOps=[ sim.Stat(numOfSegSites=sim.ALL_AVAIL, step=50), sim.PyEval( r"'Gen: %2d #seg sites: %d\n' % (gen, numOfSegSites)", step=50) ], gen=generations) pop = simu.population(0)