Beispiel #1
0
    def apply(self, stim):
        data = self._stft(stim)
        events = []
        time_bins = np.arange(0., stim.duration - self.frame_size,
                              self.hop_size)

        if isinstance(self.freq_bins, int):
            bins = []
            bin_size = data.shape[1] / self.freq_bins
            for i in range(self.freq_bins):
                bins.append((i * bin_size, (i + 1) * bin_size))
            self.freq_bins = bins

        for i, tb in enumerate(time_bins):
            ev = Event(onset=tb, duration=self.frame_size)
            value_data = {}
            for fb in self.freq_bins:
                label = '%d_%d' % fb
                start, stop = fb
                val = data[i, start:stop].mean()
                if np.isinf(val):
                    val = 0.
                value_data[label] = val
            ev.add_value(Value(stim, self, value_data))
            events.append(ev)
        return events
Beispiel #2
0
    def apply(self, stim):
        data = self._stft(stim)
        events = []
        time_bins = np.arange(0., stim.duration-self.frame_size, self.hop_size)

        if isinstance(self.freq_bins, int):
            bins = []
            bin_size = data.shape[1] / self.freq_bins
            for i in range(self.freq_bins):
                bins.append((i*bin_size, (i+1)*bin_size))
            self.freq_bins = bins

        for i, tb in enumerate(time_bins):
            ev = Event(onset=tb, duration=self.frame_size)
            value_data = {}
            for fb in self.freq_bins:
                label = '%d_%d' % fb
                start, stop = fb
                val = data[i, start:stop].mean()
                if np.isinf(val):
                    val = 0.
                value_data[label] = val
            ev.add_value(Value(stim, self, value_data))
            events.append(ev)
        return events
Beispiel #3
0
            def apply(self, stim):

                events = []
                time_bins = np.arange(0., stim.duration, 1.)
                for i, tb in enumerate(time_bins):
                    ev = Event(onset=tb, duration=1000)
                    ev.add_value(Value(stim, self, {'second': i}))
                return events
Beispiel #4
0
    def apply(self, stim):

        events = []
        time_bins = np.arange(0., stim.duration, 1.)
        for i, tb in enumerate(time_bins):
            ev = Event(onset=tb, duration=1000)
            ev.add_value(Value(stim, self, {'second': i}))
        return events
Beispiel #5
0
 def extract(self, extractors, merge_events=True, **kwargs):
     period = 1. / self.fps
     timeline = Timeline(period=period)
     for ext in extractors:
         # For VideoExtractors, pass the entire stim
         if ext.target.__name__ == self.__class__.__name__:
             events = ext.apply(self, **kwargs)
             for ev in events:
                 timeline.add_event(ev, merge=merge_events)
         # Otherwise, for images, loop over frames
         else:
             c = 0
             for frame in self:
                 if frame.data is not None:
                     event = Event(onset=c * period)
                     event.add_value(ext.apply(frame))
                     timeline.add_event(event, merge=merge_events)
                     c += 1
     return timeline
Beispiel #6
0
 def extract(self, extractors, merge_events=True, **kwargs):
     period = 1. / self.fps
     timeline = Timeline(period=period)
     for ext in extractors:
         # For VideoExtractors, pass the entire stim
         if ext.target.__name__ == self.__class__.__name__:
             events = ext.apply(self, **kwargs)
             for ev in events:
                 timeline.add_event(ev, merge=merge_events)
         # Otherwise, for images, loop over frames
         else:
             c = 0
             for frame in self:
                 if frame.data is not None:
                     event = Event(onset=c * period)
                     event.add_value(ext.apply(frame))
                     timeline.add_event(event, merge=merge_events)
                     c += 1
     return timeline
Beispiel #7
0
    def apply(self, stim):
        amps = stim.data
        sampling_rate = stim.sampling_rate
        elements = stim.transcription.elements
        events = []
        for i, el in enumerate(elements):
            onset = sampling_rate * el.onset
            duration = sampling_rate * el.duration

            r_onset = np.round(onset).astype(int)
            r_offset = np.round(onset + duration).astype(int)
            if not r_offset <= amps.shape[0]:
                raise Exception('Block ends after data.')

            mean_amplitude = np.mean(amps[r_onset:r_offset])
            amplitude_data = {'mean_amplitude': mean_amplitude}
            ev = Event(onset=onset, duration=duration)
            ev.add_value(Value(stim, self, amplitude_data))
            events.append(ev)
        return events