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)
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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")
Beispiel #6
0
#! /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())
Beispiel #7
0
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')
Beispiel #8
0
#! /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'))
Beispiel #9
0
#! /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())
Beispiel #10
0
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')
Beispiel #11
0
def kingman(taxon_count, pop_size):
    return treesim.pure_kingman_tree(
        taxon_namespace=taxon_namespace_of_count(taxon_count),
        pop_size=pop_size)