NODDI Matlab Toolbox教程
相关链接
英文原址 http://mig.cs.ucl.ac.uk/index.php?n=Tutorial.NODDImatlab
下载:http://www.nitrc.org/docman/index.php?group_id=716&selected_doc_group_id=2830&language_id=1#folder
示例数据:https://www.nitrc.org/frs/download.php/11758/NODDI_example_dataset.zip
论坛:http://groups.google.com/group/noddi
软件依赖
2017年10月更新
1 带有Optimization工具箱的Matlab
2 NIFTI Matlab库:nifti_matlab https://github.com/NIFTI-Imaging/nifti_matlab
从0.9版本开始,将不再需要parallel computingMatlab工具箱,但建议使用。
安装
将NODDI 和nifti_matlab 工具包加载到matlab
addpath(genpath(‘/个人路径/NODDI_tool’))
addpath(genpath(‘/个人路径/nifti_matlab’))
如果之前加载了spm的路径,要先移除
rmpath(genpath(‘个人路径/spm8’))
准备
转格式
图像转格式
函数 CreatROI 可用于将原始格式转换工具包所需要的mat格式
进入到你的目标文件夹下,运行:
CreateROI('NODDI_DWI.hdr', 'roi_mask.hdr', 'NODDI_roi.mat');
如果是全脑分析,那么第二个参数可以填brian_mask。NODDI模型拟合涉及非线性优化,因此计算量很大,时间长。一定要建立一个良好的roi mask,排除不需要拟合的体素,以提高效率。 特别是调试的时候,可以只用一个slice或者一个小区域来试运行代码。文件可以接受NifTI 或Analyze格式,但不能是nii.gz 或img.gz。
运行之后得到NODDI_roi.mat文件
bval/bvec 转格式
函数FSL2Protocol可用于将原始格式转换工具包所需要的格式
protocol = FSL2Protocol('NODDI_protocol.bval', 'NODDI_protocol.bvec');
如果你用的是Camino工具,可以用以下命令:
protocol = SchemeToProtocol('NODDI_protocol.scheme');
运行之后得到一个protocol 变量
拟合NODDI模型
函数MakeModel可以生成NODDI模型所需要的参数
noddi = MakeModel('WatsonSHStickTortIsoV_B0');
WatsonSHStickTortIsoV_B0 "是NODDI模型的内部名称。
结构noddi保存了与后续拟合相关的NODDI模型的参数。对于大多数用户来说,默认设置应该足够了。
随后开始拟合模型
如果你有并行计算工具箱,就用函数 batch_fitting 运行 NODDI 拟合,如果没有,就用 batch_fitting_single。
batch_fitting('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat', 8);
该函数的前三个参数已在前面的步骤中生成。第四个参数指定用于存储估计的NODDI参数的mat文件名。最后一个参数设置了用于并行运行拟合的核的数量。根据你的实际情况修改,如果不指定,Matlab将选择默认设置。
如果是一台8核的机器,拟合过程大约15分钟。
如果运行因意外的系统重启或崩溃而中断,或因必要的停顿而中断,只需再次重复同一命令即可。它将从保存了估计参数的最后一个体素开始恢复被中断的运行(自1.04版本)。
batch_fitting_single的用法类似。
batch_fitting_single('NODDI_roi.mat', protocol, noddi, 'FittedParams.mat')
与batch_fitting类似,该函数支持恢复被中断的拟合运行。
完了会得到一个变量 FittedParams
输出拟合结果
SaveParamsAsNIfTI('FittedParams.mat', 'NODDI_roi.mat', 'brain_mask.hdr', 'example')
该函数将拟合参数(第1个参数)转换为NIfTI格式的体积,其空间维度与原始图像相同,由大脑mask(第3个参数)指定,还需要输入roi文件(第2个参数)。最后一个参数是指定输出文件名的前缀。(在0.9版本之前,你还需要输入模型,现在模型与拟合的参数文件存储在一起。)从1.04版开始,如果你用FittedParams.mat对一个中断的拟合运行进行操作,该函数将中止,并建议你重新运行中断的运行。
输出文件
在你的文件夹下,你会看到以下9个文件。
- 神经元密度(或细胞内体积分数): example_ficvf.nii
- 定向分散指数(ODI):example_odi.nii
- CSF体积分数:example_fiso.nii
- 纤维方向: example_fibredirs_{x,y,z}vec.nii (各1个)
- 拟合目标函数值:example_fmin.nii
- 用于计算ODI的Watson分布的浓度参数: example_kappa.nii
- 错误代码:example_error_code.nii 非零值表示拟合错误(0.9版本之后才有这个功能)。
放上对应英文:
Neurite density (or intra-cellular volume fraction): example_ficvf.nii
Orientation dispersion index (ODI): example_odi.nii
CSF volume fraction: example_fiso.nii
Fibre orientation: example_fibredirs_{x,y,z}vec.nii
Fitting objective function values: example_fmin.nii
Concentration parameter of Watson distribution used to compute ODI: example_kappa.nii
Error code: example_error_code.nii (NEW) Nonzero values indicate fitting errors.
ficvf.nii、odi.nii和fiso.nii可以像FA这些参数用TBSS进行统计分析,当然也可以用其他统计方法。
进行全脑运算的话,一台8核的电脑,这可能需要一夜的时间。