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