Skip to content
Snippets Groups Projects
Commit c9238509 authored by Patrick Godwin's avatar Patrick Godwin Committed by Kipp Cannon
Browse files

feature_extractor.py + utils.py: remove unused columns in generating triggers...

feature_extractor.py + utils.py: remove unused columns in generating triggers and made some performance tweaks
parent e20a6246
No related branches found
No related tags found
No related merge requests found
...@@ -113,7 +113,7 @@ class MultiChannelHandler(simplehandler.Handler): ...@@ -113,7 +113,7 @@ class MultiChannelHandler(simplehandler.Handler):
self.persist_cadence = options.persist_cadence self.persist_cadence = options.persist_cadence
self.feature_start_time = options.feature_start_time self.feature_start_time = options.feature_start_time
self.feature_end_time = options.feature_end_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 ### set up queue to cache features depending on pipeline mode
self.feature_mode = options.feature_mode self.feature_mode = options.feature_mode
...@@ -286,24 +286,11 @@ class MultiChannelHandler(simplehandler.Handler): ...@@ -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): 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] freq, q, duration = self.waveforms[channel].parameter_grid[rate][row.channel_index]
filter_duration = self.waveforms[channel].filter_duration[rate] trigger_time = row.end_time + row.end_time_ns * 1e-9
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
# append row for data transfer/saving # append row for data transfer/saving
timestamp = int(numpy.floor(trigger_time)) timestamp = int(numpy.floor(trigger_time))
feature_row = {'timestamp':timestamp, 'channel':channel, 'start_time':start_time, 'stop_time':stop_time, 'snr':row.snr, feature_row = {'channel':channel, 'snr':row.snr, 'trigger_time':trigger_time, 'frequency':freq, 'q':q, 'phase':row.phase}
'trigger_time':trigger_time, 'frequency':freq, 'q':q, 'phase':row.phase, 'sigmasq':row.sigmasq, 'chisq':row.chisq}
self.feature_queue.append(timestamp, channel, feature_row) self.feature_queue.append(timestamp, channel, feature_row)
# save iDQ compatible data # save iDQ compatible data
......
...@@ -361,7 +361,7 @@ class TimeseriesFeatureQueue(object): ...@@ -361,7 +361,7 @@ class TimeseriesFeatureQueue(object):
self.out_queue.append({'timestamp': oldest_timestamp, 'features': self.in_queue.pop(oldest_timestamp)}) self.out_queue.append({'timestamp': oldest_timestamp, 'features': self.in_queue.pop(oldest_timestamp)})
def _create_buffer(self): 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): def _idx(self, timestamp):
return int(numpy.floor((timestamp % 1) * self.sample_rate)) return int(numpy.floor((timestamp % 1) * self.sample_rate))
...@@ -411,7 +411,7 @@ class ETGFeatureQueue(object): ...@@ -411,7 +411,7 @@ class ETGFeatureQueue(object):
self.out_queue.append({'timestamp': oldest_timestamp, 'features': self.in_queue.pop(oldest_timestamp)}) self.out_queue.append({'timestamp': oldest_timestamp, 'features': self.in_queue.pop(oldest_timestamp)})
def _create_buffer(self): def _create_buffer(self):
return {channel: [] for channel in self.channels} return defaultdict(list)
def __len__(self): def __len__(self):
return len(self.out_queue) return len(self.out_queue)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment