Source code for redshift

# Author: Arrykrishna Mootoovaloo
# Collaborators: Prof. Alan Heavens, Prof. Andrew Jaffe, Dr. Florent Leclercq
# Email : arrykrish@gmail.com/a.mootoovaloo17@imperial.ac.uk
# Affiliation : Imperial Centre for Inference and Cosmology
# Status : Under Development

'''
Setup for the redshift distributions
'''

import numpy as np
import scipy.stats as ss

# our scripts
import settings as st


[docs]class nz_dist(object): def __init__(self, zmin: float = None, zmax: float = None, nzmax: int = None): if zmin is None: self.zmin = st.survey_zmin else: self.zmin = zmin if zmax is None: self.zmax = st.survey_zmax else: self.zmax = zmax if nzmax is None: self.nzmax = st.nzmax else: self.nzmax = nzmax # n(z) redshift self.nz_z = np.linspace(self.zmin, self.zmax, self.nzmax) # shift to midpoint self.mid_z = 0.5 * (self.nz_z[1:] + self.nz_z[:-1]) self.mid_z = np.concatenate((np.zeros(1), self.mid_z))
[docs] def nz_model_1(self, zm: float) -> np.ndarray: ''' Calculate the analytic function :math:`n(z)=z^{2}\\text{exp}(-\\frac{z}{z_{0}})` ''' z0 = zm / 3. nz = self.nz_z**2 * np.exp(-self.nz_z / z0) # find normalisation factor fact = np.trapz(nz, self.nz_z) # calculate n(z) at mid points and normalise n(z) nz_new = self.mid_z**2 * np.exp(-self.mid_z / z0) / fact return nz_new
[docs] def nz_model_2(self, z0: float, alpha: float = 2, beta: float = 1.5): ''' https://arxiv.org/pdf/1502.05872.pdf Calculate the analytic function :math:`n(z)=z^{\\alpha}\\text{exp}(-(\\frac{z}{z_{0}})^{\\beta})` ''' nz = self.nz_z**alpha * np.exp(-(self.nz_z / z0)**beta) # find normalisation factor fact = np.trapz(nz, self.nz_z) # calculate n(z) at mid points and normalise n(z) nz_new = self.mid_z**alpha * np.exp(-(self.mid_z / z0)**beta) / fact return nz_new
[docs] def nz_gaussian(self, z0: float, sigma: float) -> np.ndarray: ''' Gaussian n(z) distribution for the tomographic bin :math:`n(z)=\\frac{1}{2\pi\sigma}\\text{exp}(-\\frac{1}{2}\\frac{(z-z_{0})^{2}}{\sigma^{2}})` ''' nz_dist = ss.norm(z0, sigma) nz = nz_dist.pdf(self.nz_z) return nz