Source code for xpipeline.postprocess.prep_data

import pandas
import os
import random
import numpy

likelihood_columns = ['standard_energy','coherent_f_plus','incoherent_f_plus', 'coherent_f_cross', 'incoherent_f_cross','circenergy', 'circnullenergy', 'circinc', 'circnullinc',]

[docs]def window_cut(injection_triggers_df, injection_info_dir='input', duration=0.1): # Perform Window Cut groups = injection_triggers_df.groupby(['waveform', 'injection_number']).groups survive_window_cut_indices = [] for key, indices in list(groups.items()): with open(os.path.join(injection_info_dir, 'injection_' + key[0].split('_')[-1] + '.txt'), 'r') as f: tmp = f.readlines() injection_info = tmp[key[1]].split(' ') injection_time = float(injection_info[0]) + 10e-10*float(injection_info[1]) window = [injection_time - duration, injection_time + duration] triggers_this_trial = injection_triggers_df.loc[indices] triggers_this_trial = triggers_this_trial.loc[((triggers_this_trial.min_time_of_cluster > window[0]) & (triggers_this_trial.min_time_of_cluster < window[1])) | ((triggers_this_trial.max_time_of_cluster > window[0]) & (triggers_this_trial.max_time_of_cluster < window[1])) | ((triggers_this_trial.min_time_of_cluster < window[0]) & (triggers_this_trial.max_time_of_cluster > window[1])) | ((triggers_this_trial.min_time_of_cluster > window[0]) & (triggers_this_trial.max_time_of_cluster < window[1])) ] survive_window_cut_indices.extend(triggers_this_trial.index.tolist()) injection_triggers_df = injection_triggers_df.loc[survive_window_cut_indices] return injection_triggers_df
[docs]def prep_data(injection_triggers_df, background_triggers_df, injection_info_dir='input', duration=0.1): # Perform the window cut injection_triggers_df = window_cut(injection_triggers_df, injection_info_dir=injection_info_dir, duration=duration) # calculate some likelihoods injection_triggers_df['standard_energy'] = injection_triggers_df['coherent_f_plus'] + injection_triggers_df['coherent_f_cross'] injection_triggers_df['circenergy'] = injection_triggers_df[['coherent_f_right', 'coherent_f_left']].max(1) injection_triggers_df['circnullenergy'] = injection_triggers_df[['coherent_f_right_null', 'coherent_f_left_null']].min(1) injection_triggers_df['circinc'] = injection_triggers_df[['incoherent_f_left','incoherent_f_right']].max(1) injection_triggers_df['circnullinc'] = injection_triggers_df[['incoherent_f_left_null','incoherent_f_right_null']].max(1) background_triggers_df['standard_energy'] = background_triggers_df['coherent_f_plus'] + background_triggers_df['coherent_f_cross'] background_triggers_df['circenergy'] = background_triggers_df[['coherent_f_right', 'coherent_f_left']].max(1) background_triggers_df['circnullenergy'] = background_triggers_df[['coherent_f_right_null', 'coherent_f_left_null']].min(1) background_triggers_df['circinc'] = background_triggers_df[['incoherent_f_left','incoherent_f_right']].max(1) background_triggers_df['circnullinc'] = background_triggers_df[['incoherent_f_left_null','incoherent_f_right_null']].max(1) # Log all likelihoods injection_triggers_df[likelihood_columns] = numpy.log(injection_triggers_df[likelihood_columns]) background_triggers_df[likelihood_columns] = numpy.log(background_triggers_df[likelihood_columns]) # Calculate all ratio values injection_triggers_df['circ_ratio_e_over_i'] = injection_triggers_df['circenergy'] - injection_triggers_df['circinc'] injection_triggers_df['circ_ratio_i_over_e'] = injection_triggers_df['circinc'] - injection_triggers_df['circenergy'] injection_triggers_df['circnull_ratio_e_over_i'] = injection_triggers_df['circnullenergy'] - injection_triggers_df['circnullinc'] injection_triggers_df['circnull_ratio_i_over_e'] = injection_triggers_df['circnullinc'] - injection_triggers_df['circnullenergy'] injection_triggers_df['plus_ratio_e_over_i'] = injection_triggers_df['coherent_f_plus'] - injection_triggers_df['incoherent_f_plus'] injection_triggers_df['plus_ratio_i_over_e'] = injection_triggers_df['incoherent_f_plus'] - injection_triggers_df['coherent_f_plus'] injection_triggers_df['cross_ratio_e_over_i'] = injection_triggers_df['coherent_f_cross'] - injection_triggers_df['incoherent_f_cross'] injection_triggers_df['cross_ratio_i_over_e'] = injection_triggers_df['incoherent_f_cross'] - injection_triggers_df['coherent_f_cross'] # Calculate all alpha values denominator_plus = (injection_triggers_df['coherent_f_plus'] + injection_triggers_df['incoherent_f_plus'])**0.8 denominator_cross = (injection_triggers_df['coherent_f_cross'] + injection_triggers_df['incoherent_f_cross'])**0.8 denominator_circenergy = (injection_triggers_df['circenergy'] + injection_triggers_df['circinc'])**0.8 denominator_circnull = (injection_triggers_df['circnullenergy'] + injection_triggers_df['circnullinc'])**0.8 injection_triggers_df['plus_alpha_e_over_i'] = numpy.abs(2*(injection_triggers_df['coherent_f_plus'] - injection_triggers_df['incoherent_f_plus'])/denominator_plus) + 1 injection_triggers_df['plus_alpha_i_over_e'] = numpy.abs(2*(injection_triggers_df['incoherent_f_plus'] - injection_triggers_df['coherent_f_plus'])/denominator_plus) + 1 injection_triggers_df['cross_alpha_e_over_i'] = numpy.abs(2*(injection_triggers_df['coherent_f_cross'] - injection_triggers_df['incoherent_f_cross'])/denominator_cross) + 1 injection_triggers_df['cross_alpha_i_over_e'] = numpy.abs(2*(injection_triggers_df['incoherent_f_cross'] - injection_triggers_df['coherent_f_cross'])/denominator_cross) + 1 injection_triggers_df['circ_alpha_e_over_i'] = (2*(injection_triggers_df['circenergy'] - injection_triggers_df['circinc'])/denominator_circenergy) + 1 injection_triggers_df['circ_alpha_i_over_e'] = (2*(injection_triggers_df['circinc'] - injection_triggers_df['circenergy'])/denominator_circenergy) + 1 injection_triggers_df['circnull_alpha_e_over_i'] = (2*(injection_triggers_df['circnullenergy'] - injection_triggers_df['circnullinc'])/denominator_circnull) + 1 injection_triggers_df['circnull_alpha_i_over_e'] = (2*(injection_triggers_df['circnullinc'] - injection_triggers_df['circnullenergy'])/denominator_circnull) + 1 # Calculate all ratio values background_triggers_df['circ_ratio_e_over_i'] = background_triggers_df['circenergy'] - background_triggers_df['circinc'] background_triggers_df['circ_ratio_i_over_e'] = background_triggers_df['circinc'] - background_triggers_df['circenergy'] background_triggers_df['circnull_ratio_e_over_i'] = background_triggers_df['circnullenergy'] - background_triggers_df['circnullinc'] background_triggers_df['circnull_ratio_i_over_e'] = background_triggers_df['circnullinc'] - background_triggers_df['circnullenergy'] background_triggers_df['plus_ratio_e_over_i'] = background_triggers_df['coherent_f_plus'] - background_triggers_df['incoherent_f_plus'] background_triggers_df['plus_ratio_i_over_e'] = background_triggers_df['incoherent_f_plus'] - background_triggers_df['coherent_f_plus'] background_triggers_df['cross_ratio_e_over_i'] = background_triggers_df['coherent_f_cross'] - background_triggers_df['incoherent_f_cross'] background_triggers_df['cross_ratio_i_over_e'] = background_triggers_df['incoherent_f_cross'] - background_triggers_df['coherent_f_cross'] # Calculate all alpha values denominator_plus = (background_triggers_df['coherent_f_plus'] + background_triggers_df['incoherent_f_plus'])**0.8 denominator_cross = (background_triggers_df['coherent_f_cross'] + background_triggers_df['incoherent_f_cross'])**0.8 denominator_circenergy = (background_triggers_df['circenergy'] + background_triggers_df['circinc'])**0.8 denominator_circnull = (background_triggers_df['circnullenergy'] + background_triggers_df['circnullinc'])**0.8 background_triggers_df['plus_alpha_e_over_i'] = numpy.abs(2*(background_triggers_df['coherent_f_plus'] - background_triggers_df['incoherent_f_plus'])/denominator_plus) + 1 background_triggers_df['plus_alpha_i_over_e'] = numpy.abs(2*(background_triggers_df['incoherent_f_plus'] - background_triggers_df['coherent_f_plus'])/denominator_plus) + 1 background_triggers_df['cross_alpha_e_over_i'] = numpy.abs(2*(background_triggers_df['coherent_f_cross'] - background_triggers_df['incoherent_f_cross'])/denominator_cross) + 1 background_triggers_df['cross_alpha_i_over_e'] = numpy.abs(2*(background_triggers_df['incoherent_f_cross'] - background_triggers_df['coherent_f_cross'])/denominator_cross) + 1 background_triggers_df['circ_alpha_e_over_i'] = (2*(background_triggers_df['circenergy'] - background_triggers_df['circinc'])/denominator_circenergy) + 1 background_triggers_df['circ_alpha_i_over_e'] = (2*(background_triggers_df['circinc'] - background_triggers_df['circenergy'])/denominator_circenergy) + 1 background_triggers_df['circnull_alpha_e_over_i'] = (2*(background_triggers_df['circnullenergy'] - background_triggers_df['circnullinc'])/denominator_circnull) + 1 background_triggers_df['circnull_alpha_i_over_e'] = (2*(background_triggers_df['circnullinc'] - background_triggers_df['circnullenergy'])/denominator_circnull) + 1 return injection_triggers_df, background_triggers_df