Source code for coolest.template.classes.likelihood_list

__author__ = 'aymgal'

from copy import deepcopy
from typing import Tuple

from coolest.template.classes.likelihood import Likelihood, SUPPORTED_CHOICES
from coolest.template.classes.base import APIBaseObject

[docs] class DataLikelihoodList(list, APIBaseObject): """ A list all likelihood terms used during lens model parameters optimization. Only applicable in the 'MAP' mode. """ def __init__(self, *likelihoods: Tuple[Likelihood]) -> None: # check that there is no duplicate likelihood type unique_choices = deepcopy(SUPPORTED_CHOICES) for ll in likelihoods: if ll.type in unique_choices: unique_choices.remove(ll.type) else: raise ValueError(f"There cannot be more than one likelihood type '{ll.type}'.") list.__init__(self, likelihoods) APIBaseObject.__init__(self)
[docs] def index(self, likelihood_type): """Override the parent class to look for a likelihood from its string type. Parameters ---------- likelihood_type : string Type of likelihood """ found = False for i, ll in enumerate(self): if ll.type == likelihood_type: return i raise ValueError(f"Likelihood '{likelihood_type}' is not in the likelihood list.")
[docs] def check_consistency_with_observation(self, observation): for ll in self: ll.check_consistency_with_observation(observation)