安装 AFQ以及babyAFQ,24小时趟坑记录(SLURM集群部署坑已填-2023-5-9)

AFQ和babyAFQ是大脑白质神经纤维束分割和分析软件,分别面向成人和婴幼儿群体,它能够取得更高的分析精度。软件的作者是Yeatman,目前在斯坦福大学的Brain Development & Education Lab。为了比较可靠地分析大脑白质的发育,病变过程,AFQ和babyAFQ已经被成功应用到了一系列的工作中,例如阿尔茨海默病的诊断等。不过要部署工具到本地,还费了些周折。

需要一些计算库的重新编译,软件变量的适配等工作,总共花费了24小时。废话不多说,先展示一下demo数据上的六个,神经纤维束的结果图。

在这里插入图片描述

要安装和成功安装使用AFQ和babyAFQ,需要提前准备好几个工具(Matlab, FSL, ANTs, FreeSurfer, Mrtrix3,VistaSoft,SPM和它的updated version。不像在AFQ官方GitHub网站中简略的所说那样,那样的描述曾欺骗了我带的硕士,让他以为很容易就安装,但实际上如果没有安装依赖软件,那将是一个巨大的工作量。而这是值得需要说明的,因为会报起奇奇怪怪的问题,特别是基础软件环境还不是那么完备的情况下。

It requires functions from the MATLAB stats toolbox, vistasoft and SPM.

此外,除了上述的Matlab的Statistics and Machine Learning Toolbox还需要安装两个packages,Image Processing ToolboxMapping Toolbox

在准备好了上述软件,环境之后,主要会存在两方面的问题1)Mex,2)在Matlab中调用系统环境软件。

1)Mex编译, libmex.dylib errors

  1. 如果直接执行AFQ,会提示调用SPM/VistaSoft/AFQ的*.mexmaci64文件,在苹果系统上需要给它们开使用权限,否则就会报错。
    在这里插入图片描述
    点击取消,然后在“隐私和安全性”中的“安全性”下方,就能看到淡出的允许按钮。点击允许就可以。
    此外,可能还需要进入到有*.mexmaci64的文件夹,在终端用下面的code 就不会弹出错误。参考之前的博文“MacBook matlab 无法打开***.mexmaci64文件
find . -name "*.mexmaci64" -exec xattr -d com.apple.quarantine {} \;
  1. 设置了上面的步骤之后,还会碰到错误'/usr/local/lib/libmex.dylib' (no such file) MEXFILE error, libmex.dylib not loaded这是因为*.mexmaci64系统不匹配的原因造成的,需要重新编译codes。否则就会报错,如下所示。
    请添加图片描述
    需要说明的是,采用mex编译c或者c++代码,需要加上-compatibleArrayDims 选项,否则会报错。
mex -compatibleArrayDims /***/spm12/src/spm_global.c

类似于下图的错误。
在这里插入图片描述

  1. 这里有个比较特殊的文件,它需要依赖额外被保存在其它文件夹中的库函数,mex函数需要定制一下,否则会提示找不到jama中的库函数。
mex -compatibleArrayDims -O -I/***/vistasoft/mrDiffusion/src/jama /******/vistasoft/mrDiffusion/src/dtiFiberTracker.cxx

2)在Matlab中调用系统环境软件,解决command not found,no license

调通了上面的步骤,系统还是会报错,虽然当时很崩溃,但现在看来也就是两个steps了。
1)在matlab中,会找不到FSL/MRtrix/FreeSurfer的命令,会弹出 zsh: command not found。实际上,这是因为matlab和系统之间的环境变脸并不通用,需要在matlab中重新设置环境变量,如下所示。

setenv('PATH', [getenv('PATH') ':/usr/local/fsl/bin']);

2)比较搞笑的是matlab中添加Freesurfer 的license和官方教程中还有一些不同,不是只把license复制到FREESURFER_HOME中就可以。
在这里插入图片描述
在这里纠结了好大一会,因为官方的文档似乎不管用;还好大佬给了提示,通过设置FS_LICENCE变量,然后就没问题,顺利得到神经纤维束的图。
在这里插入图片描述

setenv('FS_LICENSE', [getenv('FS_LICENSE') '/Applications/freesurfer/7.2.0/license.txt']);

3) 集群配置

我们的集群基于slurm架构,用的是centos7系统,实际上更容易安装和配置,几乎没有遇到问题,除了vistasoft的一个版本问题。

module load *
setenv('PATH', [getenv('PATH') ':/public/software/apps/fsl/bin']);
****
run('babyAFQ_demo.m')

然后即可。

Happy :)

感谢上海科技大学黄忠锐顾金晨两位同学协助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值