From d3e87bf698d650a4a5fd1d668049d8d62e68fedc Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 15 Apr 2026 00:15:44 -0500 Subject: [PATCH 01/12] Updates --- include/ccl_correlation.h | 6 + pyccl/ccl_correlation.i | 37 ++++ pyccl/correlations.py | 100 ++++++++++- src/ccl_correlation.c | 361 +++++++++++++++++++++++++++++++++++--- 4 files changed, 479 insertions(+), 25 deletions(-) diff --git a/include/ccl_correlation.h b/include/ccl_correlation.h index c5ab8b7ca..aa4fa9078 100644 --- a/include/ccl_correlation.h +++ b/include/ccl_correlation.h @@ -41,6 +41,12 @@ void ccl_correlation(ccl_cosmology *cosmo, int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, int *status); +void ccl_correlation_binned(ccl_cosmology *cosmo, + int n_ell,double *ell,double *cls, + int n_theta,double *theta_min,double *theta_max,double *wtheta, + int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, + int *status); + /** * Computes the 3dcorrelation function (wrapper) * @param cosmo :Cosmological parameters diff --git a/pyccl/ccl_correlation.i b/pyccl/ccl_correlation.i index 4e975a00b..3db796d02 100644 --- a/pyccl/ccl_correlation.i +++ b/pyccl/ccl_correlation.i @@ -11,6 +11,8 @@ (double* larr, int nlarr), (double* clarr, int nclarr), (double* theta, int nt), + (double* theta_min, int nt), + (double* theta_max, int ntmax), (double* r, int nr), (double* s, int ns), (double* sig, int nsig)} @@ -27,6 +29,17 @@ raise CCLError("Input shape for `theta` must match `(nout,)`!") %} +%feature("pythonprepend") correlation_vec_binned %{ + if numpy.shape(larr) != numpy.shape(clarr): + raise CCLError("Input shape for `larr` must match `clarr`!") + + if numpy.shape(theta_min) != (nout,): + raise CCLError("Input shape for `theta_min` must match `(nout,)`!") + + if numpy.shape(theta_max) != (nout,): + raise CCLError("Input shape for `theta_max` must match `(nout,)`!") +%} + %feature("pythonprepend") correlation_3d_vec %{ if numpy.shape(r) != (nxi,): raise CCLError("Input shape for `r` must match `(nxi,)`!") @@ -63,6 +76,30 @@ void correlation_vec(ccl_cosmology *cosmo, double* larr, int nlarr, output, corr_type, 0, NULL, method, status); } +void correlation_vec_binned(ccl_cosmology *cosmo, + double* larr, int nlarr, + double* clarr, int nclarr, + double* theta_min, int nt, + double* theta_max, int ntmax, + int corr_type, int method, + int nout, + double* output, + int *status) { + if (ntmax != nt) { + *status = CCL_ERROR_INCONSISTENT; + return; + } + + if (nout != nt) { + *status = CCL_ERROR_INCONSISTENT; + return; + } + + ccl_correlation_binned( + cosmo, nlarr, larr, clarr, nt, theta_min, theta_max, + output, corr_type, 0, NULL, method, status); +} + void correlation_3d_vec(ccl_cosmology *cosmo,ccl_f2d_t *psp, double a, double* r, int nr, int nxi, double* xi, int *status) { diff --git a/pyccl/correlations.py b/pyccl/correlations.py index 8102239f3..05f169729 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -1,4 +1,4 @@ -__all__ = ("CorrelationMethods", "CorrelationTypes", "correlation", +__all__ = ("CorrelationMethods", "CorrelationTypes", "correlation", "correlation_binned", "correlation_3d", "correlation_multipole", "correlation_3dRsd", "correlation_3dRsd_avgmu", "correlation_pi_sigma",) @@ -134,6 +134,104 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog'): return wth +def correlation_binned(cosmo, *, ell, C_ell, theta_min, theta_max, type='NN', method='fftlog'): + r"""Compute the angular correlation function. + + .. math:: + + \xi^{ab}_\pm(\theta) = + \sum_\ell\frac{2\ell+1}{4\pi}\,(\pm1)^{s_b}\, + C^{ab\pm}_\ell\,d^\ell_{s_a,\pm s_b}(\theta) + + where :math:`\theta` is the angle between the two fields :math:`a` and + :math:`b` with spins :math:`s_a` and :math:`s_b` after alignement of their + tangential coordinate. :math:`d^\ell_{mm'}` are the Wigner-d matrices and + we have defined the power spectra + + .. math:: + C^{ab\pm}_\ell \equiv + (C^{a_Eb_E}_\ell \pm C^{a_Bb_B}_\ell)+i + (C^{a_Bb_E}_\ell \mp C^{a_Eb_B}_\ell), + + which reduces to the :math:`EE` power spectrum when all :math:`B`-modes + are 0. + + The different spin combinations are: + + * :math:`s_a=s_b=0` e.g. galaxy-galaxy, galaxy-:math:`\kappa` + and :math:`\kappa`-:math:`\kappa` + * :math:`s_a=2`, :math:`s_b=0` e.g. galaxy-shear, and :math:`\kappa`-shear + * :math:`s_a=s_b=2` e.g. shear-shear. + + .. note:: + For scales smaller than :math:`\sim 0.1^{\circ}`, the input power + spectrum should be sampled to sufficienly high :math:`\ell` to ensure + the Hankel transform is well-behaved. The following spline parameters, + related to ``FFTLog``-sampling may also be modified for accuracy: + + * ``ccl.spline_params.ELL_MIN_CORR`` + * ``ccl.spline_params.ELL_MAX_CORR`` + * ``ccl.spline_params.N_ELL_CORR``. + + Args: + cosmo (:class:`~pyccl.cosmology.Cosmology`): A Cosmology object. + ell (array): Multipoles corresponding to the input angular power + spectrum. + C_ell (array): Input angular power spectrum. + theta (:obj:`float` or `array`): Angular separation(s) at which to + calculate the angular correlation function (in degrees). + type (:obj:`str`): Type of correlation function. Choices: ``'NN'`` (0x0), + ``'NG'`` (0x2), ``'GG+'`` (2x2, :math:`\xi_+`), + ``'GG-'`` (2x2, :math:`\xi_-`), where numbers refer to the spins + of the two quantities being cross-correlated (see Section 2.4.2 of + the CCL paper). The naming system roughly follows the nomenclature + used in `TreeCorr + `_. + method (:obj:`str`): Method to compute the correlation function. + Choices: ``'Bessel'`` (direct integration over Bessel function), + ``'FFTLog'`` (fast integration with FFTLog), ``'Legendre'`` + (brute-force sum over Legendre polynomials). + + Returns: + (:obj:`float` or `array`): Value(s) of the correlation function at the + input angular separations. + """ # noqa + cosmo_in = cosmo + cosmo = cosmo.cosmo + status = 0 + method = method.lower() + + if type not in correlation_types: + raise ValueError(f"Invalid correlation type {type}.") + + if method not in correlation_methods.keys(): + raise ValueError(f"Invalid correlation method {method}.") + + # Convert scalar input into an array + if scalar := isinstance(theta_min, (int, float)): + theta_min = np.array([theta_min, ]) + + if scalar := isinstance(theta_max, (int, float)): + theta_max = np.array([theta_max, ]) + + if theta_max.size != theta_min.size: + raise ValueError(f"theta_max and theta_min have different sizes ({theta_max.size} != {theta_min.size})") + + if np.all(np.array(C_ell) == 0): + # short-cut and also avoid integration errors + wth = np.zeros_like(theta_max) + else: + # Call correlation function + wth, status = lib.correlation_vec_binned(cosmo, ell, C_ell, theta_min, theta_max, + correlation_types[type], + correlation_methods[method], + len(theta_max), status) + check(status, cosmo_in) + if scalar: + return wth[0] + return wth + + def correlation_3d(cosmo, *, r, a, p_of_k_a=DEFAULT_POWER_SPECTRUM): r"""Compute the 3D correlation function: diff --git a/src/ccl_correlation.c b/src/ccl_correlation.c index 626cede74..d640978f3 100644 --- a/src/ccl_correlation.c +++ b/src/ccl_correlation.c @@ -270,26 +270,222 @@ static void ccl_tracer_corr_bessel(ccl_cosmology *cosmo, TASK: Compute input factor for ccl_tracer_corr_legendre INPUT: tracer 1, tracer 2, i_bessel, theta array, n_theta, L_max, output Pl_theta */ -static void ccl_compute_legendre_polynomial(int corr_type,double theta,int ell_max,double *Pl_theta) +static void ccl_compute_legendre_polynomial(int corr_type, + double theta, + int ell_max, + double *Pl_theta) { - int j; - double cth=cos(theta*M_PI/180); - - //Initialize Pl_theta - for (j=0;j<=ell_max;j++) - Pl_theta[j]=0.; - - if(corr_type==CCL_CORR_GG) { - gsl_sf_legendre_Pl_array(ell_max,cth,Pl_theta); - for (j=0;j<=ell_max;j++) - Pl_theta[j]*=(2*j+1); - } - else if(corr_type==CCL_CORR_GL) { - for (j=2;j<=ell_max;j++) {//https://arxiv.org/pdf/1007.4809.pdf - Pl_theta[j]=gsl_sf_legendre_Plm(j,2,cth); - Pl_theta[j]*=(2*j+1.)/((j+0.)*(j+1.)); + int ell; + double x = cos(theta * M_PI / 180.0); + const double eps = 1e-14; + + /* Avoid exact endpoints because G^{+/-}_{l,2} contains 1/(1-x^2) */ + if (x > 1.0 - eps) x = 1.0 - eps; + if (x < -1.0 + eps) x = -1.0 + eps; + + for (ell = 0; ell <= ell_max; ell++) + Pl_theta[ell] = 0.0; + + if (corr_type == CCL_CORR_GG) { + gsl_sf_legendre_Pl_array(ell_max, x, Pl_theta); + for (ell = 0; ell <= ell_max; ell++) + Pl_theta[ell] *= (2.0 * ell + 1.0); + } + + else if (corr_type == CCL_CORR_GL) { + gsl_sf_legendre_Plm_array(ell_max, 2, x, &(Pl_theta[2])); + for (ell = 2; ell <= ell_max; ell++) + Pl_theta[ell] *= (2.0 * ell + 1.0) / (ell * (ell + 1.0)); + } + + else if ((corr_type == CCL_CORR_LP) || (corr_type == CCL_CORR_LM)) { + double *P2; + double omx2 = 1.0 - x * x; //1 - x^2, with x = cos(theta) + int m = 2.0; + + P2 = malloc((ell_max + 1) * sizeof(double)); + if (P2 == NULL) + return ; + + for (ell = 0; ell <= ell_max; ell++) + P2[ell] = 0.0; + + /* GSL fills P_l^2(x) for l=2..ell_max into P2[2..ell_max] */ + gsl_sf_legendre_Plm_array(ell_max, (int) m, x, &(P2[2])); + + for (ell = 2; ell <= ell_max; ell++) { + double Pl2 = P2[ell]; + double Plm12 = (ell > 2) ? P2[ell - 1] : 0.0; + double Gplus, Gminus; + double pref; + + /* Eq. 4.19 from https://arxiv.org/pdf/astro-ph/9609149 */ + Gplus = -(((ell - m * m) / omx2) + 0.5 * ell * (ell - 1.0)) * Pl2 + ((ell + m) * x / omx2) * Plm12; + Gminus = m * (((ell - 1.0) * x / omx2) * Pl2 - ((ell + m) / omx2) * Plm12); + + /* ccl_tracer_corr_legendre divides the sum by 4*pi afterward, + * so we store an extra factor of 2 here to reproduce Eq. 19 in https://arxiv.org/abs/2105.13548 + */ + pref = 2.0 * (2.0 * ell + 1.0) / ((double) ell * ell * (ell + 1.0) * (ell + 1.0)); + + if (corr_type == CCL_CORR_LP) + Pl_theta[ell] = pref * (Gplus + Gminus); + else + Pl_theta[ell] = pref * (Gplus - Gminus); } + + free(P2); + } +} + + +static inline double dpl_from_array(int n, double x, const double *P) +{ + if (n == 0) { + return 0.0; } + return ((double)n) * (P[n - 1] - x * P[n]) / (1.0 - x * x); +} + +static void ccl_compute_legendre_polynomial_binned(int corr_type, + double theta_min, + double theta_max, + int ell_max, + double *Pl_theta) +{ + int ell; + const double deg2rad = M_PI / 180.0; + const double eps = 1e-14; + + /* x_hi corresponds to the lower angular edge theta_min, + * x_lo corresponds to the upper angular edge theta_max. + */ + double x_hi = cos(theta_min * deg2rad); + double x_lo = cos(theta_max * deg2rad); + double dx = x_hi - x_lo; + + double *P_hi = NULL; + double *P_lo = NULL; + + for (ell = 0; ell <= ell_max; ell++) + Pl_theta[ell] = 0.0; + + /* Clamp endpoints slightly away from |x|=1 for derivative evaluations. */ + if (x_hi > 1.0 - eps) x_hi = 1.0 - eps; + if (x_hi < -1.0 + eps) x_hi = -1.0 + eps; + if (x_lo > 1.0 - eps) x_lo = 1.0 - eps; + if (x_lo < -1.0 + eps) x_lo = -1.0 + eps; + + dx = x_hi - x_lo; + + /* Need up to ell_max + 1 because B2/B5 involve P_{ell+1}. */ + P_hi = malloc((ell_max + 2) * sizeof(double)); + P_lo = malloc((ell_max + 2) * sizeof(double)); + if ((P_hi == NULL) || (P_lo == NULL)) { + free(P_hi); + free(P_lo); + return; + } + + gsl_sf_legendre_Pl_array(ell_max + 1, x_hi, P_hi); + gsl_sf_legendre_Pl_array(ell_max + 1, x_lo, P_lo); + + if (corr_type == CCL_CORR_GG) { + /* Eq. 20 of https://arxiv.org/abs/2105.13548: + * (2 ell + 1) * \bar P_ell = + * ([P_{ell+1} - P_{ell-1}]_{x_lo}^{x_hi}) / (x_hi - x_lo) + */ + Pl_theta[0] = 1.0; + for (ell = 1; ell <= ell_max; ell++) { + Pl_theta[ell] = + ((P_hi[ell + 1] - P_hi[ell - 1]) - + (P_lo[ell + 1] - P_lo[ell - 1])) / dx; + } + } + + else if (corr_type == CCL_CORR_GL) { + /* Eq. B2 of https://arxiv.org/abs/2012.08568: + * average of P_ell^2 over the angular bin. + * CCL stores: + * (2 ell + 1) / [ell (ell + 1)] * _bin + */ + for (ell = 2; ell <= ell_max; ell++) { + double Ibin_hi, Ibin_lo, avgP2; + + Ibin_hi = + (((double)ell + 2.0 / (2.0 * ell + 1.0)) * P_hi[ell - 1]) + + ((2.0 - ell) * x_hi * P_hi[ell]) - + (2.0 / (2.0 * ell + 1.0)) * P_hi[ell + 1]; + + Ibin_lo = + (((double)ell + 2.0 / (2.0 * ell + 1.0)) * P_lo[ell - 1]) + + ((2.0 - ell) * x_lo * P_lo[ell]) - + (2.0 / (2.0 * ell + 1.0)) * P_lo[ell + 1]; + + avgP2 = (Ibin_hi - Ibin_lo) / dx; + + Pl_theta[ell] = + ((2.0 * ell + 1.0) / ((double)ell * (ell + 1.0))) * avgP2; + } + } + + else if ((corr_type == CCL_CORR_LP) || (corr_type == CCL_CORR_LM)) { + /* Eq. B5: + * average of G^+_{ell,2} +/- G^-_{ell,2} over the angular bin. + * CCL stores an extra factor of 2 so that the later 1/(4 pi) + * gives the Eq. 19 normalization for xi_+ / xi_-. + */ + for (ell = 2; ell <= ell_max; ell++) { + double dPl_hi = dpl_from_array(ell, x_hi, P_hi); + double dPl_lo = dpl_from_array(ell, x_lo, P_lo); + double dPlm1_hi = dpl_from_array(ell - 1, x_hi, P_hi); + double dPlm1_lo = dpl_from_array(ell - 1, x_lo, P_lo); + + double term_hi, term_lo; + double avgGpm; + double pref; + + term_hi = + -(0.5 * ell * (ell - 1.0)) * + (ell + 2.0 / (2.0 * ell + 1.0)) * P_hi[ell - 1] + -0.5 * ell * (ell - 1.0) * (2.0 - ell) * (x_hi * P_hi[ell]) + +(ell * (ell - 1.0) / (2.0 * ell + 1.0)) * P_hi[ell + 1] + +(4.0 - ell) * dPl_hi + +(ell + 2.0) * (x_hi * dPlm1_hi - P_hi[ell - 1]); + + term_lo = + -(0.5 * ell * (ell - 1.0)) * + (ell + 2.0 / (2.0 * ell + 1.0)) * P_lo[ell - 1] + -0.5 * ell * (ell - 1.0) * (2.0 - ell) * (x_lo * P_lo[ell]) + +(ell * (ell - 1.0) / (2.0 * ell + 1.0)) * P_lo[ell + 1] + +(4.0 - ell) * dPl_lo + +(ell + 2.0) * (x_lo * dPlm1_lo - P_lo[ell - 1]); + + if (corr_type == CCL_CORR_LP) { + term_hi += 2.0 * (ell - 1.0) * (x_hi * dPl_hi - P_hi[ell]) + - 2.0 * (ell + 2.0) * dPlm1_hi; + term_lo += 2.0 * (ell - 1.0) * (x_lo * dPl_lo - P_lo[ell]) + - 2.0 * (ell + 2.0) * dPlm1_lo; + } + else { + term_hi += -2.0 * (ell - 1.0) * (x_hi * dPl_hi - P_hi[ell]) + + 2.0 * (ell + 2.0) * dPlm1_hi; + term_lo += -2.0 * (ell - 1.0) * (x_lo * dPl_lo - P_lo[ell]) + + 2.0 * (ell + 2.0) * dPlm1_lo; + } + + avgGpm = (term_hi - term_lo) / dx; + + pref = 2.0 * (2.0 * ell + 1.0) / + ((double)ell * ell * (ell + 1.0) * (ell + 1.0)); + + Pl_theta[ell] = pref * avgGpm; + } + } + + free(P_hi); + free(P_lo); + } /*--------ROUTINE: ccl_tracer_corr_legendre ------ @@ -306,13 +502,6 @@ static void ccl_tracer_corr_legendre(ccl_cosmology *cosmo, double *l_arr = NULL, *cl_arr = NULL, *Pl_theta = NULL; ccl_f1d_t *cl_spl; - if(corr_type==CCL_CORR_LM || corr_type==CCL_CORR_LP){ - *status=CCL_ERROR_NOT_IMPLEMENTED; - ccl_cosmology_set_status_message(cosmo, - "ccl_correlation.c: ccl_tracer_corr_legendre(): " - "CCL does not support full-sky xi+- calcuations.\nhttps://arxiv.org/abs/1702.05301 indicates flat-sky to be sufficient.\n"); - } - if(*status==0) { l_arr=malloc(((int)(cosmo->spline_params.ELL_MAX_CORR)+1)*sizeof(double)); if(l_arr==NULL) { @@ -395,6 +584,99 @@ static void ccl_tracer_corr_legendre(ccl_cosmology *cosmo, free(cl_arr); } + + +static void ccl_tracer_corr_legendre_binned(ccl_cosmology *cosmo, + int n_ell,double *ell,double *cls, + int n_theta,double *theta_min,double *theta_max,double *wtheta, + int corr_type,int do_taper_cl,double *taper_cl_limits, + int *status) { + int i; + double *l_arr = NULL, *cl_arr = NULL, *Pl_theta = NULL; + ccl_f1d_t *cl_spl; + + if(*status==0) { + l_arr=malloc(((int)(cosmo->spline_params.ELL_MAX_CORR)+1)*sizeof(double)); + if(l_arr==NULL) { + *status=CCL_ERROR_MEMORY; + ccl_cosmology_set_status_message(cosmo, + "ccl_correlation.c: ccl_tracer_corr_legendre(): " + "ran out of memory\n"); + } + } + + if(*status==0) { + cl_arr=malloc(((int)(cosmo->spline_params.ELL_MAX_CORR)+1)*sizeof(double)); + if(cl_arr==NULL) { + *status=CCL_ERROR_MEMORY; + ccl_cosmology_set_status_message(cosmo, + "ccl_correlation.c: ccl_tracer_corr_legendre(): " + "ran out of memory\n"); + } + } + + if(*status==0) { + //Interpolate input Cl into + cl_spl=ccl_f1d_t_new(n_ell,ell,cls,cls[0],0, + ccl_f1d_extrap_const, + ccl_f1d_extrap_logx_logy, status); + if(cl_spl==NULL) { + *status=CCL_ERROR_MEMORY; + ccl_cosmology_set_status_message(cosmo, + "ccl_correlation.c: ccl_tracer_corr_legendre(): " + "ran out of memory\n"); + } + } + + if(*status==0) { + for(i=0;i<=(int)(cosmo->spline_params.ELL_MAX_CORR);i++) { + double l=(double)i; + l_arr[i]=l; + cl_arr[i]=ccl_f1d_t_eval(cl_spl,l); + } + ccl_f1d_t_free(cl_spl); + + if (do_taper_cl) + *status=taper_cl((int)(cosmo->spline_params.ELL_MAX_CORR)+1,l_arr,cl_arr,taper_cl_limits); + } + + int local_status, i_L; +#pragma omp parallel default(none) \ + shared(cosmo, theta_min, theta_max, cl_arr, wtheta, n_theta, status, corr_type) \ + private(Pl_theta, i, i_L, local_status) + { + Pl_theta = NULL; + local_status = *status; + + if (local_status == 0) { + Pl_theta = malloc(sizeof(double)*((int)(cosmo->spline_params.ELL_MAX_CORR)+1)); + if (Pl_theta == NULL) { + local_status = CCL_ERROR_MEMORY; + } + } + + #pragma omp for schedule(dynamic) + for (int i=0; i < n_theta; i++) { + if (local_status == 0) { + wtheta[i] = 0; + ccl_compute_legendre_polynomial_binned(corr_type, theta_min[i], theta_max[i], (int)(cosmo->spline_params.ELL_MAX_CORR), Pl_theta); + for (i_L=1; i_L < (int)(cosmo->spline_params.ELL_MAX_CORR); i_L+=1) + wtheta[i] += cl_arr[i_L]*Pl_theta[i_L]; + wtheta[i] /= (M_PI*4); + } + } + + if (local_status) { + #pragma omp atomic write + *status = local_status; + } + + free(Pl_theta); + } + free(l_arr); + free(cl_arr); +} + /*--------ROUTINE: ccl_tracer_corr ------ TASK: For a given tracer, get the correlation function. Do so by running ccl_angular_cls. If you already have Cls calculated, go to the next @@ -427,6 +709,37 @@ void ccl_correlation(ccl_cosmology *cosmo, } + + +void ccl_correlation_binned(ccl_cosmology *cosmo, + int n_ell,double *ell,double *cls, + int n_theta,double *theta_min,double *theta_max,double *wtheta, + int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, + int *status) { + switch(flag_method) { + case CCL_CORR_FFTLOG : + *status=CCL_ERROR_INCONSISTENT; + ccl_cosmology_set_status_message(cosmo, + "ccl_correlation.c: ccl_correlation_binned(): " + "Cannot use method=FFTLOG for binned correlations, use LEGENDRE\n"); + break; + case CCL_CORR_LGNDRE : + ccl_tracer_corr_legendre_binned(cosmo,n_ell,ell,cls,n_theta,theta_min,theta_max,wtheta, + corr_type, do_taper_cl,taper_cl_limits,status); + break; + case CCL_CORR_BESSEL : + *status=CCL_ERROR_INCONSISTENT; + ccl_cosmology_set_status_message(cosmo, + "ccl_correlation.c: ccl_correlation_binned(): " + "Cannot use method=BESSEL for binned correlations, use LEGENDRE\n"); + break; + default : + *status=CCL_ERROR_INCONSISTENT; + ccl_cosmology_set_status_message(cosmo, "ccl_correlation.c: ccl_correlation_binned(): Unknown algorithm\n"); + } + +} + /*--------ROUTINE: ccl_correlation_3d ------ TASK: Calculate the 3d-correlation function. Do so by using FFTLog. From 22ad3ed1ea43073a6ff3064811ad3c021639b65e Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 15 Apr 2026 07:31:25 -0500 Subject: [PATCH 02/12] Working full-sky shear --- pyccl/correlations.py | 11 +++++++---- src/ccl_correlation.c | 22 ++++++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/pyccl/correlations.py b/pyccl/correlations.py index 05f169729..5782cc886 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -135,11 +135,12 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog'): def correlation_binned(cosmo, *, ell, C_ell, theta_min, theta_max, type='NN', method='fftlog'): - r"""Compute the angular correlation function. + r"""Compute the angular correlation function, including angular binning effects .. math:: - \xi^{ab}_\pm(\theta) = + \frac{1}{\theta_{\rm max} - \theta_{\rm min}} + \int_{\theta_{\rm min}}^{\theta_{\rm max}} d\theta 2\pi \theta \xi^{ab}_\pm(\theta) = \sum_\ell\frac{2\ell+1}{4\pi}\,(\pm1)^{s_b}\, C^{ab\pm}_\ell\,d^\ell_{s_a,\pm s_b}(\theta) @@ -178,8 +179,10 @@ def correlation_binned(cosmo, *, ell, C_ell, theta_min, theta_max, type='NN', me ell (array): Multipoles corresponding to the input angular power spectrum. C_ell (array): Input angular power spectrum. - theta (:obj:`float` or `array`): Angular separation(s) at which to - calculate the angular correlation function (in degrees). + theta_min (:obj:`float` or `array`): Left edge of the angular separation bin + at which to calculate the angular correlation function (in degrees). + theta_max (:obj:`float` or `array`): Right edge of the angular separation bin + at which to calculate the angular correlation function (in degrees). type (:obj:`str`): Type of correlation function. Choices: ``'NN'`` (0x0), ``'NG'`` (0x2), ``'GG+'`` (2x2, :math:`\xi_+`), ``'GG-'`` (2x2, :math:`\xi_-`), where numbers refer to the spins diff --git a/src/ccl_correlation.c b/src/ccl_correlation.c index d640978f3..d326c940d 100644 --- a/src/ccl_correlation.c +++ b/src/ccl_correlation.c @@ -339,6 +339,7 @@ static void ccl_compute_legendre_polynomial(int corr_type, } +/* A convenience function for the binning kernels */ static inline double dpl_from_array(int n, double x, const double *P) { if (n == 0) { @@ -354,14 +355,13 @@ static void ccl_compute_legendre_polynomial_binned(int corr_type, double *Pl_theta) { int ell; - const double deg2rad = M_PI / 180.0; const double eps = 1e-14; /* x_hi corresponds to the lower angular edge theta_min, * x_lo corresponds to the upper angular edge theta_max. */ - double x_hi = cos(theta_min * deg2rad); - double x_lo = cos(theta_max * deg2rad); + double x_hi = cos(theta_min * M_PI / 180.0); + double x_lo = cos(theta_max * M_PI / 180.0); double dx = x_hi - x_lo; double *P_hi = NULL; @@ -392,7 +392,7 @@ static void ccl_compute_legendre_polynomial_binned(int corr_type, if (corr_type == CCL_CORR_GG) { /* Eq. 20 of https://arxiv.org/abs/2105.13548: - * (2 ell + 1) * \bar P_ell = + * (2 ell + 1) * \bar{P_ell} = * ([P_{ell+1} - P_{ell-1}]_{x_lo}^{x_hi}) / (x_hi - x_lo) */ Pl_theta[0] = 1.0; @@ -585,7 +585,11 @@ static void ccl_tracer_corr_legendre(ccl_cosmology *cosmo, } - +/*--------ROUTINE: ccl_tracer_corr_legendre_binned ------ +TASK: Compute correlation function via Legendre polynomials, including angular binning +INPUT: cosmology, number of theta bins, theta array, tracer 1, tracer 2, i_bessel, boolean + for tapering, vector of tapering limits, correlation vector, angular_cl function. + */ static void ccl_tracer_corr_legendre_binned(ccl_cosmology *cosmo, int n_ell,double *ell,double *cls, int n_theta,double *theta_min,double *theta_max,double *wtheta, @@ -710,7 +714,13 @@ void ccl_correlation(ccl_cosmology *cosmo, } - +/*--------ROUTINE: ccl_correlation_binned ------ +TASK: For a given tracer, get the correlation function. Include angular + binning directly in the kernels +INPUT: cosmology, number of theta values to evaluate = NL, theta vector, + tracer 1, tracer 2, i_bessel, key for tapering, limits of tapering + correlation function. + */ void ccl_correlation_binned(ccl_cosmology *cosmo, int n_ell,double *ell,double *cls, int n_theta,double *theta_min,double *theta_max,double *wtheta, From 27191ea4081a29d4f7cef22673cd09013bf35635 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 17:10:20 -0500 Subject: [PATCH 03/12] Refactored API for binned corrs --- include/ccl_correlation.h | 9 +-- pyccl/correlations.py | 132 +++++++------------------------------- src/ccl_correlation.c | 9 +-- 3 files changed, 31 insertions(+), 119 deletions(-) diff --git a/include/ccl_correlation.h b/include/ccl_correlation.h index aa4fa9078..e5a15d483 100644 --- a/include/ccl_correlation.h +++ b/include/ccl_correlation.h @@ -20,7 +20,7 @@ CCL_BEGIN_DECLS * @param ell : multipoles at which the power spectrum is evaluated * @param cls : input power spectrum * @param n_theta : number of output values of the separation angle (theta) - * @param theta : values of the separation angle in degrees. + * @param theta : values of the separation angle in degrees. If theta_max is passed, this is the left/min edge of the separation bin * @param wtheta : the values of the correlation function at the angles above will be returned in this array, which should be pre-allocated * @param do_taper_cl : * @param taper_cl_limits @@ -34,6 +34,7 @@ CCL_BEGIN_DECLS * - CCL_CORR_LP : spin2-spin2 (xi+) * - CCL_CORR_LM : spin2-spin2 (xi-) * Currently supported spin-0 fields are number counts and CMB lensing. The only spin-2 is currently shear. + * @param theta_max : values of the max/right edge of the separation bin in degrees. Default is None */ void ccl_correlation(ccl_cosmology *cosmo, int n_ell,double *ell,double *cls, @@ -41,12 +42,6 @@ void ccl_correlation(ccl_cosmology *cosmo, int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, int *status); -void ccl_correlation_binned(ccl_cosmology *cosmo, - int n_ell,double *ell,double *cls, - int n_theta,double *theta_min,double *theta_max,double *wtheta, - int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, - int *status); - /** * Computes the 3dcorrelation function (wrapper) * @param cosmo :Cosmological parameters diff --git a/pyccl/correlations.py b/pyccl/correlations.py index 5782cc886..e64d123dd 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -1,4 +1,4 @@ -__all__ = ("CorrelationMethods", "CorrelationTypes", "correlation", "correlation_binned", +__all__ = ("CorrelationMethods", "CorrelationTypes", "correlation", "correlation_3d", "correlation_multipole", "correlation_3dRsd", "correlation_3dRsd_avgmu", "correlation_pi_sigma",) @@ -42,7 +42,7 @@ class CorrelationTypes(Enum): } -def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog'): +def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_max = None): r"""Compute the angular correlation function. .. math:: @@ -87,7 +87,9 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog'): spectrum. C_ell (array): Input angular power spectrum. theta (:obj:`float` or `array`): Angular separation(s) at which to - calculate the angular correlation function (in degrees). + calculate the angular correlation function (in degrees). If theta_max + is passed then this is interpreted as the minimum/left edge in a given + separation bin. type (:obj:`str`): Type of correlation function. Choices: ``'NN'`` (0x0), ``'NG'`` (0x2), ``'GG+'`` (2x2, :math:`\xi_+`), ``'GG-'`` (2x2, :math:`\xi_-`), where numbers refer to the spins @@ -99,6 +101,8 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog'): Choices: ``'Bessel'`` (direct integration over Bessel function), ``'FFTLog'`` (fast integration with FFTLog), ``'Legendre'`` (brute-force sum over Legendre polynomials). + theta_max (:obj:`float` or `array1): Maximum angular separation(s) for the given + separation bin (in degrees). If passed Returns: (:obj:`float` or `array`): Value(s) of the correlation function at the @@ -114,121 +118,33 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog'): if method not in correlation_methods.keys(): raise ValueError(f"Invalid correlation method {method}.") + # Convert scalar input into an array if scalar := isinstance(theta, (int, float)): theta = np.array([theta, ]) - + + if theta_max is not None: + if scalar := isinstance(theta_max, (int, float)): + theta_max = np.array([theta_max, ]) + assert theta.size == theta_max.size, f"The theta and theta_max array have different sizes ({theta.size} != {theta_max.size})" + + assert not np.allclose(theta, theta_max), "theta and theta_max are the same array. Left and right bin edges cannot be the same." + if np.all(np.array(C_ell) == 0): # short-cut and also avoid integration errors wth = np.zeros_like(theta) else: - # Call correlation function - wth, status = lib.correlation_vec(cosmo, ell, C_ell, theta, - correlation_types[type], - correlation_methods[method], - len(theta), status) - check(status, cosmo_in) - if scalar: - return wth[0] - return wth - - -def correlation_binned(cosmo, *, ell, C_ell, theta_min, theta_max, type='NN', method='fftlog'): - r"""Compute the angular correlation function, including angular binning effects - - .. math:: - - \frac{1}{\theta_{\rm max} - \theta_{\rm min}} - \int_{\theta_{\rm min}}^{\theta_{\rm max}} d\theta 2\pi \theta \xi^{ab}_\pm(\theta) = - \sum_\ell\frac{2\ell+1}{4\pi}\,(\pm1)^{s_b}\, - C^{ab\pm}_\ell\,d^\ell_{s_a,\pm s_b}(\theta) - - where :math:`\theta` is the angle between the two fields :math:`a` and - :math:`b` with spins :math:`s_a` and :math:`s_b` after alignement of their - tangential coordinate. :math:`d^\ell_{mm'}` are the Wigner-d matrices and - we have defined the power spectra - - .. math:: - C^{ab\pm}_\ell \equiv - (C^{a_Eb_E}_\ell \pm C^{a_Bb_B}_\ell)+i - (C^{a_Bb_E}_\ell \mp C^{a_Eb_B}_\ell), - - which reduces to the :math:`EE` power spectrum when all :math:`B`-modes - are 0. - - The different spin combinations are: - - * :math:`s_a=s_b=0` e.g. galaxy-galaxy, galaxy-:math:`\kappa` - and :math:`\kappa`-:math:`\kappa` - * :math:`s_a=2`, :math:`s_b=0` e.g. galaxy-shear, and :math:`\kappa`-shear - * :math:`s_a=s_b=2` e.g. shear-shear. - - .. note:: - For scales smaller than :math:`\sim 0.1^{\circ}`, the input power - spectrum should be sampled to sufficienly high :math:`\ell` to ensure - the Hankel transform is well-behaved. The following spline parameters, - related to ``FFTLog``-sampling may also be modified for accuracy: - - * ``ccl.spline_params.ELL_MIN_CORR`` - * ``ccl.spline_params.ELL_MAX_CORR`` - * ``ccl.spline_params.N_ELL_CORR``. - - Args: - cosmo (:class:`~pyccl.cosmology.Cosmology`): A Cosmology object. - ell (array): Multipoles corresponding to the input angular power - spectrum. - C_ell (array): Input angular power spectrum. - theta_min (:obj:`float` or `array`): Left edge of the angular separation bin - at which to calculate the angular correlation function (in degrees). - theta_max (:obj:`float` or `array`): Right edge of the angular separation bin - at which to calculate the angular correlation function (in degrees). - type (:obj:`str`): Type of correlation function. Choices: ``'NN'`` (0x0), - ``'NG'`` (0x2), ``'GG+'`` (2x2, :math:`\xi_+`), - ``'GG-'`` (2x2, :math:`\xi_-`), where numbers refer to the spins - of the two quantities being cross-correlated (see Section 2.4.2 of - the CCL paper). The naming system roughly follows the nomenclature - used in `TreeCorr - `_. - method (:obj:`str`): Method to compute the correlation function. - Choices: ``'Bessel'`` (direct integration over Bessel function), - ``'FFTLog'`` (fast integration with FFTLog), ``'Legendre'`` - (brute-force sum over Legendre polynomials). - - Returns: - (:obj:`float` or `array`): Value(s) of the correlation function at the - input angular separations. - """ # noqa - cosmo_in = cosmo - cosmo = cosmo.cosmo - status = 0 - method = method.lower() - - if type not in correlation_types: - raise ValueError(f"Invalid correlation type {type}.") - - if method not in correlation_methods.keys(): - raise ValueError(f"Invalid correlation method {method}.") - - # Convert scalar input into an array - if scalar := isinstance(theta_min, (int, float)): - theta_min = np.array([theta_min, ]) - - if scalar := isinstance(theta_max, (int, float)): - theta_max = np.array([theta_max, ]) - - if theta_max.size != theta_min.size: - raise ValueError(f"theta_max and theta_min have different sizes ({theta_max.size} != {theta_min.size})") - - if np.all(np.array(C_ell) == 0): - # short-cut and also avoid integration errors - wth = np.zeros_like(theta_max) - else: - # Call correlation function - wth, status = lib.correlation_vec_binned(cosmo, ell, C_ell, theta_min, theta_max, + if theta_max is None: + wth, status = lib.correlation_vec(cosmo, ell, C_ell, theta, + correlation_types[type], + correlation_methods[method], + len(theta), status) + else: + wth, status = lib.correlation_vec_binned(cosmo, ell, C_ell, theta, theta_max, correlation_types[type], correlation_methods[method], - len(theta_max), status) + len(theta), status) check(status, cosmo_in) if scalar: return wth[0] diff --git a/src/ccl_correlation.c b/src/ccl_correlation.c index d326c940d..330bf5af8 100644 --- a/src/ccl_correlation.c +++ b/src/ccl_correlation.c @@ -367,6 +367,7 @@ static void ccl_compute_legendre_polynomial_binned(int corr_type, double *P_hi = NULL; double *P_lo = NULL; + //Initialize with zeros for (ell = 0; ell <= ell_max; ell++) Pl_theta[ell] = 0.0; @@ -378,7 +379,7 @@ static void ccl_compute_legendre_polynomial_binned(int corr_type, dx = x_hi - x_lo; - /* Need up to ell_max + 1 because B2/B5 involve P_{ell+1}. */ + /* Need up to ell_max + 1 because some expressions involve P_{ell+1}. */ P_hi = malloc((ell_max + 2) * sizeof(double)); P_lo = malloc((ell_max + 2) * sizeof(double)); if ((P_hi == NULL) || (P_lo == NULL)) { @@ -463,15 +464,15 @@ static void ccl_compute_legendre_polynomial_binned(int corr_type, if (corr_type == CCL_CORR_LP) { term_hi += 2.0 * (ell - 1.0) * (x_hi * dPl_hi - P_hi[ell]) - - 2.0 * (ell + 2.0) * dPlm1_hi; + -2.0 * (ell + 2.0) * dPlm1_hi; term_lo += 2.0 * (ell - 1.0) * (x_lo * dPl_lo - P_lo[ell]) - 2.0 * (ell + 2.0) * dPlm1_lo; } else { term_hi += -2.0 * (ell - 1.0) * (x_hi * dPl_hi - P_hi[ell]) - + 2.0 * (ell + 2.0) * dPlm1_hi; + +2.0 * (ell + 2.0) * dPlm1_hi; term_lo += -2.0 * (ell - 1.0) * (x_lo * dPl_lo - P_lo[ell]) - + 2.0 * (ell + 2.0) * dPlm1_lo; + +2.0 * (ell + 2.0) * dPlm1_lo; } avgGpm = (term_hi - term_lo) / dx; From 6dfbbb72bbcf8bc69e164038f4a6387ab28bdff7 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 17:14:02 -0500 Subject: [PATCH 04/12] Modify docstring --- pyccl/correlations.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pyccl/correlations.py b/pyccl/correlations.py index e64d123dd..221c98032 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -71,6 +71,10 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m * :math:`s_a=2`, :math:`s_b=0` e.g. galaxy-shear, and :math:`\kappa`-shear * :math:`s_a=s_b=2` e.g. shear-shear. + Bin-averaging, where we predict the average correlation within a given theta-bin + is also implemented, but only for the Legendre method, as the bin-averaging can + be done analytically in that case. + .. note:: For scales smaller than :math:`\sim 0.1^{\circ}`, the input power spectrum should be sampled to sufficienly high :math:`\ell` to ensure @@ -102,7 +106,8 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m ``'FFTLog'`` (fast integration with FFTLog), ``'Legendre'`` (brute-force sum over Legendre polynomials). theta_max (:obj:`float` or `array1): Maximum angular separation(s) for the given - separation bin (in degrees). If passed + separation bin (in degrees). If passed, then the `theta` input is interpreted + as a minimum/left edge of the bin. Returns: (:obj:`float` or `array`): Value(s) of the correlation function at the @@ -130,7 +135,7 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m assert theta.size == theta_max.size, f"The theta and theta_max array have different sizes ({theta.size} != {theta_max.size})" assert not np.allclose(theta, theta_max), "theta and theta_max are the same array. Left and right bin edges cannot be the same." - + if np.all(np.array(C_ell) == 0): # short-cut and also avoid integration errors wth = np.zeros_like(theta) From 0cc5eed3f963ec233ce5a5cf9e4e5bd68d8bd759 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 20:22:16 -0500 Subject: [PATCH 05/12] Fix header --- include/ccl_correlation.h | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/include/ccl_correlation.h b/include/ccl_correlation.h index e5a15d483..8603824f3 100644 --- a/include/ccl_correlation.h +++ b/include/ccl_correlation.h @@ -20,7 +20,7 @@ CCL_BEGIN_DECLS * @param ell : multipoles at which the power spectrum is evaluated * @param cls : input power spectrum * @param n_theta : number of output values of the separation angle (theta) - * @param theta : values of the separation angle in degrees. If theta_max is passed, this is the left/min edge of the separation bin + * @param theta : values of the separation angle in degrees. * @param wtheta : the values of the correlation function at the angles above will be returned in this array, which should be pre-allocated * @param do_taper_cl : * @param taper_cl_limits @@ -34,7 +34,6 @@ CCL_BEGIN_DECLS * - CCL_CORR_LP : spin2-spin2 (xi+) * - CCL_CORR_LM : spin2-spin2 (xi-) * Currently supported spin-0 fields are number counts and CMB lensing. The only spin-2 is currently shear. - * @param theta_max : values of the max/right edge of the separation bin in degrees. Default is None */ void ccl_correlation(ccl_cosmology *cosmo, int n_ell,double *ell,double *cls, @@ -42,6 +41,36 @@ void ccl_correlation(ccl_cosmology *cosmo, int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, int *status); + + /** + * Computes the correlation function (wrapper) + * @param cosmo :Cosmological parameters + * @param n_ell : number of multipoles in the input power spectrum + * @param ell : multipoles at which the power spectrum is evaluated + * @param cls : input power spectrum + * @param n_theta : number of output values of the separation angle (theta) + * @param theta_min : Min/left edge of the separation bin in degrees. + * @param theta_max : Max/right edge of the separation bin in degrees. + * @param wtheta : the values of the correlation function at the angles above will be returned in this array, which should be pre-allocated + * @param do_taper_cl : + * @param taper_cl_limits + * @param flag_method : method to compute the correlation function. Choose between: + * - CCL_CORR_FFTLOG : fast integration with FFTLog + * - CCL_CORR_BESSEL : direct integration over the Bessel function + * - CCL_CORR_LGNDRE : brute-force sum over legendre polynomials + * @param corr_type : type of correlation function. Choose between: + * - CCL_CORR_GG : spin0-spin0 + * - CCL_CORR_GL : spin0-spin2 + * - CCL_CORR_LP : spin2-spin2 (xi+) + * - CCL_CORR_LM : spin2-spin2 (xi-) + * Currently supported spin-0 fields are number counts and CMB lensing. The only spin-2 is currently shear. + */ +void ccl_correlation_binned(ccl_cosmology *cosmo, + int n_ell,double *ell,double *cls, + int n_theta,double *theta_min,double *theta_max,double *wtheta, + int corr_type,int do_taper_cl,double *taper_cl_limits,int flag_method, + int *status); + /** * Computes the 3dcorrelation function (wrapper) * @param cosmo :Cosmological parameters From 397aee89dc1aeaaf7baa3d5035cd1c685f1eedb1 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 20:33:05 -0500 Subject: [PATCH 06/12] Fix assertion --- pyccl/correlations.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyccl/correlations.py b/pyccl/correlations.py index 221c98032..0e96b6108 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -133,8 +133,7 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m if scalar := isinstance(theta_max, (int, float)): theta_max = np.array([theta_max, ]) assert theta.size == theta_max.size, f"The theta and theta_max array have different sizes ({theta.size} != {theta_max.size})" - - assert not np.allclose(theta, theta_max), "theta and theta_max are the same array. Left and right bin edges cannot be the same." + assert not np.allclose(theta, theta_max), "theta and theta_max are the same array. Left and right bin edges cannot be the same." if np.all(np.array(C_ell) == 0): # short-cut and also avoid integration errors From f9d98007c7556c6da43a3b61ce463260e5c2dc70 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 20:34:14 -0500 Subject: [PATCH 07/12] Simplify flag --- pyccl/correlations.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyccl/correlations.py b/pyccl/correlations.py index 0e96b6108..d10cf2ec1 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -129,8 +129,8 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m if scalar := isinstance(theta, (int, float)): theta = np.array([theta, ]) - if theta_max is not None: - if scalar := isinstance(theta_max, (int, float)): + if binned := theta_max is not None: + if isinstance(theta_max, (int, float)): theta_max = np.array([theta_max, ]) assert theta.size == theta_max.size, f"The theta and theta_max array have different sizes ({theta.size} != {theta_max.size})" assert not np.allclose(theta, theta_max), "theta and theta_max are the same array. Left and right bin edges cannot be the same." @@ -139,7 +139,7 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m # short-cut and also avoid integration errors wth = np.zeros_like(theta) else: - if theta_max is None: + if binned: wth, status = lib.correlation_vec(cosmo, ell, C_ell, theta, correlation_types[type], correlation_methods[method], From f5dba27a48327c0c4cc13e72c7517dbef947d988 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 20:59:14 -0500 Subject: [PATCH 08/12] Fix linting --- pyccl/correlations.py | 44 ++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/pyccl/correlations.py b/pyccl/correlations.py index d10cf2ec1..c4e431fd0 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -42,7 +42,8 @@ class CorrelationTypes(Enum): } -def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_max = None): +def correlation(cosmo, *, ell, C_ell, theta, + type='NN', method='fftlog', theta_max=None): r"""Compute the angular correlation function. .. math:: @@ -123,32 +124,45 @@ def correlation(cosmo, *, ell, C_ell, theta, type='NN', method='fftlog', theta_m if method not in correlation_methods.keys(): raise ValueError(f"Invalid correlation method {method}.") - # Convert scalar input into an array if scalar := isinstance(theta, (int, float)): theta = np.array([theta, ]) - - if binned := theta_max is not None: + + if theta_max is not None: if isinstance(theta_max, (int, float)): theta_max = np.array([theta_max, ]) - assert theta.size == theta_max.size, f"The theta and theta_max array have different sizes ({theta.size} != {theta_max.size})" - assert not np.allclose(theta, theta_max), "theta and theta_max are the same array. Left and right bin edges cannot be the same." + + assert theta.size == theta_max.size, \ + (f"theta and theta_max have different sizes" + f"({theta.size} != {theta_max.size})") + + assert not np.allclose(theta, theta_max), \ + "theta_min cannot be the same as theta_max" if np.all(np.array(C_ell) == 0): # short-cut and also avoid integration errors wth = np.zeros_like(theta) else: - if binned: - wth, status = lib.correlation_vec(cosmo, ell, C_ell, theta, - correlation_types[type], - correlation_methods[method], - len(theta), status) + if theta_max is None: + wth, status = lib.correlation_vec( + cosmo, ell, C_ell, theta, + correlation_types[type], + correlation_methods[method], + len(theta), status) else: - wth, status = lib.correlation_vec_binned(cosmo, ell, C_ell, theta, theta_max, - correlation_types[type], - correlation_methods[method], - len(theta), status) + wth, status = lib.correlation_vec_binned( + cosmo, + ell, + C_ell, + theta, + theta_max, + correlation_types[type], + correlation_methods[method], + len(theta), + status, + ) + check(status, cosmo_in) if scalar: return wth[0] From d4555fd3a0a702d6312b4b8b4d5ac951c4fbd1ef Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 21:29:51 -0500 Subject: [PATCH 09/12] Update tests to improve coveralls --- pyccl/tests/test_correlations.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pyccl/tests/test_correlations.py b/pyccl/tests/test_correlations.py index c421ec5b7..ffdd8c5cc 100644 --- a/pyccl/tests/test_correlations.py +++ b/pyccl/tests/test_correlations.py @@ -29,6 +29,14 @@ def test_correlation_smoke(method): assert np.all(np.isfinite(corr)) assert np.shape(corr) == np.shape(tval) + if method == 'legendre': + for tval in [t_arr, t_lst, t_scl, t_int]: + corr = ccl.correlation( + COSMO, ell=ell, C_ell=cl, theta=tval, type='NN', method=method, + theta_max=tval*2) + assert np.all(np.isfinite(corr)) + assert np.shape(corr) == np.shape(tval) + @pytest.mark.parametrize( 'rval', From 6ba04893713b3dc88b2ed7815bb406dc5d9265db Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Wed, 20 May 2026 21:40:04 -0500 Subject: [PATCH 10/12] Fix test --- pyccl/tests/test_correlations.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pyccl/tests/test_correlations.py b/pyccl/tests/test_correlations.py index ffdd8c5cc..615d4105d 100644 --- a/pyccl/tests/test_correlations.py +++ b/pyccl/tests/test_correlations.py @@ -31,9 +31,15 @@ def test_correlation_smoke(method): if method == 'legendre': for tval in [t_arr, t_lst, t_scl, t_int]: + + if isinstance(tval, list): + tmax = [t*2 for t in tval] + else: + tmax = tval*2 + corr = ccl.correlation( COSMO, ell=ell, C_ell=cl, theta=tval, type='NN', method=method, - theta_max=tval*2) + theta_max=tmax) assert np.all(np.isfinite(corr)) assert np.shape(corr) == np.shape(tval) From d9af1a8da2ea915c7db59db7d09821e79f8fc030 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Fri, 22 May 2026 14:38:35 -0500 Subject: [PATCH 11/12] Add benchmark and doc --- benchmarks/data/curved_sky_cocoa.npz | Bin 0 -> 210614 bytes benchmarks/test_correlation.py | 42 +++++++++++++++++++++++++++ pyccl/correlations.py | 8 +++-- 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 benchmarks/data/curved_sky_cocoa.npz diff --git a/benchmarks/data/curved_sky_cocoa.npz b/benchmarks/data/curved_sky_cocoa.npz new file mode 100644 index 0000000000000000000000000000000000000000..2bf23e001df9f20dfad271a3945a0cd287085a30 GIT binary patch literal 210614 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�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�I&$+`bh%rlrUj?FLMZc{R0?q;(^ohCA36sxsy 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

P$v1`0j+T)7&~8$Xc>c5E19#a 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 z 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≻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 Q2cjYgBVLL_VGo4;Keu3TCjbBd literal 0 HcmV?d00001 diff --git a/benchmarks/test_correlation.py b/benchmarks/test_correlation.py index cdc74efb3..07ee4300a 100644 --- a/benchmarks/test_correlation.py +++ b/benchmarks/test_correlation.py @@ -229,3 +229,45 @@ def test_xi(set_up, corr_method, t1, t2, bm, er, kind, pref): xi *= pref assert np.all(np.fabs(xi - bms[bm]) < ers[er] * errfac) + + + +def test_correlation_curvedsky(): + + data = np.load(os.path.dirname(__file__) + "/data/curved_sky_cocoa.npz") + COSMO = ccl.Cosmology(**data['cosmo_setup']) + + nsrcs = 5 + nlens = 10 + + theta_b = data['theta_b'] + theta_u = theta_b[1:] + theta_l = theta_b[:-1] + ell_hr = np.arange(60000) + + xip, xim, gammat, wtheta = [],[],[],[] + + for i in range(nsrcs*(nsrcs+1)//2): + C_ss_i = np.interp(ell_hr, data['ell'], data['C_ss'][i]) + xip.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_ss_i, theta=theta_l, theta_max=theta_u, type='GG+', method='Legendre')) + xim.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_ss_i, theta=theta_l, theta_max=theta_u, type='GG-', method='Legendre')) + + for i in range(nsrcs*nlens): + C_gs_i = np.interp(ell_hr, data['ell'], data['C_gs'][i]) + gammat.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_gs_i, theta=theta_l, theta_max=theta_u, type='NG', method='Legendre')) + + + for i in range(nlens): + C_gg_i = np.interp(ell_hr, data['ell'], data['C_gg'][i]) + wtheta.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_gg_i, theta=theta_l, theta_max=theta_u, type='NN', method='Legendre')) + + xip = np.concatenate(xip) + xim = np.concatenate(xim) + gammat = np.concatenate(gammat) + wtheta = np.concatenate(wtheta) + dv_ccl = np.concatenate((xip,xim,gammat,wtheta)) + dv_cca = data['dv_cocoa'] + + diff = dv_ccl/dv_cca - 1 + + assert np.max(np.abs(diff)) < 0.01 diff --git a/pyccl/correlations.py b/pyccl/correlations.py index c4e431fd0..e93b66349 100644 --- a/pyccl/correlations.py +++ b/pyccl/correlations.py @@ -72,9 +72,11 @@ def correlation(cosmo, *, ell, C_ell, theta, * :math:`s_a=2`, :math:`s_b=0` e.g. galaxy-shear, and :math:`\kappa`-shear * :math:`s_a=s_b=2` e.g. shear-shear. - Bin-averaging, where we predict the average correlation within a given theta-bin - is also implemented, but only for the Legendre method, as the bin-averaging can - be done analytically in that case. + Bin-averaging, where we predict the average correlation within a given theta-bin, + is also implemented. This is only available for the Legendre method, as the + bin-averaging can be done analytically in that case. The method we use for the + NN, NG, and GG+/- correlations follow Eq 65, B1, and B5, respectively, from + arxiv:2012.08568 .. note:: For scales smaller than :math:`\sim 0.1^{\circ}`, the input power From 84377096425dfdd587f754f2408fd221959d6167 Mon Sep 17 00:00:00 2001 From: Dhayaa Anbajagane Date: Fri, 22 May 2026 14:44:46 -0500 Subject: [PATCH 12/12] flake8 compliance --- benchmarks/test_correlation.py | 40 ++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/benchmarks/test_correlation.py b/benchmarks/test_correlation.py index 07ee4300a..8ded491dc 100644 --- a/benchmarks/test_correlation.py +++ b/benchmarks/test_correlation.py @@ -231,43 +231,45 @@ def test_xi(set_up, corr_method, t1, t2, bm, er, kind, pref): assert np.all(np.fabs(xi - bms[bm]) < ers[er] * errfac) - def test_correlation_curvedsky(): - data = np.load(os.path.dirname(__file__) + "/data/curved_sky_cocoa.npz") - COSMO = ccl.Cosmology(**data['cosmo_setup']) + data = np.load(os.path.dirname(__file__) + + "/data/curved_sky_cocoa.npz", allow_pickle=True) + COSMO = ccl.Cosmology(**data['cosmo_setup'][()]) nsrcs = 5 nlens = 10 - + theta_b = data['theta_b'] theta_u = theta_b[1:] theta_l = theta_b[:-1] - ell_hr = np.arange(60000) + ell_hr = np.arange(60000) + + inp = dict(ell=ell_hr, theta=theta_l, theta_max=theta_u, + method='Legendre') - xip, xim, gammat, wtheta = [],[],[],[] - - for i in range(nsrcs*(nsrcs+1)//2): + xip, xim, gammat, wtheta = [], [], [], [] + + for i in range(nsrcs*(nsrcs+1)//2): C_ss_i = np.interp(ell_hr, data['ell'], data['C_ss'][i]) - xip.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_ss_i, theta=theta_l, theta_max=theta_u, type='GG+', method='Legendre')) - xim.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_ss_i, theta=theta_l, theta_max=theta_u, type='GG-', method='Legendre')) - + xip.append(ccl.correlation(COSMO, C_ell=C_ss_i, type='GG+', **inp)) + xim.append(ccl.correlation(COSMO, C_ell=C_ss_i, type='GG-', **inp)) + for i in range(nsrcs*nlens): C_gs_i = np.interp(ell_hr, data['ell'], data['C_gs'][i]) - gammat.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_gs_i, theta=theta_l, theta_max=theta_u, type='NG', method='Legendre')) - + gammat.append(ccl.correlation(COSMO, C_ell=C_gs_i, type='NG', **inp)) for i in range(nlens): C_gg_i = np.interp(ell_hr, data['ell'], data['C_gg'][i]) - wtheta.append(ccl.correlation(COSMO, ell=ell_hr, C_ell=C_gg_i, theta=theta_l, theta_max=theta_u, type='NN', method='Legendre')) + wtheta.append(ccl.correlation(COSMO, C_ell=C_gg_i, type='NN', **inp)) - xip = np.concatenate(xip) - xim = np.concatenate(xim) - gammat = np.concatenate(gammat) + xip = np.concatenate(xip) + xim = np.concatenate(xim) + gammat = np.concatenate(gammat) wtheta = np.concatenate(wtheta) - dv_ccl = np.concatenate((xip,xim,gammat,wtheta)) + dv_ccl = np.concatenate((xip, xim, gammat, wtheta)) dv_cca = data['dv_cocoa'] - diff = dv_ccl/dv_cca - 1 + diff = dv_ccl/dv_cca - 1 assert np.max(np.abs(diff)) < 0.01