Source code for enkie.estimators.fixed_kinetics_estimator

"""Mock estimator of kinetic parameters."""

from typing import List, Tuple

import numpy as np

from ..enzyme import Enzyme
from ..miriam_metabolite import MiriamMetabolite
from ..miriam_reaction import MiriamReaction
from .kinetics_estimator_interface import (
    KineticParameterType,
    KineticsEstimatorInterface,
)


[docs]class FixedKineticsEstimator(KineticsEstimatorInterface): """Mock estimator of kinetic parameters that returns predefined values. Parameters ---------- ln_km_mean : float, optional Default value for KM parameters. ln_km_std : float, optional Default uncertainty for KM parameters. ln_kcat_fw_mean : float, optional Default value for forward kcat parameters. ln_kcat_fw_std : float, optional Default uncertainty for forward kcat parameters. ln_kcat_bw_mean : float, optional Default value for backward kcat parameters. ln_kcat_bw_std : float, optional Default uncertainty for backward kcat parameters. """ def __init__( self, ln_km_mean: float = np.log(1e-4), ln_km_std: float = 5, ln_kcat_fw_mean: float = np.log(1), ln_kcat_fw_std: float = 5, ln_kcat_bw_mean: float = np.log(1), ln_kcat_bw_std: float = 5, ): self._ln_km_mean = ln_km_mean self._ln_km_std = ln_km_std self._ln_kcat_fw_mean = ln_kcat_fw_mean self._ln_kcat_fw_std = ln_kcat_fw_std self._ln_kcat_bw_mean = ln_kcat_bw_mean self._ln_kcat_bw_std = ln_kcat_bw_std
[docs] def get_parameters( self, reactions: List[MiriamReaction], enzymes: List[Enzyme], parameter_types: List[KineticParameterType], substrates: List[MiriamMetabolite], ) -> Tuple[np.ndarray, np.ndarray]: """Return default kinetic parameters for teh given reaction-enzyme pairs. Parameters ---------- reactions : List[MiriamReaction] The reactions to predict parameters for. enzymes : List[Enzyme] The enzymes associated with the reactions. parameter_types : List[KineticParameterType] The type of the parameters to predict. substrates : List[MiriamMetabolite] For KM parameters, the metabolite to predict the KM for. This is ignored for kcat. Returns ------- Tuple[np.ndarray, np.ndarray] The vector of mean parameter ln-values and the covariance of the uncertainty of the estimated parameter ln-values. """ means = [] stds = [] # Build the query data frame. for p in parameter_types: if p == KineticParameterType.K_CAT_FORWARD: means.append(self._ln_kcat_fw_mean) stds.append(self._ln_kcat_fw_std) elif p == KineticParameterType.K_CAT_BACKWARD: means.append(self._ln_kcat_bw_mean) stds.append(self._ln_kcat_bw_std) elif p == KineticParameterType.K_M: means.append(self._ln_km_mean) stds.append(self._ln_km_std) else: raise ValueError(f"Unsupported parameter type: {p}") ln_mean = np.array(means) ln_cov = np.array(stds) ** 2 * np.eye(len(ln_mean)) return ln_mean, ln_cov