Skip to content

Commit

Permalink
Added a function that checks the automated validation table to a make…
Browse files Browse the repository at this point in the history
… a revised table
  • Loading branch information
Reagen committed Mar 19, 2020
1 parent 04f1feb commit 7bb3789
Showing 1 changed file with 85 additions and 5 deletions.
90 changes: 85 additions & 5 deletions Metallicity_Stack_Commons/valid_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.io import ascii as asc
from astropy.table import Table
from astropy.table import Table, Column

from Metallicity_Stack_Commons.column_names import filename_dict, bin_names0
from Metallicity_Stack_Commons.column_names import filename_dict, bin_names0, remove_from_list

def make_validation_table(fitspath):
'''
Expand All @@ -29,15 +29,15 @@ def make_validation_table(fitspath):
None
Outputs:
fitspath + 'validation.tbl' --> a validation table containing bin IDs;
fitspath + 'bin_validation.tbl' --> a validation table containing bin IDs;
number of galaxies in each bin; and
column indicating OIII4363 detection/non-detection
OIII4363_Flux_Observed
OIII4363_S/N
'''

bin_table = asc.read(fitspath + filename_dict['bin_info'])
em_table = asc.read(fitspath + filename_dict['bin_fit']) #this is combine_flux_ascii
em_table = asc.read(fitspath + filename_dict['bin_fit'])

bin_ID = em_table['bin_ID'].data
raw_OIII4363 = em_table['OIII_4363_Flux_Observed'].data
Expand Down Expand Up @@ -73,7 +73,87 @@ def make_validation_table(fitspath):

ver_tab = fitspath+ filename_dict['bin_valid']
n =('bin_ID','N_stack','Detection', 'OIII_4363_Flux_Observed', 'OIII_4363_S/N')
tab1 = Table([bin_ID, N_stack, detection, OIII4363, O_4363_SN], names=n)
tab1 = Table([bin_ID, N_stack, detection, OIII4363, O_4363_SN], names = valid_table_names0) #names=n)
asc.write(tab1, ver_tab, format='fixed_width_two_line')


def compare_to_by_eye(fitspath,dataset):
'''
Purpose -> This function takes the automated validation table and checks it against
inputted measurement that are determined by eye. These inputted measurements
are in the np.where statements. It outputs a revised validation table based
on the inputted measurements.
Usage -> valid_table.make_validation_table(fitspath, dataset)
Params:
fitspath --> a string of the file path where the input file is and where the output file
will be placed
dataset --> a string that is used to determine which eye measurements to use
Returns:
None
Outputs:
fitspath + 'bin_validation_revised.tbl' and '.csv' -->
a validation table containing bin IDs;
number of galaxies in each bin; and
column indicating OIII4363 detection/non-detection
OIII4363_Flux_Observed
OIII4363_S/N
Notes
'''
ver_table = fitspath+ filename_dict['bin_valid']
ver_tab = asc.read(ver_table)
indicate = ver_tab['Detection']
ID = ver_tab['bin_ID']

#Detections By Eye
if dataset== 'Voronoi20': det_4363 = np.where((ID ==0)| (ID ==2)| (ID ==3) | (ID ==5) | (ID==6))[0]
if dataset== 'Voronoi14': det_4363 = np.where((ID ==0)| (ID ==7)| (ID ==10) | (ID ==11) | (ID==12))[0]
if dataset== 'Voronoi10': det_4363 = np.where((ID ==1)| (ID ==9)| (ID ==18) | (ID ==21))[0]
if dataset== 'Grid': det_4363 = np.where((ID ==11)| (ID ==13)| (ID ==19) | (ID ==20) | (ID == 21))[0]
if dataset== 'R23_Grid': det_4363 = np.where((ID ==0)| (ID ==4)| (ID ==5) | (ID ==6))[0]
if dataset== 'O32_Grid': det_4363 = np.where((ID ==6))[0]
if dataset== 'Double_Bin': det_4363 = np.where((ID ==0)| (ID ==1)| (ID ==2) | (ID ==7) | (ID ==9) | (ID ==10) | (ID ==11) | (ID ==13))[0]
if dataset== 'n_Bins':
det_4363= np.where( (ID ==10) | (ID ==11) |(ID==14) | (ID ==15) | (ID ==20) | (ID==23) | (ID ==26))[0]
rlimit = np.where( (ID ==5) | (ID ==7) |(ID==8) | (ID ==13) | (ID ==16) | (ID==17) | (ID ==19)| (ID ==22))[0]

######Caroline: Add you conditions here#######

check_ID = np.zeros(len(ID))

check_ID[det_4363]=1
check_ID[rlimit] =0.5

for ii in range(len(ID)):
if check_ID[ii] == indicate[ii]:
print(ID[ii], 'matches with by eye validation')
else:
print('*****', ID[ii], 'does not match calculated values. Please check!')

###This is where I need to add the column for notes
if dataset == 'n_Bins':
notes = ['N/A','N/A','N/A','N/A','N/A',
'N/A','N/A','Broad features, but reliable OIII5007 and HGAMMA',
'Bad fit, but good OIII5007','N/A',
'N/A','N/A','N/A','N/A','N/A',
'High Temperature','not fit well, but reliable OIII5007 and HGAMMA',
'N/A','N/A','N/A','N/A','N/A','N/A','N/A','N/A','N/A','N/A']
note_add = Column(name='Notes', data = notes)
ver_tab.add_column(note_add,5)

#######Caroline: Add your notes column here and copy the note_add and ver_tab.add_column lines to your if statement######


ver_tab.remove_column('Detection')

detect_add = Column(name='Detections', data =check_ID)
ver_tab.add_column(detect_add, 2)

asc.write(ver_tab, fitspath+ 'bin_validation_revised.tbl', format = 'fixed_width_two_line')
asc.write(ver_tab, fitspath+ 'bin_validation_revised.csv', format = 'csv')


0 comments on commit 7bb3789

Please sign in to comment.