Exemple #1
0
 def on_mouse_move(self, event):
     x, y = event.pos
     sec_per_pixel = self.dt / self.canvas.size[0]
     if event.is_dragging:
         if event.button == 1 and 'shift' not in event.modifiers:
             x1, y1 = event.last_event.pos
             dx = x1 - x
             self.t0 += dx * sec_per_pixel
         elif event.button == 1 and 'shift' in event.modifiers:
             self.measuring = True
             self.update_extra_text(sec_per_pixel *
                                    np.abs(x - self.measure_start[0]))
             self.measure_line.set_data(
                 np.array((self.measure_start, event.pos)))
     row_height = ((self.canvas.height - self.margin['top']) /
                   self.row_count)
     row = util.clip(int((event.pos[1] - self.margin['top']) / row_height),
                     0, 119)
     try:
         if self.display_selected:
             self.electrode = self.selected_electrodes[row]
         else:
             self.electrode = self.spike_data.keys()[row]
     except IndexError:
         self.electrode = ''
     self.mouse_t = self.t0 + sec_per_pixel * x
Exemple #2
0
    def resample(self, bin_count=120):
        start_i = int(self.t0 * self.sample_rate)
        end_i = util.clip(start_i + int(self.dt * self.sample_rate),
                          start_i, sys.maxsize)
        bin_size = (end_i - start_i) // bin_count
        if bin_size < 1:
            bin_size = 1
        bin_count = len(np.arange(start_i, end_i, bin_size))

        data = np.empty((self.data.shape[1], 2*bin_count, 4), dtype=np.float32)

        for i, column in enumerate(self.data):
            v = mea.min_max_bin(self.data[column].values[start_i:end_i],
                                bin_size, bin_count+1)
            col, row = mea.coordinates_for_electrode(column)
            row = 12 - row - 1
            x = np.full_like(v, col, dtype=np.float32)
            y = np.full_like(v, row, dtype=np.float32)
            t = np.arange(0, bin_count, 0.5, dtype=np.float32)
            data[i] = np.column_stack((x, y, t, v))

        # Update shader
        self.program['a_position'] = data.reshape(
            2*self.data.shape[1]*bin_count, 4)
        self.program['u_width'] = bin_count
Exemple #3
0
 def on_mouse_move(self, event):
     x, y = event.pos
     sec_per_pixel = self.dt / self.canvas.size[0]
     if event.is_dragging:
         if event.button == 1 and 'shift' not in event.modifiers:
             x1, y1 = event.last_event.pos
             dx = x1 - x
             self.t0 += dx * sec_per_pixel
         elif event.button == 1 and 'shift' in event.modifiers:
             self.measuring = True
             self.update_extra_text(sec_per_pixel *
                                    np.abs(x - self.measure_start[0]))
             self.measure_line.set_data(np.array((self.measure_start,
                                                  event.pos)))
     row_height = ((self.canvas.height - self.margin['top']) /
                   self.row_count)
     row = util.clip(int((event.pos[1] - self.margin['top']) / row_height),
                     0, 119)
     try:
         if self.display_selected:
             self.electrode = self.selected_electrodes[row]
         else:
             self.electrode = self.spike_data.keys()[row]
     except IndexError:
         self.electrode = ''
     self.mouse_t = self.t0 + sec_per_pixel * x
Exemple #4
0
    def resample(self, bin_count=150):
        start_i = int(self.t0 * self.sample_rate)
        end_i = util.clip(start_i + int(self.dt * self.sample_rate), start_i,
                          sys.maxsize)
        bin_size = (end_i - start_i) // bin_count
        if bin_size < 1:
            bin_size = 1
        bin_count = len(np.arange(start_i, end_i, bin_size))

        data = np.empty((self.data.shape[1], 2 * bin_count, 4),
                        dtype=np.float32)

        for i, column in enumerate(self.data):
            v = mea.min_max_bin(self.data[column].values[start_i:end_i],
                                bin_size, bin_count + 1)
            col, row = self.canvas.layout.coordinates_for_electrode(column)
            row = self.canvas.layout.rows - row - 1
            x = np.full_like(v, col, dtype=np.float32)
            y = np.full_like(v, row, dtype=np.float32)
            t = np.arange(0, bin_count, 0.5, dtype=np.float32)
            data[i] = np.column_stack((x, y, t, v))

        # Update shader
        self.program['a_position'] = data.reshape(
            2 * self.data.shape[1] * bin_count, 4)
        self.program['u_width'] = bin_count
Exemple #5
0
 def update(self, t, dt):
     try:
         len(self.events == 0)
     except:
         return
     self.value += 0.2 * len(
         self.events[(self.events > t) & (self.events < t + dt)])
     self.value -= 0.01
     self.value = util.clip(self.value, 0.0, 1.0)
 def update(self, t, dt):
     try:
         len(self.events == 0)
     except:
         return
     self.value += 0.2*len(self.events[(self.events > t) &
                                       (self.events < t + dt)])
     self.value -= 0.01
     self.value = util.clip(self.value, 0.0, 1.0)
Exemple #7
0
 def on_mouse_wheel(self, event):
     if 'shift' in event.modifiers:
         # Time window scaling.
         scale = math.exp(2.5 * -np.sign(event.delta[1]) *
                          self.scroll_factor)
         self.scale = (util.clip(scale * self.scale[0], 0.33 * 5,
                                 3 * self.time_window), self.scale[1])
     else:
         # Amplitude scaling
         scale = math.exp(2.5 * -np.sign(event.delta[1]) *
                          self.scroll_factor)
         self.scale = (self.scale[0], scale * self.scale[1])
Exemple #8
0
 def on_mouse_wheel(self, event):
     if 'shift' in event.modifiers:
         # Time window scaling.
         scale = math.exp(
             2.5 * -np.sign(event.delta[1]) * self.scroll_factor)
         self.scale = (util.clip(scale * self.scale[0],
                                 0.33 * 5,
                                 3*self.time_window),
                       self.scale[1])
     else:
         # Amplitude scaling
         scale = math.exp(
             2.5 * -np.sign(event.delta[1]) * self.scroll_factor)
         self.scale = (self.scale[0], scale * self.scale[1])
Exemple #9
0
    def dt(self, val):
        self._dt = util.clip(val, 0.0025, self.analog_data.index[-1])
        frac = util.nearest_decimal(self.dt / 6)
        multiplier = int(self.dt / 6 / frac)
        width = frac * multiplier * self.canvas.width / self.dt
        max_width = self.canvas.width / 6
        center_x = self.canvas.width - max_width / 2 - 20

        self.scale_bar.set_data(
            np.array(((center_x - width / 2, 20), (center_x + width / 2, 20))))

        self.scale_label.pos = (center_x, 40)
        scale_val = multiplier * frac
        if scale_val < 0.1:
            self.scale_label.text = '%1.1f ms' % (1000 * multiplier * frac)
        else:
            self.scale_label.text = '%1.1f s' % (multiplier * frac)
Exemple #10
0
    def dt(self, val):
        self._dt = util.clip(val, 0.0025, self.analog_data.index[-1])
        frac = util.nearest_decimal(self.dt / 6)
        multiplier = int(self.dt / 6 / frac)
        width = frac * multiplier * self.canvas.width / self.dt
        max_width = self.canvas.width / 6
        center_x = self.canvas.width - max_width / 2 - 20

        self.scale_bar.set_data(np.array(
            ((center_x - width / 2, 20),
             (center_x + width / 2, 20))))

        self.scale_label.pos = (center_x, 40)
        scale_val = multiplier * frac
        if scale_val < 0.1:
            self.scale_label.text = '%1.1f ms' % (1000 * multiplier * frac)
        else:
            self.scale_label.text = '%1.1f s' % (multiplier * frac)
Exemple #11
0
 def on_mouse_move(self, event):
     x, y = event.pos
     sec_per_pixel = self.dt / self.canvas.size[0]
     if event.is_dragging:
         x1, y1 = event.last_event.pos
         dx = x1 - x
         self.t0 += dx * sec_per_pixel
     row_height = ((self.canvas.height - self.margin['top']) /
                   self._row_count)
     row = util.clip(int((event.pos[1] - self.margin['top']) / row_height),
                     0, 119)
     try:
         if self.display_selected:
             self.electrode = self.selected_electrodes[row]
         else:
             self.electrode = self.spike_data.keys()[row]
     except IndexError:
         self.electrode = ''
     self.mouse_t = self.t0 + sec_per_pixel * x
Exemple #12
0
 def on_mouse_move(self, event):
     x, y = event.pos
     sec_per_pixel = self.dt / self.canvas.size[0]
     if event.is_dragging:
         x1, y1 = event.last_event.pos
         dx = x1 - x
         self.t0 += dx * sec_per_pixel
     row_height = ((self.canvas.height - self.margin['top']) /
                   self._row_count)
     row = util.clip(int((event.pos[1] - self.margin['top']) / row_height),
                     0, 119)
     try:
         if self.display_selected:
             self.electrode = self.selected_electrodes[row]
         else:
             self.electrode = self.spike_data.keys()[row]
     except IndexError:
         self.electrode = ''
     self.mouse_t = self.t0 + sec_per_pixel * x
Exemple #13
0
 def t0(self, val):
     self._t0 = util.clip(val, 0 - self.dt / 2,
                          self.spike_data.max_time() - self.dt / 2)
Exemple #14
0
 def t0(self, val):
     self._t0 = util.clip(val,
                          -self.spikes.time.max(),
                          self.spikes.time.max())
     self.mouse_t = self._t0
Exemple #15
0
 def t0(self, val):
     self._t0 = util.clip(val, 0, self.data.index[-1] - self.dt/2)
     self.update()
Exemple #16
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, self.spikes.time.max())
Exemple #17
0
 def t0(self, val):
     self._t0 = util.clip(val, -self.spikes.time.max(),
                          self.spikes.time.max())
     self.mouse_t = self._t0
Exemple #18
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, 10)
     self.mouse_t = self._t0
     self.update()
Exemple #19
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, self.spikes.time.max())
Exemple #20
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, 10)
     self.mouse_t = self._t0
     self.update()
Exemple #21
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, self.analog_data.index[-1])
     self.update()
Exemple #22
0
 def t0(self, val):
     self._t0 = util.clip(val, 0 - self.dt/2,
                          self.analog_data.index[-1] - self.dt/2)
Exemple #23
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, self.analog_data.index[-1])
     self.update()
Exemple #24
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, self.spike_data.max_time())
Exemple #25
0
 def t0(self, val):
     self._t0 = util.clip(val, 0, self.data.index[-1] - self.dt / 2)
Exemple #26
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, self.spike_data.max_time())
Exemple #27
0
 def t0(self, val):
     self._t0 = util.clip(val, 0 - self.dt/2,
                          self.spike_data.max_time() - self.dt/2)
Exemple #28
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, 30)
     self.mouse_t = self._t0
Exemple #29
0
 def dt(self, val):
     self._dt = util.clip(val, 0.0025, 30)
     self.mouse_t = self._t0