跳转到主要内容

基于Python的工具,用于在多个电生理记录会话中跟踪从动作电位排序数据中排序的单个单位。

项目描述

swan-example

SWAN

swan-example

SWAN(顺序波形分析仪)是一个开源图形工具,由 Forschungszentrum Jülich 的神经科学与医学研究所 - 6(INM-6)开发,用于跟踪使用慢性植入式微电极阵列记录的电生理数据的多个会话中的单个单位。该工具使用Python 3和PyQt5编写,并使用高效的绘图库(pyqtgraph)、数值计算库(numpy)、数据I/O和存储库(pickle,neo)。图形用户界面(GUI)以模块化方式组织成多个视图,每个视图都显示加载数据集的不同方面。

该工具目前用于分析使用抓取数据集,这些数据集是使用犹他微型电极阵列记录的。因此,在其当前状态下,它使用由Blackrock Microsystems提供的专有文件格式.nev.ns6存储的数据集。然而,该工具利用neo的文件I/O能力和数据存储结构,使其功能易于扩展到使用其他系统记录的数据集。

目录

目的和目标

在细胞外电生理实验中,通过将探头插入脑组织记录的时间顺序电压测量获得神经元群体的活动。从这个群体活动中,可以通过动作电位分类过程隔离出假定的单个神经元(或,单个单位)的活动。

在慢性电生理实验中,使用微型电极阵列记录,阵列中的植入电极在长时间内保持固定位置,从而能够长期测量脑组织中电极周围的神经元群体。通常,每个实验会话都会独立地进行动作电位分类,导致在实验过程中出现大量单个单位。然而,鉴于电极是从同一群体神经元中慢性记录的,可以预期许多看似独立的单个单位实际上来自不同实验会话中同一神经元的活动。

单个单位由单位发射时的时间戳,称为动作电位时间,以及显示神经元特征响应的对应电压信号的片段,称为波形。一起,这些可以用来比较和识别可能对应于同一神经元的单个单位。这也是SWAN名称的由来——它帮助进行动作电位波形的顺序分析。

SWAN旨在帮助您在多个动作电位分类数据集中识别此类单个单位。它从数据集中提取神经元的不同特征——即单个单位的平均波形、对应于动作电位的间期直方图以及事件触发的速率轮廓——并以直观的方式显示它们。然后允许用户为每个单个单位分配全局单位ID(GID),以便可以使用GID识别所有可能来自同一神经元的单位。

兼容数据集

SWAN目前与使用Blackrock Microsystems设备记录的.nev文件兼容。所有希望会话的动作电位分类结果必须存储在单独的.nev文件中,每个文件包含每个单个单位的时间戳和波形。每个数据文件都是使用Neo的BlackrockIO类读取的,从而保留在动作电位分类过程中为单元指定的任何现有名称或描述。

在当前实现中,描述中包含“噪声”或“未分类”单词的所有单位都没有加载,并排除在分析之外。根据不同的用例,这可能在未来的版本中修改。

安装

SWAN目前不在conda或PyPI上提供,必须从源代码安装。PyPI包正在开发中。

我们建议在conda或virtualenv环境中安装SWAN。安装本身是通过使用pip从源目录执行的。

使用Conda

conda create -n swan python=3
conda activate swan
pip install python-swan

使用Python Virtualenv

virtualenv venv
source activate venv/bin/activate
pip install python-swan

入门

安装完成后,使用以下命令启动SWAN

swan /path/to/temp/

其中 /path/to/temp/ 是您希望在使用 SWAN 时存储生成的缓存文件的路径。如果没有提供参数,则默认为 tempfile 包的 tempfile.gettempdir() 的输出。 注意:在 Windows 机器上,路径参数应类似于 C:\path\to\temp

创建新项目

要开始使用 SWAN,请点击 文件 -> 新建项目... 或点击“新建项目”图标 新建项目。这将打开以下对话框。

New Project Dialog

使用“浏览...”按钮选择存储数据文件的文件夹路径。所有可加载的文件将按文件名(不含扩展名)显示在左侧的列表中。选择您希望加载的文件,然后点击“添加”将它们移动到右侧的列表中。可以使用此方法加载来自多个位置的数据文件。一旦选择所有必需的文件,请点击“确定”以加载所有数据集。默认情况下,将加载所有选定数据集的第一通道。在启动 SWAN 时指定的临时目录中创建一个临时项目文件。

保存项目

在任何时候,您都可以通过点击 文件 -> 另存为... 或点击工具栏中的图标 另存为 来保存对项目所做的任何更改,并选择一个位置和名称来保存项目文件。如果您想要覆盖当前项目文件,请点击 文件 -> 保存项目 或工具栏中的图标 保存

加载保存的项目

如果您想继续对一个已保存的项目进行工作,请点击 文件 -> 加载项目... 或工具栏中的图标 加载项目,并选择与您希望的项目文件对应的 .txt 文件。请注意,相应的 .vum 文件也必须位于与 .txt 文件相同的目录中。

界面

SWAN 的界面组织成五个可拖拽的小部件,称为 视图,每个视图都显示加载数据的特定方面。

  1. 绘图网格 - 这是 SWAN 的主要视图,显示所有正在分析的单个单元的概述。一旦加载了所有所需的集,此视图将显示一个网格,其中每一列对应一个加载的数据集(会话),每一行对应一个 GID,每个 GID 对应一个独特的颜色。此 GID 和颜色在 SWAN 的所有视图中共享。给定会话中找到的每个单个单元都被分配一个 GID,并且使用相应的颜色在该单元的单元格中绘制平均波形。网格中的每个单元格、行或列都可以选择或取消选择。此外,可以通过分别单击行或列的第一个单元格来停用(或重新激活)整个行或列。停用单元格中的单个单元将不会在任何其他视图中显示。

Plot Grid

  1. 平均波形视图 - 此视图显示 Plot Grid 中所有活动的单个单元的平均波形,相互叠加。每个单元的颜色对应于 Plot Grid 中使用的颜色。给定神经元的波形形状预计在长时间内保持不变。通过比较此视图中各种单个单元的平均波形,可以识别出相似的单元。

Mean Waveforms

  1. 尖峰间隔直方图(ISI 直方图)视图 - 与单个单元对应的尖峰序列的尖峰间隔直方图是连续尖峰时间之间的时间间隔的分布,常用于表征单元的放电活动。ISI 直方图视图显示了在绘图网格中所有活跃的单个单元的 ISI 直方图。就像波形形状一样,以 ISI 直方图形式呈现的神经元放电活动预期在不同实验会话中保持一致。具有相似 ISI 直方图的单元可能对应于相同的神经元。

ISI Histograms

  1. 主成分分析视图 - 主成分分析(PCA)用于降低绘图网格中每个活跃单个单元对应波形的维度。每个波形的头三个主成分(PCs)在此视图中以三维散点图的形式绘制,每个单元的平均波形由一个大立方体表示。波形簇的颜色对应于单元的 GID。在 PC 空间中彼此靠近的簇对应于具有相似波形形状的单元,可能代表相同的神经元。

Principal Component Analysis

  1. 放电率概览视图 - 此视图依赖于数据集中实验事件的可用性。在所选事件触发器周围每个活跃单个单元的瞬时放电率,在实验试验中平均,在此视图中绘制。这些放电率概览用于将神经元的放电活动与动物的行为联系起来。预期给定神经元在相关实验触发器周围的放电率概览在多个实验会话中保持相似。颜色,再次,对应于单元的 GIDs。

Rate Profiles

选择单位

要确定不同视图中的哪个曲线/点对应于绘图网格中的哪个单元,您可以点击单元的单元格或任何曲线(在平均波形视图、ISI 直方图视图、放电率概览视图中)或 PCA 视图中对应于平均波形的点。这将突出显示所有视图中对应于该单元的曲线/点。再次点击将取消突出显示。这可以用于突出显示所有视图中的单元。

Selecting Unit

交换单位

SWAN 最基本的功能在于其能够重新分配绘图网格中显示的单个单元的 GIDs。这是通过交换网格中两个单元格的内容来实现的。在选择某一列中的某个单元格后,可以选择同一列中的第二个单元格。一旦选择了两个单元格,就可以通过点击工具栏中的 编辑 -> 交换 或图标 交换 来交换单元格的内容。如果两个单元格都包含一个单元,则单元的 GIDs(及其颜色)将被交换。如果一个单元格为空,则另一个单元格中的单元被分配到空单元格中,从而为其分配一个新的 GID。

可以重复此过程,直到达到所需的原始单元到 GIDs 的映射。目标是给所有可能代表相同神经元的单元分配一个 GID。

Swapping Units

激活和停用行和列

在使用 SWAN 的过程中,您可能需要“关闭”某些全局单元 ID(行)或某些会话(列),以便更好地可视化特定单元。可以通过点击需要停用的行或列的第一个单元格来实现。这将使该行/列变灰,并且该行/列上的所有单个单元将不再在任何其他视图中可见。要重新激活行/列,再次点击该行/列的第一个单元格。

注意:PCA 视图使用具有最大单元数量的会话来计算主成分。通过停用某些单元,可能会改变用于计算这些主成分的会话,PCA 视图可能不会保持不变。

Row-Column Selection

自动算法

尽管手动交换单位是一种简单直观的方法,可以得出单位到GIDs的最终映射,但当加载大量会话时,这个过程会变得繁琐且耗时。我们提供通过算法自动化此过程的可能性。已实现两种算法,可通过点击 编辑 -> 重新计算映射... 访问。会出现一个对话框,提供以下两种算法的选择。

  1. 基于欧几里得距离的波形比较(旧实现)- 计算每对连续会话中所有单位的平均波形的欧几里得距离,并将波形高度相似的单位分配到相同的GID。这个过程对每对连续会话重复进行。虽然此方法作为遗留方法提供,但它已不再维护。

  2. 高维特征空间中的K-means++聚类(SWAN实现)- 使用可定制的特征集为每个单位构建特征向量。然后使用K-means++算法在这些单位的高维特征空间中进行聚类。在聚类之前,必须为聚类算法提供作为输入的期望簇数。由于无法将来自同一会话的两个单位分配到相同的GID,算法在聚类步骤之后通过为冲突单位分配新的GID来解决此类冲突。这是SWAN推荐使用的算法。

    • 簇分裂 - 算法中的聚类步骤不考虑发现某个单位会话的日期和时间。这可能导致具有相似放电特征但记录时间差异很大的单位被聚在一起的情况。为了避免这种情况,用户可以在两个单位之间强制执行一定的时间间隔阈值(以天为单位)。任何违反此阈值的簇将分裂。

导出结果

一旦获得单位到GIDs的最终映射,可以将其导出为CSV格式或OdML格式。这两个选项都可以在 文件 菜单下找到。

贡献

请随时提交任何关于SWAN的错误报告或提交拉取请求。我们也很高兴听取建议和功能请求。

作者

SWAN目前正在由Shashwat Sridhar维护。SWAN的原版由Christoph Gollan开发。

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

python-swan-0.1.0.tar.gz (4.4 MB 查看哈希值)

上传时间

构建分发

python_swan-0.1.0-py3-none-any.whl (161.2 kB 查看哈希值)

上传时间 Python 3

支持者