FSL probtrack概追报错

老师您好,请问,我使用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没有关系)。

https://www.jiscmail.ac.uk/cgi-b … amp;D=0&P=33022

https://www.jiscmail.ac.uk/cgi-b … mp;D=0&P=109830

哦哦,谢谢!我还是自己用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