Specifying a non-stationary model with time-heterogeneous parameters#
A model is considered time-heterogeneous if rate matrix terms differ between edges on a tree.
In this example, we load and display our sample primate tree, highlighting the edges that will be assigned different rate matrices.
from cogent3 import load_tree
from cogent3 import get_app
tree = load_tree("data/primate_brca1.tree")
fig = tree.get_figure(contemporaneous=True)
fig.style_edges(
"Human", tip2="Orangutan", outgroup="Galago", line=dict(color="red")
)
fig.show(width=500, height=500)
Specify a distinct rate matrix for the great apes#
As illustrated above, this is done by specifying the names of two “ingroup” tips (their last common ancestor is the ancestor of all edges of interest) and an “outgroup” tip. We can define the clade by Orangutan and one of Human, Chimpanzee or Gorilla. Any tip not a member of the clade outside suffices as an outgroup.
To construct a model
with this information, we create a dictionary that we assign to the time_het
argument as follows.
time_het = get_app("model",
"GN",
tree=tree,
time_het=[dict(tip_names=["Human", "Orangutan"], outgroup_name="Galago")],
)
The outcome of this setting to model
is that the black edges will share one rate matrix, the red edges another. We fit the model to the data.
loader = get_app("load_aligned", format="fasta")
aln = loader("data/primate_brca1.fasta")
result = time_het(aln)
Examining the fitted likelihood function, the rate parameters differ between the edge sets.
result.lf
GN
log-likelihood = -6982.3001
number of free parameters = 33
edge | parent | length | A>C | A>G | A>T | C>A | C>G | C>T |
---|---|---|---|---|---|---|---|---|
Galago | root | 0.1729 | 1.0063 | 3.7830 | 1.0384 | 1.7246 | 2.3246 | 6.3347 |
HowlerMon | root | 0.0450 | 1.0063 | 3.7830 | 1.0384 | 1.7246 | 2.3246 | 6.3347 |
Rhesus | edge.3 | 0.0214 | 1.0063 | 3.7830 | 1.0384 | 1.7246 | 2.3246 | 6.3347 |
Orangutan | edge.2 | 0.0077 | 0.2103 | 3.5009 | 0.2093 | 0.9013 | 1.3534 | 4.9566 |
Gorilla | edge.1 | 0.0025 | 0.2103 | 3.5009 | 0.2093 | 0.9013 | 1.3534 | 4.9566 |
Human | edge.0 | 0.0061 | 0.2103 | 3.5009 | 0.2093 | 0.9013 | 1.3534 | 4.9566 |
Chimpanzee | edge.0 | 0.0028 | 0.2103 | 3.5009 | 0.2093 | 0.9013 | 1.3534 | 4.9566 |
edge.0 | edge.1 | 0.0000 | 0.2103 | 3.5009 | 0.2093 | 0.9013 | 1.3534 | 4.9566 |
edge.1 | edge.2 | 0.0034 | 0.2103 | 3.5009 | 0.2093 | 0.9013 | 1.3534 | 4.9566 |
edge.2 | edge.3 | 0.0121 | 1.0063 | 3.7830 | 1.0384 | 1.7246 | 2.3246 | 6.3347 |
edge.3 | root | 0.0076 | 1.0063 | 3.7830 | 1.0384 | 1.7246 | 2.3246 | 6.3347 |
G>A | G>C | G>T | T>A | T>C |
---|---|---|---|---|
9.0176 | 1.2470 | 0.7649 | 1.4581 | 3.5749 |
9.0176 | 1.2470 | 0.7649 | 1.4581 | 3.5749 |
9.0176 | 1.2470 | 0.7649 | 1.4581 | 3.5749 |
4.6227 | 1.1149 | 0.0000 | 0.3394 | 2.9912 |
4.6227 | 1.1149 | 0.0000 | 0.3394 | 2.9912 |
4.6227 | 1.1149 | 0.0000 | 0.3394 | 2.9912 |
4.6227 | 1.1149 | 0.0000 | 0.3394 | 2.9912 |
4.6227 | 1.1149 | 0.0000 | 0.3394 | 2.9912 |
4.6227 | 1.1149 | 0.0000 | 0.3394 | 2.9912 |
9.0176 | 1.2470 | 0.7649 | 1.4581 | 3.5749 |
9.0176 | 1.2470 | 0.7649 | 1.4581 | 3.5749 |
A | C | G | T |
---|---|---|---|
0.3757 | 0.1742 | 0.2095 | 0.2406 |