Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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)