Skip to content

Commit 5f0a3f9

Browse files
authored
Better handling of scroll time in trace viewer (#256)
1 parent 01b4c47 commit 5f0a3f9

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

spikeinterface_gui/traceview.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ def _qt_create_toolbars(self):
136136

137137
self.scroll_time = QT.QScrollBar(orientation=QT.Qt.Horizontal)
138138
self.scroll_time.valueChanged.connect(self._qt_on_scroll_time)
139+
self._qt_update_scroll_step()
140+
139141
if self.controller.has_extension("events"):
140142
bottom_layout = QT.QHBoxLayout()
141143
bottom_layout.addWidget(self.scroll_time, stretch=8)
@@ -209,13 +211,17 @@ def _qt_initialize_plot(self):
209211
self.gains = None
210212
self.offsets = None
211213

212-
def _qt_update_scroll_limits(self):
214+
def _qt_update_scroll_step(self):
213215
segment_index = self.controller.get_time()[1]
214216
length = self.controller.get_num_samples(segment_index)
217+
num_scrollbar_steps = max(2**16, length)
218+
self.scroll_step = length / num_scrollbar_steps
219+
215220
t_start, t_stop = self.controller.get_t_start_t_stop()
216221
self.timeseeker.set_start_stop(t_start, t_stop, seek=False)
222+
217223
self.scroll_time.setMinimum(0)
218-
self.scroll_time.setMaximum(length - 1)
224+
self.scroll_time.setMaximum(num_scrollbar_steps - 1)
219225

220226
def _qt_change_segment(self, segment_index):
221227
#TODO: dirty because now seg_pos IS segment_index
@@ -224,7 +230,8 @@ def _qt_change_segment(self, segment_index):
224230
if segment_index != self.combo_seg.currentIndex():
225231
self.combo_seg.setCurrentIndex(segment_index)
226232

227-
self._qt_update_scroll_limits()
233+
self._qt_update_scroll_step()
234+
228235
if not self._block_auto_refresh_and_notify:
229236
self.refresh()
230237
self.notify_time_info_updated()
@@ -255,7 +262,8 @@ def _qt_xsize_zoom(self, xmove):
255262
self.spinbox_xsize.setValue(newsize)
256263

257264
def _qt_on_scroll_time(self, val):
258-
time = self.controller.sample_index_to_time(val)
265+
sample = int(val * self.scroll_step)
266+
time = self.controller.sample_index_to_time(sample)
259267
self.timeseeker.seek(time)
260268

261269
def _qt_seek_with_selected_spike(self):
@@ -677,7 +685,6 @@ def _qt_make_layout(self):
677685
self.plot.addItem(self.scatter)
678686

679687
self.layout.addWidget(self.bottom_toolbar)
680-
self._qt_update_scroll_limits()
681688

682689
def _qt_on_settings_changed(self):
683690
# adjust xsize spinbox bounds, and adjust xsize if out of bounds
@@ -707,12 +714,11 @@ def _qt_seek(self, t):
707714

708715
xsize = self.xsize
709716
t1, t2 = t - xsize/3., t + xsize * 2/3.
710-
sr = self.controller.sampling_frequency
711717

712718
self.scroll_time.valueChanged.disconnect(self._qt_on_scroll_time)
713-
value = self.controller.time_to_sample_index(t)
719+
sample = self.controller.time_to_sample_index(t)
720+
value = int(sample / self.scroll_step)
714721
self.scroll_time.setValue(value)
715-
self.scroll_time.setPageStep(int(sr*xsize))
716722
self.scroll_time.valueChanged.connect(self._qt_on_scroll_time)
717723

718724
visible_channel_inds = self.get_visible_channel_inds()

0 commit comments

Comments
 (0)