def __init__(self, AxionMass_Vals, AxionFrac_Vals, fiducial_ax_frac, omegaMh2_Vals, fiducial_omegaMh2, omegaBh2_Vals, fiducial_omegaBh2, h_Vals, fiducial_h, ns_Vals, fiducial_ns, logAs_1010_Vals, fiducial_logAs_1010): AxionFrac_Vals=np.clip(AxionFrac_Vals,1.0e-6/(fiducial_omegaMh2-fiducial_omegaBh2), 1-(1.0e-6/(fiducial_omegaMh2-fiducial_omegaBh2)))#axion CAMB does not like zero cdm or axion densities self.__params=[] self.__values=[] self.__fiducial_values=[] tmp_params=[] tmp_vals=[] tmp_fiducial=[] for axion_mass in AxionMass_Vals: AxionFrac_phys=[] for axfrac in AxionFrac_Vals: phys=Physics.create_parameter_set(axion_mass, axfrac, fiducial_omegaMh2, fiducial_omegaBh2, fiducial_h, fiducial_ns, fiducial_logAs_1010) AxionFrac_phys.append(phys) tmp_params.append(AxionFrac_phys) tmp_vals.append(AxionFrac_Vals) tmp_fiducial.append(fiducial_ax_frac) self.__params.append(tmp_params) self.__values.append(tmp_vals) self.__fiducial_values.append(tmp_fiducial) omegaM_phys=[] for oMh2 in omegaMh2_Vals: phys=Physics.create_parameter_set(1.0e-24, 0.0, oMh2, fiducial_omegaBh2, fiducial_h, fiducial_ns, fiducial_logAs_1010) omegaM_phys.append(phys) omegaB_phys=[] for oBh2 in omegaBh2_Vals: phys=Physics.create_parameter_set(1.0e-24, 0.0, fiducial_omegaMh2, oBh2, fiducial_h, fiducial_ns, fiducial_logAs_1010) omegaB_phys.append(phys) h_phys=[] for h in h_Vals: phys=Physics.create_parameter_set(1.0e-24, 0.0, fiducial_omegaMh2, fiducial_omegaBh2, h, fiducial_ns, fiducial_logAs_1010) h_phys.append(phys) ns_phys=[] for n in ns_Vals: phys = Physics.create_parameter_set(1.0e-24, 0.0, fiducial_omegaMh2, fiducial_omegaBh2, fiducial_h, n, fiducial_logAs_1010) ns_phys.append(phys) As_phys = [] for logAs_1010 in logAs_1010_Vals: phys = Physics.create_parameter_set(1.0e-24, 0.0, fiducial_omegaMh2, fiducial_omegaBh2, fiducial_h, fiducial_ns, logAs_1010) As_phys.append(phys) if len(omegaM_phys)>0: self.__params.append(omegaM_phys) self.__values.append(omegaMh2_Vals) self.__fiducial_values.append(fiducial_omegaMh2) if len(omegaB_phys)>0: self.__params.append(omegaB_phys) self.__values.append(omegaBh2_Vals) self.__fiducial_values.append(fiducial_omegaBh2) if len(h_phys)>0: self.__params.append(h_phys) self.__values.append(h_Vals) self.__fiducial_values.append(fiducial_h) if len(ns_phys)>0: self.__params.append(ns_phys) self.__values.append(ns_Vals) self.__fiducial_values.append(fiducial_ns) if len(As_phys)>0: self.__params.append(As_phys) self.__values.append(logAs_1010_Vals) self.__fiducial_values.append(fiducial_logAs_1010)
time.time() - start_cov)) print("Generating parameters and accessing database") start_gen = time.time() run_database_ids = [] base_run_ids = [] number_of_runs = 0 for mass in axion_masses: base_run_id = None run_database_ids_tmp = [] for axion_frac in axion_frac_vals: phys = Physics.create_parameter_set(mass, axion_frac, OmegaMh2, OmegaBh2, phys.h, phys.n, phys.logAs_1010, print=False) run_entry = run_database.add_run(phys, z_vals, minClusterMass[stage], high_res=True, high_res_multiplier=5, jenkins_mass_function=False, window_function=window) if phys.f_axion == 0.0: base_run_id = run_entry.name else:
P_CAMB = np.loadtxt(filename) p_interp = interpolate(P_CAMB[:, 0] * phys.h, P_CAMB[:, 1] / phys.h ** 3, phys.P_cdm, phys.P_cdm) try: cov = Cov.load_covariance("covariance_matrix_{}_{}.dat".format(['top-hat', 'gaussian', 'sharp-k', 'no-filter'][window], ["stageII", "stageIII", "stageIV"][stage])) except (IOError, OSError) as e: print("Covariance matrix not found. Recomputing...") cov = Cov(p_interp, None, zmin, zmax, Nz, r_vals, delta_r, overlap_area[stage] / 129600 * np.pi, sigma_v_vals[stage], kmin=min(P_CAMB[:, 0] * phys.h), kmax=max(P_CAMB[:, 0] * phys.h), mMin=minClusterMass[stage], mMax=1e16, physics=phys, window_function=window) cov.save_covariance("covariance_matrix_{}_{}.dat".format(['top-hat', 'gaussian', 'sharp-k', 'no-filter'][window], ["stageII", "stageIII", "stageIV"][stage])) print("Total time take to get covariance matrices: {:.2}s".format(time.time()-start_cov)) params=[] for m in axion_masses: for f in axion_frac_vals: phys = Physics.create_parameter_set(axion_mass=m, axion_frac=f) params.append(phys) #with MyProcessPool(12) as p: # p.map(lambda i: run_axionCAMB("CAMB_run4plots_{}".format(i), params[i]), range(0, len(params))) with MyProcessPool(12) as p: outputs = p.map(lambda i: run_mpv("MPV_run4plots_log_{}".format(i), "MPV_run4plots_{}".format(i), "CAMB_run4plots_{}".format(i), params[i], window, minClusterMass[stage], z_vals), range(0, len(params))) final=[] for i in range(len(axion_masses)): final_tmp=[] for j in range(len(axion_frac_vals)): final_tmp.append(outputs[i*len(axion_frac_vals)+j]) final.append(final_tmp)