Matlab GUI小程序:计算两个分区模板之间的对应关系

一、背景

如何获得两个分区模板之间的脑区对应关系(比如:将AAL的脑区对应到Yeo7网络中)是论坛里经常讨论的问题(比如:帖子1, 帖子2, 帖子3),前面 @guazi123 已经写了一个帖子来介绍如何计算这种对应关系;@tjf 提供了从HCP360到Yeo7网络的映射文件和相应的python代码。考虑到很多人可能不会编程,所以我这里写了一个简单的Matlab GUI程序,来实现这个操作,希望有点用处。

二、程序的使用和输入输出

  1. 在附件的压缩文件中,包含两个名为atlas2atlas_gui.matlas2atlas_core.m的文件,前者用来生成一个图形界面,后者用来进行实际的计算过程。我这里没有提供样例数据。neuroparc里提供了不少常用的分区模板文件。

  2. 整个程序的分析过程是:读入两个分区模板(NIFTI格式,需要安装好SPM12),一个称为source atlas,一个称为target atlas;对于source atlas里的每个脑区,计算它与target atlas里的每个脑区的重合的体素数,target atlas里重合体素数最大的脑区即与source atlas里的该脑区形成对应关系;最后输出一个文本文件,第一列表示source atlas里每个脑区的数字标签,第二列表示target atlas里对应的脑区的数字标签。

  3. 在Matlab中,将当前路径切换到GUI程序所在目录(或者把GUI程序目录添加到搜索路径中),在命令行窗口中输入atlas2atlas_gui,会弹出如下图所示的界面,分别选择source atlas、target atlas、保存结果的输出目录以及输出文件的前缀,然后选择Run Calculation开始分析。

三、其他

  1. 这个程序我在Linux系统下进行简单测试,不确定在其他系统下是否有问题。对Matlab版本应该没有要求。这个程序仅用于学习交流,对于可能存在的错误,我不能负责。如果遇到问题,欢迎回帖进行交流。

  2. 当前版本通过计算最大重合体素数这个指标来评估两个脑区的对应关系,这个指标我感觉只有在source atlas脑区比较小、target atlas脑区比较大的情况下才比较合理,比如将AAL分区对应到Yeo7网络。如果source atlas和target atlas脑区比较接近,那么采用Dice coefficient应该更好。

  3. 当前版本功能非常简单,有很多地方值得改进和优化。除了增加评估对应关系的指标,还可以考虑皮层分区模板(比如FreeSurfer的annotation格式文件)的使用场景以及输出对应以后的图像文件。

  4. 我把代码传到了github仓库,如果后续有更新,会更新在github上。我自己代码水平非常初级,而且我很少使用Matlab,这里之所以选择Matlab,是因为创建GUI比较容易。欢迎你对这些代码进行优化或者用于练手。

  5. 如果你刚进入这个领域,而且还不会编程。我个人建议要学会用代码分析数据,而不是依赖图形界面,因为很多分析模型是没有图形界面可用的。如果你是初学者,时间相对充足,再配合上AI的辅助,完全可以掌握最基本的代码技巧,对于科研完全够用了。这是我个人的一点感受,每个人的具体情况不同,仅供参考。

Atlas2Atlas.zip (2.4 KB)