Source code for firecrown.models.cluster.recipes.cluster_recipe

"""Module for defining the ClusterRecipe class."""

from abc import ABC, abstractmethod
from typing import Optional

from firecrown.models.cluster.abundance import ClusterAbundance
from firecrown.models.cluster.binning import SaccBin
from firecrown.models.cluster.properties import ClusterProperty
from firecrown.updatable import Updatable, UpdatableCollection


[docs]class ClusterRecipe(Updatable, ABC): """Abstract class defining a cluster recipe. A cluster recipe is a combination of different cluster theoretrical predictions and models that produces a single prediction for an observable. """ def __init__(self, parameter_prefix: Optional[str] = None) -> None: super().__init__(parameter_prefix) self.my_updatables: UpdatableCollection = UpdatableCollection()
[docs] @abstractmethod def evaluate_theory_prediction( self, cluster_theory: ClusterAbundance, this_bin: SaccBin, sky_area: float, average_on: Optional[ClusterProperty] = None, ) -> float: """Evaluate the theory prediction for this cluster recipe."""