示例#1
0
            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'])

        # Generate interpolator from the emissivity grids
        ionDict = objIons.get_ions_dict(np.unique(objLinesDF.ion.values))
        objIons.computeEmissivityGrids(objLinesDF,
                                       ionDict,
                                       combined_dict=combined_line_dict)

        # Declare chemical model
        objChem = sr.DirectMethod(
            linesDF=objLinesDF,
            highTempIons=objParams['simulation_properties']
            ['high_temp_ions_list'])

        # Declare region physical model
        obj1_model = sr.SpectraSynthesizer()
        # obj1_model.define_region(objLinesDF, objIons, objRed, objChem)
        #
        # # Replace the flamda values
        # idcs_lines = objLinesDF.index.isin(obj1_model.lineLabels)
        # flambda_new = objLinesDF.loc[idcs_lines, 'f_lambda']
        # obj1_model.lineFlambda = flambda_new
        #
        # # Declare sampling properties
        # obj1_model.simulation_configuration(objParams['inference_model_configuration']['parameter_list'],
        #                                     prior_conf_dict=objParams['priors_configuration'],
        #                                     photo_ionization_grid=False)
                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'])

                # Declare chemical model
                objChem = sr.DirectMethod(
                    lineLabels,
                    highTempIons=chem_conf['simulation_properties']
                    ['high_temp_ions_list'])

                # Prepare simulation
                obj1_model = sr.SpectraSynthesizer()

                obj1_model.define_region(lineLabels, lineFluxes, lineErr,
                                         objIons, objRed, objChem)

                obj1_model.simulation_configuration(
                    chem_conf['inference_model_configuration']
                    ['parameter_list'],
                    prior_conf_dict=chem_conf['priors_configuration'],
                    photo_ionization_grid=False)

                obj1_model.simulation_configuration(
示例#3
0
        # Declare input files
        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)
        objLinesDF = sr.import_emission_line_data(
            lineLog_file, include_lines=objParams[obj]['input_lines'])

        # Plot the results
        objChem = sr.DirectMethod()
        table_file = objFolder / f'{obj}_elementalabundances'
        objChem.abundances_from_db(outputDb, save_results_address=table_file)

        mean_abund_dict = {}
        for element, trace in objChem.element_traces.items():
            mean_abund_dict[element] = np.array([trace.mean(), trace.std()])

        sr.parseConfDict(results_file,
                         mean_abund_dict,
                         f'Elemental_abundances_{cycle}',
                         clear_section=True)
示例#4
0
            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,
            linesDb=sr._linesDb,
            combined_dict={'O2_3726A': 'O2_3726A-O2_3729A'})

        # Declare chemical model
        objChem = sr.DirectMethod(
            linesDF=objLinesDF, highTempIons=objParams['high_temp_ions_list'])

        # Declare region physical model
        obj1_model.define_region(objLinesDF, objIons, objRed, objChem)

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

        # Declare simulation inference model
        obj1_model.inference_model(
            include_Thigh_prior=objParams['T_high_check'])

        # Run the simulation
        obj1_model.run_sampler(simFolder / outputDb, 5000, 2000, njobs=1)
示例#5
0
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'])

# Define the dictionary with the pyneb ion objects
ionDict = objIons.get_ions_dict(np.unique(objLinesDF.ion.values))

# Compute the emissivity surfaces for the observed emission lines # TODO this database is not necesary since we duplicate the logs
objIons.computeEmissivityGrid(objLinesDF, ionDict, linesDb=ss._linesDb)

# Declare the paradigm for the chemical composition measurement
objChem = ss.DirectMethod()

# Tag the emission features for the chemical model implementation
objChem.label_ion_features(linesDF=objLinesDF, highTempIons=objParams['high_temp_ions_list'])

# Declare a dictionary with the synthetic abundances
abundDict = {}
for ion in objChem.obsAtoms:
    abundDict[ion] = objParams['true_values'][ion]

# We generate an object with the tensor emission functions
emtt = ss.EmissionTensors()

# Array with the equation labels
eqLabelArray = ss.assignFluxEq2Label(objLinesDF.index.values, objLinesDF.ion.values)