NIRS_SPM 批处理成像的一个小改进

58 sec read

This is a guest post by Dr. Ning Liu from Stanford.

前些天 在用 NIRS_SPM批处理 做fNIRS脑图时,有几组数据总是报错(大约占总数的三分之一左右),总是说无法生成图像。

??? Error using ==> image
Error using ==> image
Image CData can not be complex

Error in ==> imagesc at 19
hh = image(varargin{1},'CDataMapping','scaled');

Error in ==> activation_map_batch at 365
imagesc(stat_brain);

开始以为是前面几步处理时出了什么问题,于是认认真真从头又做一遍,问题照旧。焦头烂额几天,发现做插值(interpolation)之前一切都是美好的,问题就是在插值以后生成了 复数的interp_var!没办法,只好调出NIRS_SPM 里的批处理函数(activative_map_batch.m),一步一步跟进追踪。Activative_map_batch.m里面 是这么计算interp_var的:

nch = length(chs{kk}); % # of channels
mtx_var = zeros(nch);
for aa = 1:nch
for bb = 1:nch
mtx_var(aa,bb) = var(chs{kk}(aa), chs{kk}(bb));
end
end
[V_X D_X] = eig(mtx_var);
tmp = D_X.^(1/2) * V_X' * B{kk};
interp_var = [interp_var sum(tmp.^2,1)];

问题就出在eig函数那里。Eig函数是用来求本征值和本征向量的,但是在运行某些数据时,会生成一些很小很小的本征值,通常远小于别的本征值十个数量级以上,非常接近于零。我的情况下生成的本征值就是1e-20 量级。 这些奇怪的值(特别是负数的极小值)导致了下面一步开平方出现了复数(complex number),从而报错提示不能使用图形生成函数imagesc。这些值的产生通常是因为做数字近似的时候产生的误差(artifact of numerical approximation)。找到原因,解决办法就很简单了,把这些极小值用零替换就好了。改进后的程序是这样的:

nch = length(chs{kk}); % # of channels
mtx_var = zeros(nch);
for aa = 1:nch
for bb = 1:nch
mtx_var(aa,bb) = var(chs{kk}(aa), chs{kk}(bb));
end
end
[V_X D_X] = eig(mtx_var);

% round very small engenvalues to zero <--by NL
% very small engenvalues result from eig function
% usually is an artifact of numerical approximation. simply
% round them to zero here.
[D_X_err_I1, D_X_err_J1] = find(D_X <0);
disp(D_X(D_X_err_I1, D_X_err_J1));
D_X(D_X_err_I1, D_X_err_J1) = 0;
[D_X_err_I2, D_X_err_J2] = find(D_X>0 & D_X<1e-15);
disp(D_X(D_X_err_I2, D_X_err_J2));
D_X(D_X_err_I2, D_X_err_J2) = 0;
% #

tmp = D_X.^(1/2) * V_X' * B{kk};
interp_var = [interp_var sum(tmp.^2,1)];

本文作者:刘宁博士

如果需要改进后的批程序,请发电子邮件给本文作者刘宁博士: fnirs_studio@outlook.com


Receive email notification via email
Don't want to miss new papers in your field? Check out Stork we developed:

fNIRS Journal Club 视频

546个被试的大型实验是怎么做的?近红外超扫描技术如何揭开群体冲突的神经机制?北京时间2020年5月29日周五上午11点,北京师范大学的马燚娜教授(Yina Ma)为大家讲解了她们组刚刚在Nature Neuroscience发表的文章。下面是报告视频。第一个是在Youtube,第二个是在youku。 Youtube:https://www.youtube.com/watch?v=4qZ7zP-BGz4Youku:https://v.youku.com/v_show/id_XNDY5MTc0MjAxMg==.html 她讲的文献如下: Within-group synchronization in the prefrontal cortex associates with intergroup conflict. Nature neuroscience https://www.storkapp.me/pubpaper/32341541 中文摘要(人工智能翻译,仅供参考):陷入群体的个人有时会失去自己的个性,冒着通常会避免的风险,以无端的敌对态度与外界接触。在这项研究中,我们确定了右侧背外侧前额叶皮层(rDLPFC)和右侧颞顶交界处(rTPJ)的组内神经同步是组间敌对性的潜在机制。我们将546个人组织为91个三对三人小组间比赛,诱导了组内亲和,并使用功能性近红外光谱仪测量了神经活动和组内同步。在组内亲和之后,个人给组内成员的钱比给组外成员的钱多,并且捐出更多的钱来击败竞争对手。组内亲和减少了rDLPFC的活动,并增加了rDLPFC和rTPJ之间的功能连接。尤其是在组外攻击期间,组内亲和还增加了rDLPFC和rTPJ中的组内同步,并且组内rDLPFC同步与组间敌对性正相关。组内同步减少前额活动可能可以解释组内联结如何导致对外界的冲动和集体敌视。
Xu Cui
13 sec read

Remote fNIRS

Everytime I met Dr Leanne Hirshfield, I am impressed by her energy and passion with the fNIRS technology. It was a pleasure listening to...
Xu Cui
4 min read

fNIRS Journal Club 通知 2020/5/29, 11am

546个被试的大型实验是怎么做的?近红外超扫描技术如何揭开群体冲突的神经机制?北京时间2020年5月29日周五上午11点,北京师范大学的马燚娜教授(Yina Ma)将为大家讲解她们组刚刚在Nature Neuroscience发表的文章。 欢迎大家参加并参与讨论。 时间: 北京时间2020年5月29日周五上午11点 地点: https://zoom.com/j/84320310196房间号: 843 2031 0196 密码: 600516 她要讲的文献如下: Within-group synchronization in the prefrontal cortex associates with intergroup conflict....
Xu Cui
7 sec read

One Reply to “NIRS_SPM 批处理成像的一个小改进”

Leave a Reply

Your email address will not be published. Required fields are marked *