entry_name = r'{text}{expo}'.format(text=catalogue_df.loc[objName].quick_index, expo=name_superscript) objData = catalogue_df.loc[objName] abundValues = objData[metals_list].values objData[metals_list] = 12.0 + unumpy.log10(abundValues) HeI_HI_entry = dz.format_for_table(catalogue_df.loc[objName, 'HeII_HII_from_O' + ext_data], rounddig=3, rounddig_er=2) Ymass_O_entry = dz.format_for_table(catalogue_df.loc[objName, 'Ymass_O' + ext_data], rounddig=3, rounddig_er=2) Ymass_S_entry = dz.format_for_table(catalogue_df.loc[objName, 'Ymass_S' + ext_data], rounddig=3, rounddig_er=2) print objName, objData[['OI_HI' + ext_data]].values, objData[['OI_HI' + ext_data]].isnull().values.any(), regressions_employed row = [entry_name] + [HeI_HI_entry, Ymass_O_entry, Ymass_S_entry] row += list(objData[['OI_HI' + ext_data, 'NI_HI' + ext_data, 'SI_HI' + ext_data]].values) dz.addTableRow(row, last_row = False if catalogue_df.index[-1] != objName else True, rounddig=3, rounddig_er=1) # dz.generate_pdf() dz.generate_pdf(output_address=pdf_address) # from dazer_methods import Dazer # from uncertainties import unumpy # from collections import OrderedDict # from pylatex import Package, NoEscape # # #Import library object # dz = Dazer() # # #Load observational data
emission_linedf = dz.load_lineslog_frame(linelog_emisAddress) Hbeta_F = reduc_linedf.loc['H1_4861A'].line_Flux Hbeta_emisF = emission_linedf.loc['H1_4861A'].line_Flux lambdas_array = emission_linedf['lambda_theo'].values # Short array and remove repeated entries lambdas_array = unique(lambdas_array) # Add the parameters row Headers = [ r'$\lambda(\AA)$', 'Observed flux', 'Emission flux', '\% Difference' ] dz.addTableRow(Headers, last_row=True) # Loop through the observed lines an ad them to the table for i in range(len(reduc_linedf.index)): lineLabel = reduc_linedf.iloc[i].name wave = reduc_linedf.iloc[i].lambda_theo recombLine = True if ( ('H1' in lineLabel) or ('He1' in lineLabel) or ('He2' in lineLabel)) and wave < 6900 else False print 'wave', wave, recombLine if recombLine: if lineLabel != 'H1_6563A_w': #idx_label = (linformat_df['lambda_theo'] == wave)
dz.quick_indexing(catalogue_df) # Sample objects excludeObjects = [ 'SHOC579', 'SHOC575_n2', '11', 'SHOC588', 'SDSS3', 'SDSS1', 'SHOC36' ] # SHOC579, SHOC575, SHOC220, SHOC588, SHOC592, SHOC036 sampleObjects = catalogue_df.loc[ dz.idx_include & ~catalogue_df.index.isin(excludeObjects)].index.values # Generate pdf tableAddress = article_folder + 'modelParameters' # print('Creating table in {}'.format(tableAddress)) # dz.create_pdfDoc(tableAddress, pdf_type='table') # dz.pdfDoc.packages.append(Package('nicefrac')) dz.pdf_insert_table(headers_format, addfinalLine=False) dz.addTableRow(['HII Galaxy', '$(cm^{-3})$', '$(K)$', '$(K)$', r'$c(H\beta)$'], last_row=True) # Loop through the objects for i in range(sampleObjects.size): # Object references objName = sampleObjects[i] local_reference = objName.replace('_', '-') quick_reference = catalogue_df.loc[objName].quick_index print '- Treating object {}: {} {}'.format(i, objName, quick_reference) # Declare configuration file objectFolder = '{}{}/'.format( root_folder, objName) # '{}{}\\'.format(root_folder, objName) dataFileAddress = '{}{}_objParams.txt'.format(objectFolder, objName) obsData = specS.load_obsData(dataFileAddress, objName)
headers_dic['HeIII_HII_from_O'] = r'$\big(\frac{He^{+2}}{H^{+}}\big)_{O}$' headers_dic['HeI_HI_from_O'] = r'$\big(\frac{He}{H}\big)_{O}$' headers_dic['HeI_HI_from_S'] = r'$\big(\frac{He}{H}\big)_{S}$' headers_dic['Ymass_O'] = r'$Y_{O}$' headers_dic['Ymass_S'] = r'$Y_{S}$' properties_list = map(( lambda x: x + ext_data), headers_dic.keys()) headers_format = ['HII Galaxy', 'SDSS reference'] + headers_dic.values() print 'Headers for table', headers_format print 'Properties from df', properties_list #Generate pdf dz.create_pdfDoc(pdf_address, pdf_type='table') #Set the pdf format dz.pdf_insert_table(headers_format) for objName in catalogue_df.index: abundValues = catalogue_df.loc[objName, properties_list].values row = [objName.replace('_','-'), catalogue_df.loc[objName, 'SDSS_reference']] + list(abundValues) dz.addTableRow(row, last_row = False if catalogue_df.index[-1] != objName else True) dz.generate_pdf()
column1 = '{} ({})'.format(author1.replace('&','\&'), year1)#.replace("'",'\textquotesingle') column3 = '{} ({})'.format(author2.replace('&','\&'), year2)#.replace("'",'\textquotesingle') if upper_limit1 != 'yes': column2 = '${}\pm{}$'.format(value1,error1) else: column2 = '$\leq{}$'.format(value1) if upper_limit2 != 'yes': column4 = '${}\pm{}$'.format(value2,error2) else: column4 = '$\leq{}$'.format(value2) print column1, column2 dz.addTableRow([column1, column2,column3,column4], last_row = False if i != 26 else True) #dz.generate_pdf(clean_tex=False) dz.generate_pdf(output_address=pdf_address) #Define data to load # pdf_address = '/home/vital/Dropbox/Astrophysics/Thesis/tables/Yp_references' # headers = ['Reference', 'Measured value', ] # # print df.index.values # # #Generate pdf # #dz.create_pdfDoc(pdf_address, pdf_type='table') # dz.pdf_insert_table(headers) # # for reference in df.index:
# Loop through the objects for i in range(sampleObjects.size): # Object references objName = sampleObjects[i] local_reference = objName.replace('_', '-') quick_reference = catalogue_df.loc[objName].quick_index print '- Treating object {}: {} {}'.format(i, objName, quick_reference) # Declare configuration file objectFolder = '{}{}/'.format( root_folder, objName) # '{}{}\\'.format(root_folder, objName) dataFileAddress = '{}{}_objParams.txt'.format(objectFolder, objName) obsData = specS.load_obsData(dataFileAddress, objName) # Load observational data row_i = [quick_reference] + ['-'] * varsNum keys_list = headers_dic.keys() for j in range(len(keys_list)): item = keys_list[j] row_i[j + 1] = checkDictValue(obsData, item) dz.addTableRow(row_i, last_row=False if sampleObjects[-1] != objName else True, rounddig=3, rounddig_er=1) # dz.generate_pdf() dz.generate_pdf(output_address=tableAddress)
#dz.create_pdfDoc(pdf_address, pdf_type='table') dz.pdf_insert_table(headers, table_format='c') for reference in df.index: low_limit, parameter, upper_limit, unit = df.loc[reference, df.columns].values if not pd.isnull(unit): unit = [unit.split(',')[0], unit.split(',')[1] ] if ',' in unit else [unit, unit] else: unit = ['', ''] if not pd.isnull(upper_limit): entry = '${low}{unit0}$ < ${variable}$ < ${up}{unit1}$'.format( variable=parameter, low=low_limit, up=upper_limit, unit0=unit[0], unit1=unit[1]) else: entry = '${variable}$ > ${low}{unit}$'.format(variable=parameter, low=low_limit, unit=unit[0]) dz.addTableRow([entry], last_row=False if df.index[-1] != reference else True) #dz.generate_pdf(clean_tex=False) dz.generate_pdf(output_address=pdf_address)
# # dz.pdfDoc.packages.append(Package('nicefrac')) dz.pdf_insert_table(headers_dic.values()) default_lines = [ 'H1_4341A', 'O3_4363A', 'He1_4471A', 'He2_4686A', 'Ar4_4740A', 'O3_4959A', 'O3_5007A', 'He1_5876A', 'S3_6312A', 'N2_6548A', 'H1_6563A', 'N2_6584A', 'He1_6678A', 'S2_6716A', 'S2_6731A', 'Ar3_7136A', 'O2_7319A_b', 'S3_9069A', 'S3_9531A' ] # Loop through the objects for i in range(len(default_lines)): # Object references lineLabel = default_lines[i] lineCoeffs = specS.config[lineLabel + '_coeffs'] row = ['-'] * 6 row[0] = specS.linesDb.loc[lineLabel, 'latex_code'] for j in range(1, 6): if j - 1 < len(lineCoeffs): row[j] = lineCoeffs[j - 1] dz.addTableRow(row, last_row=False if default_lines[-1] != lineLabel else True, rounddig=3, rounddig_er=1) # dz.generate_pdf() dz.generate_pdf(output_address=tableAddress)
# Save the results results_dict['ONS'] = np.array([entry_key, n_Median_cf, n_std_df, n_objects]) # Make the table pdf_address = tables_folder + 'yp_determinations' # dz.create_pdfDoc(pdf_address, pdf_type='table') headers = ['Element regression', 'Value', 'Number of objects'] dz.pdf_insert_table(headers) last_key = results_dict.keys()[-1] for key in results_dict: magnitude_entry = r'${}\pm{}$'.format(round_sig(results_dict[key][1], 3, scien_notation=False), round_sig(results_dict[key][2], 1, scien_notation=False)) row = [results_dict[key][0], magnitude_entry, str(int(results_dict[key][3]))] dz.addTableRow(row, last_row = False if last_key != last_key else True) dz.table.add_hline() for key in inter_regr_dict: magnitude_entry = r'${}\pm{}$'.format(inter_regr_dict[key][0], inter_regr_dict[key][1]) row = [key, magnitude_entry, inter_regr_dict[key][2]] dz.addTableRow(row, last_row = False if last_key != last_key else True) dz.table.add_hline() for key in exter_regr_dict: magnitude_entry = r'${}\pm{}$'.format(exter_regr_dict[key][0], exter_regr_dict[key][1]) row = [key, magnitude_entry, exter_regr_dict[key][2]] dz.addTableRow(row, last_row = False if last_key != last_key else True) dz.generate_pdf(output_address=pdf_address) # dz.generate_pdf(clean_tex=True)
group_dict[str(objName) + '_df'] = reduc_linedf group_dict[str(objName) + '_dfemis'] = emission_linedf group_dict[str(objName) + '_Hbeta_F'] = emission_linedf.loc['H1_4861A'].line_Flux group_dict[str(objName) + '_Hbeta_I'] = emission_linedf.loc['H1_4861A'].line_Int lambdas_array = emission_linedf['lambda_theo'].values # Short array and remove repeated entries lambdas_array = unique(lambdas_array) # Insert the row with the names row_objs = ['', '', quick_reference, ''] dz.addTableRow(row_objs, last_row=False) # Add the parameters row dz.addTableRow(Headers, last_row=True) output_df = DataFrame(columns=columns_output) output_df.index.name = 'lambda' # Loop through the observed lines an ad them to the table for wave in lambdas_array: if wave in linformat_df['lambda_theo'].values: idx_label = (linformat_df['lambda_theo'] == wave) ion = linformat_df.loc[idx_label, 'latex_format'].values[0] label = linformat_df.loc[idx_label, 'line_label'].values[0] wave = 4861.0 if label == 'H1_4861A' else wave
dz.deredden_lines(reduc_linedf, reddening_curve=red_curve, cHbeta=cHbeta, R_v=R_v) dz.deredden_lines(emission_linedf, reddening_curve=red_curve, cHbeta=cHbeta, R_v=R_v) #Get Hbeta flux for normalization Hbeta_flux = reduc_linedf.loc['H1_4861A'].line_Flux Hbeta_Int = reduc_linedf.loc['H1_4861A'].line_Int #Generate pdf table_address = '{objfolder}{codeName}_WHT_linesLog_reduc'.format(objfolder = ouput_folder, codeName=objName) dz.create_pdfDoc(table_address, pdf_type='table') #Set the pdf format dz.pdf_insert_table(Headers) for line in reduc_linedf.index.values: ion = r'${}$'.format(lines_df.loc[line].notation) if '_w' not in line else r'$H\alpha$' row = list(reduc_linedf.loc[line, column_code].values) row[2] = row[2] / Hbeta_flux * norm_factor row[4] = row[4] / Hbeta_Int * norm_factor row = [r'{} {}'.format(row[0], ion)] + row[1:] dz.addTableRow(row, last_row = False if reduc_linedf.index[-1] != line else True) row = [r'$F(H\beta)$ $(erg\,cm^{-2} s^{-1} \AA^{-1})$', '', dz.format_for_table(Hbeta_flux, rounddig = 3, scientific_notation=True), '', dz.format_for_table(Hbeta_Int, rounddig = 3, scientific_notation=True)] dz.addTableRow(row, last_row = False) row = [r'$c(H\beta)$', '', cHbeta, '', ''] dz.addTableRow(row, last_row = True) dz.generate_pdf()