diff --git a/soliket/CrossCorrelationLikelihood.yaml b/soliket/CrossCorrelationLikelihood.yaml index a350881d..0c431b60 100644 --- a/soliket/CrossCorrelationLikelihood.yaml +++ b/soliket/CrossCorrelationLikelihood.yaml @@ -9,6 +9,8 @@ z_nuisance_mode: null m_nuisance_mode: null ia_mode: null +ncovsims: null + params: b1: prior: diff --git a/soliket/cross_correlation.py b/soliket/cross_correlation.py index bf33730e..8b43f5b4 100644 --- a/soliket/cross_correlation.py +++ b/soliket/cross_correlation.py @@ -21,7 +21,7 @@ def initialize(self): x, y, dy = self._get_data() cov = np.diag(dy**2) - self.data = GaussianData("CrossCorrelation", x, y, cov) + self.data = GaussianData("CrossCorrelation", x, y, cov, self.ncovsims) else: self._get_sacc_data() @@ -53,7 +53,7 @@ def _get_sacc_data(self, **params_values): self.y = self.sacc_data.mean self.cov = self.sacc_data.covariance.covmat - self.data = GaussianData(self.name, self.x, self.y, self.cov) + self.data = GaussianData(self.name, self.x, self.y, self.cov, self.ncovsims) def _construct_ell_bins(self): diff --git a/soliket/tests/test_cross_correlation.py b/soliket/tests/test_cross_correlation.py index a758c2f7..20f2eff4 100644 --- a/soliket/tests/test_cross_correlation.py +++ b/soliket/tests/test_cross_correlation.py @@ -123,6 +123,46 @@ def test_shearkappa_like(request): assert np.isclose(loglikes, 637.64473666) +def test_shearkappa_hartlap(request): + + from soliket.cross_correlation import ShearKappaLikelihood + + rootdir = request.config.rootdir + + cs82_file = "soliket/tests/data/cs82_gs-planck_kappa_binned.sim.sacc.fits" + test_datapath = os.path.join(rootdir, cs82_file) + + info["likelihood"] = { + "ShearKappaLikelihood": {"external": ShearKappaLikelihood, + "datapath": test_datapath} + } + + # Cosmological parameters for the test data, digitized from + # Fig. 3 and Eq. 8 of Hall & Taylor (2014). + # See https://github.com/simonsobs/SOLikeT/pull/58 for validation plots + info['params'] = {"omch2": 0.118, # Planck + lensing + WP + highL + "ombh2": 0.0222, + "H0": 68.0, + "ns": 0.962, + # "As": 2.1e-9, + "As": 2.5e-9, # offset the theory to upweight inv_cov in loglike + "tau": 0.094, + "mnu": 0.0, + "nnu": 3.046, + "s1": 0.4, + "b1": 1.0} + + model = get_model(info) + loglikes, derived = model.loglikes() + + info["likelihood"]["ShearKappaLikelihood"]["ncovsims"] = 5 + + model = get_model(info) + loglikes_hartlap, derived = model.loglikes() + + assert np.isclose(np.abs(loglikes - loglikes_hartlap), 0.00104092) + + def test_shearkappa_deltaz(request): from soliket.cross_correlation import ShearKappaLikelihood