From 9c6c8685908aaeabec681fbc6524779c0b3f691a Mon Sep 17 00:00:00 2001 From: JoeZiminski Date: Mon, 9 Mar 2026 18:13:12 +0000 Subject: [PATCH] Patch. --- spikeinterface_gui/tracemapview.py | 8 +++++++- spikeinterface_gui/traceview.py | 21 ++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/spikeinterface_gui/tracemapview.py b/spikeinterface_gui/tracemapview.py index 2f9e5873..9c0f8c19 100644 --- a/spikeinterface_gui/tracemapview.py +++ b/spikeinterface_gui/tracemapview.py @@ -6,6 +6,7 @@ from .traceview import MixinViewTrace, find_nearest_spike +INT32_MAX = 2147483647 class TraceMapView(ViewBase, MixinViewTrace): id = "tracemap" @@ -134,11 +135,16 @@ def _qt_seek(self, t): self.scroll_time.valueChanged.disconnect(self._qt_on_scroll_time) value = self.controller.time_to_sample_index(t) + + segment_index = self.controller.get_time()[1] + num_samples = self.controller.get_num_samples(segment_index) + if num_samples > INT32_MAX: + value = round((value * INT32_MAX) / num_samples) + self.scroll_time.setValue(value) self.scroll_time.setPageStep(int(sr*xsize)) self.scroll_time.valueChanged.connect(self._qt_on_scroll_time) - segment_index = self.controller.get_time()[1] times_chunk, data_curves, scatter_x, scatter_y, scatter_colors = \ self.get_data_in_chunk(t1, t2, segment_index) data_curves = data_curves.T diff --git a/spikeinterface_gui/traceview.py b/spikeinterface_gui/traceview.py index 8a461ffd..09eea8ad 100644 --- a/spikeinterface_gui/traceview.py +++ b/spikeinterface_gui/traceview.py @@ -13,6 +13,8 @@ # * segment change # * +INT32_MAX = 2147483647 + class MixinViewTrace: MAX_RETRIEVE_TIME_FOR_BUSY_CURSOR = 0.5 # seconds @@ -174,7 +176,13 @@ def _qt_update_scroll_limits(self): t_start, t_stop = self.controller.get_t_start_t_stop() self.timeseeker.set_start_stop(t_start, t_stop, seek=False) self.scroll_time.setMinimum(0) - self.scroll_time.setMaximum(length - 1) + + if length > INT32_MAX: + slider_max = INT32_MAX + else: + slider_max = length - 1 + + self.scroll_time.setMaximum(slider_max) def _qt_change_segment(self, segment_index): #TODO: dirty because now seg_pos IS segment_index @@ -214,6 +222,11 @@ def _qt_xsize_zoom(self, xmove): self.spinbox_xsize.setValue(newsize) def _qt_on_scroll_time(self, val): + segment_index = self.controller.get_time()[1] + num_samples = self.controller.get_num_samples(segment_index) + if num_samples > INT32_MAX: + val = round(val * (num_samples / INT32_MAX)) + time = self.controller.sample_index_to_time(val) self.timeseeker.seek(time) @@ -501,6 +514,12 @@ def _qt_seek(self, t): self.scroll_time.valueChanged.disconnect(self._qt_on_scroll_time) value = self.controller.time_to_sample_index(t) + + segment_index = self.controller.get_time()[1] + num_samples = self.controller.get_num_samples(segment_index) + if num_samples > INT32_MAX: + value = round((value * INT32_MAX) / num_samples) + self.scroll_time.setValue(value) self.scroll_time.setPageStep(int(sr*xsize)) self.scroll_time.valueChanged.connect(self._qt_on_scroll_time)