diff --git a/cobaya/likelihoods/base_classes/cmblikes.py b/cobaya/likelihoods/base_classes/cmblikes.py index 978161fc7..1be442855 100644 --- a/cobaya/likelihoods/base_classes/cmblikes.py +++ b/cobaya/likelihoods/base_classes/cmblikes.py @@ -578,8 +578,13 @@ def exact_chi_sq(self, C, Chat, L): (np.trace(M) - self.nmaps - np.linalg.slogdet(M)[1])) def logp(self, **data_params): - cls = self.provider.get_Cl(ell_factor=True) - return self.log_likelihood(cls, **data_params) + Cls = self.provider.get_Cl(ell_factor=True) + for Cl_key, Cl_array in Cls.items(): + if Cl_key != 'ell': + if np.any(np.isnan(Cl_array)): + self.log.error("nans in Cls['%s']: returning logzero and carrying on." % Cl_key) + return -np.inf + return self.log_likelihood(Cls, **data_params) # noinspection PyUnboundLocalVariable def log_likelihood(self, dls, **data_params): diff --git a/cobaya/likelihoods/base_classes/planck_2018_CamSpec_python.py b/cobaya/likelihoods/base_classes/planck_2018_CamSpec_python.py index 36fb7c4c6..41ce4bb7a 100644 --- a/cobaya/likelihoods/base_classes/planck_2018_CamSpec_python.py +++ b/cobaya/likelihoods/base_classes/planck_2018_CamSpec_python.py @@ -270,6 +270,11 @@ def chi_squared(self, CT, CTE, CEE, data_params): def logp(self, **data_params): Cls = self.provider.get_Cl(ell_factor=True) + for Cl_key, Cl_array in Cls.items(): + if Cl_key != 'ell': + if np.any(np.isnan(Cl_array)): + self.log.error("nans in Cls['%s']: returning logzero and carrying on." % Cl_key) + return -np.inf return -0.5 * self.chi_squared(Cls.get('tt'), Cls.get('te'), Cls.get('ee'), data_params) diff --git a/cobaya/likelihoods/base_classes/planck_clik.py b/cobaya/likelihoods/base_classes/planck_clik.py index cc28565c6..3d4795003 100644 --- a/cobaya/likelihoods/base_classes/planck_clik.py +++ b/cobaya/likelihoods/base_classes/planck_clik.py @@ -115,8 +115,13 @@ def get_requirements(self): def logp(self, **params_values): # get Cl's from the theory code - cl = self.provider.get_Cl(units="FIRASmuK2") - return self.log_likelihood(cl, **params_values) + Cls = self.provider.get_Cl(units="FIRASmuK2") + for Cl_key, Cl_array in Cls.items(): + if Cl_key != 'ell': + if np.any(np.isnan(Cl_array)): + self.log.error("nans in Cls['%s']: returning logzero and carrying on." % Cl_key) + return -np.inf + return self.log_likelihood(Cls, **params_values) def log_likelihood(self, cl, **params_values): # fill with Cl's diff --git a/cobaya/likelihoods/base_classes/planck_pliklite.py b/cobaya/likelihoods/base_classes/planck_pliklite.py index 7e8ace449..44f307e3a 100644 --- a/cobaya/likelihoods/base_classes/planck_pliklite.py +++ b/cobaya/likelihoods/base_classes/planck_pliklite.py @@ -157,5 +157,10 @@ def chi_squared(self, c_l_arr, calPlanck=1): def logp(self, **data_params): Cls = self.provider.get_Cl(ell_factor=True) + for Cl_key, Cl_array in Cls.items(): + if Cl_key != 'ell': + if np.any(np.isnan(Cl_array)): + self.log.error("nans in Cls['%s']: returning logzero and carrying on." % Cl_key) + return -np.inf return -0.5 * self.get_chi_squared(0, Cls.get('tt'), Cls.get('te'), Cls.get('ee'), data_params[self.calibration_param])