def __init__(self, log, pipeline, sigma, outdir, tracks_filename, interval, min_led_distance, detect_smooth_sigma, npeaks, write_png=False): # get configuration blink_detect_config = get_blink_config(log) frequencies = blink_detect_config.get_frequencies() self.trackers = [] for f in frequencies: others = list(frequencies) others.remove(f) tracker = TrackerFixedFreq(f, sigma=sigma, interval=interval) self.trackers.append(tracker) # start track log self.tracklog = AERTrackLogWriter(tracks_filename) params = dict(frequencies=frequencies, sigma=sigma, weight_others=None, interval=interval) self.tracklog.write_comment('params: %s' % params) # open files if False: raw_sequence = aer_load_log_generic(log) self.transitions = aer_pipeline_transitions1(raw_sequence, pipeline) else: self.transitions = aer_pipeline_transitions1_all(log, pipeline) # save params needed later self.detect_smooth_sigma = detect_smooth_sigma self.detect_neighbors = int(min_led_distance) self.min_led_distance = int(min_led_distance) # self.write_png = write_png self.outdir = outdir self.npeaks = npeaks
class MHDetectorLog(object): def __init__(self, log, pipeline, sigma, outdir, tracks_filename, interval, min_led_distance, detect_smooth_sigma, npeaks, write_png=False): # get configuration blink_detect_config = get_blink_config(log) frequencies = blink_detect_config.get_frequencies() self.trackers = [] for f in frequencies: others = list(frequencies) others.remove(f) tracker = TrackerFixedFreq(f, sigma=sigma, interval=interval) self.trackers.append(tracker) # start track log self.tracklog = AERTrackLogWriter(tracks_filename) params = dict(frequencies=frequencies, sigma=sigma, weight_others=None, interval=interval) self.tracklog.write_comment('params: %s' % params) # open files if False: raw_sequence = aer_load_log_generic(log) self.transitions = aer_pipeline_transitions1(raw_sequence, pipeline) else: self.transitions = aer_pipeline_transitions1_all(log, pipeline) # save params needed later self.detect_smooth_sigma = detect_smooth_sigma self.detect_neighbors = int(min_led_distance) self.min_led_distance = int(min_led_distance) # self.write_png = write_png self.outdir = outdir self.npeaks = npeaks def go(self): for f in self.transitions: # check if this event makes any of those trigger for tracker in self.trackers: res = tracker.integrate(f) if res is not None: self.find_peaks(f['timestamp'], tracker) self.tracklog.done() def find_peaks(self, timestamp, tracker): # first get the current spots accum = tracker.get_accum() accum_smooth = gaussian_filter(accum, sigma=self.detect_smooth_sigma) hps = peak_detect_multiple(accum_smooth, centroid_area=self.detect_neighbors, min_distance=self.min_led_distance, npeaks=self.npeaks, timestamp=timestamp, frequency=tracker.frequency) self.tracklog.write_multiple(hps)