def test_fcolls(self): pert = Perturbations(M=np.linspace(10, 15, 1301)) fits = ['PS', 'Peacock'] for fit in fits: pert.update(mf_fit=fit) yield self.check_fcoll, pert, fit
def test_sigmas(self): pert = Perturbations(M=np.linspace(7, 15, 801), omegab=0.05, omegac=0.25, omegav=0.7, sigma_8=0.8, n=1, H0=70.0, k_bounds=[np.exp(-21), np.exp(21)], transfer__kmax=10, transfer__k_per_logint=50, mf_fit='ST', z=0.0) for redshift in [0.0, 2.0]: pert.update(z=redshift) for origin in ['camb', 'hmf']: for col in ['sigma', 'lnsigma', 'n_eff']: yield self.check_col, pert, "ST", redshift, origin, col
def test_fits(self): pert = Perturbations(M=np.linspace(7, 15, 801), omegab=0.05, omegac=0.25, omegav=0.7, sigma_8=0.8, n=1, H0=70.0, k_bounds=[np.exp(-21), np.exp(21)], transfer__kmax=10, transfer__k_per_logint=50, mf_fit='ST', z=0.0) for redshift in [0.0, 2.0]: pert.update(z=redshift) for fit in ["ST", "PS", "Reed03", "Warren", "Jenkins", "Reed07"]: pert.update(mf_fit=fit) for origin in ['camb', 'hmf']: for col in ['dndlog10m', 'ngtm', 'fsigma']: yield self.check_col, pert, fit, redshift, origin, col
def test_kbounds(): M = np.linspace(8, 15, 70) pert = Perturbations(M, k_bounds=kbounds[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for bounds in kbounds[1:]: pert.update(k_bounds=bounds) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
def test_wdm(): M = np.linspace(8, 15, 70) pert = Perturbations(M, wdm=wdms[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for wdm in wdms[1:]: pert.update(wdm=wdm) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
def test_z(): M = np.linspace(8, 15, 70) pert = Perturbations(M, z=redshifts[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for z in redshifts[1:]: pert.update(z=z) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
def test_on(): M = np.linspace(8, 15, 70) pert = Perturbations(M, omegan=omegans[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for on in omegans[1:]: pert.update(omegan=on) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
def test_H0(): M = np.linspace(8, 15, 70) pert = Perturbations(M, H0=H0s[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for h in H0s[1:]: pert.update(H0=h) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
def test_sigma_8(): M = np.linspace(8, 15, 70) pert = Perturbations(M, sigma_8=sigma_8s[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for s8 in sigma_8s[1:]: pert.update(sigma_8=s8) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
def test_n(): M = np.linspace(8, 15, 70) pert = Perturbations(M, n=ns[0]) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv) for n in ns[1:]: pert.update(n=n) assert check_k(pert.k) assert check_mf(pert.MassFunction()) assert check_vfv(pert.vfv)
Omega_c h^2 = 0.1199 Omega_c = 0.2647 Spectral index n_s = 0.9693 Hubble constant: H_0 = 67.3 km s^-1 Mpc ^-1 h = 0.67.3 Matter density: Omega_m = 0.315 Optical depth tau = 0.089 """ # <codecell> pert_object.update(omegab = 0.0485, reion__optical_depth = 0.089, H0 = 67.3) # The following are not valid parameters for the Perturbation Class # omegam # sigma_8 # <codecell> mass_func = pert_object.dndlnm pert_early = Perturbations(M,z=6.0) pert_early.update() early_mass_func = pert_early.dndlnm # <codecell>
pert = Perturbations(M=np.linspace(3, 17, 1401), k_bounds=np.exp([-21, 21]), omegav=0.7, omegab=0.05, omegac=0.25, H0=70.0, n=1.0, sigma_8=0.8) #pert.dndlnm pert.ngtm time_hmf_1 = time.time() - start #Now do a comparison of 2 redshifts, 2 fitting functions, 2 sigma_8s and 2 cosmos start = time.time() pert = Perturbations(M=np.linspace(3, 17, 1401), k_bounds=np.exp([-21, 21]), omegav=0.7, omegab=0.05, omegac=0.25, H0=70.0, n=1.0, sigma_8=0.8) for z in redshifts: pert.update(z=z) pert.ngtm for fit in fits: pert.update(mf_fit=fit) pert.ngtm for s8 in s8s: pert.update(sigma_8=s8) pert.ngtm for omegav in omegavs: pert.update(omegav=omegav, omegam=1 - omegav - 0.05) pert.ngtm time_hmf_combo = time.time() - start
ax[1].grid(True) pert = Perturbations(M) vfv_ST = pert.fsigma approaches = [ 'PS', 'ST', 'Jenkins', 'Reed03', 'Warren', 'Reed07', 'Tinker', 'Crocce', 'Courtin', 'Bhattacharya', 'Angulo', 'Angulo_Bound', 'Watson_FoF', 'Watson', "Peacock", "Behroozi" ] lines = ["-", "--", "-.", ":"] ax[1].set_xlabel(xlab) ax[0].set_ylabel(r'Fraction of Mass Collapsed, $f(\sigma)$') ax[1].set_ylabel(r'$f(\sigma)/f_{\rm ST}(\sigma)$') for i, approach in enumerate(approaches): pert.update(mf_fit=approach) ax[0].plot(10**M, pert.fsigma, label=approach.replace("_", " "), linestyle=lines[(i / 7) % 4]) ax[1].plot(10**M, pert.fsigma / vfv_ST, linestyle=lines[(i / 7) % 4]) ax[0].set_xscale('log') ax[1].set_xscale('log') ax[1].set_yscale('log', basey=2) ax[1].yaxis.set_major_formatter(tick.ScalarFormatter()) ticks = ax[0].yaxis.get_ticklocs() ax[0].yaxis.set_major_locator(tick.FixedLocator(ticks[1:])) #ax[0].xaxis.set_major_locator(tick.FixedLocator([])) #plt.legend(loc=0) #plt.tight_layout()
ax[0].grid(True) ax[1].grid(True) pert = Perturbations(M) vfv_ST = pert.fsigma approaches = ['PS', 'ST', 'Jenkins', 'Reed03', 'Warren', 'Reed07', 'Tinker', 'Crocce', 'Courtin', 'Bhattacharya', 'Angulo', 'Angulo_Bound', 'Watson_FoF', 'Watson', "Peacock", "Behroozi"] lines = ["-", "--", "-.", ":"] ax[1].set_xlabel(xlab) ax[0].set_ylabel(r'Fraction of Mass Collapsed, $f(\sigma)$') ax[1].set_ylabel(r'$f(\sigma)/f_{\rm ST}(\sigma)$') for i, approach in enumerate(approaches): pert.update(mf_fit=approach) ax[0].plot(10 ** M, pert.fsigma, label=approach.replace("_", " "), linestyle=lines[(i / 7) % 4]) ax[1].plot(10 ** M, pert.fsigma / vfv_ST, linestyle=lines[(i / 7) % 4]) ax[0].set_xscale('log') ax[1].set_xscale('log') ax[1].set_yscale('log', basey=2) ax[1].yaxis.set_major_formatter(tick.ScalarFormatter()) ticks = ax[0].yaxis.get_ticklocs() ax[0].yaxis.set_major_locator(tick.FixedLocator(ticks[1:])) #ax[0].xaxis.set_major_locator(tick.FixedLocator([])) #plt.legend(loc=0) #plt.tight_layout() plt.subplots_adjust(hspace=0.02, wspace=0.0) plt.setp(ax[0].get_xticklabels(), visible=False) box = ax[0].get_position()
pert.ngtm time_hmf_1 = time.time() - start #Now do a comparison of 2 redshifts, 2 fitting functions, 2 sigma_8s and 2 cosmos start = time.time() pert = Perturbations(M=np.linspace(3, 17, 1401), k_bounds=np.exp([-21, 21]), omegav=0.7, omegab=0.05, omegac=0.25, H0=70.0, n=1.0, sigma_8=0.8) for z in redshifts: pert.update(z=z) pert.ngtm for fit in fits: pert.update(mf_fit=fit) pert.ngtm for s8 in s8s: pert.update(sigma_8=s8) pert.ngtm for omegav in omegavs: pert.update(omegav=omegav, omegam=1 - omegav - 0.05) pert.ngtm time_hmf_combo = time.time() - start
import time import numpy as np omegab = [0.02, 0.05, 0.1] omegac = [0.2, 0.25, 0.5] H0 = [50, 70, 90] n = [0.8, 0.9, 1.0] pert_camb = Perturbations(transfer_fit="CAMB") pert_EH = Perturbations(transfer_fit="EH") camb_time = 0.0 eh_time = 0.0 for ob in omegab: for oc in omegac: for h in H0: for nn in n: pert_camb.update(omegab=ob, omegac=oc, H0=h, n=nn) pert_EH.update(omegab=ob, omegac=oc, H0=h, n=nn) start = time.time() camb = pert_camb.dndm camb_time += time.time() - start start = time.time() eh = pert_EH.dndm eh_time += time.time() - start print "For ", ob, oc, h, nn print camb[0] / eh[0], camb[250] / eh[250], camb[500] / eh[500], eh_time / camb_time
Omega_c h^2 = 0.1199 Spectral index n_s = 0.9693 Hubble constant: H_0 = 67.3 km s^-1 Mpc ^-1 Matter density: Omega_m = 0.315 Optical depth tau = 0.089 """ # <codecell> pert_object = Perturbations(M,z=1.0) pert_object.update(omegab = 0.05) print "Transfer Cosmo" print pert_object._transfer_cosmo print "Extra Cosmo" print pert_object._extra_cosmo print "Cosmo Params" print pert_object.cosmo_params # <codecell> #kwargs = {'sigma_8':0.9} #kwargs = {'z':6.0, 'sigma_8'} #pert_object.update(**kwargs) #print pert_object._extra_cosmo #pert_object._extra_cosmo.update({'sigma_8':0.9})
import time import numpy as np omegab = [0.02, 0.05, 0.1] omegac = [0.2, 0.25, 0.5] H0 = [50, 70, 90] n = [0.8, 0.9, 1.0] pert_camb = Perturbations(transfer_fit="CAMB") pert_EH = Perturbations(transfer_fit="EH") camb_time = 0.0 eh_time = 0.0 for ob in omegab: for oc in omegac: for h in H0: for nn in n: pert_camb.update(omegab=ob, omegac=oc, H0=h, n=nn) pert_EH.update(omegab=ob, omegac=oc, H0=h, n=nn) start = time.time() camb = pert_camb.dndm camb_time += time.time() - start start = time.time() eh = pert_EH.dndm eh_time += time.time() - start print "For ", ob, oc, h, nn print camb[0] / eh[0], camb[250] / eh[250], camb[500] / eh[ 500], eh_time / camb_time