Rev Language Reference


dnMultiSpeciesCoalescent - Multispecies coalescent distribution

Multispecies coalescent distribution describing how gene trees can be generated from within a species tree given a constant effective population size. Requires an ultrametric species tree, effective population size(s) (a single real positive or a vector of real positives), and taxa with species and individual names.

Usage

dnMultiSpeciesCoalescent(TimeTree speciesTree, RealPos Ne, Taxon[] taxa)

Arguments

speciesTree : TimeTree (pass by const reference)
The species tree in which the gene trees evolve.
Ne : RealPos (pass by const reference)
The effective population size(s).
taxa : Taxon[] (pass by value)
The vector of taxa which have species and individual names.

Domain Type

Details

The species tree must be ultrametric. Effective population sizes can be constant across the species tree, if a single real positive is provided, or branchwise, if a vector is provided.

Example

# We are going to save the trees we simulate in the folder simulatedTrees:
dataFolder = "simulatedTrees/"

# Let's simulate a species tree with 10 taxa, 2 gene trees, 3 alleles per species:
n_species <- 10
n_genes <- 2
n_alleles <- 3

# We simulate an ultrametric species tree.
# Species names:
for (i in 1:n_species) {
    species[i] <- taxon(taxonName="Species_"+i, speciesName="Species_"+i)
}
spTree ~ dnBirthDeath(lambda=0.3, mu=0.2, rootAge=10, rho=1, samplingStrategy="uniform", condition="nTaxa", taxa=species)
print(spTree)

# Let's pick a constant effective population size of 50:
popSize <- 50

# Let's simulate gene trees now.
# Taxon names:
for (g in 1:n_genes) {
    for (i in 1:n_species) {
        for (j in 1:n_alleles) {
            taxa[g][(i-1)*n_alleles+j] <- taxon(taxonName="Species_"+i+"_"+j, speciesName="Species_"+i)
        }
    }
    geneTrees[g] ~ dnMultiSpeciesCoalescent(speciesTree=spTree, Ne=popSize, taxa=taxa[g])
    print(geneTrees[g])
}

# We can save the species tree:
write(spTree, filename=dataFolder+"speciesTree")

# Saving the gene trees:
for (i in 1:(n_genes)) {
    write(geneTrees[i], filename=dataFolder+"geneTree_"+i+".tree")
}

See Also