摘要
我在触摸屏盒中记录了小鼠在进行行为学习任务时的钙映像数据。
我想找到一种方法来整合神经数据(100 个个体细胞随时间的活动(约 30,000 x 约 30 毫秒时间段))和行为数据(动物在行为任务期间做出的时间戳动作和决策)。
项目定义
背景:行为任务
任务的目标是让老鼠学会,只有在特定位置触摸屏幕上的特定对象时才会获得奖励。否则,它们会成为干扰因素。
例如,对于试验类型 1,花朵会给出奖励,因为它显示在左边,但蜘蛛不会。对于试验类型 6,花朵不会给出奖励,因为它在中间,但蜘蛛会,因为它在右边。
6 种不同的试验类型组合存在于 3 个物体位置关联(花-左,飞机-中,蜘蛛-右)中,老鼠需要学习这些关联。这 6 种试验类型随机呈现。每次会话有 36 个总试验(6 x 6)。
背景:钙成像
老鼠通过植入在头部的微型显微镜(迷你显微镜)完成任务,该显微镜发出 LED 光,照射到植入的镜头上,以照亮在细胞使用钙时会发光的基因改造神经元。
同样,功能性磁共振成像(fMRI)通过血氧水平推断大脑活动,钙成像则通过细胞中的钙浓度推断神经元活动(指示动作电位、等级电位、突触电位等)。
摄像头看到的内容。一个 MATLAB 脚本分析每一帧图像,确定哪些像素属于神经元,哪些不属于,并标记和计数它们。
一旦标记,每个神经元的亮度水平会被测量以推断钙活性。在这里生成的光栅图看起来类似于您在单元电生理学中的“尖峰”数据中看到的内容。
(左边;放大,右边;相同但缩小) Y 轴代表单个神经元,X 轴代表时间(以帧为单位;约 30 毫秒)。颜色越黄,表示荧光强度越高,即神经元活动的可能性越高。
大的核心问题是:动物在记忆任务越来越熟练的过程中,神经活动如何随时间变化?是否有细胞群在特定事件(例如错误选择、正确选择、左边、右边、中间反应等)期间被激活?
有关一般工具和方法的详细评审,请参阅:https://www.biorxiv.org/content/10.1101/2020.02.06.937573v1.full
数据
行为数据是动物进行的每个动作(触摸屏幕、饮水奖励、错误选择、正确选择等)的时间戳记。
钙数据是一个表示细胞数乘以总帧数的矩阵(例如,100 个细胞和 30,000 帧是一个 100 x 30000 的矩阵)。矩阵中的每个值代表特定细胞在特定时间帧的荧光水平(推断的尖峰概率)。
因此,我的数据设计使用单个神经元的活动作为其特征(x 值),行为事件作为其因变量或预测变量(y 值)。在这里,“样本”被定义为动物在任务中每次单独的尝试。
注意:这里的 1 和 0 表示细胞的“开”或“关”,为了简化起见。实际上,活动是根据图像分析软件测量的荧光变化定义的瞬态活动。
学习目标
我的分析设计的主要问题是每个单元的活动都是一个独立的时间序列,这使得它难以或者不可能使用传统的机器学习工具(至少在目前格式下)。
因此,我的第一个目标是将我的时间序列数据预处理为可用于逐细胞和种群水平分析的有意义的格式。我的第二个目标是利用机器学习预测和解码单个细胞和种群水平活动中的正确事件与错误事件。
-
对于单细胞分析,我能够使用单个细胞的时间序列数据。
然而,将时间序列中的每个帧视为自己的独立变量是不可靠的;试验中细微的细微抖动将使得寻找到重复模式变得不可能。
为了解决这个问题,我将使用一个滑动窗口,它会取几帧的平均值,有效地平滑每个试验的时间序列,以允许试验之间的活动更自由地重叠。 -
从单细胞分析来看,我可以选择将逐个细胞预测的类别输入到随机森林分析中,以测试神经元在正确与错误尝试中是否展现出某种“民主”的编码方式。
-
对于人口水平的分析,我可以选择将我的时间序列数据压缩为每个细胞的平均放电或总放电,然后使用这个整体活动得分来预测行为事件。
-
最后,我还可以使用 nilearn 工具计算单元之间的相关矩阵,并将这些相关值作为特征来预测行为事件。
工具
- Python
- Jupyter 笔记本
- nilearn
- scikitlearn
- MATLAB
成果
单细胞 - 滑动窗口分析
下面是三种机器学习分类器在 109 个个体细胞上使用窗口化(4 帧)时间序列数据进行测试的测试分数分布直方图(顶部)和 5 折交叉验证分数(底部)。
训练和测试数据被洗牌并重新测试了 50 次,并在每次测试中对每种分类器方法得分>80%准确率的细胞计数进行了制表。
将单元 ID 加 1,似乎单元 29、25 和 4 最频繁地获得了正确与错误试验尝试的 80%以上的预测准确率。让我们看看它们是什么样子:
我们可以直观地看到,正确和错误的响应之间这些细胞确实存在显著差异。事实上,这些结果早已为人所知。人们期望海马体中的几个细胞在动物每次完成正确试验并获得奖励时都会亮起。
因此,这个测试的目的只是验证我的机器学习工具是否正常工作。
细胞群体 - “民主”
那么,从群体活动层面来看呢?细胞或细胞群体的活动是否存在某种特征,可以指示正确的还是错误的响应选择?
一个想法是测试海马细胞是否充当某种“民主”;各个神经元的预测结合在一起可以某种程度上提高机器学习工具的整体准确性。
为了做到这一点,我从线性 SVC 分析的训练集中获取了每个单独神经元的预测结果,并将其放入随机森林分类器中。不幸的是,结果相当糟糕(交叉验证准确率为 41.6% +/- 11%)。
这并不太令人惊讶,因为海马细胞并不真的被期望以“民主”的方式工作来预测单一、具体的事件。
细胞水平 - 总体活动
所有 109 个细胞的时间序列活动的总和结果同样不佳。这再次是可以预期的,因为在活动平均的较长时间尺度上(超过 2 秒),时间动态是不可忽视的。
在非常狭小的时间范围内具有独特和特定活动的细胞(左图)被与在相同时间范围内稀疏但总体上相同数量的细胞(右图)作同样的处理。
然而,这种“总和”的活动可能对于更具体和狭窄的感兴趣时间窗口(小于 1 秒)更有用,这些时间窗口与特定的、预期的事件相关联。
准确性也可能通过从模型中排除具有不一致活动的特征(即细胞)来提高。事实上,并不是所有的细胞都会被期望对正确或错误的试验编码做出同等贡献(或根本不做出贡献)。
群体水平 - 细胞间相关性
另一种观察群体水平活动的方法是通过细胞间的相关性,类似于 fMRI 连接性分析所做的那样。 只是这里,每个感兴趣的区域都是单个神经元。
通过从 nilearn 教程中学到的机器学习脚本进行调整,我生成了一个 109 x 109 的所有单元的相关矩阵,以及一个包含 5800 多个单元对窗口化时间序列数据之间相关性的特征矩阵:
将这些特征输入到一些机器学习分类器中,我们得到了一些令人印象深刻的测试结果(+ 交叉验证)!
- SVC (rbf): 78.8% (82.5 ± 10%)
- 决策树: 82.6% (65 ± 10%)
- 随机森林:73.5%(72.5 +/- 9%)
这表明,在动物在收集奖励时,查看相关的活动是理解任务中正确和不正确反应的合理方法。
这再次符合直觉,因为我们知道,当动物获得奖励时,大量细胞会同时激活,因此高度相关的活动可以指示“奖励”事件(从而是“正确”事件),甚至可能比任何单个细胞的活动更具指示性。