def testBackground(self): pars = camb.CAMBparams() pars.set_cosmology(H0=68.5, ombh2=0.022, omch2=0.122, YHe=0.2453, mnu=0.07, omk=0) zre = camb.get_zre_from_tau(pars, 0.06) age = camb.get_age(pars) self.assertAlmostEqual(zre, 8.39, 2) self.assertAlmostEqual(age, 13.65, 2) data = camb.CAMBdata() bao = data.get_BAO([0.57, 0.27], pars) data = camb.CAMBdata() data.calc_background(pars) DA = data.angular_diameter_distance(0.57) H = data.hubble_parameter(0.27) self.assertAlmostEqual(DA, bao[0][2], 3) self.assertAlmostEqual(H, bao[1][1], 3) age2 = data.physical_time(0) self.assertAlmostEqual(age, age2, 4) r = data.comoving_radial_distance(0.48) t0 = data.conformal_time(0) t1 = data.conformal_time(11.5) t2 = data.comoving_radial_distance(11.5) self.assertAlmostEqual(t2, t0 - t1, 2) self.assertAlmostEqual(t1, 4200.78, 2) chistar = data.conformal_time(0) - model.tau_maxvis.value chis = np.linspace(0, chistar, 197) zs = data.redshift_at_comoving_radial_distance(chis) chitest = data.comoving_radial_distance(zs) self.assertTrue(np.sum((chitest - chis)**2) < 1e-3) theta = data.cosmomc_theta() self.assertAlmostEqual(theta, 0.0104759965, 5) derived = data.get_derived_params() self.assertAlmostEqual(derived['age'], age, 2) self.assertAlmostEqual(derived['rdrag'], 146.976, 2) # Test BBN consistency, base_plikHM_TT_lowTEB best fit model pars.set_cosmology(H0=67.31, ombh2=0.022242, omch2=0.11977, mnu=0.06, omk=0) self.assertAlmostEqual(pars.YHe, 0.245336, 5) data.calc_background(pars) self.assertAlmostEqual(data.cosmomc_theta(), 0.01040862, 7) self.assertAlmostEqual(data.get_derived_params()['kd'], 0.14055, 4) # test massive sterile models as in Planck papers pars.set_cosmology(H0=68.0, ombh2=0.022305, omch2=0.11873, mnu=0.06, nnu=3.073, omk=0, meffsterile=0.013) self.assertAlmostEqual(pars.omegan * (pars.H0 / 100)**2, 0.00078, 5) self.assertAlmostEqual(pars.YHe, 0.24573, 5) data.calc_background(pars) self.assertAlmostEqual(data.get_derived_params()['age'], 13.773, 2) self.assertAlmostEqual(data.cosmomc_theta(), 0.0104103, 6) # test dark energy pars.set_cosmology(H0=68.26, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) pars.set_dark_energy(w=-1.0226, dark_energy_model='fluid') data.calc_background(pars) self.assertAlmostEqual(data.get_derived_params()['age'], 13.789, 2) scal = data.luminosity_distance(1.4) vec = data.luminosity_distance([1.2, 1.4, 0.1, 1.9]) self.assertAlmostEqual(scal, vec[1], 5) pars.set_dark_energy() # re-set defaults # test theta pars.set_cosmology(cosmomc_theta=0.0104085, H0=None, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) self.assertAlmostEqual(pars.H0, 67.5512, 2)
der.close() der = open("outputs/derived_params.txt", "a") timei_d = time() z = np.arange(0.0, 2.251, 0.001) a_camb = 1./(1.+z) #scale factor that goes into CAMB for k in range(sampler.flatchain.shape[0]): pars = camb.CAMBparams() w_spline = CubicSpline(np.array([z1, z2, z3, z4, z5, z6, zlim]), np.array([sampler.flatchain[k][25], sampler.flatchain[k][26], sampler.flatchain[k][27], sampler.flatchain[k][28], sampler.flatchain[k][29], sampler.flatchain[k][30], wlim])) a = np.ctypeslib.ndpointer(dtype=np.double, ndim=1, flags='CONTIGUOUS') #pycamb stuff w = np.ctypeslib.ndpointer(dtype=np.double, ndim=1, flags='CONTIGUOUS') #pycamb stuff a, w = np.copy(a_camb[::-1]), np.copy(w_spline(z)[::-1]) #arrays must be in the reverse order, that's why the [::-1] part pars.set_dark_energy_w_a(a=a, w=w, dark_energy_model='ppf') #the size of the arrays must be smaller than 5000 pars.set_cosmology(H0=sampler.flatchain[k][4], cosmomc_theta=None, ombh2=sampler.flatchain[k][0], omch2=sampler.flatchain[k][1], omk=0, tau=sampler.flatchain[k][5], neutrino_hierarchy='degenerate', num_massive_neutrinos=1, mnu=0.06, nnu=3.046, YHe=None, meffsterile=0.0, standard_neutrino_neff=3.046, TCMB=2.7255, bbn_predictor=None) omL = pars.omegav omM = pars.omegab + pars.omegac age = camb.get_age(pars) chi = -2.0*sampler.flatlnprobability[k] der.write(" ".join(map(str, np.array([omL, omM, age, chi]))) + "\n") timef_d = time() mm, ss = divmod((timef_d - timei_d), 60) hh, mm = divmod(mm, 60) der.close() log_term = open("outputs/log_terminal.txt", "a") log_term.write('End of derived parameters saving. Time spent: ' + ("%d:%02d:%02d" % (hh, mm, ss)) + '\n') log_term.close() #Main MC exploration for nstore in range(repetitions): sampler.reset() posf, probf, statef = sampler.run_mcmc(posf, steps_per_repetition)
def testBackground(self): pars = camb.CAMBparams() pars.set_cosmology(H0=68.5, ombh2=0.022, omch2=0.122, YHe=0.2453, mnu=0.07, omk=0) zre = camb.get_zre_from_tau(pars, 0.06) age = camb.get_age(pars) self.assertAlmostEqual(zre, 8.39, 2) self.assertAlmostEqual(age, 13.65, 2) data = camb.CAMBdata() bao = data.get_BAO([0.57, 0.27], pars) data = camb.CAMBdata() data.calc_background(pars) DA = data.angular_diameter_distance(0.57) H = data.hubble_parameter(0.27) self.assertAlmostEqual(DA, bao[0][2], 3) self.assertAlmostEqual(H, bao[1][1], 3) age2 = data.physical_time(0) self.assertAlmostEqual(age, age2, 4) data.comoving_radial_distance(0.48) t0 = data.conformal_time(0) self.assertAlmostEqual(t0, data.tau0) t1 = data.conformal_time(11.5) t2 = data.comoving_radial_distance(11.5) self.assertAlmostEqual(t2, t0 - t1, 2) self.assertAlmostEqual(t1, 4200.78, 2) chistar = data.conformal_time(0) - data.tau_maxvis chis = np.linspace(0, chistar, 197) zs = data.redshift_at_comoving_radial_distance(chis) chitest = data.comoving_radial_distance(zs) self.assertTrue(np.sum((chitest - chis) ** 2) < 1e-3) theta = data.cosmomc_theta() self.assertAlmostEqual(theta, 0.0104759965, 5) derived = data.get_derived_params() self.assertAlmostEqual(derived['age'], age, 2) self.assertAlmostEqual(derived['rdrag'], 146.976, 2) self.assertAlmostEqual(derived['rstar'], data.sound_horizon(derived['zstar']), 2) # Test BBN consistency, base_plikHM_TT_lowTEB best fit model pars.set_cosmology(H0=67.31, ombh2=0.022242, omch2=0.11977, mnu=0.06, omk=0) self.assertAlmostEqual(pars.YHe, 0.245347, 5) data.calc_background(pars) self.assertAlmostEqual(data.cosmomc_theta(), 0.010408566, 7) self.assertAlmostEqual(data.get_derived_params()['kd'], 0.14055, 4) pars.set_cosmology(H0=67.31, ombh2=0.022242, omch2=0.11977, mnu=0.06, omk=0, bbn_predictor=bbn.BBN_table_interpolator()) self.assertAlmostEqual(pars.YHe, 0.2453469, 5) self.assertAlmostEqual(pars.get_Y_p(), bbn.BBN_table_interpolator().Y_p(0.022242, 0), 5) # test massive sterile models as in Planck papers pars.set_cosmology(H0=68.0, ombh2=0.022305, omch2=0.11873, mnu=0.06, nnu=3.073, omk=0, meffsterile=0.013) self.assertAlmostEqual(pars.omnuh2, 0.00078, 5) self.assertAlmostEqual(pars.YHe, 0.24573, 5) self.assertAlmostEqual(pars.N_eff, 3.073, 4) data.calc_background(pars) self.assertAlmostEqual(data.get_derived_params()['age'], 13.773, 2) self.assertAlmostEqual(data.cosmomc_theta(), 0.0104103, 6) # test dark energy pars.set_cosmology(H0=68.26, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) pars.set_dark_energy(w=-1.0226, dark_energy_model='fluid') data.calc_background(pars) self.assertAlmostEqual(data.get_derived_params()['age'], 13.789, 2) scal = data.luminosity_distance(1.4) vec = data.luminosity_distance([1.2, 1.4, 0.1, 1.9]) self.assertAlmostEqual(scal, vec[1], 5) pars.set_dark_energy() # re-set defaults # test theta pars.set_cosmology(cosmomc_theta=0.0104085, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) self.assertAlmostEqual(pars.H0, 67.5512, 2) with self.assertRaises(CAMBParamRangeError): pars.set_cosmology(cosmomc_theta=0.0204085, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) pars = camb.set_params(cosmomc_theta=0.0104077, ombh2=0.022, omch2=0.122, w=-0.95) self.assertAlmostEqual(camb.get_background(pars, no_thermo=True).cosmomc_theta(), 0.0104077, 7) pars = camb.set_params(thetastar=0.010311, ombh2=0.022, omch2=0.122) self.assertAlmostEqual(camb.get_background(pars).get_derived_params()['thetastar'] / 100, 0.010311, 7) pars = camb.set_params(thetastar=0.010311, ombh2=0.022, omch2=0.122, omk=-0.05) self.assertAlmostEqual(camb.get_background(pars).get_derived_params()['thetastar'] / 100, 0.010311, 7) self.assertAlmostEqual(pars.H0, 49.7148, places=3) pars = camb.set_params(cosmomc_theta=0.0104077, ombh2=0.022, omch2=0.122, w=-0.95, wa=0, dark_energy_model='ppf') self.assertAlmostEqual(camb.get_background(pars, no_thermo=True).cosmomc_theta(), 0.0104077, 7) pars = camb.set_params(cosmomc_theta=0.0104077, ombh2=0.022, omch2=0.122, w=-0.95, dark_energy_model='DarkEnergyFluid', initial_power_model='InitialPowerLaw') self.assertAlmostEqual(camb.get_background(pars, no_thermo=True).cosmomc_theta(), 0.0104077, 7) with self.assertRaises(CAMBValueError): camb.set_params(dark_energy_model='InitialPowerLaw') data.calc_background(pars) h2 = (data.Params.H0 / 100) ** 2 self.assertAlmostEqual(data.get_Omega('baryon'), data.Params.ombh2 / h2, 7) self.assertAlmostEqual(data.get_Omega('nu'), data.Params.omnuh2 / h2, 7) self.assertAlmostEqual(data.get_Omega('photon') + data.get_Omega('neutrino') + data.get_Omega('de') + (pars.ombh2 + pars.omch2 + pars.omnuh2) / h2 + pars.omk, 1, 8) pars.set_cosmology(H0=67, mnu=1, neutrino_hierarchy='normal') data.calc_background(pars) h2 = (pars.H0 / 100) ** 2 self.assertAlmostEqual(data.get_Omega('photon') + data.get_Omega('neutrino') + data.get_Omega('de') + (pars.ombh2 + pars.omch2 + pars.omnuh2) / h2 + pars.omk, 1, 8) redshifts = np.array([0.005, 0.01, 0.3, 0.9342, 4, 27, 321.5, 932, 1049, 1092, 2580, 1e4, 2.1e7]) self.assertTrue( np.allclose(data.redshift_at_conformal_time(data.conformal_time(redshifts)), redshifts, rtol=1e-7)) pars.set_dark_energy(w=-1.8) data.calc_background(pars) self.assertTrue( np.allclose(data.redshift_at_conformal_time(data.conformal_time(redshifts)), redshifts, rtol=1e-7)) pars.set_cosmology(cosmomc_theta=0.0104085) data.calc_background(pars) self.assertAlmostEqual(data.cosmomc_theta(), 0.0104085) derived = data.get_derived_params() pars.Accuracy.BackgroundTimeStepBoost = 2 data.calc_background(pars) derived2 = data.get_derived_params() self.assertAlmostEqual(derived['thetastar'], derived2['thetastar'], places=5) pars.set_cosmology(H0=67.5, ombh2=0.022, omch2=0.122, mnu=0.11, neutrino_hierarchy='inverted') self.assertEqual(pars.num_nu_massive, 3) self.assertEqual(pars.nu_mass_numbers[1], 1) self.assertEqual(pars.nu_mass_eigenstates, 2) self.assertAlmostEqual(pars.nu_mass_fractions[0], 0.915197, places=4)
def testBackground(self): pars = camb.CAMBparams() pars.set_cosmology(H0=68.5, ombh2=0.022, omch2=0.122, YHe=0.2453, mnu=0.07, omk=0) zre = camb.get_zre_from_tau(pars, 0.06) age = camb.get_age(pars) self.assertAlmostEqual(zre, 8.39, 2) self.assertAlmostEqual(age, 13.65, 2) data = camb.CAMBdata() bao = data.get_BAO([0.57, 0.27], pars) data = camb.CAMBdata() data.calc_background(pars) DA = data.angular_diameter_distance(0.57) H = data.hubble_parameter(0.27) self.assertAlmostEqual(DA, bao[0][2], 3) self.assertAlmostEqual(H, bao[1][1], 3) age2 = data.physical_time(0) self.assertAlmostEqual(age, age2, 4) r = data.comoving_radial_distance(0.48) t0 = data.conformal_time(0) t1 = data.conformal_time(11.5) t2 = data.comoving_radial_distance(11.5) self.assertAlmostEqual(t2, t0 - t1, 2) self.assertAlmostEqual(t1, 4200.78, 2) chistar = data.conformal_time(0) - model.tau_maxvis.value chis = np.linspace(0, chistar, 197) zs = data.redshift_at_comoving_radial_distance(chis) chitest = data.comoving_radial_distance(zs) self.assertTrue(np.sum((chitest - chis) ** 2) < 1e-3) theta = data.cosmomc_theta() self.assertAlmostEqual(theta, 0.0104759965, 5) derived = data.get_derived_params() self.assertAlmostEqual(derived['age'], age, 2) self.assertAlmostEqual(derived['rdrag'], 146.976, 2) # Test BBN consistency, base_plikHM_TT_lowTEB best fit model pars.set_cosmology(H0=67.31, ombh2=0.022242, omch2=0.11977, mnu=0.06, omk=0) self.assertAlmostEqual(pars.YHe, 0.245336, 5) data.calc_background(pars) self.assertAlmostEqual(data.cosmomc_theta(), 0.01040862, 7) self.assertAlmostEqual(data.get_derived_params()['kd'], 0.14055, 4) # test massive sterile models as in Planck papers pars.set_cosmology(H0=68.0, ombh2=0.022305, omch2=0.11873, mnu=0.06, nnu=3.073, omk=0, meffsterile=0.013) self.assertAlmostEqual(pars.omegan * (pars.H0 / 100) ** 2, 0.00078, 5) self.assertAlmostEqual(pars.YHe, 0.24573, 5) data.calc_background(pars) self.assertAlmostEqual(data.get_derived_params()['age'], 13.773, 2) self.assertAlmostEqual(data.cosmomc_theta(), 0.0104103, 6) # test dark energy pars.set_cosmology(H0=68.26, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) pars.set_dark_energy(w=-1.0226, dark_energy_model='fluid') data.calc_background(pars) self.assertAlmostEqual(data.get_derived_params()['age'], 13.789, 2) scal = data.luminosity_distance(1.4) vec = data.luminosity_distance([1.2, 1.4, 0.1, 1.9]) self.assertAlmostEqual(scal, vec[1], 5) pars.set_dark_energy() # re-set defaults # test theta pars.set_cosmology(cosmomc_theta=0.0104085, H0=None, ombh2=0.022271, omch2=0.11914, mnu=0.06, omk=0) self.assertAlmostEqual(pars.H0, 67.5512, 2)