Skip to content

RateModel

piqtree.model.DiscreteGammaModel(rate_categories=None, alpha=None)

Bases: RateModel

PARAMETER DESCRIPTION
rate_categories

The number of rate categories, by default None (uses 4).

TYPE: int | None DEFAULT: None

alpha

The Gamma shape parameter - fixed if not None, by default None

TYPE: float | None DEFAULT: None

References

.. [1] Yang, Ziheng. "Maximum likelihood phylogenetic estimation from DNA sequences with variable rates over sites: approximate methods." Journal of Molecular evolution 39 (1994): 306-314.

Source code in src/piqtree/model/_rate_type.py
def __init__(
    self,
    rate_categories: int | None = None,
    alpha: float | None = None,
) -> None:
    """Discrete Gamma Model.

    Parameters
    ----------
    rate_categories : int | None, optional
        The number of rate categories, by default None (uses 4).
    alpha : float | None, optional
        The Gamma shape parameter - fixed if not None, by default None

    References
    ----------
    .. [1] Yang, Ziheng. "Maximum likelihood phylogenetic estimation from
       DNA sequences with variable rates over sites: approximate methods."
       Journal of Molecular evolution 39 (1994): 306-314.

    """
    self.rate_categories = rate_categories
    self.alpha = alpha

piqtree.model.FreeRateModel(rate_categories=None, weights=None, rates=None)

Bases: RateModel

PARAMETER DESCRIPTION
rate_categories

The number of rate categories, by default None (uses 4).

TYPE: int | None DEFAULT: None

weights

The weights for each rate category, by default None

TYPE: Sequence[float] | None DEFAULT: None

rates

The rates for each rate category, by default None

TYPE: Sequence[float] | None DEFAULT: None

References

.. [1] Yang, Ziheng. "A space-time process model for the evolution of DNA sequences." Genetics 139.2 (1995): 993-1005. .. [2] Soubrier, Julien, et al. "The influence of rate heterogeneity among sites on the time dependence of molecular rates." Molecular biology and evolution 29.11 (2012): 3345-3358.

Source code in src/piqtree/model/_rate_type.py
def __init__(
    self,
    rate_categories: int | None = None,
    weights: Sequence[float] | None = None,
    rates: Sequence[float] | None = None,
) -> None:
    """FreeRate Model.

    Parameters
    ----------
    rate_categories : int | None, optional
        The number of rate categories, by default None (uses 4).
    weights : Sequence[float] | None, optional
        The weights for each rate category, by default None
    rates : Sequence[float] | None, optional
        The rates for each rate category, by default None

    References
    ----------
    .. [1] Yang, Ziheng. "A space-time process model for the evolution of
       DNA sequences." Genetics 139.2 (1995): 993-1005.
    .. [2] Soubrier, Julien, et al. "The influence of rate heterogeneity
       among sites on the time dependence of molecular rates." Molecular
       biology and evolution 29.11 (2012): 3345-3358.

    """
    self.rate_categories = rate_categories

    if (weights is None) ^ (rates is None):
        msg = "Must specify both rates and weights or neither."
        raise ValueError(msg)

    check_rate_categories = (
        rate_categories
        if rate_categories is not None
        else FreeRateModel.default_rate_categories
    )

    if weights is None or rates is None:
        self.weights = None
        self.rates = None
    else:
        if (
            len(weights) != check_rate_categories
            or len(rates) != check_rate_categories
        ):
            msg = f"Expected {check_rate_categories} rates and weights but got {len(weights)} and {len(rates)} respectively."
            raise ValueError(msg)

        self.weights = list(weights)
        self.rates = list(rates)

Usage

For usage, see "Use different kinds of substitution models".