Beispiel #1
0
# plt.show()
# az.plot_posterior(trace)
# plt.show()

# -------------------------------------- Test 2 --------------------------------------------------

# Load synthetic observation
linesLogAddress = user_folder / f'Teff_LogU_epmGrids_linesLog.txt'
simulationData_file = user_folder / f'Teff_LogU_epmGrids_config.txt'

# Load simulation parameters
objParams = sr.loadConfData(simulationData_file, group_variables=False)

# Load emission lines
merged_lines = {'O2_3726A_m': 'O2_3726A-O2_3729A', 'O2_7319A_m': 'O2_7319A-O2_7330A'}
objLinesDF = sr.import_emission_line_data(linesLogAddress, include_lines=objParams['inference_model_configuration']['input_lines'], exclude_lines=['S3_9069A'])

# Establish lines used in photo-ionization model
lineLabels = objLinesDF.index.values
lines_Grid = np.array(list(gridLineDict.keys()))
idx_analysis_lines = np.in1d(lineLabels, lines_Grid)
lineFluxes = objLinesDF.obsFlux.values
lineErr = objLinesDF.obsFluxErr.values
lineWaves = objLinesDF.wavelength.values

# Extinction parameters
objRed = sr.ExtinctionModel(Rv=objParams['simulation_properties']['R_v'],
                            red_curve=objParams['simulation_properties']['reddenig_curve'],
                            data_folder=objParams['data_location']['external_data_folder'])
lineFlambdas = objRed.gasExtincParams(wave=lineWaves)
Beispiel #2
0
        print(f'- Treating object ({i}): {obj}')
        objFolder = resultsFolder / f'{obj}'
        fits_file = dataFolder / f'{obj}_{ext}.fits'
        objMask = dataFolder / f'{obj}_{ext}_mask.txt'
        results_file = objFolder / f'{obj}_{ext}_measurements.txt'
        lineLog_file = objFolder / f'{obj}_{ext}_linesLog_{cycle}.txt'

        # Declare output files
        outputDb = objFolder / f'{obj}_{ext}_fitting_{cycle}.db'
        outputTxt = objFolder / f'{obj}_{ext}_fitting_{cycle}.txt'
        simConf = dataFolder / f'{obj}_config.txt'

        # Load data
        objParams = sr.loadConfData(simConf, group_variables=False)
        results_dict = sr.loadConfData(results_file, group_variables=False)
        objLinesDF = sr.import_emission_line_data(
            lineLog_file, include_lines=objParams[obj]['input_lines'])

        # Load previous measurements to compare
        true_values = check_previous_measurements(
            obj, objParams['inference_model_configuration']['parameter_list'],
            results_dict, obsData)

        # Declare extinction properties
        objRed = sr.ExtinctionModel(
            Rv=objParams['simulation_properties']['R_v'],
            red_curve=objParams['simulation_properties']['reddenig_curve'],
            data_folder=objParams['data_location']['external_data_folder'])
        # Declare ion properties
        objIons = sr.IonEmissivity(
            tempGrid=objParams['simulation_properties']['temp_grid'],
            denGrid=objParams['simulation_properties']['den_grid'])
Beispiel #3
0
        objFolder = resultsFolder / f'{obj}'
        results_file = objFolder / f'{obj}_{ext}_measurements.txt'
        lineLog_file = objFolder / f'{obj}_{ext}_linesLog_{cycle}.txt'
        outputDb = objFolder / f'{obj}_{ext}_fitting_{cycle}.db'
        outputTxt = objFolder / f'{obj}_{ext}_fitting_{cycle}.txt'
        outputPiDb = objFolder / f'{obj}_{ext}_pI_fitting_{cycle}.db'
        outputPiTxt = objFolder / f'{obj}_{ext}_pI_fitting_{cycle}.txt'
        outputDirectHIIchemDb = objFolder / f'{obj}_{ext}_Direct-Teff-logU_{cycle}.db'
        outputDirectHIIchemTxt = objFolder / f'{obj}_{ext}_Direct-Teff-logU_{cycle}.txt'

        obj1_model = sr.SpectraSynthesizer()

        measurements_dict = sr.loadConfData(results_file,
                                            group_variables=False)
        objLinesDF = sr.import_emission_line_data(lineLog_file)

        fit_pickle = sr.load_MC_fitting(outputDb)
        pI_pickle = sr.load_MC_fitting(outputPiDb)
        bayes_plus_PI_pickle = sr.load_MC_fitting(outputDirectHIIchemDb)

        fit_inputs_dict = sr.loadConfData(outputTxt)
        pI_inputs_dict = sr.loadConfData(outputPiTxt)
        bayes_inputs_dict = sr.loadConfData(outputDirectHIIchemTxt)

        # Recover Direct method Bayesian fitting
        sr_lineLabels = fit_inputs_dict['Input_data']['lineLabels_list']
        inFlux = fit_inputs_dict['Input_data']['inputFlux_array']
        inErr = fit_inputs_dict['Input_data']['inputErr_array']
        flux_matrix = fit_pickle['trace']['calcFluxes_Op']
        mean_line_values = flux_matrix.mean(axis=0)
# Results folder
output_folder = Path(r'D:\Dropbox\Astrophysics\Data\CGCG0707_mike')

# Conf file
chem_conf = output_folder / f'MIKE_CGCG007_chemical_fitting.txt'
objParams = load_cfg(chem_conf)

for i_night in nights_range:

    # Declare sampler
    obj1_model = sr.SpectraSynthesizer()

    input_lines = objParams['inference_model_configuration']['input_lines']
    lines_log_address = output_folder / f'MIKE_CGCG007_linelog_night{i_night}.txt'
    objLinesDF = sr.import_emission_line_data(lines_log_address,
                                              include_lines=input_lines)
    output_db = output_folder / f'MIKE_CGCG007_db{i_night}'

    lineLabels = objLinesDF.index.values
    lineIons = objLinesDF['ion'].values
    lineFluxes = objLinesDF['intg_flux'].values
    lineErr = objLinesDF['intg_err'].values

    # Declare simulation physical properties
    objRed = sr.ExtinctionModel(
        Rv=objParams['simulation_properties']['R_v'],
        red_curve=objParams['simulation_properties']['reddenig_curve'],
        data_folder=objParams['data_location']['external_data_folder'])

    objIons = sr.IonEmissivity(
        tempGrid=objParams['simulation_properties']['temp_grid'],
                # linesDF.rename(columns={'wavelength': 'obsWave'}, inplace=True)
                if ('O2_7319A' in linesDF.index) and ('O2_7330A'
                                                      in linesDF.index):
                    flux_comb = linesDF.loc[
                        'O2_7319A', 'obsFlux'] + linesDF.loc['O2_7330A',
                                                             'obsFlux']
                    err_comb = np.sqrt(
                        linesDF.loc['O2_7319A', 'obsFluxErr']**2 +
                        linesDF.loc['O2_7330A', 'obsFluxErr']**2)
                    linesDF.loc['O2_7319A_b'] = None
                    linesDF.loc['O2_7319A_b',
                                ['wavelength', 'obsFlux', 'obsFluxErr'
                                 ]] = 7325, flux_comb, err_comb
                    linesDF.loc['O2_7319A_b', 'ion'] = 'O2'

                objLinesDF = sr.import_emission_line_data(
                    linesDF=linesDF, include_lines=input_lines)

                normLine = 'H1_4861A'
                idcs_lines = (objLinesDF.index != normLine)
                lineLabels = objLinesDF.loc[idcs_lines].index
                lineIons = objLinesDF.loc[idcs_lines, 'ion'].values
                lineFluxes = objLinesDF.loc[idcs_lines, 'obsFlux'].values
                lineErr = objLinesDF.loc[idcs_lines, 'obsFluxErr'].values

                # Declare simulation physical properties
                objRed = sr.ExtinctionModel(
                    Rv=chem_conf['simulation_properties']['R_v'],
                    red_curve=chem_conf['simulation_properties']
                    ['reddenig_curve'],
                    data_folder=chem_conf['data_location']
                    ['external_data_folder'])
for idx_obj in range(n_objs):

    # State the objects to study
    linesLogAddress = user_folder / f'GridEmiss_region{idx_obj+1}of{n_objs}_linesLog.txt'
    simulationData_file = user_folder / f'GridEmiss_region{idx_obj+1}of{n_objs}_config.txt'

    # Load simulation parameters
    objParams = sr.loadConfData(simulationData_file, group_variables=False)

    # Load emission lines
    merged_lines = {
        'O2_3726A_m': 'O2_3726A-O2_3729A',
        'O2_7319A_m': 'O2_7319A-O2_7330A'
    }
    default_lines = objParams['inference_model_configuration']['input_lines']
    objLinesDF = sr.import_emission_line_data(linesLogAddress,
                                              include_lines=default_lines)

    normLine = 'H1_4861A'
    idcs_lines = (objLinesDF.index != normLine)
    lineLabels = objLinesDF.loc[idcs_lines].index
    lineIons = objLinesDF.loc[idcs_lines, 'ion'].values
    lineFluxes = objLinesDF.loc[idcs_lines, 'intg_flux'].values
    lineErr = objLinesDF.loc[idcs_lines, 'intg_err'].values

    # Declare simulation physical properties
    objRed = sr.ExtinctionModel(
        Rv=objParams['simulation_properties']['R_v'],
        red_curve=objParams['simulation_properties']['reddenig_curve'],
        data_folder=objParams['data_location']['external_data_folder'])

    objIons = sr.IonEmissivity(
Beispiel #7
0
                       'obsFlux'] = lm.linesDF.loc[idcs_blended,
                                                   'gauss_flux'] / flux_Hbeta
        lm.linesDF.loc[idcs_blended,
                       'obsFluxErr'] = lm.linesDF.loc[idcs_blended,
                                                      'gauss_err'] / flux_Hbeta
        lm.linesDF.loc[~idcs_blended,
                       'obsFlux'] = lm.linesDF.loc[~idcs_blended,
                                                   'intg_flux'] / flux_Hbeta
        lm.linesDF.loc[~idcs_blended,
                       'obsFluxErr'] = lm.linesDF.loc[~idcs_blended,
                                                      'intg_err'] / flux_Hbeta
        lm.linesDF.rename(columns={'wavelength': 'obsWave'}, inplace=True)
        lm.save_lineslog(lm.linesDF, simFolder / inputLinesLog)

        # Load emission lines
        objLinesDF = sr.import_emission_line_data(
            simFolder / inputLinesLog, include_lines=objParams['input_lines'])

        # Declare simulation physical properties
        objRed = sr.ExtinctionModel(
            Rv=objParams['R_v'],
            red_curve=objParams['reddenig_curve'],
            data_folder=objParams['external_data_folder'])

        objIons = sr.IonEmissivity(tempGrid=objParams['temp_grid'],
                                   denGrid=objParams['den_grid'])

        # Generate interpolator from the emissivity grids
        ionDict = objIons.get_ions_dict(np.unique(objLinesDF.ion.values))
        objIons.computeEmissivityGrids(
            objLinesDF,
            ionDict,
Beispiel #8
0
                linesDF['obsFlux'] = linesDF['intg_flux']/flux_Hbeta
                linesDF['obsFluxErr'] = linesDF['intg_err']/flux_Hbeta
                linesDF.rename(columns={'wavelength': 'obsWave'}, inplace=True)
                for ion in ['H1', 'He1', 'He2']:
                    idcs_ions = linesDF.ion == ion
                    linesDF.loc[idcs_ions, 'ion'] = ion + 'r'
                if ('O2_7319A' in linesDF.index) and ('O2_7330A' in linesDF.index):
                    flux_comb = linesDF.loc['O2_7319A', 'intg_flux'] + linesDF.loc['O2_7330A', 'intg_flux']
                    err_comb = np.sqrt(linesDF.loc['O2_7319A', 'intg_err']**2 + linesDF.loc['O2_7330A', 'intg_err']**2)
                    linesDF.loc['O2_7319A_b'] = None
                    linesDF.loc['O2_7319A_b', ['obsWave', 'obsFlux', 'obsFluxErr']] = 7325, flux_comb/flux_Hbeta, err_comb/flux_Hbeta
                    linesDF.loc['O2_7319A_b', 'ion'] = 'O2'
                sr.save_lineslog(linesDF, inputLinesLog)

                # Load emission lines
                objLinesDF = sr.import_emission_line_data(inputLinesLog,
                                                    include_lines=chem_conf['inference_model_configuration']['input_lines'])



                # Declare simulation physical properties
                objRed = sr.ExtinctionModel(Rv=chem_conf['simulation_properties']['R_v'],
                                            red_curve=chem_conf['simulation_properties']['reddenig_curve'],
                                            data_folder=chem_conf['data_location']['external_data_folder'])

                objIons = sr.IonEmissivity(tempGrid=chem_conf['simulation_properties']['temp_grid'],
                                           denGrid=chem_conf['simulation_properties']['den_grid'])

                # Generate interpolator from the emissivity grids
                ionDict = objIons.get_ions_dict(np.unique(objLinesDF.ion.values))
                objIons.computeEmissivityGrids(objLinesDF, ionDict, linesDb=sr._linesDb,
                                                combined_dict={'O2_7319A_b': 'O2_7319A-O2_7330A'})
Beispiel #9
0
                            'Ar4': 5.06,
                            'err_lines': 0.02}

# Declare lines to simulate
objParams['input_lines'] = ['H1_4341A', 'H1_6563A',
                            'O3_4363A', 'O3_4959A', 'O3_5007A', 'N2_6548A', 'N2_6584A',
                            'S2_6716A', 'S2_6731A', 'S3_6312A', 'S3_9069A', 'S3_9531A']

# We use the default simulation configuration for the remaining settings
objParams.update(ss._default_cfg)

# We use the default lines database to generate the synthetic emission lines log for this simulation
linesLogPath = os.path.join(ss._literatureDataFolder, ss._default_cfg['lines_data_file'])

# Prepare dataframe with the observed lines labeled
objLinesDF = ss.import_emission_line_data(linesLogPath, include_lines=objParams['input_lines'])

# Declare extinction properties
objRed = ss.ExtinctionModel(Rv=objParams['R_v'],
                            red_curve=objParams['reddenig_curve'],
                            data_folder=objParams['external_data_folder'])

# Compute the flambda value for the input emission lines
lineFlambdas = objRed.gasExtincParams(wave=objLinesDF.obsWave.values)
lineWaves = objLinesDF.pynebCode.values

# Establish atomic data references
ftau_file_path = os.path.join(ss._literatureDataFolder, objParams['ftau_file'])
objIons = ss.IonEmissivity(ftau_file_path=ftau_file_path, tempGrid=objParams['temp_grid'],
                           denGrid=objParams['den_grid'])
user_folder = Path('D:/AstroModels')
output_db = user_folder/f'Teff_LogU_epmGrids_db'

# Declare sampler
obj1_model = sr.SpectraSynthesizer()

# State the objects to study
linesLogAddress = user_folder/f'Teff_LogU_epmGrids_linesLog.txt'
simulationData_file = user_folder/f'Teff_LogU_epmGrids_config.txt'

# Load simulation parameters
objParams = sr.loadConfData(simulationData_file, group_variables=False)

# Load emission lines
inputLines = objParams['inference_model_configuration']['input_lines']
objLinesDF = sr.import_emission_line_data(linesLogAddress, include_lines=inputLines)

# Declare simulation physical properties
objRed = sr.ExtinctionModel(Rv=objParams['simulation_properties']['R_v'],
                            red_curve=objParams['simulation_properties']['reddenig_curve'],
                            data_folder=objParams['data_location']['external_data_folder'])

# Declare region physical model
obj1_model.define_region(objLinesDF, extinction_model=objRed)

# Declare sampling properties
obj1_model.simulation_configuration(objParams['inference_model_configuration']['parameter_list'],
                                    prior_conf_dict=objParams['priors_configuration'],
                                    photo_ionization_grid=True)

# Declare simulation inference model