Extracting maximum likelihood estimates from a model_result

If you want to get the stats out-of a fitted model, use the evo.tabulate_stats() app.

We first fit a model.

from cogent3.app import io, evo

loader = io.load_aligned(format="fasta", moltype="dna")
aln = loader("data/primate_brca1.fasta")
model = evo.model("GN", tree="data/primate_brca1.tree")
result = model(aln)

Create and apply tabulate_stats app

tabulator = evo.tabulate_stats()
tabulated = tabulator(result)
tabulated
3x tabular_result('global params': Table, 'edge params': Table, 'motif params': Table)

tabulated is a tabular_result instance which, like other result types, has dict like behaviour. It also contains key/value pairs for each model parameter type.

Edge parameters

These are all parameters that differ between edges. Since the current model is time-homogeneous (a single rate matrix), only the table only has entries for the branch scalar (denoted “length”).

tabulated["edge params"]
edge params
edgeparentlength
Galagoroot0.1735
HowlerMonroot0.0450
Rhesusedge.30.0215
Orangutanedge.20.0078
Gorillaedge.10.0025
Humanedge.00.0061
Chimpanzeeedge.00.0028
edge.0edge.10.0000
edge.1edge.20.0033
edge.2edge.30.0121
edge.3root0.0077

11 rows x 3 columns

Note

Unless the model is time-reversible, the lengths in that table are not ENS (Kaehler et al). As we used a non-stationary nucleotide model in this example, the length values are a scalar used to adjust the matrices during optimisation.

Global parameters

In this example, these are the elements of the rate matrix.

tabulated["global params"]
global params
A>CA>GA>TC>AC>GC>TG>AG>CG>TT>A
0.87003.66680.91101.59242.12646.03218.21751.22880.62941.2498
continuation
T>C
3.4134

1 rows x 11 columns

Motif parameters

In the current example, these are estimates of the nucleotide probabilities in the unobserved ancestor.

tabulated["motif params"]
motif params
ACGT
0.37560.17680.20780.2398

1 rows x 4 columns