Seqsim Simple Tree SimulationΒΆ
Section author: Julia Goodrich
This is an example of how to use the birth-death model in cogent to simulate a tree.
>>> from cogent.seqsim.birth_death import BirthDeathModel, ExtinctionError,\
... TooManyTaxaError
Create a model with specific death probabilities per timestep using
BirthProb
and DeathProb
, and TimePerStep
. The desired maximum
number of taxa on the tree can be set using MaxTaxa
.
>>> b = BirthDeathModel(BirthProb=0.2, DeathProb=0.1, TimePerStep=0.03,
... MaxTaxa=20)
To simulate a tree with an exact number of taxa, use the following loop.
The exact
flag raises a TooManyTaxaError
exception if the call produces
the wrong number of taxa (e.g. because too many things died in the same
timestep). An ExtinctionError
is raised if the ancestral node dies off, or
all the nodes die off.
>>> while True:
... try:
... t = b(exact=True)
... except (ExtinctionError, TooManyTaxaError):
... pass
... else:
... break
t now contains a RangeNode
tree object that was returned, and can be used
the same ways any other tree object in cogent is used. For instance, seqsim
can be used to evolve alignments.