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
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
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
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
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
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
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