spikeinterface的Qt GUI
项目描述
spikeinterface-gui
无需数据复制的spikeinterface对象GUI。
这是一个跨平台交互式查看器,用于检查spikeinterface支持的任何刺激排序器的最终结果和质量(kilosort、spykingcircus、tridesclous、mountainssort、yass、ironclust、herdingspikes、hdsort、klusta...)
这个交互式GUI提供几个视图,这些视图会动态刷新其他视图。这使得我们可以非常快速地检查任何排序器输出的优缺点。
与其他查看器(如phy)不同,此查看器跳过了复制和重新格式化整个数据集(过滤信号 + 波形 + PCA)到特定格式或文件夹组织的繁琐且耗时的步骤。此GUI建立在spikeinterface对象(Recording、Sorting、SortingAnalyzer)之上。这些对象是“懒惰”的,并实时检索数据(无复制)!
主要使用
主要思想是使一个或多个单元可见,并可视地检查它们是否应该合并或删除。为此可见性
- 在probeview中按ctlr + 双击一个单元
- 在unitlist中双击一个单元
可以通过移动坞站重新组织视图
每个视图都有一个?按钮,可以打开上下文帮助。这些内联文档是最重要的阅读材料。(但包含错别字)
当一些单元可见时,相关的尖峰列表可以被刷新。然后逐个选择尖峰也可以刷新一些视图。这使得在轨迹上逐个跳转尖峰变得非常快速和方便。
通道可见性可以通过探针视图中的ROI来处理。
管理模式
默认情况下,此工具仅是查看器。但您可以使用curation=True
选项将其转换为手动管理工具。此工具支持来自spikeinterface的管理格式
。此格式可以
- 删除单元
- 合并单元
- 创建手动标签
当此模式被激活时,在左上角会添加一个新视图来维护删除和合并的列表。管理格式可以导出为json。
此查看器内部使用Qt(带有PySide6、PyQT6或PyQt5)和pyqtgraph。因此,此查看器是一个本地桌面应用程序(老式!)。还有一个基于Web的查看器在这里。
重要说明
实际的main
分支正在使用spikeinterface中的新SortingAnalyzer
对象,该对象尚未发布。您可能会遇到一些小错误。如果您想可视化spikeinterface≤0.100.1的旧WaveformExtractor
,则需要回到版本spikeinterface-gui=0.8.0。
启动
为了使用此查看器,您需要了解一些spikeinterface的知识。
步骤1:创建和计算SortingAnalyzer
您首先需要使用spikeinterface获取一个SortingAnalyzer
对象。
请参阅此处的帮助。
请注意
- 某些扩展是强制性的(单元位置、模板等)
- 某些扩展是可选的
- 计算的扩展越多,显示的视图就越多
示例
import spikeinterface.full as si
recording = si.read_XXXX('/path/to/my/recording')
recording_filtered = si.bandpass_filter(recording)
sorting = si.run_sorter('YYYYY', recording_filtered)
job_kwargs = dict(n_jobs=-1, progress_bar=True, chunk_duration="1s")
# make the SortingAnalyzer with necessary and some optional extensions
sorting_analyzer = si.create_sorting_analyzer(sorting, recording,
format="binary_folder", folder="/my_sorting_analyzer",
**job_kwargs)
sorting_analyzer.compute("random_spikes", method="uniform", max_spikes_per_unit=500)
sorting_analyzer.compute("waveforms", **job_kwargs)
sorting_analyzer.compute("templates", **job_kwargs)
sorting_analyzer.compute("noise_levels")
sorting_analyzer.compute("unit_locations", method="monopolar_triangulation")
sorting_analyzer.compute("isi_histograms")
sorting_analyzer.compute("correlograms", window_ms=100, bin_ms=5.)
sorting_analyzer.compute("principal_components", n_components=3, mode='by_channel_global', whiten=True, **job_kwargs)
sorting_analyzer.compute("quality_metrics", metric_names=["snr", "firing_rate"])
sorting_analyzer.compute("template_similarity")
sorting_analyzer.compute("spike_amplitudes", **job_kwargs)
步骤2:打开GUI
使用Python
import spikeinterface_gui
# This creates a Qt app
app = spikeinterface_gui.mkQApp()
# reload the SortingAnalyzer
sorting_analyzer = si.load_sorting_analyzer("/my_sorting_analyzer")
# create the mainwindow and show
win = spikeinterface_gui.MainWindow(sorting_analyzer)
win.show()
# run the main Qt6 loop
app.exec_()
或者更简单
import spikeinterface.widgets as sw
sorting_analyzer = load_sorting_analyzer(test_folder / "sorting_analyzer")
sw.plot_sorting_summary(sorting_analyzer, backend="spikeinterface_gui")
使用命令行
sigui /path/for/my/sorting_analyzer
使用管理模式
要使用管理模式打开查看器,请使用curation=True
。
此模式相当新颖,是在朋友的友好诱导下实现的。我希望这可以成为phy
的公平替代。
import spikeinterface_gui
app = spikeinterface_gui.mkQApp()
win = spikeinterface_gui.MainWindow(sorting_analyzer, curation=True)
win.show()
app.exec_()
from spikeinterface.widgets import plot_sorting_summary
sw.plot_sorting_summary(sorting_analyzer, curation=True, backend="spikeinterface_gui")
curation_dict
可以保存到分析器的文件夹中(对于"binary_folder"或"zarr"格式)。然后当GUI重新打开时,它会自动重新加载。
安装
对于初学者或Anaconda用户,请参阅我们的安装提示,其中我们提供了Mac/Windows/Linux的yaml文件,以帮助您在专用conda环境中正确安装spikeinterface
和spikeinterface-gui
。
否则
您需要首先安装以下三个包之一(按优先顺序)
pip install PySide6
或pip install PyQt6
或pip install PyQt5
从pypi
pip install spikeinterface-gui
从源
git clone https://github.com/SpikeInterface/spikeinterface-gui.git
cd spikeinterface-gui
pip install .
作者
Samuel Garcia,CNRS,法国里昂
这项工作是旧tridesclous.gui
子模块在spikeinterface之上的移植。
与spikeinterface包相反,为了开发此查看器,故意放弃了所有良好的编码实践:没有测试、没有CI、没有自动格式化、没有文档等。请自由贡献,这是一个开放的荒野。欢迎代码无政府主义者。所以在这片混乱中,不受欢迎的人:pre-commit、black、pytest fixture、...
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。