Пример #1
0
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
Пример #3
0
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
Пример #5
0
#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
Пример #6
0
"""

#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
Пример #7
0

######################
### 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