老师您好,请问,我使用FSL GUI进行概追时,只有在只添加seed的情况下才能跑通,waypoint添加后就提示如下错误。但是我的seed、waypoint、exclude都是同一个空间的(dwi空间),使用同样的转换方法(ANTS)得到的。请问有啥处理办法吗?非常感谢!
我明白了老师,是因为我用ants(之所以用ants是因为这几个被试flirt、fnirt配不好)将MNI空间mask配准到个体空间时,产生的个体空间mask的值不都为1,出现了小数,可能超出了运算内存要求。我用spm image calculator i1>0处理成都为1的mask后可以跑通。
可是,如何批量将这些mask变为都是1呢?或者如何在ants配准时候就让它生成都为1的mask呢?因为我有好多好多mask需要改,有何代码吗?谢谢!
在用ANTs将mask从MNI转换到个体空间的时候,插值方式选择Nearest Neighbour,这样得到的mask就都是整数。
非常感谢!
不对啊,我加了-n Nearest Neighbour确实是生成了都是0和1的mask,但是使用这些mask做FSL概追,仍然是报同样的错误,这是为什么呢?
你在运行probtrackx2的时候,可以加上-V选项试试,多输出一些报错信息,也许有助于找到问题。
报错信息也没有变化吗?
没有变化,同样的错误。
但是如果我在ants转换时候不加-n nearest neihgbour,然后使用spm保留>0的体素保存成二值mask,这个mask是可以跑起来的
我去FSL的邮件列表里查了一下(见下面两个链接),看起来可能原因是ANTs转换图像的时候sform会有问题,所以会有这个报错。而用spm处理一下,可能无意中恢复了sform(可能跟是否二值mask没有关系)。
哦哦,谢谢!我还是自己用spm改正一下
如果想用spm批量处理的话,可以参考这个帖子的做法。
收到,谢谢。我自己写了个单被试代码,分享一下:
clear all;
sub = 'sub-01';
path = ['D:\SUIT\',sub,'\','mask_noNN'];
path_new = ['D:\SUIT\',sub,'\','masked'];
structure=dir(fullfile(path));
structure=structure(3:end);
for i = 1:length(structure)
mkdir(path_new,structure(i).name);
gunzip([path,'\',structure(i).name,'\','*.nii.gz']);
roi=dir(fullfile([path,'\',structure(i).name,'\','*.nii']));
for j=1:length(roi)
v=spm_vol([path,'\',structure(i).name,'\',roi(j).name]);
data = spm_read_vols(v);
data = double(data>0);
v_new = v;
v_new.fname = [path_new,'\',structure(i).name,'\',roi(j).name];
spm_write_vol(v_new,data);
end
end