DPARSFA做任务fMRI数据预处理报错

Submitted by wonder on

老师您好,请问,我用DPARSFA做任务fMRI数据预处理时报错,我是选的模板里面的Task fMRI data preprocessing 这一项,根据我的扫描参数修改了一下,结果报错如下,请问该如何解决?谢谢!!


错误使用 file_array/subsref>subfun (line 80)
在 'file2mat' 的工作进程上引发了 UndefinedFunction 错误。这可能是因为在这些工作进程上无法访问包含 'file2mat' 的文件。使用 addAttachedFiles(pool, files)
指定要附加的必要文件。请参阅 'parallel.Pool/addAttachedFiles'的相关文档以获取更多详细信息。

出错 file_array/subsref (line 60)
    t = subfun(sobj,args{:});

出错 nifti/subsref>rec (line 219)
            t = subsref(t,subs(2:end));

出错 nifti/subsref (line 45)
varargout = rec(opt,subs);

出错 DPARSFA_run>(parfor body) (line 560)
                    y_Write4DNIfTI(Nii.dat(:,:,:,AutoDataProcessParameter.RemoveFirstTimePoints+1:end),Nii,DirImg(1).name);
                   
出错 DPARSFA_run (line 528)
        parfor i=1:AutoDataProcessParameter.SubjectNum

出错 DPARSFA>pushbuttonRun_Callback (line 1601)
    [Error]=DPARSFA_run(handles.Cfg);

出错 gui_mainfcn (line 95)
        feval(varargin{:});

出错 DPARSFA (line 33)
    gui_mainfcn(gui_State, varargin{:});

原因:
    未定义与 'struct' 类型的输入参数相对应的函数 'file2mat'。
 
Error while evaluating uicontrol Callback

 

另外,刚用MATLAB打开DPARSFA时,就出现警告:
警告: matlabpool will be removed in a future release.
To query the size of an already started parallel pool, query the 'NumWorkers' property of the pool.
To check if a pool is already started use 'isempty(gcp('nocreate'))'.

 

然后我在DPARSFA里设置好,点RUN时,也会出现警告:
警告: 文件:DPARSFA_run.m 行:658 列:60
临时变量 SliceOrder 将在 parfor 循环的每个迭代开始时被清除。
循环开始前赋给它的任何值都将丢失。如果在 parfor 循环中为它赋值之前使用 SliceOrder,将发生运行时错误。
请参阅 MATLAB 中的并行循环,“临时变量”。
> In DPARSFA>pushbuttonRun_Callback at 1601
  In gui_mainfcn at 95
  In DPARSFA at 33
警告: 文件:DPARSFA_run.m 行:930 列:83
临时变量 RefFile 将在 parfor 循环的每个迭代开始时被清除。
循环开始前赋给它的任何值都将丢失。如果在 parfor 循环中为它赋值之前使用 RefFile,将发生运行时错误。
请参阅 MATLAB 中的并行循环,“临时变量”。
> In DPARSFA>pushbuttonRun_Callback at 1601
  In gui_mainfcn at 95
  In DPARSFA at 33

YAN Chao-Gan

Wed, 05/07/2014 - 21:16

Hi,

There are two things you may check:

1. Update SPM. (升级SPM8)

2. Do not add with subfolders when setting path for REST. (在Matlab中设置REST路径时,不要把子文件夹也添加)。

Best,

Chao-Gan

wonder

Mon, 05/19/2014 - 06:22

In reply to by YAN Chao-Gan

谢谢严老师的回答,但我按照您的说明又做了一次,还是出错。

由于我是用DPARSFA做的任务态的block实验数据预处理,源数据为DICOM格式,做处理时没有把Slice timing这一项选上,就出现了以上错误,后来我就先把DICOM转成NIFTI格式,初始文件夹改为从FunImg开始做,同样没有勾上Slice timing,这样就没有再出错。

Hi,

这个看起来比较奇怪。两种情况下软件环境是一样的吗?你的matlab是什么版本?

祝一切顺利!

超赣

wonder

Wed, 05/28/2014 - 04:04

In reply to by YAN Chao-Gan

严老师好,两种情况我都是用的最新版的MATLAB 2014a,不过之前我以为是MATLAB版本的问题,换成了2010b,还是出错,后来我就在2010b版本中,先把DICOM转成NIFTI格式,初始文件夹改为从FunImg开始做,同样没有勾上Slice timing,这样就没有再出错。于是我就又换回了2014a,用这种方法也没有再出错。