CAT12.7保姆级安装教程:从SPM配置到VBM批处理实战 简介一款针对脑结构影像分析的完整源码安装包面向需要利用T1加权结构像开展皮层厚度测量、脑区分割与形态学研究的科研人员及初学者亦是作者笔记所依托的对应版本。整个资源包为ZIP格式压缩包共包含八百二十二个文件总大小约二百二十三兆字节。内容以程序源文件为主体同时集成编译好的运算组件、示例图像、说明文档以及多种脑图谱注释文件既能扩展原始功能也便于在多种主流操作系统上运行。目前已有一千七百一十二人浏览学习适合希望逐行对照作者笔记进行预处理的用户也适合作为神经科学、心理学等交叉学科的入门参考。官方已停止提供旧版下载此包则完整保留了原版工具链读者无需重新适应新界面和新参数可继续沿用经过验证的分析流程节省排查环境兼容性的时间。1. 装CAT12.7之前先把这几件事弄清楚后台每隔一阵就会有人私信问CAT12安装的问题尤其是CAT12.7版本安装包问的人最多。这也不奇怪脑结构影像分析这个方向VBM和皮层厚度分析基本绕不开CAT12而这个版本在算力和易用性上确实比早期版本舒服不少。我今年初把实验室几台分析机的工具箱统一升级到CAT12.7整体跑下来最大的感受就是批处理稳定了出错提示也更友好了但这不意味着它可以“闭眼装”。很多坑都在装之前就埋下了环境没捋清楚后面会一直返工。这篇就把CAT12.7的安装、配置、验证和首次跑通流程一次说透内容主要是给两类人看的一是刚进实验室、电脑上连SPM都没有的新手二是在老版本里用惯、想平滑过渡到新版的老手我会把版本兼容、路径配置、批处理常见报错这些关键点全部摊开来讲。1.1 CAT12到底是什么和SPM有什么分工CAT12的全称是Computational Anatomy Toolbox运行在MATLAB环境下以SPM12为基础扩展。它最核心的用途是处理结构像也就是T1加权磁共振图像然后得到灰质体积、皮层厚度、脑区表面积这些形态学指标。很多人第一次接触会搞混CAT和SPM的关系简单说SPM负责基础的图像读取、显示、配准CAT12负责专门的形态学分析流程比如分割、DARTEL配准、皮层重建。CAT12.7必须挂在SPM12下面用如果你手里只有SPM8或者SPM5那基本可以确定装不上。另外一个值得提前说明的点是CAT12.7既可以走GUI界面点按钮操作也支持脚本批处理。如果只是处理十几例数据GUI完全够用如果手上有上百例必须学会用批处理脚本。我后面会把两种方式都讲清楚但重心会放在脚本上因为实际项目里批量才是常态。1.2 版本兼容性规划MATLAB、SPM12、操作系统先说我推荐的组合MATLAB R2019b及以上版本SPM12的最新版官方GitHub上持续更新的releaseCAT12.7完整安装包。操作系统方面Windows 10/11 64位、Ubuntu 20.04/22.04、macOS都能跑但要注意Mac上如果是Apple Silicon芯片需要确认MATLAB本身是原生支持ARM的版本否则效率会明显下降。这里有个容易看漏的地方CAT12.7对MATLAB版本不是“越新越好”。我实测过在MATLAB R2023b上跑CAT12.7没发现问题但在R2022a上出现过个别函数兼容性警告。如果你实验室的MATLAB授权版本比较老比如R2018a或更早就不建议强行上CAT12.7可以考虑CAT12.x的老版本或者先升级MATLAB。另外CAT12.7安装时对SPM12的版本也有要求太老版本的SPM12缺少一些新接口会导致CAT在初始化时报错。最稳的办法是安装当天从SPM官网或GitHub拉最新的SPM12稳定版不要用三五年前下载的旧压缩包。注意存放CAT12.7和SPM12的路径绝对不能包含中文和空格也不要放在需要管理员权限的目录下比如Windows的C:\Program Files。这是新手最常见的报错源之一。2. 完整安装步骤从下载到路径配置2.1 获取安装包的正确方式CAT12.7版本安装包可以从CAT官方项目主页的下载区获取。注意选择对应的压缩包格式Windows用户一般下载zipLinux和macOS用户下载tar.gz。下载之后先解压把整个文件夹放到一个固定目录比如Windows下的D:\toolbox\cat12.7或者Linux下的/home/username/toolbox/cat12.7。这里建议保留版本号在目录名里因为以后如果要切换多个版本方便区分。SPM12也是同样处理解压后放到比如D:\toolbox\spm12。我个人习惯把spm12和cat12.7都放在同一个toolbox目录下这样设置路径和排查问题都清爽。有一点要提前说明MATLAB是商业软件需要用机构或实验室的正版授权。CAT12.7和SPM12都是开源免费的工具箱但MATLAB环境是需要你解决的。很多学校有校园授权直接激活就行没有的话可以联系院系的IT管理员确认。2.2 把工具箱加入MATLAB路径的两种方法这一步是安装的核心环节。CAT12.7不是独立软件它必须被MATLAB“认识”也就是要把它的目录以及子目录都加进MATLAB搜索路径中。方法一图形界面操作。打开MATLAB在“主页”选项卡里点击“设置路径”然后点击“添加并包含子文件夹”分别选择spm12和cat12.7两个文件夹确认后点击“保存”。这个方法最直观但有个小坑如果你后面又把工具箱文件夹移动了位置MATLAB里记录的旧路径就会失效所以移动过目录后一定要重设路径。方法二命令行方式。在MATLAB命令窗口运行addpath(genpath(D:\toolbox\spm12)); addpath(genpath(D:\toolbox\cat12.7)); savepath;这里addpath是把路径加入当前会话genpath会自动包含所有子目录savepath把当前路径保存下来以后每次启动MATLAB都不用重新加。这个方法比GUI方式更可控而且可以在脚本里复用。注意如果你的路径带有中文或空格不管哪种方法都会出问题所以前面才反复强调目录命名。提示如果你加入了之后的路径顺序不对理论上也可能造成函数冲突。实际操作中建议先加SPM12的路径再加CAT12.7的路径让CAT的子目录排在SPM之前这样可以优先调用CAT自带的同名工具函数。2.3 验证安装是否成功路径配置完成后先别急着导入数据。在MATLAB命令窗口输入cat_install如果装得正确MATLAB会输出CAT12.7的版本信息同时会提示你检查json格式的配置文件是否生成。这一步很重要因为CAT12.7首次运行时会生成一个cat12_defaults的初始化变量如果配置过程有问题这里会直接报错。再输入spm(version)确认SPM12能正常返回版本号。如果两条命令都通过基础环境就算是打通了。我遇到过一种情况cat_install能过但实际运行时提示找不到spm_select等函数这种多半是SPM12路径没加进来或者MATLAB启动时没有正确执行savepath。返回到上一步检查路径即可。3. 首次运行调试与核心功能实操3.1 第一次打开CAT12图形界面启动MATLAB后在命令窗口输入cat12正常情况下会出现CAT12的主界面分为统计分析和预处理两大块。第一次打开界面时建议先去左上角的“Segment”或批处理模块不要直接点“Run”跑大流程。先熟悉一下参数面板很多默认参数在新版本里已经是最优设置比如DARTEL配准和调制选项默认开启新手不要轻易关掉。这里提一个实操心得CAT12.7界面虽然支持直接点选文件和参数但如果你想在论文方法部分准确描述处理流程最终还是要用脚本记录参数。所以从第一次跑数据起我就建议用批处理脚本方式做记录GUI用于预览和单次调试。3.2 跑一个VBM分析的完整流程VBM基于体素的形态学分析是CAT12.7用得最多的流程。它的输入是T1加权结构像输出是灰质、白质、脑脊液的分割结果以及经过空间标准化的灰质密度图。处理流程大致分四步图像分割、空间配准、调制、平滑。我直接给出一份最精简的批处理脚本框架供大家参考% 设置数据目录 data_dir /home/user/data/T1; output_dir /home/user/data/out; spm_dir /home/user/toolbox/spm12; cat_dir /home/user/toolbox/cat12.7; addpath(genpath(spm_dir)); addpath(genpath(cat_dir)); % 获取所有T1图像 files cellstr(spm_select(FPList, data_dir, ^.*\\.nii$)); % 构造CAT批处理数据结构 matlabbatch{1}.spm.tools.cat.structural_para struct(); matlabbatch{1}.spm.tools.cat.structural_para.data_T1 files; matlabbatch{1}.spm.tools.cat.structural_para.output.GM.native 0; matlabbatch{1}.spm.tools.cat.structural_para.output.GM.mod 1; matlabbatch{1}.spm.tools.cat.structural_para.output.GM.dartel 1; matlabbatch{1}.spm.tools.cat.structural_para.output.WM.mod 0; matlabbatch{1}.spm.tools.cat.structural_para.output.CSF.mod 0; matlabbatch{1}.spm.tools.cat.structural_para.extopts.expertmode 0; % 保存并运行 save(cat_batch.mat, matlabbatch); spm_jobman(run, matlabbatch);这份脚本只是骨架真实使用需要根据你的研究设计调整。比如只看灰质体积那就打开GM的调制输出如果要分析灰质密度而非体积调制选项选择不调制。皮层厚度分析则需要用另一个模块不是这个结构参数流程。跑这个脚本之前务必保证所有T1数据已经完成了基本的质量检查比如有没有明显的头部运动伪影、有没有金属伪影。CAT12.7虽然内置了质量评估但预处理前的人工筛查仍然不能省因为坏数据进去输出质量分数低你后面统计阶段还是会发现异常到时候返工更麻烦。注意批处理脚本中每个字段必须和当前CAT12.7版本的界面完全对应。如果你在GUI里改动过参数并且用“Save”导出过batch文件建议直接以导出的.mat文件为基础来改脚本而不是网上随便找一份老脚本硬套。版本升级后字段名变化是很正常的。3.3 处理时长和注意事项处理速度取决于机器配置和数据量。我实测过单例T1在普通工作站16核CPU32GB内存上跑完整个VBM流程大约需要20到40分钟其中DARTEL配准最耗时。如果跑批处理建议用实验室的工作站或者写脚本让任务排队跑尽量不要在一台同时开很多大软件的个人笔记本上跑中途内存不够会导致MATLAB崩溃或数据损坏。还有一个小习惯每个被试处理完后检查一下输出目录里的“cat_”前缀文件夹比如mwp1开头的文件是调制后的灰质图wmp1开头的文件是未调制的灰质密度图这些文件名有区别统计分析前一定要弄清自己该用哪一套。4. 常见问题排查与避坑经验4.1 基础错误排查速查表我在帮实验室同学装CAT12.7的过程中把几个高频问题整理成了表格你可以直接对照排查现象常见原因处理方式启动时提示“Undefined function or variable cat12”CAT路径未配置或未保存重新addpath并savepath运行时报找不到spm_selectSPM12路径未加或SPM版本太旧确保SPM12路径正确并更新到最新版中文路径报错或文件读取失败路径含中文/空格/特殊字符把数据文件和工具箱都迁移到纯英文路径批次运行到一半报Out of Memory内存不足或并行线程过多关掉其他程序或减少并行核数可以调spm_my_defaults.m里的并行设置结果显示所有体素都是NaN图像没有进行原点校正或者T1序列异常先用SPM的Display功能检查图像原点必要时做AC-PC矫正后再跑CAT安装之后界面版本号对不上多个版本工具箱叠加路径冲突把所有CAT相关路径删除只保留当前版本的路径这个表不能只当作报错索引更要当预防清单。比如说中文路径很多人一开始不在意等到处理几百个文件时才发现有些文件读不出来那时候只能全部重来非常痛。所以我现在每一台新机器上跑分析之前第一件事就是检查数据路径是不是纯英文。4.2 几个不常见但很隐蔽的坑除了上面这些常规问题还有几个坑是我在CAT12.7上踩过、但网上讨论得比较少的。第一DICOM和NIfTI混用。CAT12.7最稳定的输入格式是NIfTI也就是.nii或.nii.gz文件。如果你的数据是DICOM格式必须先通过SPM或dcm2nii转换成NIfTI再交给CAT处理。有些人图省事直接把DICOM目录扔进去CAT虽然能识别一部分但容易出现定位信息缺失导致后续配准结果偏移。第二并行计算设置不当。CAT12.7支持并行处理多个被试但并行核数设置太高或者与MATLAB自带并行池冲突反而会降低速度或者直接报“Java heap space”错误。我的建议是先单例跑通再逐步增加并行核数并监控内存占用。实际项目中我一般把并行核数设成物理核心数的一半既保证速度又不会拖垮整个系统。第三不要在预处理过程中频繁开关MATLAB。CAT12.7的批处理一旦启动中途强制关停容易产生临时文件残留。这些临时文件可能在下次运行时被误读导致奇怪的结果。如果不幸中途断了建议检查输出目录里的临时文件和日志文件必要时清空对应被试的部分结果重新跑。还有一个非常容易被忽略的细节CAT12.7会生成一个日志文件夹里面记录了包含版本信息、处理参数和每个被试的QA指标。很多人跑完分析直接拿文件去做统计但这些QA指标能帮你提前发现质量差的被试。我处理纵向数据时每条记录都会对照QA分数和质量控制图把评分异常的被试挑出来人工复核这个流程能省掉很多统计阶段才暴露的问题。4.3 升级到CAT12.7后旧脚本还能用吗这是个必须正面回答的问题。如果你之前用的是CAT12.6或更早的版本旧批处理脚本不能直接保证兼容。CAT12.7调整过一些字段名和参数结构尤其是extopts下面的子字段老脚本跑起来很可能提示找不到字段或参数被忽略。我的做法是用新版界面把参数全部重新设置一遍然后导出新的batch文件再对比旧脚本逐项迁移而不是直接拿旧脚本硬跑。如果你是一些相对老旧的教程里面用matlabbatch{1}.spm.tools.cat.old_segment这类字段那基本可以断定是CAT12早期版本的写法在CAT12.7里大概率已经不适用。遇到这种脚本别浪费时间猜直接打开新版界面照着重做。最后说一个我自己的习惯我会在完成一次完整预处理后把所有参数和脚本一起存成项目备份然后在分析记录里写下当时用的CAT12.7版本号、SPM12版本号、MATLAB版本号。这个习惯一开始只是为了避免事后遗忘后来发现当审稿人问起处理细节时这些记录能直接拿来用。做脑影像研究处理管线的可复现性本身就是结果的一部分版本记录和QA记录越早开始留越好。本文还有配套的精品资源点击获取