科 / 研 / 图 / 像 / 处 / 理
钙信号(Calcium Signal)在细胞传输、肌肉收缩和基因表达等细胞过程中发挥着重要作用。
通过在神经元中表达钙指示剂(Calcium Indicator),可以通过成像的方法,监测神经元中的钙信号,从而观察神经元的活动。
https://www.janelia.org/news/janelia-scientists-develop-fastest-calcium-indicators-yet
钙信号去卷积(Calcium Deconvolution, or Spike Deconvolution)是一种用于分析和提取钙成像数据中有意义信息的计算方法。
在钙成像(Calcium Imaging)中,我们所记录的信号是细胞内的钙浓度的变化和各种噪声的叠加,由于成像系统的复杂性以及钙指示剂本身的特性,往往不能准确反映真实的神经元活动。
钙信号去卷积旨在从钙信号中提取出神经元的Spike,从而更真实的反应神经元的活动。
这篇文章会介绍一种常用的快速钙信号去卷积的方法——OASIS
https://github.com/zhoupc/OASIS_matlab
这种算法非常快,理论上可以做到实时(on-the-fly)的钙信号处理,且需要调整的参数较少:
https://github.com/j-friedrich/OASIS?tab=readme-ov-file
一、问题分析
我们首先需要从 Calcium imaging 的数据中提取钙信号的 Raw trace。
怎样提取信号,可以参考之前的文章:
提取到的所有细胞的 Calcium trace 可以保存成一个 N*T 的矩阵,N 是细胞数量,T 是记到的所有时间点。
我们需要把这些数据保存成一个mat文件作为输入。
另外,不同数据的成像质量或条件都有所不同,可以先用几个trace来尝试最优的参数。
二、Calcium Deconvolution
1、OASIS的下载
首先需要先从 GitHub 上下载OASIS:
通过 Git clone 或者手动下载压缩包。
然后在 MATLAB 中,将当前文件夹设置为 OASIS 文件夹,可以看到文件夹中会有一个 oasis_setup.m 文件。
在命令行窗口输入:
oasis_setup
即可完成安装。
2、实例代码,MATLAB版本R2021b:
clear; close all;
oasis_setup;
load("calcium_data.mat");
decon_data = zeros(size(raw_data)); % deconvolution trace
spike_data = zeros(size(raw_data)); % spike trace
for ii = 1:size(raw_data,1)
y = raw_data(ii,:);
['foopsi', 'ar1', 'smin', -1, ... ] = deconvolveCa(y,
'optimize_pars', true, 'optimize_b', true);
decon_data(ii,:) = c;
spike_data(ii,:) = s;
end
save('deconv_data.mat','raw_data','decon_data','spike_data');
对单个 trace 进行 plot,查看效果:
for ii = 1:size(raw_data,1)
y = raw_data(ii,:);
['foopsi', 'ar1', 'smin', -1, ... ] = deconvolveCa(y,
'optimize_pars', true, 'optimize_b', true);
figure(23);
plot(y); hold on;
plot(c); hold on;
plot(s);
legend('y','c','s');
pause; clf;
end
3、关键代码解析
['foopsi', 'ar1', 'smin', -1, ... ] = deconvolveCa(y,
'optimize_pars', true, 'optimize_b', true);
这里主要注意两个参数:
1、Method: {'foopsi', 'constrained_foopsi' (default), 'thresholded'}
2、'smin': constrain the spike size to be n* noise levels.
在代码示例里,我设置例如 smin为-1,如果调整到 -3。对 spike size 的要求就更高,可以减少 false positive,但也可能会丢失一些 spike:
所以 Method 和 smin,需要根据自己的数据,多尝试几个参数,找到最优的参数做最终的 Deconvolution。
往期回顾