def ets(self): """The event-triggered standard error of the mean """ #Make a list for the output h = [0] * self._len_h if self._is_ts: # Loop over channels for i in xrange(self._len_h): data = self.data[i] u = np.unique(self.events[i]) event_types = u[np.unique(self.events[i]) != 0] h[i] = np.empty((event_types.shape[0], self.len_et), dtype=complex) # This offset is used to pull the event indices below, but we # have to broadcast it so the shape of the resulting idx+offset # operation below gives us the (nevents, len_et) array we want, # per channel. offset = np.arange(self.offset, self.offset + self.len_et)[:, np.newaxis] # Loop over event types for e_idx in xrange(event_types.shape[0]): idx = np.where(self.events[i] == event_types[e_idx])[0] event_trig = data[idx + offset] #Correct baseline by removing the first point in the series #for each channel: if self._correct_baseline: event_trig -= event_trig[0] h[i][e_idx] = stats.sem(event_trig, -1) #In case the input events are an Events: else: #Get the indices necessary for extraction of the eta: add_offset = np.arange(self.offset, self.offset + self.len_et)[:, np.newaxis] idx = (self.events.time / self.sampling_interval).astype(int) #Make a list for the output h = [0] * self._len_h # Loop over channels for i in xrange(self._len_h): #If this is a list with one element: if self._len_h == 1: event_trig = self.data[0][idx + add_offset] #Otherwise, you need to index straight into the underlying data #array: else: event_trig = self.data.data[i][idx + add_offset] h[i] = stats.sem(event_trig, -1) h = np.array(h).squeeze() return ts.TimeSeries(data=h, sampling_interval=self.sampling_interval, t0=self.offset * self.sampling_interval, time_unit=self.time_unit)
def ets(self): """The event-triggered standard error of the mean """ #Make a list for the output h = [0] * self._len_h if self._is_ts: # Loop over channels for i in range(self._len_h): data = self.data[i] u = np.unique(self.events[i]) event_types = u[np.unique(self.events[i]) != 0] h[i] = np.empty((event_types.shape[0], self.len_et), dtype=complex) # This offset is used to pull the event indices below, but we # have to broadcast it so the shape of the resulting idx+offset # operation below gives us the (nevents, len_et) array we want, # per channel. offset = np.arange(self.offset, self.offset + self.len_et)[:, np.newaxis] # Loop over event types for e_idx in range(event_types.shape[0]): idx = np.where(self.events[i] == event_types[e_idx])[0] event_trig = data[idx + offset] #Correct baseline by removing the first point in the series #for each channel: if self._correct_baseline: event_trig -= event_trig[0] h[i][e_idx] = stats.sem(event_trig, -1) #In case the input events are an Events: else: #Get the indices necessary for extraction of the eta: add_offset = np.arange(self.offset, self.offset + self.len_et)[:, np.newaxis] idx = (self.events.time / self.sampling_interval).astype(int) #Make a list for the output h = [0] * self._len_h # Loop over channels for i in range(self._len_h): #If this is a list with one element: if self._len_h == 1: event_trig = self.data[0][idx + add_offset] #Otherwise, you need to index straight into the underlying data #array: else: event_trig = self.data.data[i][idx + add_offset] h[i] = stats.sem(event_trig, -1) h = np.array(h).squeeze() return ts.TimeSeries(data=h, sampling_interval=self.sampling_interval, t0=self.offset * self.sampling_interval, time_unit=self.time_unit)
def ets(self): """The event-triggered standard error of the mean """ #Make a list for the output h = [0] * self._len_h for i in xrange(self._len_h): data = self.data[i] u = np.unique(self.events[i]) event_types = u[np.unique(self.events[i]) != 0] h[i] = np.empty((event_types.shape[0], self.len_et), dtype=complex) for e_idx in xrange(event_types.shape[0]): idx = np.where(self.events[i] == event_types[e_idx]) idx_w_len = np.array([idx[0] + count + self.offset for count in range(self.len_et)]) event_trig = data[idx_w_len] #Correct baseline by removing the first point in the series for #each channel: if self._correct_baseline: event_trig -= event_trig[0] h[i][e_idx] = stats.sem(event_trig, axis=-1) h = np.array(h).squeeze() return ts.TimeSeries(data=h, sampling_interval=self.sampling_interval, t0=self.offset * self.sampling_interval, time_unit=self.time_unit)
def ets(self): """The event-triggered standard error of the mean """ #Make a list for the output h = [0] * self._len_h for i in xrange(self._len_h): data = self.data[i] u = np.unique(self.events[i]) event_types = u[np.unique(self.events[i]) != 0] h[i] = np.empty((event_types.shape[0], self.len_et), dtype=complex) for e_idx in xrange(event_types.shape[0]): idx = np.where(self.events[i] == event_types[e_idx]) idx_w_len = np.array([ idx[0] + count + self.offset for count in range(self.len_et) ]) event_trig = data[idx_w_len] #Correct baseline by removing the first point in the series for #each channel: if self._correct_baseline: event_trig -= event_trig[0] h[i][e_idx] = stats.sem(event_trig, axis=-1) h = np.array(h).squeeze() return ts.TimeSeries(data=h, sampling_interval=self.sampling_interval, t0=self.offset * self.sampling_interval, time_unit=self.time_unit)
def correlation(self): """ The correlation between all combinations of trials Returns ------- (r,e) : tuple r is the mean correlation and e is the mean error of the correlation (with df = n_trials - 1) """ c = np.corrcoef(self.input.data) c = c[tril_indices_from(c, -1)] return np.mean(c), stats.sem(c)