MATLAB | 钙信号去卷积 Calcium Deconvolution

文摘   科学   2024-11-19 17:17   上海  

科 / 研 / 图 / 像 / 处 / 理


钙信号(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


怎样提取信号,可以参考之前的文章:



点击跳转《双光子钙成像数据处理Suite2p(安装篇)



提取到的所有细胞的 Calcium trace 可以保存成一个 N*T 的矩阵,是细胞数量,是记到的所有时间点


我们需要把这些数据保存成一个mat文件作为输入。


另外,不同数据的成像质量或条件都有所不同,可以先用几个trace来尝试最优的参数。



二、Calcium Deconvolution


1OASIS的下载


首先需要先从 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 tracespike_data = zeros(size(raw_data)); % spike tracefor ii = 1:size(raw_data,1) y = raw_data(ii,:); [c, s, options] = deconvolveCa(y, 'foopsi', 'ar1', 'smin', -1, ... 'optimize_pars', true, 'optimize_b', true); decon_data(ii,:) = c; spike_data(ii,:) = s;endsave('deconv_data.mat','raw_data','decon_data','spike_data');


对单个 trace 进行 plot,查看效果:


for ii = 1:size(raw_data,1)    y = raw_data(ii,:);
[c, s, options] = deconvolveCa(y, 'foopsi', 'ar1', 'smin', -1, ... '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、关键代码解析


[c, s, options] = deconvolveCa(y, 'foopsi', 'ar1', 'smin', -1, ...'optimize_pars', true, 'optimize_b', true);


这里主要注意两个参数:


1Method: {'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




创作不易,点个关注再走吧
如果有任何问题,欢迎在文章下方留言
 

作者 | Treasure琛
排版 | 小乐喵喵   

往期回顾

ChatGPT +MATLAB ,实现又快又好编程MATLAB | 自动细胞轨迹追踪MATLAB | 图像堆栈Z ProjectionMATLAB | 图像序列和Stack的读写MATLAB | 文件名自然排序MATLAB | 动物运动轨迹追踪MATLAB | ColorChecker颜色校准MATLAB | 绘制细胞迁移轨迹图





科研图像处理
科研图像处理一站式解决方案,原知乎《ImageJ实用教程》
 最新文章