From c9238509e191176363d87b077ac4a51976154d9f Mon Sep 17 00:00:00 2001 From: Patrick Godwin <patrick.godwin@ligo.org> Date: Sun, 26 Aug 2018 09:43:10 -0700 Subject: [PATCH] feature_extractor.py + utils.py: remove unused columns in generating triggers and made some performance tweaks --- .../python/fxtools/feature_extractor.py | 19 +++---------------- gstlal-burst/python/fxtools/utils.py | 4 ++-- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/gstlal-burst/python/fxtools/feature_extractor.py b/gstlal-burst/python/fxtools/feature_extractor.py index 69e08c5127..70373fac85 100644 --- a/gstlal-burst/python/fxtools/feature_extractor.py +++ b/gstlal-burst/python/fxtools/feature_extractor.py @@ -113,7 +113,7 @@ class MultiChannelHandler(simplehandler.Handler): self.persist_cadence = options.persist_cadence self.feature_start_time = options.feature_start_time self.feature_end_time = options.feature_end_time - self.columns = ['start_time', 'stop_time', 'trigger_time', 'frequency', 'q', 'snr', 'phase', 'sigmasq', 'chisq'] + self.columns = ['trigger_time', 'frequency', 'q', 'snr', 'phase'] ### set up queue to cache features depending on pipeline mode self.feature_mode = options.feature_mode @@ -286,24 +286,11 @@ class MultiChannelHandler(simplehandler.Handler): if not self.frame_segments[self.instrument] or self.frame_segments[self.instrument].intersects_segment(trigger_seg): freq, q, duration = self.waveforms[channel].parameter_grid[rate][row.channel_index] - filter_duration = self.waveforms[channel].filter_duration[rate] - filter_stop_time = row.end_time + row.end_time_ns * 1e-9 - - # set trigger time based on waveform - if self.waveform_type == 'sine_gaussian': - trigger_time = filter_stop_time - start_time = trigger_time - duration / 2. - stop_time = trigger_time + duration / 2. - - elif self.waveform_type == 'half_sine_gaussian': - trigger_time = filter_stop_time - start_time = trigger_time - duration - stop_time = trigger_time + trigger_time = row.end_time + row.end_time_ns * 1e-9 # append row for data transfer/saving timestamp = int(numpy.floor(trigger_time)) - feature_row = {'timestamp':timestamp, 'channel':channel, 'start_time':start_time, 'stop_time':stop_time, 'snr':row.snr, - 'trigger_time':trigger_time, 'frequency':freq, 'q':q, 'phase':row.phase, 'sigmasq':row.sigmasq, 'chisq':row.chisq} + feature_row = {'channel':channel, 'snr':row.snr, 'trigger_time':trigger_time, 'frequency':freq, 'q':q, 'phase':row.phase} self.feature_queue.append(timestamp, channel, feature_row) # save iDQ compatible data diff --git a/gstlal-burst/python/fxtools/utils.py b/gstlal-burst/python/fxtools/utils.py index 42e347fae4..b37d36f334 100644 --- a/gstlal-burst/python/fxtools/utils.py +++ b/gstlal-burst/python/fxtools/utils.py @@ -361,7 +361,7 @@ class TimeseriesFeatureQueue(object): self.out_queue.append({'timestamp': oldest_timestamp, 'features': self.in_queue.pop(oldest_timestamp)}) def _create_buffer(self): - return {channel: [None for x in range(self.sample_rate)] for channel in self.channels} + return defaultdict(lambda: [None for ii in range(self.sample_rate)]) def _idx(self, timestamp): return int(numpy.floor((timestamp % 1) * self.sample_rate)) @@ -411,7 +411,7 @@ class ETGFeatureQueue(object): self.out_queue.append({'timestamp': oldest_timestamp, 'features': self.in_queue.pop(oldest_timestamp)}) def _create_buffer(self): - return {channel: [] for channel in self.channels} + return defaultdict(list) def __len__(self): return len(self.out_queue) -- GitLab