def simulate_pangenome(ngenes, nisolates, effective_pop_size, gain_rate, loss_rate, mutation_rate, max_core): # simulate a phylogeny using the coalscent sim_tree = treesim.pure_kingman_tree(taxon_namespace=TaxonNamespace( [str(i) for i in range(1, 1 + nisolates)]), pop_size=effective_pop_size) basic_tree = copy.deepcopy(sim_tree) # simulate gene p/a and mutation sim_tree = simulate_img_with_mutation(sim_tree, gain_rate=gain_rate, loss_rate=loss_rate, mutation_rate=mutation_rate, ngenes=ngenes, max_ncore=max_core) # get genes and mutations for each isolate gene_mutations = [] for leaf in sim_tree.leaf_node_iter(): gene_mutations.append([[g, leaf.gene_mutations[g]] for g in leaf.acc_genes]) return (gene_mutations, basic_tree)
def pure_kingman(*args, **kwargs): deprecate.dendropy_deprecation_warning( preamble="Deprecated since DendroPy 4: The 'dendropy.treesim.pure_kingman()' function has moved to 'dendropy.simulate.treesim.pure_kingman_tree()'.", old_construct="from dendropy import treesim\ntree = treesim.pure_kingman(...)", new_construct="from dendropy.simulate import treesim\ntree = treesim.pure_kingman_tree(...)", ) return treesim.pure_kingman_tree(*args, **kwargs)
def unrooted_pure_kingman_tree(num_taxa, taxon_namespace=None, pop_size=1, rng=None): if taxon_namespace == None: taxon_namespace = default_namespace(num_taxa) tree = pure_kingman_tree(taxon_namespace, pop_size=pop_size, rng=rng) tree.is_rooted = False return tree
def pure_kingman(*args, **kwargs): deprecate.dendropy_deprecation_warning( preamble= "Deprecated since DendroPy 4: The 'dendropy.treesim.pure_kingman()' function has moved to 'dendropy.simulate.treesim.pure_kingman_tree()'.", old_construct= "from dendropy import treesim\ntree = treesim.pure_kingman(...)", new_construct= "from dendropy.simulate import treesim\ntree = treesim.pure_kingman_tree(...)" ) return treesim.pure_kingman_tree(*args, **kwargs)
def main(): """ Main CLI handler. """ parser = argparse.ArgumentParser(description=__description__) parser.add_argument("--version", action="version", version="%(prog)s " + __version__) parser.add_argument("output_prefix") parser.add_argument("-k", "--num-tips", action="store", type=int, default=10, metavar="NUM-TIPS", help="Number of samples (default=%(default)s)") parser.add_argument("-N", "--pop-size", "--population-size", action="store", type=float, default=1.0, metavar="POP-SIZE", help="Population size (default=%(default)s)") parser.add_argument("--num-reps", action="store", type=int, default=10, metavar="NUM-REPS", help="Number of replicates (default=%(default)s)") parser.add_argument("-z", "--random-seed", type=int, default=None, help="Random seed.") args = parser.parse_args() if args.random_seed is None: args.random_seed = random.randint(0, sys.maxsize) rng = random.Random(args.random_seed) tns = dendropy.TaxonNamespace( ["G{:03d}".format(i + 1) for i in range(args.num_tips)]) trees = dendropy.TreeList(taxon_namespace=tns) if args.output_prefix == "-": coal_out = sys.stdout else: coal_out = open("{}.coal.trees".format(args.output_prefix), "w") for rep_id in range(args.num_reps): tree = treesim.pure_kingman_tree(taxon_namespace=tns, pop_size=args.pop_size, rng=rng) tree.write(file=coal_out, schema="newick")
#! /usr/bin/env python # -*- coding: utf-8 -*- import dendropy from dendropy.simulate import treesim taxa = dendropy.TaxonNamespace( ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"]) tree = treesim.pure_kingman_tree(taxon_namespace=taxa, pop_size=10000) print(tree.as_string(schema="newick")) print(tree.as_ascii_plot())
def pure_kingman_tree(num_leaves, pop_size): from dendropy.simulate import treesim from dendropy import TaxonNamespace import random as rng return treesim.pure_kingman_tree(TaxonNamespace([str(i) for i in range(num_leaves)]), pop_size=pop_size, rng=rng).as_string(schema='newick')
#! /usr/bin/env python3 import argparse from dendropy import TaxonNamespace from dendropy.simulate import treesim if __name__ == "__main__": parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('-p', '--population', required=True, type=int, help="Population Size") parser.add_argument('-n', '--num_leaves', required=True, type=int, help="Number of Leaves") args = parser.parse_args() assert args.num_leaves > 1, "Must have at least 2 leaves" print( treesim.pure_kingman_tree( TaxonNamespace([str(i) for i in range(args.num_leaves)]), pop_size=args.population).as_string(schema='newick'))
#! /usr/bin/env python import dendropy from dendropy.simulate import treesim taxa = dendropy.TaxonNamespace(["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"]) tree = treesim.pure_kingman_tree( taxon_namespace=taxa, pop_size=10000) print(tree.as_string(schema="newick")) print(tree.as_ascii_plot())
from dendropy import TreeList, TaxonNamespace from dendropy.simulate import treesim import os parser = ArgumentParser('Generate trees of a given size with different algos') parser.add_argument('-n', type=int, help='Tree size', default=100) parser.add_argument('-d', type=str, help='Output directory') args = parser.parse_args() if not os.path.isdir(args.d): os.mkdir(args.d) os.chdir(args.d) bd2 = TreeList([ treesim.birth_death_tree(birth_rate=1.0, death_rate=0.5, num_extant_tips=args.n, repeat_until_success=True) for _ in range(100) ]) bd2.write_to_path('birth_death2.nwk', schema='newick') bd5 = TreeList([ treesim.birth_death_tree(birth_rate=1.0, death_rate=0.2, num_extant_tips=args.n, repeat_until_success=True) for _ in range(100) ]) bd5.write_to_path('birth_death5.nwk', schema='newick') taxa = TaxonNamespace(['T{}'.format(x) for x in range(1, args.n + 1)]) king = TreeList( [treesim.pure_kingman_tree(taxon_namespace=taxa) for _ in range(100)]) king.write_to_path('kingman.nwk', schema='newick')
def kingman(taxon_count, pop_size): return treesim.pure_kingman_tree( taxon_namespace=taxon_namespace_of_count(taxon_count), pop_size=pop_size)