Source code for hierarc.Likelihood.lens_sample_likelihood
import copy
from hierarc.Likelihood.hierarchy_likelihood import LensLikelihood
from hierarc.Likelihood.LensLikelihood.double_source_plane import DSPLikelihood
[docs]
class LensSampleLikelihood(object):
"""Class to evaluate the likelihood of a cosmology given a sample of angular
diameter posteriors Currently this class does not include possible covariances
between the lens samples."""
def __init__(self, kwargs_lens_list, normalized=False):
"""
:param kwargs_lens_list: keyword argument list specifying the arguments of the LensLikelihood class
:param normalized: bool, if True, returns the normalized likelihood, if False, separates the constant prefactor
(in case of a Gaussian 1/(sigma sqrt(2 pi)) ) to compute the reduced chi2 statistics
"""
self._lens_list = []
for kwargs_lens in kwargs_lens_list:
if kwargs_lens["likelihood_type"] == "DSPL":
_kwargs_lens = copy.deepcopy(kwargs_lens)
_kwargs_lens.pop("likelihood_type")
self._lens_list.append(
DSPLikelihood(normalized=normalized, **_kwargs_lens)
)
else:
self._lens_list.append(
LensLikelihood(normalized=normalized, **kwargs_lens)
)
[docs]
def log_likelihood(
self, cosmo, kwargs_lens=None, kwargs_kin=None, kwargs_source=None
):
"""
:param cosmo: astropy.cosmology instance
:param kwargs_lens: keywords of the parameters of the lens model
:param kwargs_kin: keyword arguments of the kinematic model
:param kwargs_source: keyword argument of the source model (such as SNe)
:return: log likelihood of the combined lenses
"""
log_likelihood = 0
for lens in self._lens_list:
log_likelihood += lens.lens_log_likelihood(
cosmo=cosmo,
kwargs_lens=kwargs_lens,
kwargs_kin=kwargs_kin,
kwargs_source=kwargs_source,
)
return log_likelihood
[docs]
def num_data(self):
"""Number of data points across the lens sample.
:return: integer
"""
num = 0
for lens in self._lens_list:
num += lens.num_data()
return num