Package pylal :: Module ligolw_sqlutils :: Class Summaries
[hide private]
[frames] | no frames]

Class Summaries

source code


This class stores information about the foreground and background in a 
database for making calculation of uncombined fars and combined fars quick 
and efficient.

bkg_stats groups triggers by experiment_id, ifos, and param_group 
(param_group is an arbitrary integer representing the param bin, e.g., 
mchirp [3.48,7.4), to which a trigger belongs; if no binning is done, then
it is 0 for all triggers). It stores ALL the triggers in all the time 
slides (except zero-lag) within that group.

sngl_slide_stats groups triggers by experiment_id, experiment_summ_id, ifos, and 
param_group. It therefore groups all triggers within each time slide 
separately. It is used to subtract triggers within the same slide when calculating
uncombined fars for the background. Therefore, it only stores slide triggers;
for any zero-lag datatype sngl_slide_stats is just an empty list.

datatypes maps the list of datatypes for an experiment to the corresponding
experiment_summ_ids:
datatypes[experiment_id][datatype] = [esid1, esid2, etc.]

frg_durs stores the duration for each experiment_summ_id. Its keys are 
[experiment_id][experimen_summ_id].

bkg_durs stores the background duration for each time-slide and zero-lag, 
i.e., for each experiment_summ_id. This is the sum of all other slide
datatypes sharing the same experiment_id except for the given slide. 

max_bkg_fars stores the maximum background fars of all the categories 
within each time slide. It's keys are (experiment_summ_id, ifo_group). 
The maximum background far is just the total number of triggers within a 
category divided by the background duration for that time slide.
If opts.combine_fars is set to across_all a category is defined by the 
param bin in which a trigger exists and the ifos that took part in the 
trigger. So, if there are three param bins and we've excluded H2,L1 triggers 
in H1,H2,L1 time, then there are 6 categories for H1,H2,L1 time: three param
bins each for H1,L1 and H1,H2,L1 coincident triggrs. Thus, ifo_group will 
be set to "ALL_IFOS" and there will be 6 max_bkg_fars stored for each 
experiment_summ_id in triple time.
If opts.combine_fars is set to across_param_only, then a category is 
defined only by the param bins; ifo coincidences are treated as 
separate experiments. Thus, ifo_group will be set to whatever
coinc. trigger we are considering and there will only be 3 max_bkg_fars 
stored for that entry.

zero_lag_ids stores the esid of all zero-lag "slides" of an experiment.
    zero_lag_ids[ experiment_id ] = [experiment_summ_id1, experiment_summ_id2, etc.]

Instance Methods [hide private]
 
__init__(self) source code
 
add_to_bkg_stats(self, experiment_id, experiment_summ_id, ifos, param_group, stat)
Adds a stat to bkg_stats and sngl_slide_stats.
source code
 
sort_bkg_stats(self)
Sorts each list in bkg_stats and sngl_slide_stats from smallest to largest value.
source code
 
store_datatypes(self, experiment_id, experiment_summ_id, datatype)
Stores the experiment_summ_id associated with each datatype.
source code
 
get_datatype(self, experiment_summ_id)
Retrieve the datatype for a given experiment_summ_id.
source code
 
append_zero_lag_id(self, experiment_id, zero_lag_esid)
Adds a zero_lag_id to the zero_lag_ids dictionary.
source code
 
append_duration(self, experiment_id, experiment_summ_id, duration)
Adds a duration to frg_durs.
source code
 
calc_bkg_durs(self)
Sums the background durs for each time-slide (experiment_summ_id).
source code
 
append_max_bkg_far(self, experiment_summ_id, ifo_group, max_bkg_far)
Adds a max_bkg_far to the appropiate list; lists are grouped by experiment_summ_id and ifo_group.
source code
 
sort_max_bkg_fars(self)
Sorts the max_bkg_fars lists from smallest to highest values.
source code
 
calc_ufar_by_max(self, eid, esid, ifos, param_group, stat)
Calculates the uncombined false alarm rate for a trigger by counting the number of background triggers in the same category as it that have a stat value greater than or equal to the trigger's stat value and dividing by the background duration for that slide.
source code
 
calc_ufar_by_min(self, eid, esid, ifos, param_group, stat)
Same as calc_ufar_by_max, except that the uncombined far is calculated by counting background triggers that have a stat value less than or equal to the given stat.
source code
 
calc_cfar(self, esid, ifo_group, ufar)
Calculates the combined far for the given uncombined far (ufar).
source code
Method Details [hide private]

add_to_bkg_stats(self, experiment_id, experiment_summ_id, ifos, param_group, stat)

source code 

Adds a stat to bkg_stats and sngl_slide_stats. What stat is added is determined on the command line by the ranking-stat option.

append_max_bkg_far(self, experiment_summ_id, ifo_group, max_bkg_far)

source code 

Adds a max_bkg_far to the appropiate list; lists are grouped by experiment_summ_id and ifo_group. If one wants to combined fars across param_bins and coincident_ifos (as was done in the low-mass S51yr and 12-18 month analyses), ifo_group should be set to "ALL_IFOS".

calc_ufar_by_max(self, eid, esid, ifos, param_group, stat)

source code 

Calculates the uncombined false alarm rate for a trigger by counting the number of background triggers in the same category as it that have a stat value greater than or equal to the trigger's stat value and dividing by the background duration for that slide. To do this quickly, bisect.bisect_left is used (see python documentation for more info) on the bkg_stats list. Since bkg_stats contains all the triggers in all the slides for some experiment_id, this will result in counting the triggers that are in the same slide (given by the esid) as the trigger we are considering (except for zero-lag). To correct for this, the trigger's place in it's sngl_slide_stats list is subtracted from this value. The "background" considered for some trigger is therefore all the triggers sharing the same experiment_id, excluding zero-lag triggers and triggers in the same time-slide as the trigger. This means that uncombined far for non-zero-lag triggers will use one less time slide than zero-lag triggers.

calc_ufar_by_min(self, eid, esid, ifos, param_group, stat)

source code 

Same as calc_ufar_by_max, except that the uncombined far is calculated by counting background triggers that have a stat value less than or equal to the given stat. (Done by using bisect.bisect_right as opposed to len(list) - bisect.bisect_left). Note: if stat is 0, will just return 0. This is because a 0 when caclulating FARs by minimum value is equivalent to inf. when caclulating FARs by maximum value.

calc_cfar(self, esid, ifo_group, ufar)

source code 

Calculates the combined far for the given uncombined far (ufar). This is defined as the ufar times the number of categories that are active at that point plus the sum of the max_bkg_fars of all the categories that are inactive. Whether or not a category is "active" is determined by it's max_bkg_far. If the given ufar is greater than some max_bkg_far, then the category which that max_bkg_far represents is considered inactive. If the given ufar is less than some max_bkg_far, then the category is considered active.