diff --git a/notebooks/dev/cross_correlation_simulatedata.ipynb b/notebooks/dev/cross_correlation_simulatedata.ipynb index 6578d556..08ae3720 100644 --- a/notebooks/dev/cross_correlation_simulatedata.ipynb +++ b/notebooks/dev/cross_correlation_simulatedata.ipynb @@ -478,7 +478,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.8" } }, "nbformat": 4, diff --git a/setup.cfg b/setup.cfg index 0f80d7c1..cd229a6b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,7 +27,7 @@ install_requires = syslibrary [options.package_data] -soliket = *.yaml,*.bibtex,clusters/data/*,clusters/data/selFn_equD56/*,lensing/data/*.txt,lensing/data/*.fits,mflike/*.yaml,tests/*.yaml,data/xcorr_simulated/*.txt,data/CosmoPower/CP_paper/CMB/*.pkl,tests/data/test_bandpass/*,cross_correlation/*.yaml +soliket = *.yaml,*.bibtex,clusters/data/*,clusters/data/selFn_equD56/*,lensing/data/*.txt,lensing/data/*.fits,mflike/*.yaml,tests/*.yaml,data/xcorr_simulated/*.txt,data/CosmoPower/CP_paper/CMB/*.pkl,tests/data/test_bandpass/*,cross_correlation/*.yaml,tests/data/*.fits testpaths = "soliket" text_file_format = rst diff --git a/soliket/__init__.py b/soliket/__init__.py index 69770a4b..c61a35f1 100644 --- a/soliket/__init__.py +++ b/soliket/__init__.py @@ -4,7 +4,7 @@ from .ps import PSLikelihood, BinnedPSLikelihood # noqa: F401 from .mflike import MFLike # noqa: F401 from .mflike import TheoryForge_MFLike -from .cross_correlation import GalaxyKappaLikelihood, ShearKappaLikelihood # noqa: F401, E501 +from .cross_correlation import CrossCorrelationLikelihood, GalaxyKappaLikelihood, ShearKappaLikelihood # noqa: F401, E501 from .xcorr import XcorrLikelihood # noqa: F401 from .foreground import Foreground from .bandpass import BandPass @@ -15,4 +15,4 @@ from .clusters import ClusterLikelihood # noqa: F401 except ImportError: print('Skipping cluster likelihood (is pyCCL installed?)') - pass \ No newline at end of file + pass diff --git a/soliket/cross_correlation/CrossCorrelationLikelihood.yaml b/soliket/cross_correlation/CrossCorrelationLikelihood.yaml index 0c431b60..617b38e3 100644 --- a/soliket/cross_correlation/CrossCorrelationLikelihood.yaml +++ b/soliket/cross_correlation/CrossCorrelationLikelihood.yaml @@ -1,60 +1,3 @@ -auto_file: soliket/data/xcorr_simulated/clgg_noiseless.txt -cross_file: soliket/data/xcorr_simulated/clkg_noiseless.txt -dndz_file: soliket/data/xcorr_simulated/dndz.txt - datapath: soliket/tests/data/des_s-act_kappa.toy-sim.sacc.fits -use_tracers: all - -z_nuisance_mode: null -m_nuisance_mode: null -ia_mode: null - +use_spectra: all ncovsims: null - -params: - b1: - prior: - min: 0. - max: 10. - latex: b_1 - s1: - value: 0.4 - latex: s_1 - A_IA: - value: 0.54 - latex: A_{IA} - gs_des_bin1_A_IA: - value: 0.50 - gs_des_bin2_A_IA: - value: 0.52 - gs_des_bin3_A_IA: - value: 0.54 - gs_des_bin4_A_IA: - value: 0.56 - eta_IA: - value: 1.7 - latex: \eta_{IA} - gs_des_bin1_deltaz: - value: -0.02 - gs_des_bin2_deltaz: - value: -0.02 - gs_des_bin3_deltaz: - value: -0.02 - gs_des_bin4_deltaz: - value: -0.02 - gs_des_bin1_m: - value: -0.04 - gs_des_bin2_m: - value: -0.04 - gs_des_bin3_m: - value: -0.04 - gs_des_bin4_m: - value: -0.04 - gs_des_bin1_sigmam: - value: 0.01 - gs_des_bin2_sigmam: - value: 0.01 - gs_des_bin3_sigmam: - value: 0.01 - gs_des_bin4_sigmam: - value: 0.01 diff --git a/soliket/cross_correlation/GalaxyKappaLikelihood.yaml b/soliket/cross_correlation/GalaxyKappaLikelihood.yaml new file mode 100644 index 00000000..2379167c --- /dev/null +++ b/soliket/cross_correlation/GalaxyKappaLikelihood.yaml @@ -0,0 +1,9 @@ +params: + b1: + prior: + min: 0. + max: 10. + latex: b_1 + s1: + value: 0.4 + latex: s_1 diff --git a/soliket/cross_correlation/ShearKappaLikelihood.yaml b/soliket/cross_correlation/ShearKappaLikelihood.yaml new file mode 100644 index 00000000..56ccdc62 --- /dev/null +++ b/soliket/cross_correlation/ShearKappaLikelihood.yaml @@ -0,0 +1,43 @@ +z_nuisance_mode: null +m_nuisance_mode: null +ia_mode: null + +params: + A_IA: + value: 0.54 + latex: A_{IA} + gs_des_bin1_A_IA: + value: 0.50 + gs_des_bin2_A_IA: + value: 0.52 + gs_des_bin3_A_IA: + value: 0.54 + gs_des_bin4_A_IA: + value: 0.56 + eta_IA: + value: 1.7 + latex: \eta_{IA} + gs_des_bin1_deltaz: + value: -0.02 + gs_des_bin2_deltaz: + value: -0.02 + gs_des_bin3_deltaz: + value: -0.02 + gs_des_bin4_deltaz: + value: -0.02 + gs_des_bin1_m: + value: -0.04 + gs_des_bin2_m: + value: -0.04 + gs_des_bin3_m: + value: -0.04 + gs_des_bin4_m: + value: -0.04 + gs_des_bin1_sigmam: + value: 0.01 + gs_des_bin2_sigmam: + value: 0.01 + gs_des_bin3_sigmam: + value: 0.01 + gs_des_bin4_sigmam: + value: 0.01 diff --git a/soliket/cross_correlation/__init__.py b/soliket/cross_correlation/__init__.py index 5983588e..1bc79b29 100644 --- a/soliket/cross_correlation/__init__.py +++ b/soliket/cross_correlation/__init__.py @@ -1 +1 @@ -from .cross_correlation import CrossCorrelationLikelihood, GalaxyKappaLikelihood, ShearKappaLikelihood # noqa: F401, E501 \ No newline at end of file +from .cross_correlation import CrossCorrelationLikelihood, GalaxyKappaLikelihood, ShearKappaLikelihood # noqa: F401, E501 diff --git a/soliket/cross_correlation/cross_correlation.py b/soliket/cross_correlation/cross_correlation.py index a7586eb2..16cfa567 100644 --- a/soliket/cross_correlation/cross_correlation.py +++ b/soliket/cross_correlation/cross_correlation.py @@ -19,18 +19,36 @@ class CrossCorrelationLikelihood(GaussianLikelihood): """ def initialize(self): - if self.datapath is None: - self.dndz = np.loadtxt(self.dndz_file) - - x, y, dy = self._get_data() - cov = np.diag(dy**2) - self.data = GaussianData("CrossCorrelation", x, y, cov, self.ncovsims) - else: - self._get_sacc_data() + self._get_sacc_data() + self._check_tracers() def get_requirements(self): return {"CCL": {"kmax": 10, "nonlinear": True}} + def _check_tracers(self): + + # check correct tracers + for tracer_comb in self.sacc_data.get_tracer_combinations(): + + if (self.sacc_data.tracers[tracer_comb[0]].quantity == + self.sacc_data.tracers[tracer_comb[1]].quantity): + raise LoggedError(self.log, + 'You have tried to use {0} to calculate an \ + autocorrelation, but it is a cross-correlation \ + likelihood. Please check your tracer selection in the \ + ini file.'.format(self.__class__.__name__)) + + for tracer in tracer_comb: + if self.sacc_data.tracers[tracer].quantity not in self._allowable_tracers: + raise LoggedError(self.log, + 'You have tried to use a {0} tracer in \ + {1}, which only allows {2}. Please check your \ + tracer selection in the ini file.\ + '.format(self.sacc_data.tracers[tracer].quantity, + self.__class__.__name__, + self._allowable_tracers)) + + def _get_nz(self, z, tracer, tracer_name, **params_values): if self.z_nuisance_mode == 'deltaz': @@ -46,11 +64,12 @@ def _get_sacc_data(self, **params_values): self.sacc_data = sacc.Sacc.load_fits(self.datapath) - if self.use_tracers == 'all': + if self.use_spectra == 'all': pass else: - raise LoggedError('Tracer selection not implemented yet!') - # self.sacc_data.keep_selection(tracers=self.use_tracers.split(',')) + for tracer_comb in self.sacc_data.get_tracer_combinations(): + if tracer_comb not in self.use_spectra: + self.sacc_data.remove_selection(tracers=tracer_comb) self.x = self._construct_ell_bins() self.y = self.sacc_data.mean @@ -88,6 +107,16 @@ def _get_data(self, **params_values): return x, y, dy + def get_binning(self, tracer_comb): + + bpw_idx = self.sacc_data.indices(tracers=tracer_comb) + bpw = self.sacc_data.get_bandpower_windows(bpw_idx) + ells_theory = bpw.values + ells_theory = np.asarray(ells_theory, dtype=int) + w_bins = bpw.weight.T + + return ells_theory, w_bins + def logp(self, **params_values): theory = self._get_theory(**params_values) return self.data.loglike(theory) @@ -97,31 +126,51 @@ class GalaxyKappaLikelihood(CrossCorrelationLikelihood): r""" Likelihood for cross-correlations of galaxy and CMB lensing data. """ + _allowable_tracers = ['cmb_convergence', 'galaxy_density'] + def _get_theory(self, **params_values): + cosmo = self.provider.get_CCL()["cosmo"] + tracer_comb = self.sacc_data.get_tracer_combinations() + + for tracer in np.unique(tracer_comb): + + if self.sacc_data.tracers[tracer].quantity == "cmb_convergence": + cmbk_tracer = tracer + elif self.sacc_data.tracers[tracer].quantity == "galaxy_density": + gal_tracer = tracer + + z_gal_tracer = self.sacc_data.tracers[gal_tracer].z + nz_gal_tracer = self.sacc_data.tracers[gal_tracer].nz + + # this should use the bias theory! tracer_g = ccl.NumberCountsTracer(cosmo, has_rsd=False, - dndz=self.dndz.T, - bias=(self.dndz[:, 0], + dndz=(z_gal_tracer, nz_gal_tracer), + bias=(z_gal_tracer, params_values["b1"] * - np.ones(len(self.dndz[:, 0]))), - mag_bias=(self.dndz[:, 0], + np.ones(len(z_gal_tracer))), + mag_bias=(z_gal_tracer, params_values["s1"] * - np.ones(len(self.dndz[:, 0]))) + np.ones(len(z_gal_tracer))) ) tracer_k = ccl.CMBLensingTracer(cosmo, z_source=1060) - cl_gg = ccl.cells.angular_cl(cosmo, tracer_g, tracer_g, self.ell_auto) # + 1e-7 - cl_kg = ccl.cells.angular_cl(cosmo, tracer_k, tracer_g, self.ell_cross) + ells_theory_gk, w_bins_gk = self.get_binning((gal_tracer, cmbk_tracer)) + + cl_gk_unbinned = ccl.cells.angular_cl(cosmo, tracer_k, tracer_g, ells_theory_gk) - return np.concatenate([cl_gg, cl_kg]) + cl_gk_binned = np.dot(w_bins_gk, cl_gk_unbinned) + + return cl_gk_binned class ShearKappaLikelihood(CrossCorrelationLikelihood): r""" Likelihood for cross-correlations of galaxy weak lensing shear and CMB lensing data. """ + _allowable_tracers = ["cmb_convergence", "galaxy_shear"] def _get_theory(self, **params_values): @@ -131,14 +180,6 @@ def _get_theory(self, **params_values): for tracer_comb in self.sacc_data.get_tracer_combinations(): - if (self.sacc_data.tracers[tracer_comb[0]].quantity - == self.sacc_data.tracers[tracer_comb[1]].quantity): - self.log.warning('You requested auto-correlation in '\ - 'ShearKappaLikelihood but it is only implemented for '\ - 'cross-correlations and resulting bias calculations '\ - 'will be incorrect. Please check your tracer '\ - 'combinations in the sacc file.') - if self.sacc_data.tracers[tracer_comb[0]].quantity == "cmb_convergence": tracer1 = ccl.CMBLensingTracer(cosmo, z_source=1060) diff --git a/soliket/data/xcorr_simulated/clgg_noiseless.txt b/soliket/data/xcorr_simulated/clgg_noiseless.txt deleted file mode 100644 index 091c9423..00000000 --- a/soliket/data/xcorr_simulated/clgg_noiseless.txt +++ /dev/null @@ -1,3 +0,0 @@ -3.550000000000000000e+01 7.650000000000000000e+01 1.265000000000000000e+02 1.765000000000000000e+02 2.265000000000000000e+02 2.765000000000000000e+02 3.265000000000000000e+02 3.765000000000000000e+02 4.265000000000000000e+02 4.765000000000000000e+02 5.265000000000000000e+02 5.760000000000000000e+02 -2.171386555992278359e-07 2.074818774537804928e-07 1.760569576742365607e-07 1.556208570083821835e-07 1.434590789832146224e-07 1.347070083607898911e-07 1.277731731363569596e-07 1.224832434049751676e-07 1.186677876068538790e-07 1.159080212760721562e-07 1.137746016890491462e-07 1.120196152233489823e-07 -2.171386555992278359e-08 2.074818774537804994e-08 1.760569576742365674e-08 1.556208570083821835e-08 1.434590789832146224e-08 1.347070083607899044e-08 1.277731731363569629e-08 1.224832434049751775e-08 1.186677876068538790e-08 1.159080212760721661e-08 1.137746016890491529e-08 1.120196152233489823e-08 diff --git a/soliket/data/xcorr_simulated/clkg_noiseless.txt b/soliket/data/xcorr_simulated/clkg_noiseless.txt deleted file mode 100644 index c15dfe54..00000000 --- a/soliket/data/xcorr_simulated/clkg_noiseless.txt +++ /dev/null @@ -1,3 +0,0 @@ -3.550000000000000000e+01 7.650000000000000000e+01 1.265000000000000000e+02 1.765000000000000000e+02 2.265000000000000000e+02 2.765000000000000000e+02 3.265000000000000000e+02 3.765000000000000000e+02 4.265000000000000000e+02 4.765000000000000000e+02 5.265000000000000000e+02 5.760000000000000000e+02 -1.424982171873059867e-07 1.234732647730792034e-07 8.611508401982061149e-08 6.248438515784781822e-08 4.837007692483073317e-08 3.852305256406458136e-08 3.090458671774709724e-08 2.505965588344152354e-08 2.078012214338600926e-08 1.768136302352318810e-08 1.532330752048001726e-08 1.340720288202413845e-08 -1.424982171873059966e-08 1.234732647730792068e-08 8.611508401982062142e-09 6.248438515784782318e-09 4.837007692483073648e-09 3.852305256406458467e-09 3.090458671774709973e-09 2.505965588344152520e-09 2.078012214338600843e-09 1.768136302352318975e-09 1.532330752048001851e-09 1.340720288202413845e-09 diff --git a/soliket/data/xcorr_simulated/dndz.txt b/soliket/data/xcorr_simulated/dndz.txt deleted file mode 100755 index c59e742f..00000000 --- a/soliket/data/xcorr_simulated/dndz.txt +++ /dev/null @@ -1,401 +0,0 @@ -0.000000000000000000e+00 0.000000000000000000e+00 -1.000000000000000021e-02 4.950249168745840913e-05 -2.000000000000000042e-02 1.960397346613510525e-04 -2.999999999999999889e-02 4.367004900968286698e-04 -4.000000000000000083e-02 7.686315513218585889e-04 -5.000000000000000278e-02 1.189036780625892789e-03 -5.999999999999999778e-02 1.695176160451647689e-03 -7.000000000000000666e-02 2.284364858769573781e-03 -8.000000000000000167e-02 2.953972308437234542e-03 -8.999999999999999667e-02 3.701421300348473834e-03 -1.000000000000000056e-01 4.524187090179798351e-03 -1.100000000000000006e-01 5.419796518543995231e-03 -1.199999999999999956e-01 6.385827144363533450e-03 -1.300000000000000044e-01 7.419906391278744198e-03 -1.400000000000000133e-01 8.519710706908299042e-03 -1.499999999999999944e-01 9.682964734781900756e-03 -1.600000000000000033e-01 1.090744049876750561e-02 -1.700000000000000122e-01 1.219095659981774687e-02 -1.799999999999999933e-01 1.353137742486260585e-02 -1.900000000000000022e-01 1.492661236767768920e-02 -2.000000000000000111e-01 1.637461506155963795e-02 -2.099999999999999922e-01 1.787338262364262381e-02 -2.200000000000000011e-01 1.942095491069197738e-02 -2.300000000000000100e-01 2.101541378621318498e-02 -2.399999999999999911e-01 2.265488239871673790e-02 -2.500000000000000000e-01 2.433752447098140245e-02 -2.600000000000000089e-01 2.606154360016054231e-02 -2.700000000000000178e-01 2.782518256857829941e-02 -2.800000000000000266e-01 2.962672266506444219e-02 -2.899999999999999800e-01 3.146448301667866682e-02 -2.999999999999999889e-01 3.333681993067730276e-02 -3.099999999999999978e-01 3.524212624657709764e-02 -3.200000000000000067e-01 3.717883069817298075e-02 -3.300000000000000155e-01 3.914539728536838709e-02 -3.400000000000000244e-01 4.114032465567884350e-02 -3.500000000000000333e-01 4.316214549527120498e-02 -3.599999999999999867e-01 4.520942592940280919e-02 -3.699999999999999956e-01 4.728076493212692716e-02 -3.800000000000000044e-01 4.937479374513208813e-02 -3.900000000000000133e-01 5.149017530558542416e-02 -4.000000000000000222e-01 5.362560368285115842e-02 -4.100000000000000311e-01 5.577980352395765090e-02 -4.199999999999999845e-01 5.795152950768799743e-02 -4.299999999999999933e-01 6.013956580717060713e-02 -4.400000000000000022e-01 6.234272556084808486e-02 -4.500000000000000111e-01 6.455985035170455633e-02 -4.600000000000000200e-01 6.678980969463277351e-02 -4.700000000000000289e-01 6.903150053182431634e-02 -4.799999999999999822e-01 7.128384673606742716e-02 -4.899999999999999911e-01 7.354579862183914518e-02 -5.000000000000000000e-01 7.581633246407917803e-02 -5.100000000000000089e-01 7.809445002453517526e-02 -5.200000000000000178e-01 8.037917808557028254e-02 -5.300000000000000266e-01 8.266956799132499367e-02 -5.400000000000000355e-01 8.496469519612769028e-02 -5.500000000000000444e-01 8.726365882004862018e-02 -5.600000000000000533e-01 8.956558121149418850e-02 -5.700000000000000622e-01 9.186960751673982351e-02 -5.799999999999999600e-01 9.417490525630062281e-02 -5.899999999999999689e-01 9.648066390804095616e-02 -5.999999999999999778e-01 9.878609449692474231e-02 -6.099999999999999867e-01 1.010904291913106851e-01 -6.199999999999999956e-01 1.033929209056964338e-01 -6.300000000000000044e-01 1.056928429098187572e-01 -6.400000000000000133e-01 1.079894884440163461e-01 -6.500000000000000222e-01 1.102821703407646514e-01 -6.600000000000000311e-01 1.125702206522920940e-01 -6.700000000000000400e-01 1.148529902841894657e-01 -6.800000000000000488e-01 1.171298486349243301e-01 -6.900000000000000577e-01 1.194001832411745179e-01 -7.000000000000000666e-01 1.216633994288953413e-01 -7.099999999999999645e-01 1.239189199700362481e-01 -7.199999999999999734e-01 1.261661847448246609e-01 -7.299999999999999822e-01 1.284046504095344154e-01 -7.399999999999999911e-01 1.306337900696591947e-01 -7.500000000000000000e-01 1.328530929584103848e-01 -7.600000000000000089e-01 1.350620641204617889e-01 -7.700000000000000178e-01 1.372602241008635537e-01 -7.800000000000000266e-01 1.394471086390489944e-01 -7.900000000000000355e-01 1.416222683678591554e-01 -8.000000000000000444e-01 1.437852685175109169e-01 -8.100000000000000533e-01 1.459356886244358720e-01 -8.200000000000000622e-01 1.480731222449169771e-01 -8.300000000000000711e-01 1.501971766734529479e-01 -8.399999999999999689e-01 1.523074726657792921e-01 -8.499999999999999778e-01 1.544036441664775050e-01 -8.599999999999999867e-01 1.564853380411035111e-01 -8.699999999999999956e-01 1.585522138127689884e-01 -8.800000000000000044e-01 1.606039434031082958e-01 -8.900000000000000133e-01 1.626402108775664435e-01 -9.000000000000000222e-01 1.646607121949426600e-01 -9.100000000000000311e-01 1.666651549611269933e-01 -9.200000000000000400e-01 1.686532581869663872e-01 -9.300000000000000488e-01 1.706247520501989190e-01 -9.400000000000000577e-01 1.725793776613946395e-01 -9.500000000000000666e-01 1.745168868338436707e-01 -9.599999999999999645e-01 1.764370418573316390e-01 -9.699999999999999734e-01 1.783396152757439623e-01 -9.799999999999999822e-01 1.802243896684420643e-01 -9.899999999999999911e-01 1.820911574353535067e-01 -1.000000000000000000e+00 1.839397205857211670e-01 -1.010000000000000009e+00 1.857698905304554782e-01 -1.020000000000000018e+00 1.875814878780353301e-01 -1.030000000000000027e+00 1.893743422339042304e-01 -1.040000000000000036e+00 1.911482920033083233e-01 -1.050000000000000044e+00 1.929031841975243911e-01 -1.060000000000000053e+00 1.946388742434262686e-01 -1.070000000000000062e+00 1.963552257963386283e-01 -1.080000000000000071e+00 1.980521105561285078e-01 -1.090000000000000080e+00 1.997294080864849553e-01 -1.100000000000000089e+00 2.013870056373381623e-01 -1.110000000000000098e+00 2.030247979703702632e-01 -1.120000000000000107e+00 2.046426871875703934e-01 -1.130000000000000115e+00 2.062405825627874056e-01 -1.140000000000000124e+00 2.078184003762342802e-01 -1.150000000000000133e+00 2.093760637518989332e-01 -1.159999999999999920e+00 2.109135024978168460e-01 -1.169999999999999929e+00 2.124306529491611917e-01 -1.179999999999999938e+00 2.139274578141075467e-01 -1.189999999999999947e+00 2.154038660224298074e-01 -1.199999999999999956e+00 2.168598325767855384e-01 -1.209999999999999964e+00 2.182953184066490637e-01 -1.219999999999999973e+00 2.197102902248513623e-01 -1.229999999999999982e+00 2.211047203866861044e-01 -1.239999999999999991e+00 2.224785867515421123e-01 -1.250000000000000000e+00 2.238318725470234971e-01 -1.260000000000000009e+00 2.251645662355177546e-01 -1.270000000000000018e+00 2.264766613831743769e-01 -1.280000000000000027e+00 2.277681565312566492e-01 -1.290000000000000036e+00 2.290390550698284400e-01 -1.300000000000000044e+00 2.302893651137406517e-01 -1.310000000000000053e+00 2.315190993808805553e-01 -1.320000000000000062e+00 2.327282750726488436e-01 -1.330000000000000071e+00 2.339169137566293188e-01 -1.340000000000000080e+00 2.350850412514167154e-01 -1.350000000000000089e+00 2.362326875135686566e-01 -1.360000000000000098e+00 2.373598865266485225e-01 -1.370000000000000107e+00 2.384666761923254497e-01 -1.380000000000000115e+00 2.395530982235001272e-01 -1.390000000000000124e+00 2.406191980394230823e-01 -1.400000000000000133e+00 2.416650246627743692e-01 -1.409999999999999920e+00 2.426906306186741302e-01 -1.419999999999999929e+00 2.436960718355921374e-01 -1.429999999999999938e+00 2.446814075481268114e-01 -1.439999999999999947e+00 2.456467002016238244e-01 -1.449999999999999956e+00 2.465920153586047825e-01 -1.459999999999999964e+00 2.475174216069769284e-01 -1.469999999999999973e+00 2.484229904699957470e-01 -1.479999999999999982e+00 2.493087963179516919e-01 -1.489999999999999991e+00 2.501749162815539718e-01 -1.500000000000000000e+00 2.510214301669835280e-01 -1.510000000000000009e+00 2.518484203725890880e-01 -1.520000000000000018e+00 2.526559718071984539e-01 -1.530000000000000027e+00 2.534441718100204910e-01 -1.540000000000000036e+00 2.542131100721104486e-01 -1.550000000000000044e+00 2.549628785593751057e-01 -1.560000000000000053e+00 2.556935714370905388e-01 -1.570000000000000062e+00 2.564052849959098657e-01 -1.580000000000000071e+00 2.570981175793355389e-01 -1.590000000000000080e+00 2.577721695126324875e-01 -1.600000000000000089e+00 2.584275430331589574e-01 -1.610000000000000098e+00 2.590643422220910708e-01 -1.620000000000000107e+00 2.596826729375191767e-01 -1.630000000000000115e+00 2.602826427488927341e-01 -1.640000000000000124e+00 2.608643608727914676e-01 -1.650000000000000133e+00 2.614279381100015343e-01 -1.660000000000000142e+00 2.619734867838749426e-01 -1.669999999999999929e+00 2.625011206799504615e-01 -1.679999999999999938e+00 2.630109549868153151e-01 -1.689999999999999947e+00 2.635031062381882894e-01 -1.699999999999999956e+00 2.639776922562015460e-01 -1.709999999999999964e+00 2.644348320958633258e-01 -1.719999999999999973e+00 2.648746459906807238e-01 -1.729999999999999982e+00 2.652972552994236621e-01 -1.739999999999999991e+00 2.657027824540098560e-01 -1.750000000000000000e+00 2.660913509084941175e-01 -1.760000000000000009e+00 2.664630850891406832e-01 -1.770000000000000018e+00 2.668181103455626313e-01 -1.780000000000000027e+00 2.671565529029090169e-01 -1.790000000000000036e+00 2.674785398150825166e-01 -1.800000000000000044e+00 2.677841989189702065e-01 -1.810000000000000053e+00 2.680736587896693779e-01 -1.820000000000000062e+00 2.683470486966932911e-01 -1.830000000000000071e+00 2.686044985611380498e-01 -1.840000000000000080e+00 2.688461389137953295e-01 -1.850000000000000089e+00 2.690721008541952508e-01 -1.860000000000000098e+00 2.692825160105618010e-01 -1.870000000000000107e+00 2.694775165006665363e-01 -1.880000000000000115e+00 2.696572348935651897e-01 -1.890000000000000124e+00 2.698218041722001415e-01 -1.900000000000000133e+00 2.699713576968562623e-01 -1.910000000000000142e+00 2.701060291694533100e-01 -1.919999999999999929e+00 2.702259525986613897e-01 -1.929999999999999938e+00 2.703312622658249897e-01 -1.939999999999999947e+00 2.704220926916813816e-01 -1.949999999999999956e+00 2.704985786038589524e-01 -1.959999999999999964e+00 2.705608549051431999e-01 -1.969999999999999973e+00 2.706090566424955712e-01 -1.979999999999999982e+00 2.706433189768120973e-01 -1.989999999999999991e+00 2.706637771534095016e-01 -2.000000000000000000e+00 2.706705664732254046e-01 -2.010000000000000231e+00 2.706638222647194669e-01 -2.020000000000000018e+00 2.706436798564643142e-01 -2.030000000000000249e+00 2.706102745504125329e-01 -2.040000000000000036e+00 2.705637415958286329e-01 -2.049999999999999822e+00 2.705042161638736009e-01 -2.060000000000000053e+00 2.704318333228306614e-01 -2.069999999999999840e+00 2.703467280139603135e-01 -2.080000000000000071e+00 2.702490350279734832e-01 -2.089999999999999858e+00 2.701388889821121908e-01 -2.100000000000000089e+00 2.700164242978251306e-01 -2.109999999999999876e+00 2.698817751790292818e-01 -2.120000000000000107e+00 2.697350755909456166e-01 -2.129999999999999893e+00 2.695764592394986336e-01 -2.140000000000000124e+00 2.694060595512700051e-01 -2.149999999999999911e+00 2.692240096539948446e-01 -2.160000000000000142e+00 2.690304423575922699e-01 -2.169999999999999929e+00 2.688254901357189919e-01 -2.180000000000000160e+00 2.686092851078369370e-01 -2.189999999999999947e+00 2.683819590217855211e-01 -2.200000000000000178e+00 2.681436432368480283e-01 -2.209999999999999964e+00 2.678944687073046560e-01 -2.220000000000000195e+00 2.676345659664614574e-01 -2.229999999999999982e+00 2.673640651111473532e-01 -2.240000000000000213e+00 2.670830957866694999e-01 -2.250000000000000000e+00 2.667917871722190748e-01 -2.260000000000000231e+00 2.664902679667189300e-01 -2.270000000000000018e+00 2.661786663751035120e-01 -2.280000000000000249e+00 2.658571100950249955e-01 -2.290000000000000036e+00 2.655257263039749738e-01 -2.300000000000000266e+00 2.651846416468158218e-01 -2.310000000000000053e+00 2.648339822237126273e-01 -2.319999999999999840e+00 2.644738735784577521e-01 -2.330000000000000071e+00 2.641044406871821959e-01 -2.339999999999999858e+00 2.637258079474437689e-01 -2.350000000000000089e+00 2.633380991676864125e-01 -2.359999999999999876e+00 2.629414375570627294e-01 -2.370000000000000107e+00 2.625359457156132836e-01 -2.379999999999999893e+00 2.621217456247942335e-01 -2.390000000000000124e+00 2.616989586383476896e-01 -2.399999999999999911e+00 2.612677054735080273e-01 -2.410000000000000142e+00 2.608281062025357699e-01 -2.419999999999999929e+00 2.603802802445751019e-01 -2.430000000000000160e+00 2.599243463578258528e-01 -2.439999999999999947e+00 2.594604226320258999e-01 -2.450000000000000178e+00 2.589886264812357730e-01 -2.459999999999999964e+00 2.585090746369205772e-01 -2.470000000000000195e+00 2.580218831413230718e-01 -2.479999999999999982e+00 2.575271673411210216e-01 -2.490000000000000213e+00 2.570250418813640469e-01 -2.500000000000000000e+00 2.565156206996837551e-01 -2.510000000000000231e+00 2.559990170207708804e-01 -2.520000000000000018e+00 2.554753433511154359e-01 -2.530000000000000249e+00 2.549447114740023279e-01 -2.540000000000000036e+00 2.544072324447592681e-01 -2.550000000000000266e+00 2.538630165862491572e-01 -2.560000000000000053e+00 2.533121734846046080e-01 -2.569999999999999840e+00 2.527548119851965591e-01 -2.580000000000000071e+00 2.521910401888343700e-01 -2.589999999999999858e+00 2.516209654481909030e-01 -2.600000000000000089e+00 2.510446943644485396e-01 -2.609999999999999876e+00 2.504623327841605795e-01 -2.620000000000000107e+00 2.498739857963244437e-01 -2.629999999999999893e+00 2.492797577296606004e-01 -2.640000000000000124e+00 2.486797521500941355e-01 -2.649999999999999911e+00 2.480740718584334148e-01 -2.660000000000000142e+00 2.474628188882417312e-01 -2.669999999999999929e+00 2.468460945038983279e-01 -2.680000000000000160e+00 2.462239991988428855e-01 -2.689999999999999947e+00 2.455966326940014766e-01 -2.700000000000000178e+00 2.449640939363879055e-01 -2.709999999999999964e+00 2.443264810978776347e-01 -2.720000000000000195e+00 2.436838915741498246e-01 -2.729999999999999982e+00 2.430364219837937989e-01 -2.740000000000000213e+00 2.423841681675758253e-01 -2.750000000000000000e+00 2.417272251878629930e-01 -2.760000000000000231e+00 2.410656873281995516e-01 -2.770000000000000018e+00 2.403996480930334634e-01 -2.780000000000000249e+00 2.397292002075879502e-01 -2.790000000000000036e+00 2.390544356178762597e-01 -2.800000000000000266e+00 2.383754454908544318e-01 -2.810000000000000053e+00 2.376923202147103731e-01 -2.819999999999999840e+00 2.370051493992846869e-01 -2.830000000000000071e+00 2.363140218766204281e-01 -2.839999999999999858e+00 2.356190257016389233e-01 -2.850000000000000089e+00 2.349202481529376885e-01 -2.859999999999999876e+00 2.342177757337083610e-01 -2.870000000000000107e+00 2.335116941727704842e-01 -2.879999999999999893e+00 2.328020884257193668e-01 -2.890000000000000124e+00 2.320890426761838266e-01 -2.899999999999999911e+00 2.313726403371924034e-01 -2.910000000000000142e+00 2.306529640526433778e-01 -2.919999999999999929e+00 2.299300956988777622e-01 -2.930000000000000160e+00 2.292041163863512421e-01 -2.939999999999999947e+00 2.284751064614025939e-01 -2.950000000000000178e+00 2.277431455081164180e-01 -2.959999999999999964e+00 2.270083123502773248e-01 -2.970000000000000195e+00 2.262706850534126624e-01 -2.979999999999999982e+00 2.255303409269223403e-01 -2.990000000000000213e+00 2.247873565262918372e-01 -3.000000000000000000e+00 2.240418076553877536e-01 -3.010000000000000231e+00 2.232937693688316072e-01 -3.020000000000000018e+00 2.225433159744515110e-01 -3.030000000000000249e+00 2.217905210358078194e-01 -3.040000000000000036e+00 2.210354573747918272e-01 -3.050000000000000266e+00 2.202781970742941908e-01 -3.060000000000000053e+00 2.195188114809420998e-01 -3.070000000000000284e+00 2.187573712079019239e-01 -3.080000000000000071e+00 2.179939461377464749e-01 -3.089999999999999858e+00 2.172286054253836085e-01 -3.100000000000000089e+00 2.164614175010452501e-01 -3.109999999999999876e+00 2.156924500733346239e-01 -3.120000000000000107e+00 2.149217701323291041e-01 -3.129999999999999893e+00 2.141494439527378280e-01 -3.140000000000000124e+00 2.133755370971114895e-01 -3.149999999999999911e+00 2.126001144191031200e-01 -3.160000000000000142e+00 2.118232400667772741e-01 -3.169999999999999929e+00 2.110449774859669836e-01 -3.180000000000000160e+00 2.102653894236757581e-01 -3.189999999999999947e+00 2.094845379315236067e-01 -3.200000000000000178e+00 2.087024843692350529e-01 -3.209999999999999964e+00 2.079192894081680620e-01 -3.220000000000000195e+00 2.071350130348819374e-01 -3.229999999999999982e+00 2.063497145547425193e-01 -3.240000000000000213e+00 2.055634525955633563e-01 -3.250000000000000000e+00 2.047762851112818472e-01 -3.260000000000000231e+00 2.039882693856681362e-01 -3.270000000000000018e+00 2.031994620360657033e-01 -3.280000000000000249e+00 2.024099190171622376e-01 -3.290000000000000036e+00 2.016196956247897631e-01 -3.300000000000000266e+00 2.008288464997518008e-01 -3.310000000000000053e+00 2.000374256316776178e-01 -3.320000000000000284e+00 1.992454863629005979e-01 -3.330000000000000071e+00 1.984530813923614245e-01 -3.339999999999999858e+00 1.976602627795328859e-01 -3.350000000000000089e+00 1.968670819483666623e-01 -3.359999999999999876e+00 1.960735896912602083e-01 -3.370000000000000107e+00 1.952798361730426202e-01 -3.379999999999999893e+00 1.944858709349783499e-01 -3.390000000000000124e+00 1.936917428987879886e-01 -3.399999999999999911e+00 1.928975003706847324e-01 -3.410000000000000142e+00 1.921031910454254477e-01 -3.419999999999999929e+00 1.913088620103756965e-01 -3.430000000000000160e+00 1.905145597495870313e-01 -3.439999999999999947e+00 1.897203301478865844e-01 -3.450000000000000178e+00 1.889262184949768442e-01 -3.459999999999999964e+00 1.881322694895454506e-01 -3.470000000000000195e+00 1.873385272433838455e-01 -3.479999999999999982e+00 1.865450352855143323e-01 -3.490000000000000213e+00 1.857518365663230475e-01 -3.500000000000000000e+00 1.849589734617008152e-01 -3.510000000000000231e+00 1.841664877771879427e-01 -3.520000000000000018e+00 1.833744207521245118e-01 -3.530000000000000249e+00 1.825828130638040558e-01 -3.540000000000000036e+00 1.817917048316303186e-01 -3.550000000000000266e+00 1.810011356212762046e-01 -3.560000000000000053e+00 1.802111444488443681e-01 -3.570000000000000284e+00 1.794217697850283566e-01 -3.580000000000000071e+00 1.786330495592739209e-01 -3.589999999999999858e+00 1.778450211639395762e-01 -3.600000000000000089e+00 1.770577214584558023e-01 -3.609999999999999876e+00 1.762711867734826354e-01 -3.620000000000000107e+00 1.754854529150638442e-01 -3.629999999999999893e+00 1.747005551687788594e-01 -3.640000000000000124e+00 1.739165283038896226e-01 -3.649999999999999911e+00 1.731334065774840503e-01 -3.660000000000000142e+00 1.723512237386136403e-01 -3.669999999999999929e+00 1.715700130324259720e-01 -3.680000000000000160e+00 1.707898072042905169e-01 -3.689999999999999947e+00 1.700106385039181767e-01 -3.700000000000000178e+00 1.692325386894731332e-01 -3.709999999999999964e+00 1.684555390316772594e-01 -3.720000000000000195e+00 1.676796703179059822e-01 -3.729999999999999982e+00 1.669049628562755405e-01 -3.740000000000000213e+00 1.661314464797209178e-01 -3.750000000000000000e+00 1.653591505500640324e-01 -3.760000000000000231e+00 1.645881039620719355e-01 -3.770000000000000018e+00 1.638183351475041571e-01 -3.780000000000000249e+00 1.630498720791491996e-01 -3.790000000000000036e+00 1.622827422748497894e-01 -3.800000000000000266e+00 1.615169728015155848e-01 -3.810000000000000053e+00 1.607525902791246686e-01 -3.820000000000000284e+00 1.599896208847115808e-01 -3.830000000000000071e+00 1.592280903563428607e-01 -3.839999999999999858e+00 1.584680239970789883e-01 -3.850000000000000089e+00 1.577094466789228100e-01 -3.859999999999999876e+00 1.569523828467540572e-01 -3.870000000000000107e+00 1.561968565222491556e-01 -3.879999999999999893e+00 1.554428913077868235e-01 -3.890000000000000124e+00 1.546905103903381817e-01 -3.899999999999999911e+00 1.539397365453423761e-01 -3.910000000000000142e+00 1.531905921405657123e-01 -3.919999999999999929e+00 1.524430991399457758e-01 -3.930000000000000160e+00 1.516972791074190641e-01 -3.939999999999999947e+00 1.509531532107323271e-01 -3.950000000000000178e+00 1.502107422252372260e-01 -3.959999999999999964e+00 1.494700665376685056e-01 -3.970000000000000195e+00 1.487311461499045417e-01 -3.979999999999999982e+00 1.479940006827111243e-01 -3.990000000000000213e+00 1.472586493794671714e-01 -4.000000000000000000e+00 1.465251111098734293e-01 diff --git a/soliket/tests/data/gc_cmass-actdr4_kappa.sacc.fits b/soliket/tests/data/gc_cmass-actdr4_kappa.sacc.fits new file mode 100644 index 00000000..aea9eecc --- /dev/null +++ b/soliket/tests/data/gc_cmass-actdr4_kappa.sacc.fits @@ -0,0 +1,612 @@ +SIMPLE = T / conforms to FITS standard BITPIX = 8 / array data type NAXIS = 0 / number of array dimensions EXTEND = T NMETA = 0 END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 24 / length of dimension 1 NAXIS2 = 0 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 3 / number of table fields TTYPE1 = 'id ' TFORM1 = 'D ' TTYPE2 = 'min ' TFORM2 = 'D ' TTYPE3 = 'max ' TFORM3 = 'D ' SACCTYPE= 'window ' SACCCLSS= 'TopHat ' EXTNAME = 'window:TopHat' END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 24 / length of dimension 1 NAXIS2 = 0 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 3 / number of table fields TTYPE1 = 'id ' TFORM1 = 'D ' TTYPE2 = 'min ' TFORM2 = 'D ' TTYPE3 = 'max ' TFORM3 = 'D ' SACCTYPE= 'window ' SACCCLSS= 'LogTopHat' EXTNAME = 'window:LogTopHat' END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 160 / length of dimension 1 NAXIS2 = 3072 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'values ' TFORM1 = 'K ' TTYPE2 = 'weight ' TFORM2 = '19D ' TDIM2 = '(19) ' SACCTYPE= 'window ' SACCCLSS= 'Bandpower' SACCNAME= 140207322073120 EXTNAME = 'window:Bandpower' END ????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;????@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? +? ? ? ??????????????????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z?[?\?]?^?_?`?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?{?|?}?~?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? +? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? !? "? #? $? %? &? '? (? )? *? +? ,? -? .? /? 0? 1? 2? 3? 4? 5? 6? 7? 8? 9? :? ;? <? =? >? ?? @? A? B? C? D? E? F? G? H? I? J? K? L? M? N? O? P? Q? R? S? T? U? V? W? X? Y? Z? [? \? ]? ^? _? `? a? b? c? d? e? f? g? h? i? j? k? l? m? n? o? p? q? r? s? t? u? v? w? x? y? z? {? |? }? ~? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? +? +? +? +? +? +? +? +? +? + ? + +? + ? + ? + ? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? + ? +!? +"? +#? +$? +%? +&? +'? +(? +)? +*? ++? +,? +-? +.? +/? +0? +1? +2? +3? +4? +5? +6? +7? +8? +9? +:? +;? +<? +=? +>? +?? +@? +A? +B? +C? +D? +E? +F? +G? +H? +I? +J? +K? +L? +M? +N? +O? +P? +Q? +R? +S? +T? +U? +V? +W? +X? +Y? +Z? +[? +\? +]? +^? +_? +`? +a? +b? +c? +d? +e? +f? +g? +h? +i? +j? +k? +l? +m? +n? +o? +p? +q? +r? +s? +t? +u? +v? +w? +x? +y? +z? +{? +|? +}? +~? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? +? ? ? ? ? ? ? ? ? ? ? +? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? !? " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 16 / length of dimension 1 NAXIS2 = 3000 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'ell ' TFORM1 = 'K ' TTYPE2 = 'beam ' TFORM2 = 'D ' SACCTYPE= 'tracer ' SACCCLSS= 'Map ' SACCNAME= 'ck_actdr4' SACCQTTY= 'cmb_convergence' EXTNAME = 'tracer:Map:ck_actdr4:beam' MAP_UNIT= 'none ' SPIN = 0 END ??,?چ?>?\-? +D??5L:?>g& ? +?z` ?݋ ?2' ?-:d?G#?R%?L ?5[??g[?ð>?7?V?VS?bl?3d??ϗ?Қ?)yl?>]w?B% ?6N +!?"?#?ׯ[$?aM %?} &?Д8;'?ܠ(?ˆ)?,3*?7$W+?vV/,?-?=.?6/?Gp0?R1?E2?i1.3?%J 4?j15?m>6?7?t8?+59?9Y:?;?k0???~@?zAA?v|sB?rVC?n:GD?iE?ev"F?`^G?\p H?WAI?S)DJ?NmcK?I +.L?D xM??ֺ2[N?: +@O?5P?0xQ?+}R?&>]S? T?0U?hV?3;W? X?klY?bZ?a[?$\?A]?N^?Jl_?6T`? k?Hjgl?_um?f!n?y\nkgo?rB[hp?kpq?cr?\s?U6Uft?Melu?FNv?>hy\w?7$[-x?/vy?'#bEz?{? o|?_}?@F~?_??2\?}pY'?,Om?ЍW?X?ֶ?D1#?#LO?s?*?V/?q<?|]h?wt?vb?m<D?dd?Z0B?Qh-G?HMN?> C?5u?+hw?!y?k?<?b"?x?}1?rS?Wd?+uu?杖?/:?FX> +?#?[?ͥ6i?/Z5?~>?sy?hQ?^z?S"}?H" ?c?=8[?1 b?&B?|y?*_f?l?T˼?xh{?=Ɂl?֙p?YBf? H?K{&?f+?p0?j?SzF?w,-?jWm<?^'?RUɢ!?Ez?9tG*?,Sk? Rn ???FZ?$6?In?^M?bC?V?:,?E?c1?'Q?&j?v1?i:[U?[ƿ?N H?@]k?2$?$͹?[W?F??,;|?kl ?ЖR3?S'?b??*z ??z~N?kmI?\#܎?Mu??j3?08$/?!BR?;n?$!?&O? )?~"C?%?HF?DY?^l?!wH?xwW?h<"c?XA?INW?9,]_?)0?$? y??^?QV?zC?,?M?y W??u*?dk+?S6?B ?1P< +? ^@ ? ?~U ?dH?"N?Ϲ+?lк??vt?\?s=C?a]_a?OĀ?=O ?, >?? ΅?S?І.?љf5?Q?0 ?!?"?ud#?b3v$?PNz%?=UZ&?* '?<(?)? +_*?D+?&%,?B)-?| u.?/Ҍ/?~Ұ +0?keu1?W&.2?DZM3?07ڹ4? 5? O6?7?=8?ͱ 9?.:?;?\V?T}??@[@?+,pA?fA&B?SqC?0тD?}E?ĹF?G?ިH? 7|I?qc3J?[CnK?FL?13M?RtN?yO?"P?6Q?ƖR?y_S?W +/T?񅟎dU?o'%V?YtlW?Dv]cX?.-Y?Z?u[?ΏZJ\?Քa]?I[AMϠ?##?%? p?)Q?;N&?<~?-v?gQnJ?K?0?O[5?u<?~j?U?lo?ˋ?p?TXld ?8y?W8??M]?Ȝm?yP) ?E ?t`'?W?;J?7Y?Qc???b?揝K?K?rǞ'V?Up ?8E?7Լ?ΡI??pƗ)?)Z?E?ljO$?N_A?1j7K?<?)<?pj?产`x?#?~䤪?`&?B +. ?$?J?b^??f?㫼C?Q?nթ?PJ g?17w?.u?E|?y{>?⶜p?◯?x?YJ?:{?Zm?O?qݯ?p&?D?~?^)??T ??1??69?F X?FI+Q?`5?@+?R>?Hz2?R ?߾?ߞe?};U?]k@mr?<!?B?T09?ځv?޹**?ޘvc?w1) ?V?5q ?=J0 +?L ?ѥ 6 ?ݰ@! ?ݎ@?mG=U?K ?* @z?Xg)?b?ĽpH?ܢ׳j?܀V?^۶/y? .?Y=;/?0?C1?ذZvn82?،s]3?hS#~4?Dʉ}5? ϛ`W6?Ĉ[ 7?ةP8?״}K9?אBuSQ:?kѶ;?G +~?&`<??ֵ@?֐pA?l!.B?GTKKC?"wD?<E?؍F?ճdG?Վc*'H?i5I?C0J?B,K?L_LL?\M?Ԯ`9N?ԈO?c3RXP?=*jQ?wER?>S?-T?Ӧ)mU?Ӏ*V?Z[W?3EX? b.Y?HZ?=ko[?Қ٠\?tm]?M^?']"_?i\`? Y\a?ѳLVb?ь|ggc?e0vd?> +|e?48f?E(Ug?x;˚h?ТGi?{&j?Sqk?,S(l?m?_Q~n?ϵ>^o?ώ,pNp?fzTq?> r?xs?M\t? |pu?Ο:v?vDձw?Nx?&&y?ew4z?%{?ͭ%|?ͅ<}?\M~?4&o? ?h?̺ ?̑9M?hV8dH??bX2?_ɭ?K_q?' R?˚ʃ8?q_&?H[7?~?@?x?ʢkmfE?x$H?O`T?%NbE?y,?ѕdaO?ɧk?}*?Sx:?)b7?-p? ?Ȫ$?Ȁ/.~h?U+<?+5+@?xv??ǫEE?ǀfH?U +?*K?f?Z?Ʃ1?~?SZq?(R?S?YR?ť%?z^N_?NȐ?#"˻I?l+?˧*b?ğO?smv?G„??٠U?ó?×}F?k7<?>j?{W7?q`}?¹Y2,?Œ=P?`C? +?3?ӟA?Y}? +~u?P8?S?%š?Ѻ5?˛&?UO3?p?C_??"?rƸ?;ޖ?ᅪ` +?_2?1? i3?'8#?ᄄ1 M?z*B?L?i?f(?rE'd?s'?dW)?6??MS?#DH?J}B?{Ӎ?Mn?+,?E?P]?ﻑJ$^?b4H\:?3s?ئi?Ԓ?ﺥ=#?und?Fa¯?o?Fm?ﹷ?﹇nD]?X%?(Pz?k?uVg?︘pi?h[$"?85?*?׻?﷧f?w}?F?B?r?ﶴt?ﶄ"?STn?"q?3?U?﵏6}?^Ьp?-izݔ?55 ?’ +?ﴙ  ?h8 ?6 ?@Ѭ?ӭ[?ﳢ ??pU"e?>? \{G?}?ﲨ}]?v-%#?De"??z?ﱮ7i?{+?I +MW?R?䌰9?ﰱ&?W ?LZ"!?C"? +R#?ﯴ.W$?﯁<%?N;&?)A'?#(?﮴h[)?ﮁ*?NC5+?,?pыf-?ﭳ(a.?נּ^r/?L B0? Z1?L"@2?בּ|K93?}4?IK5?"6?ᛕ%47?﫭{8?yK>9?E O":?͆;?]kC?>?? +A*!@?Ւme A?褐Ҵ B?lZ_C?7'D?8 E?:®vF?礼,G?c!/H?-kI?얆J?V|K?留]L?XN7M?#dN?킡NoO?醴hHP?廬9NQ?L}?QR?S?T?索@BgU?tV?> +X"W?ƬX?қxY?卵`nWZ?f_[?/n\?PK]?e^?K-0_?U`?6a?Nb?c?zAd?CtIe? z^f?Jjg?Zh?g7Vi?0F^j?Vk?D?l??Flm?RNn?@n'go?KVp?Y;q?tKr?< +us?4t?Ȅ|{u?ҍ}v?\8w?$9x?ݖYy?\z?|{?CWK|? ^y}?%~?f?a ?).nӼ?zo?C{?~䥧j?Fo? 6x.? Ӓf??aظܪ?(?e?A?|9M?CBk? >?10?i?\?#!?R%V?s^m?ut%?;n?w\j?Y.V?+?=?R폒??BX??iYR?.ʌ?0??~'H?C? "?7q?=%e?X2??Td?bx?kl"?0 b?hD?10{?}?B?jJ%?ʲ?H?S%?.?8x߅?2?c)?&Ϣ?•?}נ~?r)d1?5>?QcL?/?:?CQ??"?PjK?Pnٗx?}l?|OT?k?\K-???o]?g,59?)N?>s?uS?q1-?3dӶ?4?ڬ+?y ?<z9?ˁ? ++??C쌖?O??B?ʔ?J{D? C9?y]8q?ϰ?P8r??ҹ@J?!j?TN?ހv?N?j?Xôg??J??[e?Z]?ܛ/ǚ?c?]eŻ??y?v]oy?v?vsr?v1"Xg?u7 ?uR$!?uiIq"?u'D|#?t"k$?t:%?t_:&?tmd'?sّ6Į(?sU$)?sSx{*?sH1+?r̓@,?rYIg-?rGz.?r"9/?q}A0?q}G=1?q9mU2?plU3?p~k4?pn5?p+!Ծ,6?o\?7?o$i8?o_f9?o_w:?nתK;?n?m[??m*@?m>NA?lޱ8B?l^C?lpϯkD?l,0E?k炬CF?kOG?k]BH?kEI?j.^J?j2GK?jJ'gL?j zM?iDžTN?izyO?i5_[P?h@$Q?h%R?he'}eS?hdVAT?g -U?gcV?gN=rW?g?&X?fǻY?f}0~Z?f7=q|[?e:\?e(?2S]?eetH^?e3}_?dؔ};`?dDQ a?dKmb?duԎc?c8d?cxiMe?c1ˬ=f?beg?bbxm%h?b]qi?b}j?ak?aֿl?aA8Xm?`Aln?`Po?`lTpp?`% 8q?_ݶr?_Ophs?_Ngt?_UoYIu?^ +v?^x:V w?^0i"x?]Wy?]Fz?]X[{?] |?\}?\q~?\8?[9l?[gJT?[`?[71?ZQ?ZՊ?Z>J&?YI'r?Y1?YdMuw?YXk?XҭP?Xuy?X@$4U?W?W;L?We`?WZ ?V&9?V8-?V@a?U??Uo5d?Uc?U?K?TЏ?Tc?T=U?S&OU?S9v?S_=?S2?R)D?R?R6\?Qkݕ?Q ?QWv?Q 5?P¯?PxL_?P-u ?Ou?Ou?OM+`ڤ?OIQi?NW?NlW7?N!G.>?M'J?M#U?M?#?Lml-?L.?L]<?L)6?KƟfւ?K{bh?K/\UM?J?J ?JL?J5?I(?Ih#ڣ?I?HT?H?H7v_?G%~K?GI4?GRT?Go ?FF\?Fl>?F&?E?m?Es5?E9Ƃ7?D쮋Q?D +?DRF\'?D>?Cl|<?Ck6c;?C +~?BЛ?B7+<?B5Ö*?A@ .?A?AM So?@\?@}?@cZ?@4<????z0,??+)76?>=S?>gW?>Ayg?=0Ӽ?=؋f?=Vq#D?=??!rc x??!z_z@?!'+LA? q+>B? C? +Ͼ,D?s:E?72F?/츣KG?IR*H?I?3IsEJ?@:K? hL?6}M?!ҤN?zO?9c(P?{IQ?ד\R?;S?N2eT?vWU?zq?a]?၈ +?#, ???fH? ?ߩ*n^?J%#N?0?ލפ?.=E ?]P:?pn?qj +?ܲe{,?SJ?!5#?۔G?54~; ?N +?v-} ?w, ?ٷ ?XfO?n~W?ؙgV?9_q?ٕu?y?!?ֹإ?Yh?Ʃ?ՙ?9t/?4&?x?v?Ӹf 3?W9?v7?Җ ?5"M&!?-"?tjmp#?0$?в]%?Q&?DE'?ϏbE(?.:#)?;*?lH1+? Q,?ͩP-?HJ.?G/?̅Y#W0?#op1?-,r2?`[3@3?Z4?ʜ5?;&M6?@J7?wL8?H9?ȳ7=:?Q 0;?SK? +??e@?$RA?Š.KB?> +moC?g~sD?x E?MF?ó'oG?PJ + +H?_!.I?Še""J?'\bK?ERL?a #SM?%%N?O?7XbXP?6Q?pB +R? XS?|T?E2|U?BV?~FiW?sX?':2Y?ScqZ?"(O[?#vh4\?'NRS]?^?^Н_?U`?Qxa?1b?̮͗c?i%yd?.e?Õf?;wgg?ćMh?r?i? HLj?p|k?Cl?ޖWm?y9n?&lo?cxp?J58q?m;]r?l9s?Ut?a1u?Ox Tv?a#w?` x?(Vy?=z?SRLtT{?|?@}?!%a~?ʨ?U>q?ﰊF?A?#\?.?V?sD? <5f?#f4? 5G?Vs?Ͽ?}jy?"\?z?TX?/F?j?¥??<?Qa?SS?`?_(?č?L +?|x?}Y?[7?P?G?>?wmu???,??pi?כi?o?\w;?'̑?6^.l?Β2?f3 `???HĚB?,,xP?%Nu|?[~+-?<?>?!3'?R'?Od?g?}\߃?Cd#?%"?An?آyv?oPFv?֔?)m?3@a?y?_߼?8"?O?"CHw?Q?O ?:?{?ë?n?9I?94?hp?۷?6.?'fH??Q\ǻ?0?zA?h̐6?0g?8o+3?^x?a]})?MK??@Y?oX?F5S?ڤ[ߦ?nb $?H[?T?*c?0Eg?Q /?~G?~yA5?xX1ɦ?x' ?w❖?w>"?v?O;B?vc틸?u^|?u\?uEp"%?tթ ?t?. +?s6{ ?sdj' ?r ?r ?rD^?q_!?q>q?p}|}?pbO?o~?ov\?oqj8y?n YC?n:D&?m,?m]?l!?l:9|?l?ke?k3F?jhZ ?jV Oz!?i 9wM"?iw&#?i"$?h)%?h* n&?g: +'?gK(?f܄!)?fm9*?eX+?e +x(,?ep!b-?dF.?d?9`/?cOk0?c_}1?b[P2?b3?b`x4?aF5?a/6?`oZG7?`O<#8?_&9?_n:?^N;?^{?]8{B?[yq'C?[TD?Z#WE?Z&~F?Y+G?YDԛH?Xӄ"TI?XbV+J?W(K?WѺ]L?Wz~}M?VbN?V+fuO?U!@P?UHУQ?T8TjR?TeK¢S?Sp5T?SAU?S7wV?RS"W?R,'_yX?Q)+Y?QH1/Z?PB[?Pc!\?O*-]?Of\^?O _?NAa`?N(J=a?Mֈb?MCHBc?Lгd?L^ޭe?K^#Df?KxJg?K嚎h?J@i?J l^j?Ik?I:l?Hm?HS3n?G=do?Gmxҩup?F/dq?FءAr?FsTs?EO }t?E,Iu?DVv?DEWw?Cѭ]x?C]"y?B0z?Bv]{?B}(J|?A}?Am~?@?@2pۮ??Kip??J9c?>K?>a?=,:\?=x%?=J;C?<ģ?<1SM%?;I?;1K)?:%F?:HZ{T?9ӂ|?9^^A?8-?8t +?7Rsv?7}(Z?7SϬ?6}?6*?5Q76?5@"sk?4ʳv?4U74?3߭ĹT?3j0Pe?2p ?2~K?2n ?1/-?1SDu?0i{]?01rx?/m?/E[Z?.:⊿?.Y  ?-ј?-l~?,1 ?,_?, []uC?+ۺ9U?+Nv?*H?*/ ?)TD?)A1?(ʿ֧F?(S?'K?'eD?&U?&w?&?%f!?%K;N?$zB?$##a?#?6<?#4ʵQO?"HC?"EJ?!?!Vp,? ޸q? f? ?w>k[?Oun?SJ?I{?2N2? ~t?"?.=?Mͻ?=d?ŊT?ML|b?ԐN?[?a ?j3`?IIO?y4!t?_wζ?}K +?y?o?(?mC?*G?_5 ??k闒?/;k?xhDX? j? Ѫ? +X? ">? y? ^? "{3 ? +HL2? +.h? ]? 9_B(?`?Dd?i?Ok{?m)?Z!]?h^r?dv~?ͬU?n7?\u?y ?tx?i3??'?Jƴ?\j?db* ?= GA +?#T ?F= ?,ԙ ?Um?5o!?;l?=T?!2?FAw?T'?NZ5?RT&?V=P?A7>?]똻E?ᮛ>?edIxL? L?lh?5aK?sŽ?(8t ?zh!?߅"?26y#?p7X$?򇠘J%? +&?kW'?p(?)?&*?b+?/>,?Fj6 -?!^.? @/?'Iv0?ڛB%1?,^|+2?3?1>uf4?곚(5?5gp6?+7?:_Y8?輆sa9?>P5,:?;?BQf:?[1??J%̉@?A?MΐB?5UC?P4wD?SRE?S*VF?L-`?U6a?h`e>hb?]c?hM6[d?1e?hf?%g?gJh?:j{i?f!+j?pmk?eRl?rm?d1rn??Cbo?c>Gp?#,q?b;r?<s?`[U3t?lq(u?^qk\v?h۲w?\S;/x?0oy?Zʑz?k{?Wzi|?#5a}?T?~?N=?Q1.?E/?N?Я?KU?ɖgB@?G(l?}?D +7?LT7?@? Z?;Pl??7 ?RH?3^?T(?.@I\??)HE?fZ?$$w%?sD???*aL?ME?c3?l,? h03?W@?9]g?z?k?} t?@aS?vʖ?vC?o{?xn6%?h ?F-I?a8?}?ZZ?H'?Ri?|d.?J5?|R ?Bh F?H_ ?:K ?z?1?F43?(;?xL?3?vY?„?A? j??m?<?[?umZ?r!?kjβX?V*t?a4*?c?VBxE?уN`?L.&??A^פ?휻Ro?6[L C?훰wq?+$`?횥vf?+ ?홙&R?UR?혎<?NX?헂S-{?K;?v60??i?㫷?]cd?]#?P !??m?C(6w?푽=?6D?퐰5?)Zh؂?폢c?ؚ?펕*?#ޗ?퍇6jW?<?!y]?kg'N?^ $?\m?T-?N?ơ//m??4G?퇷i F?05|W?톨Gy?!?텙W0??턉٥?D ?z(?=dJ ?jE] ?Aw ?Z/O ?44 ?I* ?># ?9l ?~y ?~(LI ?}T} +?} FY ?|ZI ?|G ?{~. ?zx ?zlw*+ ?yK ?y[? ?xd p ?xI|" ?w ?w7Y ?vx ?v%^.~ ?u76`a ?u ?tÄs ?tvGd ?swV ?rf ?rdE0AF ?q- ?qQ:pj !?pǢwT "?p=Z #?oL $?o* %?n[ &?nt0 '?m + (?m )?ly *?kq +?kdڷ ,?jܼ| -?jPQ .?irKN /?i<+= 0?h +X 1?h'vSk 2?g ( 3?g^9 4?f "> 5?eveM 6?er) 7?d+n3 8?d]s6XD 9?cҮ :?cGN ;?b" ?a? ??` 'x @?` A?_zǙ B?^ C?^dQ4C D?]R` E?]MӐ F?\B4g G?\6. H?[ON I?[1_ J?Z*T K?Z L?Y|AI M?XkQ N?XeL(T O?Wuy P?WM_ Q?V R?V5 S?U T?U U?Th/ V?T;+3 W?Sy:Ǣ X?R嶄 Y?R`h,2 Z?Q Ф [?QG \?P% ]?P.rt ^?O+M _?Os `?Nu a?M" b?MoRU c?L.A d?LU_V{ e?K6 f?K;γS g?JB h?J!¤cT i?Iϫ j?I8/ k?HzTl l?Gw5 m?G_̘ + n?Fve< o?FE +O p?E +? q?E*)] r?Dl s?D t?Cn8 u?B0* v?Bf V w?AD$ x?AJs@h y?@B z?@.]W {?? |??I }?>G^ ~?= ?=hbae ?<. ?@` ? +՜R ? +^a ? ŋ ?Mk ?a ?  ? +#?*ps +$?BS +%?ެVI +&?Q` +'?݀ +(? +)?Sހ +*?۽'W ++?'G] +,?ڑ=p +-? +.?dÀ +/?0 +0?7O: +1?סBfo +2? +M +3?t%~s +4?݅ +5?F +6?԰"t +7?_i[ +8?ӂM +9?J +:?T9 +;?ѽ|z4 +?MV +??aD +@?vl. +A?3?9o +B?͛_ +C? +D?mRX+o +E? +F?>z>V% +G?ʦ +H?s + +I?w4R +J?> +K?Hc +L?ǰ +M? +N?ƁHo +O?n +P?Qtp +Q?ĹE +R?!L^ +S?É9 +T?|H +U?Y\S +V?1+1` +W?( +X?e9 +Y?i(? +Z?`Y +[?ǩ +\?/9JC +]?콖@ +^?44 +_?e> +`? +a?4W' +b?캛  +c?1 +d?j +e?9 +f?8T8 +g?췟d! +h?i +i?mb +j?P? +k?;2V(^ +l?촢~ +m?x* +n?o +o?G2 +p? +s?pN: +t?3 +u?=M +v?쮣w +w? +J- +x?pe +y? +z?= +{?쫣99 +|? X*E +}?okd +~?s? +?;pP +?쨡a{ +?G6ȣ +?m!` +?b&c +?8 +?쥞k٬ +?t$ +?i7 +?Oj +?4ȣ +?좚X +?M$ +?e4v} +?ʑ: +?/i +?쟕( +?c/ +?_fm2 +?Ķ +?t:^8 +?s;Q5 +?r +?r`܈rJ +?qÉ +?q$Kj +?p{E +?o6 +?oJL| +?nN9 +?n A +?mopC +?l +?l2} +?k0ƂP +?jE +?jW$ +?iy9 +?i + +?h{=1 +?g܅D +?g=< +?f +?f_+= +?ea5c +?dF=t2 +?d#K= +?cEޠ +?b5~ +?bFIL +?am, +?a +?`hM +?_;T +?_)[ +?^D +?]!| + +?]Ke: +?\.J +?\ +Ӷ +?[m +?Zn ?Z- ?Y ^ ?XLvm ?XNRp ?W1 ?W ?Vn ?Uˌ ?U.է ?T<^ +?Sk) ?SN ?Rd ?R+h ?Qm&H ?P͖YB ?P-;k ?O嶳 ?NeA ?NK ?Mc(W ?M +ѵ ?Lj5T ?KɎ_ ?K(ͻ ?J ?IV ?IF} ?H ?H ?GcH ?Fʳ ?F!9 !?E "?DߍG #?D>cw $?C.r8 %?Bs &?BZl '?AN$ (?AwW )?@vC *?? J] +??3|d ,?>cP -?=h9 .?=NƗݺ /?<8J 0?< b 1?;i 2?:Ӭh 3?:%%r 4?9: 5?8+Q 6?8@3. 7?70i1 8?6"W 9?6Z :?5K` ;?5U ?3.G=" ??2̖ @?1.s- A?1G~ B?0EE C?0 D?/`1B E?. F?.N G?-xCB H?,ՈΈ I?,2Âmp J?+| K?*= L?*J3 M?)Cr=Q N?)H O?(aB P?'2!8 Q?'Lg R?&w S?%dP= T?%12B U?$@K V?# W?#G` X?".]A Y?"@ Z?!]BBH [? +l \? +ec| ]?r< ^?Α _?+8> `?} a?^ b?? c?  d?$h e?T4, c f?8 g? 2.b h?h!˃ i? j? k?{ l?t m?3.= n?F o?% p?Fgd q? l` r?26 s?X[ t?Y u?6 v?j8s w?,D x?!q(] y? | z? c {? 35o |? ]k }? +.[ ~? +D4_L ? / ? j ?U ?} ? +n ?ez ?6 ? ?u ?,*+ ?*/B ?E ?ª+E ?:5 ?f ?P ?IMs ? ? ?XA3/ ?03| ? NϹ ?fb ?l 3J ?k$ ?t_a ?I ?()[R' ?K ?-q ?5gI ??, ?3= ?B_: ?!5 ?& ?O/]Y ?. ?2~ ?[uz` ?U ? ?g]f ?j ?Ġ8" ?rn ? ?% ?~xD ?0| ?/ ?y ? ?:ֹ ?W$. ? ?DĹsXTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 12 / length of dimension 1 NAXIS2 = 30 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 2 / number of table fields TTYPE1 = 'z ' TFORM1 = 'E ' TTYPE2 = 'nz ' TFORM2 = 'K ' SACCTYPE= 'tracer ' SACCCLSS= 'NZ ' SACCNAME= 'gc_cmass' SACCQTTY= 'galaxy_density' EXTNAME = 'tracer:NZ:gc_cmass' END <Q=gK|=C!q>p%>.?*>U/t>{ݩ8>VO?!>Qo>%DW>ˌQ@>9]>[?? T?I?\ ?)6?3dJ?=?F?P?Z3>?cM?m8?wNv??Z?4?XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 49 / length of dimension 1 NAXIS2 = 19 / length of dimension 2 PCOUNT = 0 / number of group parameters GCOUNT = 1 / number of groups TFIELDS = 6 / number of table fields TTYPE1 = 'tracer_0' TFORM1 = '8A ' TTYPE2 = 'tracer_1' TFORM2 = '9A ' TTYPE3 = 'value ' TFORM3 = 'D ' TTYPE4 = 'window ' TFORM4 = 'K ' TTYPE5 = 'window_ind' TFORM5 = 'K ' TTYPE6 = 'ell ' TFORM6 = 'D ' NTRACER = 2 SACCTYPE= 'data ' SACCNAME= 'cl_00 ' EXTNAME = 'data:cl_00' END gc_cmassck_actdr4?RH @bgc_cmassck_actdr4?g( @rgc_cmassck_actdr4>0V @|gc_cmassck_actdr4>ڀSW|| @gc_cmassck_actdr4>#IN @lgc_cmassck_actdr4>=^, @gc_cmassck_actdr4>ٞ_ @fgc_cmassck_actdr4>؉?c^ @gc_cmassck_actdr4> v @gc_cmassck_actdr4>s_p @ngc_cmassck_actdr4>5z* +@gc_cmassck_actdr4>bG5* @gc_cmassck_actdr4>Ξ܊t @vgc_cmassck_actdr4>ځ]6 @ggc_cmassck_actdr4>ˆʃR @gc_cmassck_actdr4>2  @gc_cmassck_actdr4>. @gc_cmassck_actdr4>-^9 @gc_cmassck_actdr4>j @CXTENSION= 'IMAGE ' / Image extension BITPIX = -64 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 19 NAXIS2 = 19 PCOUNT = 0 / number of parameters GCOUNT = 1 / number of groups EXTNAME = 'covariance' SACCTYPE= 'cov ' SACCCLSS= 'full ' SIZE = 19 END >_aA8>Q@">Aua%>8#ג )>s>6fǥ>1N*5U>!}֏>mײR>/jn>!aw>H>$Dn> 5>*^!=f>Cƅ>%>:K- \ No newline at end of file diff --git a/soliket/tests/test_cross_correlation.py b/soliket/tests/test_cross_correlation.py index 85910ef7..9e1bf0f9 100644 --- a/soliket/tests/test_cross_correlation.py +++ b/soliket/tests/test_cross_correlation.py @@ -4,10 +4,8 @@ from soliket.ccl import CCL from cobaya.model import get_model -auto_file = 'soliket/data/xcorr_simulated/clgg_noiseless.txt' -cross_file = 'soliket/data/xcorr_simulated/clkg_noiseless.txt' -dndz_file = 'soliket/data/xcorr_simulated/dndz.txt' -sacc_file = 'soliket/tests/data/des_s-act_kappa.toy-sim.sacc.fits' +gammakappa_sacc_file = 'soliket/tests/data/des_s-act_kappa.toy-sim.sacc.fits' +gkappa_sacc_file = 'soliket/tests/data/gc_cmass-actdr4_kappa.sacc.fits' cosmo_params = {"Omega_c": 0.25, "Omega_b": 0.05, "h": 0.67, "n_s": 0.96} @@ -19,8 +17,8 @@ "ns": cosmo_params["n_s"], "As": 2.2e-9, "tau": 0, - "b1": 1, - "s1": 0.4, + # "b1": 1, + # "s1": 0.4, }, "theory": {"camb": None, "ccl": {"external": CCL, "nonlinear": False}}, "debug": False, @@ -42,28 +40,29 @@ def test_galaxykappa_model(request): from soliket.cross_correlation import GalaxyKappaLikelihood + info["params"]["b1"] = 2. + info["params"]["s1"] = 0.4 + info["likelihood"] = { "GalaxyKappaLikelihood": {"external": GalaxyKappaLikelihood, - "datapath": None, - 'cross_file': os.path.join(request.config.rootdir, - cross_file), - 'auto_file': os.path.join(request.config.rootdir, - auto_file), - 'dndz_file': os.path.join(request.config.rootdir, - dndz_file)} - } + "datapath": os.path.join(request.config.rootdir, + gkappa_sacc_file)}} model = get_model(info) # noqa F841 -# @pytest.mark.xfail(reason="data file not in repo") def test_shearkappa_model(request): from soliket.cross_correlation import ShearKappaLikelihood + # clear out the galaxykappa params if they've been added + info["params"].pop("b1", None) + info["params"].pop("s1", None) + info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file)}} + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file)}} model = get_model(info) # noqa F841 @@ -72,23 +71,22 @@ def test_galaxykappa_like(request): from soliket.cross_correlation import GalaxyKappaLikelihood + info["params"]["b1"] = 2. + info["params"]["s1"] = 0.4 + info["likelihood"] = { "GalaxyKappaLikelihood": {"external": GalaxyKappaLikelihood, - "datapath": None, - 'cross_file': os.path.join(request.config.rootdir, - cross_file), - 'auto_file': os.path.join(request.config.rootdir, - auto_file), - 'dndz_file': os.path.join(request.config.rootdir, - dndz_file)} - } + "datapath": os.path.join(request.config.rootdir, + gkappa_sacc_file), + "use_spectra": [('gc_cmass', 'ck_actdr4')]}} + model = get_model(info) loglikes, derived = model.loglikes() - assert np.isclose(loglikes[0], 88.2, atol=0.2, rtol=0.0) + + assert np.isclose(loglikes[0], 174.013, atol=0.2, rtol=0.0) -# @pytest.mark.xfail(reason="data file not in repo") def test_shearkappa_like(request): from soliket.cross_correlation import ShearKappaLikelihood @@ -113,9 +111,7 @@ def test_shearkappa_like(request): "As": 2.1e-9, "tau": 0.094, "mnu": 0.0, - "nnu": 3.046, - "s1": 0.4, - "b1": 1.0} + "nnu": 3.046} model = get_model(info) loglikes, derived = model.loglikes() @@ -123,6 +119,58 @@ def test_shearkappa_like(request): assert np.isclose(loglikes, 637.64473666) +def test_shearkappa_tracerselect(request): + + from soliket.cross_correlation import ShearKappaLikelihood + import copy + + rootdir = request.config.rootdir + + test_datapath = os.path.join(rootdir, gammakappa_sacc_file) + + info["likelihood"] = { + "ShearKappaLikelihood": {"external": ShearKappaLikelihood, + "datapath": test_datapath, + 'use_spectra': 'all'} + } + + info_onebin = copy.deepcopy(info) + info_onebin['likelihood']['ShearKappaLikelihood']['use_spectra'] = \ + [('gs_des_bin1', 'ck_act')] + + info_twobin = copy.deepcopy(info) + info_twobin['likelihood']['ShearKappaLikelihood']['use_spectra'] = \ + [ + ('gs_des_bin1', 'ck_act'), + ('gs_des_bin3', 'ck_act'), + ] + + model = get_model(info) + loglikes, derived = model.loglikes() + + lhood = model.likelihood['ShearKappaLikelihood'] + + model_onebin = get_model(info_onebin) + loglikes_onebin, derived_onebin = model_onebin.loglikes() + + lhood_onebin = model_onebin.likelihood['ShearKappaLikelihood'] + + model_twobin = get_model(info_twobin) + loglikes_twobin, derived_twobin = model_twobin.loglikes() + + lhood_twobin = model_twobin.likelihood['ShearKappaLikelihood'] + + n_ell_perbin = len(lhood.data.x) // 4 + + assert n_ell_perbin == len(lhood_onebin.data.x) + assert np.allclose(lhood.data.y[:n_ell_perbin], lhood_onebin.data.y) + + assert 2 * n_ell_perbin == len(lhood_twobin.data.x) + assert np.allclose(np.concatenate([lhood.data.y[:n_ell_perbin], + lhood.data.y[2 * n_ell_perbin:3 * n_ell_perbin]]), + lhood_twobin.data.y) + + def test_shearkappa_hartlap(request): from soliket.cross_correlation import ShearKappaLikelihood @@ -148,9 +196,7 @@ def test_shearkappa_hartlap(request): "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} + "nnu": 3.046} model = get_model(info) loglikes, derived = model.loglikes() @@ -170,7 +216,8 @@ def test_shearkappa_deltaz(request): info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file), + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file), "z_nuisance_mode": "deltaz"}} model = get_model(info) # noqa F841 @@ -185,7 +232,8 @@ def test_shearkappa_m(request): info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file), + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file), "m_nuisance_mode": True}} model = get_model(info) # noqa F841 @@ -200,7 +248,8 @@ def test_shearkappa_ia_nla_noevo(request): info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file), + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file), "ia_mode": 'nla-noevo'}} model = get_model(info) # noqa F841 @@ -215,7 +264,8 @@ def test_shearkappa_ia_nla(request): info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file), + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file), "ia_mode": 'nla'}} info["params"]["eta_IA"] = 1.7 @@ -232,7 +282,8 @@ def test_shearkappa_ia_perbin(request): info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file), + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file), "ia_mode": 'nla-perbin'}} model = get_model(info) # noqa F841 @@ -247,7 +298,8 @@ def test_shearkappa_hmcode(request): info["likelihood"] = {"ShearKappaLikelihood": {"external": ShearKappaLikelihood, - "datapath": os.path.join(request.config.rootdir, sacc_file)}} + "datapath": os.path.join(request.config.rootdir, + gammakappa_sacc_file)}} info["theory"] = {"camb": {'extra_args': {'halofit_version': 'mead2020_feedback', 'HMCode_logT_AGN': 7.8}}, "ccl": {"external": CCL, "nonlinear": False}} diff --git a/soliket/tests/test_cross_correlation.yaml b/soliket/tests/test_galaxykappa.yaml similarity index 81% rename from soliket/tests/test_cross_correlation.yaml rename to soliket/tests/test_galaxykappa.yaml index be231c1f..3eb02983 100644 --- a/soliket/tests/test_cross_correlation.yaml +++ b/soliket/tests/test_galaxykappa.yaml @@ -27,11 +27,15 @@ params: min: 0. max: 10. latex: b_1 - s1: 0.4 + s1: + value: 0.4 + latex: s_1 sigma8: likelihood: soliket.cross_correlation.GalaxyKappaLikelihood: - datapath: null + datapath: soliket/tests/data/des_s-act_kappa.toy-sim.sacc.fits + use_spectra: all + ncovsims: null theory: camb: extra_args: @@ -42,4 +46,4 @@ stop_at_error: true sampler: evaluate: -output: chains/test_cross_correlation +output: chains/test_galaxykappa \ No newline at end of file diff --git a/soliket/tests/test_runs.py b/soliket/tests/test_runs.py index 1d72bfd4..c589cb18 100644 --- a/soliket/tests/test_runs.py +++ b/soliket/tests/test_runs.py @@ -22,7 +22,8 @@ "lensing", "lensing_lite", "multi", - "cross_correlation", + # "galaxykappa", + # "shearkappa" # "xcorr" ]) def test_evaluate(lhood): @@ -33,9 +34,6 @@ def test_evaluate(lhood): if lhood == "mflike": pytest.skip(reason="don't want to install 300Mb of data!") - if lhood == "cross_correlation": - pytest.skip(reason="cannot locate data files") - info = yaml_load(pkgutil.get_data("soliket", f"tests/test_{lhood}.yaml")) info["force"] = True info['sampler'] = {'evaluate': {}} @@ -51,7 +49,8 @@ def test_evaluate(lhood): "lensing", "lensing_lite", "multi", - "cross_correlation", + # "galaxykappa", + # "shearkappa" # "xcorr" ]) def test_mcmc(lhood): @@ -62,9 +61,6 @@ def test_mcmc(lhood): if lhood == "mflike": pytest.skip(reason="don't want to install 300Mb of data!") - if lhood == "cross_correlation": - pytest.skip(reason="cannot locate data files") - info = yaml_load(pkgutil.get_data("soliket", f"tests/test_{lhood}.yaml")) info["force"] = True info['sampler'] = {'mcmc': {'max_samples': 10, 'max_tries': 1000}}