3   API Reference

See 2   Usage for how to use these functions for common tasks.

3.1   qe – Quadratic Estimators

symlens.qe.A_l(shape, wcs, feed_dict, estimator, XY, xmask=None, ymask=None, field_names=None, kmask=None)[source]

Returns the normalization corresponding to a pre-defined mode-coupling estimator.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • estimator (str) – The name of a pre-defined mode-coupling estimator. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
Returns:

Al – The 2D normalization for the estimator.

Return type:

(Ny,Nx) ndarray

symlens.qe.A_l_custom(shape, wcs, feed_dict, f, F, xmask=None, ymask=None, groups=None, kmask=None)[source]

Returns the 2D normalization corresponding to a custom mode-coupling estimator.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • f (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response. See the Usage guide for details. If this is specified, the argument F is required, and the arguments estimator, XY and field_names are ignored.
  • F (sympy.core.symbol.Symbol , optional) – A sympy expression containing the estimator filter. See the Usage guide for details.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • xname (str,optional) – The name of the key in feed_dict where the X map in the XY quadratic estimator is stored. Defaults to X_l1.
  • yname (str,optional) – The name of the key in feed_dict where the Y map in the XY quadratic estimator is stored. Defaults to Y_l2.
  • groups (list,optional) – Group all terms in the normalization calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

Al – The 2D normalization for the estimator.

Return type:

(Ny,Nx) ndarray

symlens.qe.N_l(shape, wcs, feed_dict, estimator, XY, xmask=None, ymask=None, Al=None, field_names=None, kmask=None, power_name='t')[source]

Returns the 2D noise corresponding to a pre-defined mode-coupling estimator NOT assuming that it is optimal. This involves 2 integrals, unless a pre-calculated normalization Al is provided, in which case only 1 integral needs to be evaluated.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • estimator (str) – The name of a pre-defined mode-coupling estimator. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • Al ((Ny,Nx) ndarray, optional) – Pre-calculated normalization for the estimator. Reduces the number of integrals calculated to 1 if provided, else calculates 2 integrals.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
Returns:

Nl – The 2D noise for the estimator.

Return type:

(Ny,Nx) ndarray

symlens.qe.N_l_cross(shape, wcs, feed_dict, alpha_estimator, alpha_XY, beta_estimator, beta_XY, xmask=None, ymask=None, Aalpha=None, Abeta=None, field_names_alpha=None, field_names_beta=None, kmask=None, skip_filter_field_names=False, power_name='t')[source]

Returns the 2D cross-covariance between two pre-defined mode-coupling estimators. This involves 3 integrals, unless pre-calculated normalizations Al are provided.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • alpha_estimator (str) – The name of the first pre-defined mode-coupling estimator. If this is provided, the argument XY is required and the arguments f, F, and groups are ignored. e.g. “hu_ok”, “hdv” and “shear”.
  • beta_estimator (str,optional) – The name of the second pre-defined mode-coupling estimator. If this is provided, the argument XY is required and the arguments f, F, and groups are ignored. e.g. “hu_ok”, “hdv” and “shear”.
  • alpha_XY (str,optional) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • beta_XY (str,optional) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • Aalpha ((Ny,Nx) ndarray, optional) – Pre-calculated normalization for the first estimator. This is calculated if not provided
  • Abeta ((Ny,Nx) ndarray, optional) – Pre-calculated normalization for the second estimator. This is calculated if not provided
  • field_names_alpha (2 element list, optional) – Providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • field_names_beta (2 element list, optional) – As above, but for the second beta estimator.
Returns:

Nl – The requested 2D cross-covariance.

Return type:

(Ny,Nx) ndarray

symlens.qe.N_l_cross_custom(shape, wcs, feed_dict, alpha_XY, beta_XY, Falpha, Fbeta, Fbeta_rev, xmask=None, ymask=None, field_names_alpha=None, field_names_beta=None, falpha=None, fbeta=None, Aalpha=None, Abeta=None, groups=None, kmask=None, power_name='t')[source]

Returns the 2D cross-covariance between two custom mode-coupling estimators. This involves 3 integrals, unless pre-calculated normalizations Al are provided.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • alpha_XY (str) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • beta_XY (str) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • falpha (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response for the first estimator alpha. See the Usage guide for details.
  • fbeta (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response for the second estimator beta. See the Usage guide for details.
  • Falpha (sympy.core.symbol.Symbol) – A sympy expression containing the first alpha estimator filter. See the Usage guide for details.
  • Fbeta (sympy.core.symbol.Symbol) – A sympy expression containing the second beta estimator filter. See the Usage guide for details.
  • Fbeta_rev (sympy.core.symbol.Symbol) – Same as above but with l1 and l2 swapped.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names_alpha (2 element list, optional) – Providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • field_names_beta (2 element list, optional) – As above, but for the second beta estimator.
  • groups (list,optional) – Group all terms in the normalization calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
  • Aalpha ((Ny,Nx) ndarray, optional) – Pre-calculated normalization for the first estimator. This is calculated if not provided
  • Abeta ((Ny,Nx) ndarray, optional) – Pre-calculated normalization for the second estimator. This is calculated if not provided
Returns:

Nl – The requested 2D cross-covariance.

Return type:

(Ny,Nx) ndarray

symlens.qe.N_l_optimal(shape, wcs, feed_dict, estimator, XY, xmask=None, ymask=None, field_names=None, kmask=None)[source]

Returns the 2D noise corresponding to a pre-defined mode-coupling estimator but assuming that it is optimal, i.e. Nl = A_L L^2 / 4

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • estimator (str) – The name of a pre-defined mode-coupling estimator. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
Returns:

Nl – The 2D noise for the estimator.

Return type:

(Ny,Nx) ndarray

symlens.qe.N_l_optimal_custom(shape, wcs, feed_dict, f, F, xmask=None, ymask=None, groups=None, kmask=None)[source]

Returns the 2D noise corresponding to a custom mode-coupling estimator but assuming that it is optimal, i.e. Nl = A_L L^2 / 4

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • f (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response. See the Usage guide for details. If this is specified, the argument F is required, and the arguments estimator, XY and field_names are ignored.
  • F (sympy.core.symbol.Symbol , optional) – A sympy expression containing the estimator filter. See the Usage guide for details.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • xname (str,optional) – The name of the key in feed_dict where the X map in the XY quadratic estimator is stored. Defaults to X_l1.
  • yname (str,optional) – The name of the key in feed_dict where the Y map in the XY quadratic estimator is stored. Defaults to Y_l2.
  • groups (list,optional) – Group all terms in the normalization calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

Nl – The 2D noise for the estimator.

Return type:

(Ny,Nx) ndarray

class symlens.qe.QE(shape, wcs, feed_dict, estimator=None, XY=None, f=None, F=None, xmask=None, ymask=None, field_names=None, groups=None, kmask=None)[source]

Construct a quadratic estimator such that the normalization is pre-calculated and reused.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below).
  • estimator (str,optional) – The name of a pre-defined mode-coupling estimator. If this is provided, the argument XY is required and the arguments f, F, and groups are ignored. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str,optional) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • f (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response. See the Usage guide for details. If this is specified, the argument F is required, and the arguments estimator, XY and field_names are ignored.
  • F (sympy.core.symbol.Symbol , optional) – A sympy expression containing the estimator filter. See the Usage guide for details.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • groups (list,optional) – Group all terms in the normalization such that they have common factors of the provided list of expressions to reduce the number of FFTs.
reconstruct(feed_dict, xname='X_l1', yname='Y_l2', groups=None, physical_units=True)[source]

Returns a normalized reconstruction corresponding to the initialized mode-coupling estimator.

Parameters:
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • xname (str,optional) – The name of the key in feed_dict where the X map in the XY quadratic estimator is stored. Defaults to X_l1.
  • yname (str,optional) – The name of the key in feed_dict where the Y map in the XY quadratic estimator is stored. Defaults to Y_l2.
  • groups (list,optional) – Group all terms in the reconstruction calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

krecon – The normalized Fourier space reconstruction in physical units (not pixel units).

Return type:

(Ny,Nx) ndarray

symlens.qe.RDN0_analytic(shape, wcs, feed_dict, alpha_estimator, alpha_XY, beta_estimator, beta_XY, split_estimator=False, Aalpha=None, Abeta=None, xmask=None, ymask=None, kmask=None, field_names_alpha=None, field_names_beta=None, skip_filter_field_names=False)[source]

Often lovingly called the `dumb’ N0 by ACT lensers, this is the analytic expression for the realization-dependependent N0 correction when the noise is isotropic and no mask is present.

feed_dict should have dC_T_T, etc. the realized total data power spectrum. tC_T_T, etc. should be the total coadd power spectrum used in filters uC_T_T, etc. the usual theory spectra for the CMB signal. nC_T_T etc. should be the expected total theory power spectrum But if split_estimator is true: dC_T_T, etc. should be the realized cross-power average. nC_T_T etc. should be the expected cross-power, which is usually nC without the instrument noise.

symlens.qe.RDN0_analytic_generic(shape, wcs, feed_dict, alpha_XY, beta_XY, Falpha, Fbeta, Fbeta_rev, falpha=None, fbeta=None, Aalpha=None, Abeta=None, xmask=None, ymask=None, kmask=None, field_names_alpha=None, field_names_beta=None, split_estimator=False, groups=None)[source]

Often lovingly called the `dumb’ N0 by ACT lensers, this is the analytic expression for the realization-dependependent N0 correction when the noise is isotropic and no mask is present.

feed_dict should have dC_T_T, etc. the realized total data power spectrum. tC_T_T, etc. should be the total coadd power spectrum used in filters uC_T_T, etc. the usual theory spectra for the CMB signal. nC_T_T etc. should be the expected total theory power spectrum But if split_estimator is true: dC_T_T, etc. should be the realized cross-power average. nC_T_T etc. should be the expected cross-power, which is usually nC without the instrument noise.

symlens.qe.cross_integral_custom(shape, wcs, feed_dict, alpha_XY, beta_XY, Falpha, Fbeta, Fbeta_rev, xmask=None, ymask=None, field_names_alpha=None, field_names_beta=None, groups=None, power_name='t')[source]

Calculates the integral

\int \frac{d^2 \vec{l}_1 }{ (2\pi)^2 }  F_{\alpha}(\vec{l}_1,\vec{l}_2) (F_{\beta}(\vec{l}_1,\vec{l}_2) C^{ac}_{l_1} C^{bd}_{l_2}+ F_{\beta}(\vec{l}_2,\vec{l}_1) C^{ad}_{l_1} C^{bc}_{l_2})

where alpha_XY = “ab” beta_XY = “cd”

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • alpha_XY (str) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • beta_XY (str) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • Falpha (sympy.core.symbol.Symbol) – A sympy expression containing the first alpha estimator filter. See the Usage guide for details.
  • Fbeta (sympy.core.symbol.Symbol) – A sympy expression containing the second beta estimator filter. See the Usage guide for details.
  • Fbeta_rev (sympy.core.symbol.Symbol) – Same as above but with l1 and l2 swapped.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names_alpha (2 element list, optional) – Providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • field_names_beta (2 element list, optional) – As above, but for the second beta estimator.
  • groups (list,optional) – Group all terms in the normalization calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

integral – Returns the integral described above.

Return type:

(Ny,Nx) ndarray

symlens.qe.generic_cross_integral(shape, wcs, feed_dict, alpha_XY, beta_XY, Falpha, Fbeta, Fbeta_rev, Dexpr1, Dexpr2, xmask=None, ymask=None, field_names_alpha=None, field_names_beta=None, groups=None)[source]

Calculates the integral

\int \frac{d^2 \vec{l}_1 }{ (2\pi)^2 }  F_{\alpha}(\vec{l}_1,\vec{l}_2) (F_{\beta}(\vec{l}_1,\vec{l}_2) D_1({l_1},{l_2})+ F_{\beta}(\vec{l}_2,\vec{l}_1) D_2({l_1},{l_2}))

where alpha_XY = “ab” beta_XY = “cd”

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • alpha_XY (str) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • beta_XY (str) – The XY pair for the first estimator. Typical examples include “TT” and “EB”.
  • Falpha (sympy.core.symbol.Symbol) – A sympy expression containing the first alpha estimator filter. See the Usage guide for details.
  • Fbeta (sympy.core.symbol.Symbol) – A sympy expression containing the second beta estimator filter. See the Usage guide for details.
  • Fbeta_rev (sympy.core.symbol.Symbol) – Same as above but with l1 and l2 swapped.
  • Dexpr1 (sympy.core.symbol.Symbol) – A sympy expression entering in the generic integral.
  • Dexpr2 (sympy.core.symbol.Symbol) – A second sympy expression entering in the generic integral.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names_alpha (2 element list, optional) – Providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • field_names_beta (2 element list, optional) – As above, but for the second beta estimator.
  • groups (list,optional) – Group all terms in the normalization calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

integral – Returns the integral described above.

Return type:

(Ny,Nx) ndarray

symlens.qe.generic_noise_expression(cross_integral, shape, wcs, feed_dict, falpha, fbeta, Falpha, Fbeta, xmask=None, ymask=None, kmask=None, Aalpha=None, Abeta=None)[source]

returns (1/4) A_alpha * A_beta * cross_integral

symlens.qe.get_mc_expressions(estimator, XY, field_names=None, estimator_to_harden='hu_ok')[source]

Pre-defined mode coupling expressions. Returns f(l1,l2), F(l1,l2), F(l2,l1). If a list field_names is provided containing two strings, then “total power” spectra are customized to potentially be different and feed_dict will need to have more values.

Parameters:
  • estimator (str) – The name of a pre-defined mode-coupling estimator. If this is provided, the argument XY is required and the arguments f, F, and groups are ignored. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more general noise correlations.
Returns:

  • f (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response. See the Usage guide for details.
  • F (sympy.core.symbol.Symbol , optional) – A sympy expression containing the estimator filter.
  • Fr (sympy.core.symbol.Symbol , optional) – A sympy expression containing the estimator filter but with l1 and l2 swapped.

symlens.qe.lensing_response_f(XY, rev=False, curl=False)[source]

Returns the mode-coupling response f(l1,l2) for CMB lensing.

Parameters:
  • XY (str) – The XY pair for the requested estimator. This must belong to one of TT, EE, TE, ET, EB or TB.
  • rev (boolean, optional) – Whether to swap l1 and l2. Defaults to False.
Returns:

f – A sympy expression containing the mode-coupling response. See the Usage guide for details.

Return type:

sympy.core.symbol.Symbol , optional

symlens.qe.reconstruct(shape, wcs, feed_dict, estimator=None, XY=None, f=None, F=None, xmask=None, ymask=None, field_names=None, norm_groups=None, est_groups=None, xname='X_l1', yname='Y_l2', kmask=None, physical_units=True)[source]

Returns a normalized reconstruction corresponding to specified mode-coupling estimator.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • estimator (str,optional) – The name of a pre-defined mode-coupling estimator. If this is provided, the argument XY is required and the arguments f, F, and groups are ignored. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str,optional) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • f (sympy.core.symbol.Symbol , optional) – A sympy expression containing the mode-coupling response. See the Usage guide for details. If this is specified, the argument F is required, and the arguments estimator, XY and field_names are ignored.
  • F (sympy.core.symbol.Symbol , optional) – A sympy expression containing the estimator filter. See the Usage guide for details.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • norm_groups (list,optional) – Group all terms in the normalization such that they have common factors of the provided list of expressions to reduce the number of FFTs.
  • xname (str,optional) – The name of the key in feed_dict where the X map in the XY quadratic estimator is stored. Defaults to X_l1.
  • yname (str,optional) – The name of the key in feed_dict where the Y map in the XY quadratic estimator is stored. Defaults to Y_l2.
  • est_groups (list,optional) – Group all terms in the reconstruction calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

krecon – The normalized Fourier space reconstruction in physical units (not pixel units).

Return type:

(Ny,Nx) ndarray

See also

QE()
A class with which the slow normalization can be pre-calculated and repeated estimation can be performed on similar datasets.
symlens.qe.rotation_response_f(XY, rev=False)[source]

Returns the mode-coupling response f(l1,l2) for CMB rotation.

Parameters:
  • XY (str) – The XY pair for the requested estimator. This must belong to one of EE, TE, ET, EB or TB.
  • rev (boolean, optional) – Whether to swap l1 and l2. Defaults to False.
Returns:

f – A sympy expression containing the mode-coupling response. See the Usage guide for details.

Return type:

sympy.core.symbol.Symbol

symlens.qe.unnormalized_quadratic_estimator(shape, wcs, feed_dict, estimator, XY, xname='X_l1', yname='Y_l2', field_names=None, xmask=None, ymask=None, physical_units=True)[source]

Returns a normalized reconstruction corresponding to specified pre-defined mode-coupling estimator.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • estimator (str,optional) – The name of a pre-defined mode-coupling estimator. If this is provided, the argument XY is required and the arguments f, F, and groups are ignored. e.g. “hu_ok”, “hdv” and “shear”.
  • XY (str,optional) – The XY pair for the requested estimator. Typical examples include “TT” and “EB”.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • field_names (2 element list, optional) – When a pre-defined mode-coupling estimator is used, providing a list field_names modifies the total power spectra variable names that feed_dict expects. Typically, names like “tC_T_T” and “tC_T_E” are expected. But if field_names is [“E1”,”E2”] for example, variable names like tC_E1_T_E1_T, tC_E2_T_E2_T, tC_E1_T_E2_T, tC_E2_T_E1_T are expected to be present in feed_dict. This allows for more custom noise correlations.
  • xname (str,optional) – The name of the key in feed_dict where the X map in the XY quadratic estimator is stored. Defaults to X_l1.
  • yname (str,optional) – The name of the key in feed_dict where the Y map in the XY quadratic estimator is stored. Defaults to Y_l2.
Returns:

krecon – The normalized Fourier space reconstruction in physical units (not pixel units).

Return type:

(Ny,Nx) ndarray

See also

reconstruct()
Get the properly normalized quadratic estimator reconstruction.
QE()
A class with which the slow normalization can be pre-calculated and repeated estimation can be performed on similar datasets.
symlens.qe.unnormalized_quadratic_estimator_custom(shape, wcs, feed_dict, F, xname='X_l1', yname='Y_l2', xmask=None, ymask=None, groups=None, physical_units=True)[source]

Returns a normalized reconstruction corresponding to a custom mode-coupling estimator.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays used in the normalization and reconstruction calculation. When using pre-defined mode-coupling estimators, typical keys that must be present are ‘uC_X_Y’ and ‘tC_X_Y’, where X and Y depend on the requested estimator XY (see below). This feed_dict must also contain the keys with name xname and yname (see below), which contain the 2D maps X and Y for the data from which the quadratic estimate is constructed.
  • F (sympy.core.symbol.Symbol) – A sympy expression containing the estimator filter. See the Usage guide for details.
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • xname (str,optional) – The name of the key in feed_dict where the X map in the XY quadratic estimator is stored. Defaults to X_l1.
  • yname (str,optional) – The name of the key in feed_dict where the Y map in the XY quadratic estimator is stored. Defaults to Y_l2.
  • groups (list,optional) – Group all terms in the reconstruction calclulation such that they have common factors of the provided list of expressions to reduce the number of FFTs.
Returns:

krecon – The normalized Fourier space reconstruction in physical units (not pixel units).

Return type:

(Ny,Nx) ndarray

See also

QE()
A class with which the slow normalization can be pre-calculated and repeated estimation can be performed on similar datasets.

3.2   factorize – Core utilties for factorization and integration

symlens.factorize.factorize_2d_convolution_integral(expr, l1funcs=None, l2funcs=None, groups=None, validate=True)[source]

Reduce a sympy expression of variables l1x,l1y,l2x,l2y,l1,l2 into a sum of products of factors that depend only on vec(l1) and vec(l2) and neither, each. If the expression appeared as the integrand in an integral over vec(l1), where vec(l2) = vec(L) - vec(l1) then this reduction allows one to evaluate the integral as a function of vec(L) using FFTs instead of as a convolution.

Parameters:
  • expr (sympy.core.symbol.Symbol) – The full Sympy expression to reduce to sum of products of functions of l1 and l2.
  • l1funcs (list) – List of symbols that are functions of l1
  • l2funcs (list) – List of symbols that are functions of l2
  • groups (list,optional) – Group all terms such that they have common factors of the provided list of expressions to reduce the number of FFTs.
  • validate (boolean,optional) – Whether to check that the final expression and the original agree. Defaults to True.
Returns:

  • terms
  • unique_l1s
  • unique_l2s
  • ogroups
  • ogroup_weights
  • ogroup_symbols

symlens.factorize.integrate(shape, wcs, feed_dict, expr, xmask=None, ymask=None, cache=True, validate=True, groups=None, physical_units=True)[source]

Integrate an arbitrary expression after factorizing it.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • feed_dict (dict) – Mapping from names of custom symbols to numpy arrays.
  • expr (sympy.core.symbol.Symbol) – A sympy expression containing recognized symbols (see docs)
  • xmask ((Ny,Nx) ndarray,optional) – Fourier space 2D mask for the l1 part of the integral. Defaults to ones.
  • ymask ((Ny,Nx) ndarray, optional) – Fourier space 2D mask for the l2 part of the integral. Defaults to ones.
  • cache (boolean, optional) – Whether to store in memory and reuse repeated terms. Defaults to true.
  • validate (boolean,optional) – Whether to check that the final expression and the original agree. Defaults to True.
  • groups (list,optional) – Group all terms such that they have common factors of the provided list of expressions to reduce the number of FFTs.
  • physical_units (boolean,optional) – Whether the input is in pixel units or not.
Returns:

result – The numerical result of the integration of the expression after factorization.

Return type:

(Ny,Nx) ndarray

3.3   utils - General utilities

symlens.utils.evaluate(symbolic_term, feed_dict)[source]

Convert a symbolic term into a numerical result by using values for the symbols from a dictionary.

symbolic_term: sympy expression feed_dict: dictionary mapping names of symbols to numpy arrays

symlens.utils.gauss_beam(ells, fwhm)[source]

Return a Gaussian beam transfer function for the given ells.

Parameters:
  • ells (ndarray) – Any numpy array containing the multipoles at which the beam transfer function is requested.
  • fwhm (float) – The beam FWHM in arcminutes.
Returns:

output – An array of the same shape as ells containing the Gaussian beam transfer function for those multipoles.

Return type:

ndarray

symlens.utils.interp(x, y, bounds_error=False, fill_value=0.0, **kwargs)[source]

Return a function that interpolates (x,y). This wraps around scipy.interpolate.interp1d but by defaulting to zero filling outside bounds.

Docstring copied from scipy. Interpolate a 1-D function. x and y are arrays of values used to approximate some function f: y = f(x). This class returns a function whose call method uses interpolation to find the value of new points. Note that calling interp1d with NaNs present in input values results in undefined behaviour. :param x: A 1-D array of real values. :type x: (N,) array_like :param y: A N-D array of real values. The length of y along the interpolation

axis must be equal to the length of x.
Parameters:
  • kind (str or int, optional) – Specifies the kind of interpolation as a string (‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘previous’, ‘next’, where ‘zero’, ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of zeroth, first, second or third order; ‘previous’ and ‘next’ simply return the previous or next value of the point) or as an integer specifying the order of the spline interpolator to use. Default is ‘linear’.
  • axis (int, optional) – Specifies the axis of y along which to interpolate. Interpolation defaults to the last axis of y.
  • copy (bool, optional) – If True, the class makes internal copies of x and y. If False, references to x and y are used. The default is to copy.
  • bounds_error (bool, optional) – If True, a ValueError is raised any time interpolation is attempted on a value outside of the range of x (where extrapolation is necessary). If False, out of bounds values are assigned fill_value. False by default.
  • fill_value (array-like or (array-like, array_like) or "extrapolate", optional) –
    • if a ndarray (or float), this value will be used to fill in for requested points outside of the data range. If not provided, then the default is zero. The array-like must broadcast properly to the dimensions of the non-interpolation axes.
    • If a two-element tuple, then the first element is used as a fill value for x_new < x[0] and the second element is used for x_new > x[-1]. Anything that is not a 2-element tuple (e.g., list or ndarray, regardless of shape) is taken to be a single array-like argument meant to be used for both bounds as below, above = fill_value, fill_value. .. versionadded:: 0.17.0
    • If “extrapolate”, then points outside the data range will be extrapolated. .. versionadded:: 0.17.0
  • assume_sorted (bool, optional) – If False, values of x can be in any order and they are sorted first. If True, x has to be an array of monotonically increasing values.
symlens.utils.__call__()

See also

splrep(), splev()

UnivariateSpline()
An object-oriented wrapper of the FITPACK routines.
interp2d()
2-D interpolation

Examples

>>> import matplotlib.pyplot as plt
>>> from scipy import interpolate
>>> x = np.arange(0, 10)
>>> y = np.exp(-x/3.0)
>>> f = interpolate.interp1d(x, y)
>>> xnew = np.arange(0, 9, 0.1)
>>> ynew = f(xnew)   # use interpolation function returned by `interp1d`
>>> plt.plot(x, y, 'o', xnew, ynew, '-')
>>> plt.show()
symlens.utils.mask_kspace(shape, wcs, lxcut=None, lycut=None, lmin=None, lmax=None)[source]

Produce a Fourier space mask.

Parameters:
  • shape (tuple) – The shape of the array for the geometry of the footprint. Typically (…,Ny,Nx) for Ny pixels in the y-direction and Nx in the x-direction.
  • wcs (astropy.wcs.wcs.WCS) – The wcs object completing the specification of the geometry of the footprint.
  • lxcut (int, optional) – The width of a band in number of Fourier pixels to be masked in the lx direction. Default is no masking in this band.
  • lycut (int, optional) – The width of a band in number of Fourier pixels to be masked in the ly direction. Default is no masking in this band.
  • lmin (int, optional) – The radial distance in Fourier space below which all Fourier pixels are masked. Default is no masking.
  • lmax (int, optional) – The radial distance in Fourier space above which all Fourier pixels are masked. Default is no masking.
Returns:

output – A 2D array containing the Fourier space mask.

Return type:

(Ny,Nx) ndarray

symlens.utils.rect_geometry(width_arcmin=None, width_deg=None, px_res_arcmin=0.5, proj='car', pol=False, height_deg=None, height_arcmin=None, xoffset_degree=0.0, yoffset_degree=0.0, extra=False, **kwargs)[source]

Get shape and wcs for a rectangular patch of specified size and coordinate center