astropaint.lib package¶
Submodules¶
astropaint.lib.log module¶
library for logging functions and classes
-
exception
astropaint.lib.log.CMBAlreadyAdded¶ Bases:
Exception
-
exception
astropaint.lib.log.NoiseAlreadyAdded¶ Bases:
Exception
-
exception
astropaint.lib.log.ParameterNotFound¶ Bases:
KeyError
astropaint.lib.plot_configs module¶
astropaint.lib.transform module¶
library for transforming halo properties and coordinates
-
astropaint.lib.transform.D_c_to_D_a(D_c, redshift)¶ calculate the angular diameter distance (D_a) from comoving distance (D_c) and redshift ( redshift)
-
astropaint.lib.transform.D_c_to_redshift(D_c, units=Unit('Mpc'))¶ calculate the redshift from comoving distance (D_c)
-
astropaint.lib.transform.M_200c_to_R_200c(M_200c, redshift)¶ calculate R_200c from M_200c at the given redshift see Eq. 1 in Huang et al 1701.04001
-
astropaint.lib.transform.M_200c_to_c_200c(M_200c, redshift)¶ calculate the concentration parameter from M_200c at the given redshift use fitting formula in Eq 19 of Child et al 2018 (1804.10199)
-
astropaint.lib.transform.M_200c_to_rho_s(M_200c, redshift, R_200c=None, c_200c=None)¶ calculate the NFW rho_s parameter from M_200c at the given redshift if R_200c and c_200c are not given, calculate them
-
astropaint.lib.transform.M_to_tau(M)¶
-
astropaint.lib.transform.arcmin2rad(angle)¶ convert arcmins to radians
-
astropaint.lib.transform.convert_velocity_cart2sph(th, ph, v_x, v_y, v_z)¶
-
astropaint.lib.transform.convert_velocity_sph2cart(th, ph, v_r, v_th, v_ph)¶ Calculate the cartesian velocity components from the spherical ones
-
astropaint.lib.transform.fwhm2sigma(fwhm, arcmin=True)¶ Convert fwhm to sigma
- Parameters
fwhm (float) – Full Width Half Maximum (fwhm)
arcmin (bool) – if True, fwhm will be converted from arcmin to rad
- Returns
sigma – fwhm ** 2 / 8 / np.log(2)
- Return type
float [rad]
-
astropaint.lib.transform.get_cart2sph_jacobian(th, ph)¶ calculate the transformation matrix (jacobian) for spherical to cartesian coordinates at line of sight (th, ph) [radians]
see https://en.wikipedia.org/wiki/Vector_fields_in_cylindrical_and_spherical_coordinates
th is the polar angle with respect to z and ph is the azimuthal angle with respect to x
example:
th_rad = np.deg2rad(df[‘th’].values) ph_rad = np.deg2rad(df[‘ph’].values)
v_cart = np.array([df[‘vx’],df[‘vy’],df[‘vz’]])
thph_grid = np.array([th_rad,ph_rad])
J_cart2sph = cart2sph2(th_rad,ph_rad) v_cart2sph = np.einsum(‘ij…,i…->j…’,J_cart2sph,v_cart)
-
astropaint.lib.transform.get_sph2cart_jacobian(th, ph)¶ calculate the transformation matrix (jacobian) for spherical to cartesian coordinates at line of sight (th, ph) [radians]
see https://en.wikipedia.org/wiki/Vector_fields_in_cylindrical_and_spherical_coordinates
th is the polar angle with respect to z and ph is the azimuthal angle with respect to x
example: see cart2sph2
-
astropaint.lib.transform.rad2arcmin(angle)¶ convert radians to arcmins
-
astropaint.lib.transform.radius_to_angsize(radius, D_a, arcmin=True)¶ calculate the angular radius (theta) of the halo from its radius and angular diameter distance (D_a).
if arcmin == True: return the value in arcmin
*NOTE: radius and D_a must have the same units
-
astropaint.lib.transform.rotate_patch(patch, angle)¶ Rotate input patch by angle [deg]
-
astropaint.lib.transform.taper_patch(patch)¶ taper the patch to smooth out the edges
astropaint.lib.utils module¶
-
astropaint.lib.utils.LOS_integrate(profile_3D, *args, **kwargs)¶ integrate along the line of sight for all 3D r’s that correspond to the 2D R
-
astropaint.lib.utils.combine_Nl(Nls)¶ combine the input noise power spectra
- Parameters
Nls (list) – list of noise power spectra
- Returns
combined noise power spectrum
1/N_tot = 1/N1 + 1/N2 + …
-
astropaint.lib.utils.get_CMB_Cl(lmax, lmin=0, mode='TT', return_ell=False, uK=False)¶ load Cl from camb generated Dl file
- Parameters
lmax (int) – max ell number
lmin (int) – min ell number
mode (str) – CMB mode to return (e.g. “TT”, “EE”, etc)
return_ell (bool) – if True, returns the corresponding ell array as well
- Returns
Cl [K^2]
or
ell, Cl [K^2]
available keys in Cls (L, TT, EE, BB, TE)
-
astropaint.lib.utils.get_custom_B2l(fwhm, lmax, lmin=0, arcmin=True, return_ell=False)¶ Compute the instrumental Beam power spectrum
After smoothing the map with a beam of size fwhm, the power spectrum would be suppressed by a factor
B2l= np.exp(-ell * (ell + 1) * sigma_b)
where sigma_b = fwhm ** 2 / 8 / np.log(2)
- Parameters
[arcmin] (fwhm) – beam fwhm in arcmins (or radians if arcmin=False)
lmax – maximum ell mode in the power spectrum
lmin – minimum ell mode in the power spectrum
arcmin (bool) – set to True if fwhm is in arcmin
return_ell (bool) – if True, returns the corresponding ell array as well
- Returns
Bl^2
or
ell, Bl^2
-
astropaint.lib.utils.get_custom_Nl(sigma_n, lmax, fwhm=None, frequency=[217], lmin=0, apply_beam=False, uK=False, return_ell=False)¶ get temperature and polarization noise power spectra for a custom experiment
- Parameters
[uK-arcmin] (sigma_n) – noise level in uK-arcmin can a scalar or an array for multiple channels the length must match that of fwhm
lmax (scalar) – maximum ell mode of the power spectrum
[arcmin] (fwhm) – beam fwhm in arcmins can be scalar or an array for multiple channels
lmin (scalar) – minimum ell mode of the power spectrum
apply_beam – if True, deconvolves the noise with beam
return_ell (bool) – if True, returns the corresponding ell array as well
- Returns
Nl [K^2]
or
ell, Nl [K^2]
-
astropaint.lib.utils.get_experiment_Nl(lmax, lmin=0, name='Planck', frequency=[217], apply_beam=False, uK=False, return_ell=False)¶ get temperature and polarization noise power spectra for various experiments
- Parameters
lmax (scalar) – maximum ell mode of the power spectrum
lmin (scalar) – minimum ell mode of the power spectrum
name – name of the experiment string in [“Planck” , “SO” , “S4”]
apply_beam – if True, deconvolves the noise with beam
return_ell (bool) – if True, returns the corresponding ell array as well
- Returns
Nl_TT [K^2]
or
ell, Nl_TT [K^2]
-
astropaint.lib.utils.interpolate(profile, n_samples=20, min_frac=None, sampling_method='linspace', k=3, interpolator=<class 'scipy.interpolate.fitpack2.InterpolatedUnivariateSpline'>, *args, **kwargs)¶ interpolate the profile function instead of calculating it at every given R
- Parameters
profile – wrapped profile to be interpolated (implicit)
n_samples (int) – number of points to sample in R
min_frac (float) –
fraction of points in R to sample, unless n_sample is larger if min_frac: n_samples = max(n_samples, min_frac * len(R))
e.g. for n_sample=10, min_frac=0.1 if len(R)=200, 20 (0.1*200) points will be sampled, but if len(R)=50 10 points will be sampled
sampling_method (str in ["linspace", "logspace", "random"]) – determines how the points are sampled
k (int) – interpolation order
interpolator (func) – interpolating function
- Returns
- Return type
Interpolated profile
-
astropaint.lib.utils.load_Cl_Planck2018(lmin=0)¶ load Cl from camb generated Dl file
- Parameters
lmax (max ell number) –
lmin (min ell number) –
- Returns
Cls
available keys in Cls (L, TT, EE, BB, TE)
-
astropaint.lib.utils.load_noise_yaml()¶
-
astropaint.lib.utils.sample_array(array, n_samples, method='linspace', eps=0.001)¶ sample an input array
-
astropaint.lib.utils.timeit(process_name='Process')¶ Time the code in mins