def Fit_Simulation_Phase_Diagram(self, sim_id):
        print(f' Fitting Simulation: {sim_id}')
        sim_dir = self.Get_Simulation_Directory(sim_id)
        input_dir = sim_dir + 'analysis_files/'
        fit_dir = input_dir + 'fit_mcmc/'
        create_directory(fit_dir)

        files = [
            f for f in listdir(input_dir)
            if (isfile(join(input_dir, f)) and (f.find('_analysis') > 0))
        ]
        indices = ['{0:03}'.format(int(file.split('_')[0])) for file in files]
        indices.sort()
        n_files = len(files)
        print(f' N_Analysis_Files: {n_files}')

        for n_file in indices:
            n_file = int(n_file)
            fit_file = fit_dir + f'fit_{n_file}.pkl'
            file_path = Path(fit_file)
            if file_path.is_file():
                print(f' Skiping File: {n_file} ')
                continue
            data = load_analysis_data(n_file, input_dir)
            values_to_fit = get_density_temperature_values_to_fit(
                data['phase_diagram'],
                delta_min=-1,
                delta_max=1,
                n_samples_line=50,
                fraction_enclosed=0.70)
            fit_values = fit_thermal_parameters_mcmc(n_file, values_to_fit,
                                                     fit_dir)
Esempio n. 2
0
from load_data import load_analysis_data
from phase_diagram_functions import fit_thermal_parameters_mcmc, get_density_temperature_values_to_fit

# data_dir = '/home/bruno/Desktop/data/'
# data_dir = '/home/brunoq/Desktop/ssd_0/data/'
data_dir = '/raid/bruno/data/'

sim_name = '1024_50Mpc'
sim_name = '2048_100Mpc'
input_dir = data_dir + f'cosmo_sims/rescaled_P19/{sim_name}/analysis_files/'
output_dir = data_dir + f'cosmo_sims/rescaled_P19/figures/phase_diagram_{sim_name}/fit/'
create_directory(output_dir)

n_file = 55
for n_file in range(3, 56):
    data = load_analysis_data(n_file, input_dir)
    z = data['cosmology']['current_z']
    data_pd = data['phase_diagram']
    fit_mcmc = Load_Pickle_Directory(input_dir + f'fit_mcmc/fit_{n_file}.pkl')

    values_to_fit = get_density_temperature_values_to_fit(
        data['phase_diagram'],
        delta_min=-1.5,
        delta_max=3,
        n_samples_line=50,
        fraction_enclosed=0.67)

    dens = values_to_fit['density']
    temp = values_to_fit['temperature']
    temp_sigma_p = values_to_fit['temperature_sigma_p']
    temp_sigma_m = values_to_fit['temperature_sigma_l']
Esempio n. 3
0
    rank = comm.Get_rank()
    n_procs = comm.Get_size()
else:
    rank = 0
    n_procs = 1

data_dir = '/raid/bruno/data/'
input_dir = data_dir + 'cosmo_sims/sim_grid/512_p19/analysis_files/'
output_dir = input_dir + 'figures/'
if rank == 0: create_directory(output_dir)
if use_mpi: comm.Barrier()

n_snapshot = 3
data = load_analysis_data(n_snapshot,
                          input_dir,
                          phase_diagram=False,
                          lya_statistics=True,
                          load_skewer=True)
cosmology = data['cosmology']

box = data['box']
skewer = data['lya_statistics']['skewer']
# skewer['HI_density'] *= 1e-5
HI_density = skewer['HI_density']
tau_cholla = skewer['optical_depth']
vel_Hubble_cholla = skewer['vel_Hubble']
temperature = skewer['temperature']
velocity = skewer['velocity']
F_cholla = skewer['transmitted_flux']

tau_data = compute_optical_depth(cosmology,
    def Load_Simulation_Power_Spectum_Data(self,
                                           sim_id,
                                           indices,
                                           load_normalized_ps=False,
                                           ps_norm=None):

        sim_dir = self.Get_Simulation_Directory(sim_id)
        input_dir = sim_dir + 'analysis_files/'
        indices.sort()
        sim_data = {}

        z_vals = []
        data_ps_mean = []
        data_kvals = []
        data_kmin, data_kmax = [], []

        for n_file in indices:
            n_file = int(n_file)
            data = load_analysis_data(n_file,
                                      input_dir,
                                      phase_diagram=False,
                                      lya_statistics=True,
                                      load_skewer=False,
                                      load_fit=False)
            z = data['cosmology']['current_z']
            k_vals = data['lya_statistics']['power_spectrum']['k_vals']
            ps_mean = data['lya_statistics']['power_spectrum']['ps_mean']
            z_vals.append(z)
            data_kvals.append(k_vals)
            data_ps_mean.append(ps_mean)
            data_kmin.append(k_vals.min())
            data_kmax.append(k_vals.max())
        z_vals = np.array(z_vals)
        data_kmin, data_kmax = np.array(data_kmin), np.array(data_kmax)
        data_ps = {
            'z': z_vals,
            'k_min': data_kmin,
            'k_max': data_kmax,
            'k_vals': data_kvals,
            'ps_mean': data_ps_mean
        }
        self.Grid[sim_id]['analysis']['power_spectrum'] = data_ps

        if load_normalized_ps:
            root_dir = self.root_dir
            sim_name = self.Grid[sim_id]['key']
            ps_dir = root_dir + f'flux_power_spectrum_files/{sim_name}/'
            normalizations = ['Simulation', 'Becker']
            types = ['F_mean', 'tau_eff']
            normalization = ps_norm['normalization']
            type = ps_norm['type']
            # type = types[0]
            # normalization = 'Simulation'
            # for normalization in normalizations:
            ps_key = f'power_spectrum_norm_{normalization}_{type}'

            z_vals, data_ps_mean, data_kvals, data_kmax, data_kmin = [], [], [], [], []

            for n_file in indices:
                file_name = ps_dir + f'flux_ps_{n_file}.h5'
                file = h5.File(file_name, 'r')
                current_z = file.attrs['current_z']
                # print( file.keys() )
                k_vals = file['k_vals'][...]
                ps_data = file[normalization]
                tau_eff = ps_data.attrs['tau_eff']
                ps_mean = ps_data[type][...]
                z_vals.append(current_z)
                data_kvals.append(k_vals)
                data_ps_mean.append(ps_mean)
                data_kmax.append(k_vals.max())
                data_kmin.append(k_vals.min())
            z_vals = np.array(z_vals)
            data_kmin, data_kmax = np.array(data_kmin), np.array(data_kmax)
            data_ps = {
                'z': z_vals,
                'k_min': data_kmin,
                'k_max': data_kmax,
                'k_vals': data_kvals,
                'ps_mean': data_ps_mean,
                'normalization_key': ps_key
            }
            self.Grid[sim_id]['analysis'][
                'power_spectrum_normalized'] = data_ps
    def Load_Simulation_Analysis_Data(self,
                                      sim_id,
                                      load_fit=True,
                                      mcmc_fit_dir=None):
        str = f' Loading Simulation Analysis: {sim_id}'
        print_line_flush(str)

        sim_dir = self.Get_Simulation_Directory(sim_id)
        input_dir = sim_dir + 'analysis_files/'
        files = [
            f for f in listdir(input_dir)
            if (isfile(join(input_dir, f)) and (f.find('_analysis') > 0))
        ]
        indices = ['{0:03}'.format(int(file.split('_')[0])) for file in files]
        indices.sort()
        n_files = len(files)
        sim_data = {}

        sim_data['z'] = []
        sim_data['T0'] = []
        sim_data['gamma'] = []
        sim_data['F_mean'] = []
        sim_data['tau'] = []
        sim_data['tau_HeII'] = []
        sim_data['ps_mean'] = []
        sim_data['ps_kvals'] = []
        z_power_spectrum = []
        data_ps_mean = []
        data_kvals = []
        data_kmin, data_kmax = [], []
        ps_available_indices = []

        for n_file in indices:
            n_file = int(n_file)
            data = load_analysis_data(n_file,
                                      input_dir,
                                      phase_diagram=False,
                                      lya_statistics=True,
                                      load_skewer=False,
                                      load_fit=load_fit,
                                      mcmc_fit_dir=mcmc_fit_dir)
            z = data['cosmology']['current_z']
            if load_fit:
                T0 = data['phase_diagram']['fit']['T0']
                gamma = data['phase_diagram']['fit']['gamma']
            F_mean = data['lya_statistics']['Flux_mean']
            tau = data['lya_statistics']['tau']
            tau_HeII = data['lya_statistics']['tau_HeII']
            k_vals = data['lya_statistics']['power_spectrum']['k_vals']
            ps_mean = data['lya_statistics']['power_spectrum']['ps_mean']
            if ps_mean is not None and z < 5.5:
                ps_available_indices.append(n_file)
                # z_power_spectrum.append( z )
                # data_ps_mean.append( ps_mean )
                # data_kvals.append( k_vals )
                # data_kmin.append( k_vals.min() )
                # data_kmax.append( k_vals.max() )
            sim_data['ps_kvals'].append(k_vals)
            sim_data['ps_mean'].append(ps_mean)
            sim_data['z'].append(z)
            if load_fit:
                sim_data['T0'].append(T0)
                sim_data['gamma'].append(gamma)
            sim_data['F_mean'].append(F_mean)
            sim_data['tau'].append(tau)
            sim_data['tau_HeII'].append(tau_HeII)
        sim_data['z'] = np.array(sim_data['z'])
        if load_fit:
            sim_data['T0'] = np.array(sim_data['T0'])
            sim_data['gamma'] = np.array(sim_data['gamma'])
        sim_data['F_mean'] = np.array(sim_data['F_mean'])
        sim_data['tau'] = np.array(sim_data['tau'])
        sim_data['tau_HeII'] = np.array(sim_data['tau_HeII'])
        sim_data['ps_available_indices'] = ps_available_indices
        # z_power_spectrum = np.array( z_power_spectrum )
        # data_kmin, data_kmax = np.array( data_kmin ), np.array( data_kmax )
        # data_ps = { 'z':z_power_spectrum, 'k_min':data_kmin, 'k_max':data_kmax, 'k_vals':data_kvals, 'ps_mean':data_ps_mean, 'available_indices':ps_available_indices }
        # sim_data['power_spectrum'] = data_ps
        self.Grid[sim_id]['analysis'] = sim_data