def plot_mass(loa_omegas, loa_omega_names, version_string, expl_string): #plot stellar mass and total mass vis_obj = visualize(loa_omegas, loa_omega_names, num_yaxes=2) vis_obj.add_time_mass("locked", index_yaxis=0) vis_obj.add_time_mass("total", index_yaxis=1) vis_obj.add_datapoint( (eris_data().mass["time"][0], eris_data().mass["total_mass"][0]), index_yaxis=1, label="M_b(z=0)") vis_obj.add_datapoint( (eris_data().mass["time"][1], eris_data().mass["total_mass"][1]), index_yaxis=1, label="M_b(z=1)") vis_obj.finalize(show=False, save="data/mass_parameters_%s_n%d" % (version_string, num_steps)) #save "gas_mass" and "m_locked" for i, mass_type in enumerate(["gas_mass", "m_locked", "m_tot"]): save_obj = save_data(loa_omegas) save_obj.make_filenames("data/mass_parameters_%s_%d_n%d" % (version_string, i, num_steps)) save_obj.make_explanatory_file( "mass arrays of %s \n%s" % (mass_type, expl_string), ["time"] + loa_omega_names, "Applying mass parameters to 'Eris' parameters") save_obj.make_numpy_file(["time", mass_type])
def calculate_chi2_values(omega_inst): """ Calc. chi^2_p values between omega and eris for sfr, [Z/H] interpolated against time. """ loa_spectro = ["[O/H]", "[Fe/H]", "[Eu/H]"] #list of [Z/H] #get data from omega Odata_obj = omega_data(omega_inst, loa_abu=[], loa_spectro_abu=loa_spectro) #get data from eris Edata_obj = eris_data() #dictionary to store pearson chi^2 values per array doa_chi2_values = {} #first do sfr arrays #get time and array from omega Odata_time = Odata_obj.get_dictionary()["time_rate"] Odata_array = Odata_obj.get_dictionary()["sf"] #make interpolation-function from time and array of omega Odata_intpol = make_interpolation_object(Odata_time, Odata_array) #get time and array from eris Edata_time = eris_data().sfr["time"] Edata_array = eris_data().sfr["sfr"] #calculate array of omega, interpolated onto time-array of eris Ointerp_array = Odata_intpol(Edata_time) #calculate chi^2_p of array from eris-data and interpolated omega-data chi2_p = pearson_chi2(Ointerp_array, Edata_array) #store chi^2_p in dictionary doa_chi2_values["sfr"] = chi2_p #loop over spectroscopic arrays for array_key in loa_spectro: #get time and array from omega Odata_time = Odata_obj.get_dictionary()["time"] Odata_array = Odata_obj.get_dictionary()[array_key] #make interpolation-function from time and array of omega Odata_intpol = make_interpolation_object(Odata_time, Odata_array) #use sfgas-dictionary in 'eris_data Edata_time = eris_data().sfgas["time"] Edata_array = eris_data().sfgas[array_key] #calculate array of omega, interpolated onto time-array of eris Ointerp_array = Odata_intpol(Edata_time) #calculate chi^2_p of array from eris-data and interpolated omega-data chi2_p = pearson_chi2(Ointerp_array, Edata_array) #store chi^2_p in dictionary doa_chi2_values[array_key] = chi2_p return doa_chi2_values
def plot_mass(loa_omegas, loa_omega_names, expl_string): filename = "masses_n%d" % (num_steps) #plot stellar mass and total mass vis_obj = visualize(loa_omegas, loa_omega_names, num_yaxes=2) vis_obj.add_time_mass("locked", index_yaxis=0) vis_obj.add_time_mass("total", index_yaxis=1) vis_obj.add_datapoint( (eris_data().mass["time"][0], eris_data().mass["total_mass"][0]), index_yaxis=1, label="M_b(z=0)") vis_obj.add_datapoint( (eris_data().mass["time"][1], eris_data().mass["total_mass"][1]), index_yaxis=1, label="M_b(z=1)") vis_obj.finalize(show=False, save=filename + ".png") #save "gas_mass" and "m_locked" for i, mass_type in enumerate(["gas_mass", "m_locked", "m_tot"]): save_obj = save_data(loa_omegas) save_obj.make_filenames(filename + "_param%d" % i) save_obj.make_explanatory_file( "mass arrays of %s \n%s" % (mass_type, expl_string), ["time"] + loa_omega_names, "Final 'Eris'-bestfit of 'Omega'") save_obj.make_numpy_file(["time", mass_type])
def get_eris_interpolation(return_timesteps=False): #get data from 'Eris' eris_instance = eris_data() eris_dict = eris_instance.sfgas #spectrographic data from Eris #get spectro_array time_array = eris_dict["time"] spectro_array = eris_dict[global_spectro_key] #delete unnecessary objects #make interpolation_function that are not 'inf' mask_of_infvalues = np.logical_not(np.isinf(spectro_array)) interpolation_function = interp1d(x=time_array[mask_of_infvalues], y=spectro_array[mask_of_infvalues], bounds_error=False, fill_value="extrapolate") del eris_instance del eris_dict if return_timesteps: return interpolation_function, len(time_array) else: return interpolation_function
#Run calculations of GCE with 'Omega' timesteps = n loa_norm_vals, save_name = read_param( "sfh_array_norm") #get values from 'parameter_space.txt' bestfit_mgal = 4.0e+10 loa_omega_inst = [ omega(special_timesteps=timesteps, sfh_array_norm=norm, mgal=bestfit_mgal, imf_type=bestfit_imf_type, sfh_array=bestfit_sfh_array, ns_merger_on=bestfit_ns_merger_on, nsmerger_table=bestfit_nsmerger_table) for norm in loa_norm_vals ] #omega-instances with new m_gal loa_omega_names = ["$f_{norm,sfr}$=%1.2f" % norm for norm in loa_norm_vals] norm_eris = eris_data().sfr["m_growth"][-1] print norm_eris loa_omega_inst += [ omega(special_timesteps=timesteps, sfh_array_norm=norm_eris, mgal=bestfit_mgal, imf_type=bestfit_imf_type, sfh_array=bestfit_sfh_array, ns_merger_on=bestfit_ns_merger_on, nsmerger_table=bestfit_nsmerger_table) ] loa_omega_names += ["Eris star"] #visualize masses and sfr with 'visualize' title = "Vary normalization factor for sfr" #plot sfr, ism-mass, locked_mass, total_mass
""" #Necessary modules from directory_master import Foldermap folder = Foldermap() folder.activate_environ() from omega import omega from bestfit_param_omega.current_bestfit import * from visualize import omega_data, eris_data import numpy as np import matplotlib.pyplot as pl from scipy.interpolate import interp1d, CubicSpline import time, sys #Make GCE-instances for different dt-values eris_dict = eris_data().sfgas #spectrographic data from Eris t_end = 14e+9 loa_dt_values = [2e+7, 4e+7, 5e+7, 7e+7, 8e+7, 1e+8, 2e+8, 4e+8, 5e+8, 7e+8, 1e+9, 2e+9] loa_dt_values = loa_dt_values[::-1] loa_omega_dicts = [] loa_omega_timing = [] loa_omega_length = [] for dt_value in loa_dt_values: t0 = time.clock() instance = omega(special_timesteps=0, dt=dt_value, tend=t_end, galaxy=bestfit_galaxy, in_out_control=bestfit_in_out_control, SF_law=bestfit_SF_law, DM_evolution=bestfit_DM_evolution, Z_trans=bestfit_Z_trans, f_dyn=bestfit_f_dyn, sfe=bestfit_sfe, outflow_rate=bestfit_outflow_rate, inflow_rate=bestfit_inflow_rate, rand_sfh=bestfit_rand_sfh, cte_sfr=bestfit_cte_sfr, m_DM_0=bestfit_m_DM_0, mass_loading=bestfit_mass_loading, t_star=bestfit_t_star, sfh_file=bestfit_sfh_file, in_out_ratio=bestfit_in_out_ratio, stellar_mass_0=bestfit_stellar_mass_0, z_dependent=bestfit_z_dependent, exp_ml=bestfit_exp_ml, nsmerger_bdys=bestfit_nsmerger_bdys, imf_type=bestfit_imf_type, alphaimf=bestfit_alphaimf, imf_bdys=bestfit_imf_bdys, sn1a_rate=bestfit_sn1a_rate, iniZ=bestfit_iniZ, mgal=bestfit_mgal, transitionmass=bestfit_transitionmass, iolevel=bestfit_iolevel, ini_alpha=bestfit_ini_alpha, nb_nsm_per_m=bestfit_nb_nsm_per_m, t_nsm_coal=bestfit_t_nsm_coal, table=bestfit_table, hardsetZ=bestfit_hardsetZ, sn1a_on=bestfit_sn1a_on, nsm_dtd_power=bestfit_nsm_dtd_power, sn1a_table=bestfit_sn1a_table, ns_merger_on=bestfit_ns_merger_on, f_binary=bestfit_f_binary, f_merger=bestfit_f_merger, t_merger_max=bestfit_t_merger_max, m_ej_nsm=bestfit_m_ej_nsm, nsmerger_table=bestfit_nsmerger_table, bhns_merger_on=bestfit_bhns_merger_on, m_ej_bhnsm=bestfit_m_ej_bhnsm, bhnsmerger_table=bestfit_bhnsmerger_table, iniabu_table=bestfit_iniabu_table, extra_source_on=bestfit_extra_source_on, extra_source_table=bestfit_extra_source_table, f_extra_source=bestfit_f_extra_source, pre_calculate_SSPs=bestfit_pre_calculate_SSPs, extra_source_mass_range=bestfit_extra_source_mass_range, extra_source_exclude_Z=bestfit_extra_source_exclude_Z, pop3_table=bestfit_pop3_table, imf_bdys_pop3=bestfit_imf_bdys_pop3, imf_yields_range_pop3=bestfit_imf_yields_range_pop3, starbursts=bestfit_starbursts, beta_pow=bestfit_beta_pow, gauss_dtd=bestfit_gauss_dtd, exp_dtd=bestfit_exp_dtd, nb_1a_per_m=bestfit_nb_1a_per_m, f_arfo=bestfit_f_arfo, t_merge=bestfit_t_merge, imf_yields_range=bestfit_imf_yields_range, exclude_masses=bestfit_exclude_masses, netyields_on=bestfit_netyields_on, wiersmamod=bestfit_wiersmamod, skip_zero=bestfit_skip_zero, redshift_f=bestfit_redshift_f, print_off=bestfit_print_off, long_range_ref=bestfit_long_range_ref, f_s_enhance=bestfit_f_s_enhance, m_gas_f=bestfit_m_gas_f, cl_SF_law=bestfit_cl_SF_law, external_control=bestfit_external_control, calc_SSP_ej=bestfit_calc_SSP_ej, tau_ferrini=bestfit_tau_ferrini, input_yields=bestfit_input_yields, popIII_on=bestfit_popIII_on, t_sf_z_dep=bestfit_t_sf_z_dep, m_crit_on=bestfit_m_crit_on, norm_crit_m=bestfit_norm_crit_m, mass_frac_SSP=bestfit_mass_frac_SSP, sfh_array_norm=bestfit_sfh_array_norm, imf_rnd_sampling=bestfit_imf_rnd_sampling, out_follows_E_rate=bestfit_out_follows_E_rate, r_gas_star=bestfit_r_gas_star, cte_m_gas=bestfit_cte_m_gas, t_dtd_poly_split=bestfit_t_dtd_poly_split, stellar_param_on=bestfit_stellar_param_on, delayed_extra_log=bestfit_delayed_extra_log, bhnsmerger_dtd_array=bestfit_bhnsmerger_dtd_array, dt_in_SSPs=bestfit_dt_in_SSPs, DM_array=bestfit_DM_array, nsmerger_dtd_array=bestfit_nsmerger_dtd_array, sfh_array=bestfit_sfh_array, ism_ini=bestfit_ism_ini, mdot_ini=bestfit_mdot_ini, mdot_ini_t=bestfit_mdot_ini_t, ytables_in=bestfit_ytables_in, zm_lifetime_grid_nugrid_in=bestfit_zm_lifetime_grid_nugrid_in, isotopes_in=bestfit_isotopes_in, ytables_pop3_in=bestfit_ytables_pop3_in, zm_lifetime_grid_pop3_in=bestfit_zm_lifetime_grid_pop3_in, ytables_1a_in=bestfit_ytables_1a_in, ytables_nsmerger_in=bestfit_ytables_nsmerger_in, SSPs_in=bestfit_SSPs_in, dt_in=bestfit_dt_in, dt_split_info=bestfit_dt_split_info, ej_massive=bestfit_ej_massive, ej_agb=bestfit_ej_agb, ej_sn1a=bestfit_ej_sn1a, ej_massive_coef=bestfit_ej_massive_coef, ej_agb_coef=bestfit_ej_agb_coef, ej_sn1a_coef=bestfit_ej_sn1a_coef, dt_ssp=bestfit_dt_ssp, yield_interp=bestfit_yield_interp, mass_sampled=bestfit_mass_sampled, scale_cor=bestfit_scale_cor, poly_fit_dtd_5th=bestfit_poly_fit_dtd_5th, poly_fit_range=bestfit_poly_fit_range, m_tot_ISM_t_in=bestfit_m_tot_ISM_t_in, delayed_extra_dtd=bestfit_delayed_extra_dtd, delayed_extra_dtd_norm=bestfit_delayed_extra_dtd_norm, delayed_extra_yields=bestfit_delayed_extra_yields, delayed_extra_yields_norm=bestfit_delayed_extra_yields_norm) t1 = time.clock() data_dict = omega_data(instance).get_dictionary() loa_omega_dicts.append(data_dict) #store data from omega
###################### ### Default models ### """ Calculate default 'Omega'-models to compare with the 'Eris' bestfit """ ###################### loa_omegas = [] loa_omega_names = [] if __name__ == '__main__' and final: from bestfit_param_omega import bestfit_file as clean_slate from visualize import eris_data reload(clean_slate) clean_slate.bestfit_special_timesteps = num_steps #set total mass of model equal to final mass of 'Eris' clean_slate.bestfit_mgal = eris_data().mass["total_mass"][-1] clean_slate_omega = omega_new(clean_slate) #with default parameters clean_slate.bestfit_galaxy = "milky_way" milky_way_omega = omega_new(clean_slate) #with milky way default clean_slate.bestfit_galaxy = "milky_way_cte" milky_way_cte_omega = omega_new( clean_slate) #with milky way default (const. SFH) #make list of models loa_omegas += [clean_slate_omega, milky_way_omega, milky_way_cte_omega] loa_omega_names += [ "default w/M_tot('Eris')", "Milky Way default w/M_tot('Eris')", "Milky Way default w/const. SFH w/M_tot('Eris')" ] reload( clean_slate) #important for resetting all parameters in bestfit_file