WaveformView (geometry mode): Alt + wheel scales x around probe x = 0, so snippets shift instead of widening on channels far from x = 0
还没有人认领这个 Issue。
评估
调研方向
Start in waveformview.py at the initialization around line 78 and the geometry drawing sites around lines 468, 587, 632, 1087, 1239, and 1314; compare the Qt and Panel paths, including the Panel factor update around line 1049. Check existing waveform-view tests and reproduce with a unit on a contact far from x = 0. Done when Alt + wheel widens snippets around their contact positions across shanks without shifting them out of view.
由索引模型根据 Issue 内容生成。
描述
Description
In the WaveformView in geometry mode, Alt + mouse wheel (widen/narrow x axis) multiplies the absolute x coordinates of the snippets by factor_x. Each snippet is built around its contact position:
waveformview.py, line 78
self.xvect[chan_ind, :] = np.linspace(x - espx, x + espx, num=width)
and is then drawn as:
waveformview.py, line 468 (also lines 587, 632, 1087, 1239, 1314)
xvectors = self.xvect[common_channel_indexes, :] * self.factor_x
So the scaling happens around x = 0 of the probe, not around each contact. For units on contacts near x = 0 the snippet widens as expected. For units on contacts far from x = 0, each wheel step mostly translates the snippet sideways (by about 30% of its x position, since factor_x changes by a factor of 1.3). Because the refresh keeps the view range (keep_range=True), the waveform appears to move rather than widen and soon leaves the view.
This is very visible on multi-shank probes. With a Neuropixels 2.0 4-shank probe (shanks about 250 µm apart), widening works on shank 0 and is unusable on shanks 1–3.
To reproduce:
Open a SortingAnalyzer from a multi-shank probe (or any probe with contacts at large x).
In WaveformView (geometry mode), select a unit on a contact far from x = 0.
Alt + mouse wheel: the snippet slides horizontally instead of widening in place.
Expected: the snippet widens around its own contact position.
Possible fix: scale around each contact's x position, e.g. keep the contact x per channel and use
xvectors = xcenter[:, None] + (self.xvect[common_channel_indexes, :] - xcenter[:, None]) * self.factor_x
where xcenter holds the contact x positions of common_channel_indexes. The same applies to the other places where self.xvect * self.factor_x is used, including the Panel backend (factor_x updated at line 1049).
Environment: spikeinterface-gui 0.13.1 (same code on current main), spikeinterface 0.104.8, desktop (Qt / PySide6), Windows 10, Python 3.10.
- 主要语言
- Python
- 星标
- 72
- 派生
- 23
- 平均合并
- 4 天 4 小时
- 30 天内合并 PR
- 5
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
SpikeInterface/spikeinterface-gui 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 35/100
-
enhancement
难度 5/5 一周以上 新手友好度 25/100
SpikeInterface/spikeinterface-gui#147 · 4 条评论 ·
-
难度 3/5 1-2 天 新手友好度 35/100
SpikeInterface/spikeinterface-gui#40 · 3 条评论 ·
-
demo with NWB可能重新可做 @alejoe91 于 303 天前认领,目前没有进行中的 PR。 未关闭
SpikeInterface/spikeinterface-gui#27 · 3 条评论 · 已指派 1 人 ·
查看 SpikeInterface/spikeinterface-gui 的全部 Issue
相似的 Issue
-
Agentic
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
Imbad0202/academic-research-skills#979 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
reflex-dev/reflex#7561 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 62/100
prometheus-community/ansible#906 · 2 条评论 ·