Core Likelihood

Low-level likelihood calculation for expert users.

Likelihood Calculator

LikelihoodCalculator

class crabml.core.likelihood.LikelihoodCalculator(alignment, tree)[source]

Compute phylogenetic likelihood using Felsenstein’s pruning algorithm.

Attributes

alignmentAlignment

Multiple sequence alignment

treeTree

Phylogenetic tree

n_statesint

Number of states (61 for codons, 20 for amino acids, 4 for nucleotides)

n_sitesint

Number of sites in alignment

__init__(alignment, tree)[source]

Initialize likelihood calculator.

Parameters
alignmentAlignment

Multiple sequence alignment

treeTree

Phylogenetic tree

compute_log_likelihood(Q, pi, scale_branch_lengths=1.0)[source]

Compute log-likelihood for given substitution model.

Return type:

float

Parameters
Qnp.ndarray

Rate matrix (n_states x n_states)

pinp.ndarray

Equilibrium frequencies (n_states,)

scale_branch_lengthsfloat, optional

Global scaling factor for branch lengths (default 1.0)

Returns
float

Log-likelihood value

compute_log_likelihood_site_classes(Q_matrices, pi, proportions, scale_branch_lengths=1.0, use_scaling=False)[source]

Compute log-likelihood for site class model.

For models with site classes (M1a, M2a, M3), the likelihood is a mixture over site classes: P(data) = sum_k p_k * P(data | Q_k)

Return type:

float

Parameters
Q_matriceslist[np.ndarray]

List of rate matrices, one per site class

pinp.ndarray

Equilibrium frequencies (n_states,)

proportionslist[float]

Proportion of sites in each class

scale_branch_lengthsfloat, optional

Global scaling factor for branch lengths (default 1.0)

use_scalingbool, optional

Use PAML-style scaling to prevent underflow (default False)

Returns
float

Log-likelihood value