在Ubuntu 18.04 LTS安装PANDA 1.3.1:一个用于弥散张量磁共振成像的管道模型工具

最近帮师姐做DTI数据的处理,师姐推荐使用北师大崔再续博士开发的PANDA软件。

PANDA全称是Pipeline for Analyzing braiN Diffusion imAges,意为一个用于弥散张量磁共振成像的管道模型工具。其基于牛津大学FMRIB的fsl,并整合了MRIcron的dcm2nii工具、利用psom管道模型系统进行多线程并行处理,使得原本需要使用多个软件及进行预处理的MRI数据能够在PANDA中直接完成。PANDA的Full Pipeline功能提供了从原始的张量图像文件(DICOM格式或NIfTI格式)直接输出为DWI分析结果并生成图像(自动进行52个步骤的并行处理);如果输入的数据为整组的数据并给定T1结构像,则PANDA Full Pipeline自动进行84个步骤的并行处理,输出经基于束路的空间统计(TBSS)后的DTI数据及图像。由于其能够最大限度地利用计算机或服务器集群(SGE集群)的硬件性能,并节省研究者大量用以预处理数据的时间,被研究者广泛使用。

由于PANDA作为一款开源软件,其安装过程包含了许多前期依赖包的安装,对于刚接触的人来说会遇到各种问题。本文介绍了我在Ubuntu 18.04 LTS上安装PANDA的过程、遇到的问题及解决的办法,面向完全没有linux使用经验的新手,给出尽可能详细的安装指导,希望能够给到大家一定的帮助。如果遇到了本文没有提到的其他报错或问题,可在本文下方留言。

教程中将不会涉及linux的权限管理部分的内容,默认你是在自己的个人计算机或课题组的公用计算机上安装,你和其他使用者均具有管理员权限,未来随时能够使用sudo命令使用这些软件(虽然我并不是这么做的,因为这样存在安全隐患)。

1. 操作系统要求

PANDA的运行依赖于牛津大学FMRIB的fsl软件,这款软件仅支持在类unix系统上运行,包括各linux发行版及MAC系统,在Windows下需要安装虚拟机才能够运行。由于PANDA本身自带GUI,所以在纯命令行的linux系统上难以使用PANDA。你必须使用一套带有桌面环境(Desktop Environment, DE)的操作系统,或连接至X Server使用你的命令行系统。

我使用的是Xubuntu 18.04 LTS系统,采用的是xfce桌面环境,在本文中均以本环境为例。我也在使用Gnome桌面环境的Ubuntu系统安装成功。

如果希望通过纯命令行方式使用PANDA的话,需要自己编写一些输入输出和设置脚本,或首先利用GUI配置参数,稍后调用PANDA的主函数g_dti_pipeline.m,具体请参见崔再续博士的回答

2. 安装MATLAB

PANDA基于MathWorks的MATLAB语言开发,且利用了PSOM以建立管道模型,所以你的计算机或集群上必须安装有MATLAB。PANDA最新的1.3.1(released in 2016)没有相应的Octave版本,经过测试无法在Octave上运行;而官网提供的1.2.0 Octave版本也存在诸多兼容性问题,在我的系统上测试,没有任何报错却无法打开GUI界面。测试过程如图:
Octave中测试PANDA 1.2.0无法打开

所以推荐购买使用MATLAB。本文使用MATLAB R2018b版本为例。在更早的MATLAB版本中,可能存在MATLAB自带的图形库和系统图形库冲突的bug,但是MATLAB已经给出了一些解决方案,会在后文中提到。

2.1 挂载MATLAB安装镜像

无论你是通过购买USB存储介质,还是通过互联网下载获得了MATLAB的安装镜像文件(.iso),你首先都需要对其进行挂载操作。

首先通过文件管理器进入存有.iso文件的目录,并右击空白处,选择“Open Terminal Here”。在翻译得较好的桌面环境中,可译为类似“打开终端模拟器”的选项。
文件管理器截图
打开终端模拟器后,会显示如下的命令:

zhaokuangshi@zhaokuangshi-WorkStation:~/Downloads$

这行字具有三个重要的分隔符:@:$。在@前的为你登录系统的用户名,@:之间的为你使用的计算机名,:$之间的为你所在的路径,而$符号后面的则为你输入的命令。如果你是以root用户登录的,则$符号的位置会变为#,提示你正在使用超级用户。请检查一下,命令行中显示的你所在的路径,是否为你存有.iso文件的路径。为了可读性考虑,后面的教程不会再重复显示:之前的内容。

如果检查确认无误,则在终端模拟器中输入:

~/Downloads$ sudo mount -o loop R2018b_glnxa64_dvd1.iso /cdrom

注意,这个部分为sudo mount -o loop [被挂载的.iso文件名] [挂载至的目标位置],请把.iso文件名替换为你自己的文件名

系统会提示你输入用户密码,在输入的时候终端不会有任何字符的显示,如“●●●●●●●●●”,这是linux系统的安全机制,防止别有用心的人偷看到你密码的位数,但终端确实能够记录到你的每一个输入,所以只要照常输入即可。如果不小心输错,退格键(BackSpace)是没有用的,你需要使用回车键完成这次错误的输入,等到系统报错后,再次输入一遍之前的挂载命令即可。

如果正确挂载,系统会提示:

mount: /cdrom: WARNING: device write-protected, mounted read-only.

【错误1】
系统提示:

zhaokuangshi is not in the sudoers file. This incident will be reported.

说明你并非系统的管理员用户,你必须用系统管理员账户登录系统。可以询问具有权限的人,将你的账户设为管理员。

【错误2】
系统提示:

mount: /cdrom: failed to setup loop device for R2018b_glnxa64_dvd1.iso

请检查一下你的命令有没有输错,尤其你输入的文件名是否正确。如果确保输入正确,那再看一下你终端所在的路径是不是正确。

【错误3】
系统提示:

mount: /cdrom: mount point does not exist.

在早期的Ubuntu系统或其他linux发行版中,可能并不使用/cdrom挂载点,你可以继续尝试使用/mnt/cdrom:

~/Downloads$ sudo mount -o loop R2018b_glnxa64_dvd1.iso /mnt/cdrom

或者是/media/cdrom

~/Downloads$ sudo mount -o loop R2018b_glnxa64_dvd1.iso /media/cdrom

进行尝试,应该能有一种能使你挂载成功。请记住最终挂载成功的路径,在后文中均以我自己的/cdrom路径为例,所以之后的命令请你一定要注意替换有关的路径。

2.2 安装DVD1

首先,请关闭原来的终端模拟器。

进入挂载.iso文件的路径,以“/cdrom”为例。如图所示,先点击左侧的“文件系统”,再双击“cdrom”。

同先前一样,在此路径下打开终端模拟器。

输入:

zhaokuangshi@zhaokuangshi-WorkStation:/cdrom$ sudo ./install

打开MATLAB的安装程序GUI。这一安装步骤和在Windows操作系统上一样,不加赘述。

请注意,在安装过程中,请始终不要关闭刚才打开的位于/cdrom的终端管理器,让它保持打开状态。

2.3 更换DVD2

当安装程序提示插入DVD2时,依然保持不要关闭原先打开着的终端模拟器,并将文件管理器切换到.iso文件所在的路径,打开一个新的终端管理器
文件管理器截图

输入:

zhaokuangshi@zhaokuangshi-WorkStation:~/Downloads$ sudo mount -o loop R2018b_glnxa64_dvd2.iso /cdrom

注意,这个部分为sudo mount -o loop [被挂载的.iso文件名] [挂载至的目标位置],请把.iso文件名替换为你自己的文件名

2.4 继续安装DVD2

根据安装程序的提示继续安装即可。安装完成后请使用购买MATLAB的账户或者获得的安装密钥进行软件激活。
然后别忘了取消挂载DVD,进入任意终端,输入:

~$ sudo umount /cdrom

2.5 配置环境变量

为了方便使用MATLAB,我们需要进行系统环境变量的配置,使得以后不需要进入安装路径即可使用MATLAB。

  • 在任意位置打开终端模拟器,输入:
sudo vim /etc/bash.bashrc

在终端模拟器内可打开一个系统配置文件。

【错误1】打开的文件为空白——这行命令仅针对使用bash的Ubuntu 18.04 LTS,你的系统环境变量配置并不是使用/etc/bash.bashrc文件,请你搜索自己版本系统的环境变量配置方法或在本文末留言。大部分其他系统的配置文件为/etc/profile
【错误2】提示“vim: command not found”——你的系统尚未安装vim。请尝试输入sudo apt-get install vim进行安装,安装过程需要联网,在命令行询问你(Y/n)时,请输入Y并敲击回车键确认。安装完成后再次尝试上面的步骤。

  • 使用“↓方向键”,将光标移至文档最底端。
  • 使用“i”键,切换至编辑模式,可见终端左下角有“- - 插入 - -”或“- - INSERT - -”提示语。
  • 输入export PATH=/usr/local/MATLAB/R2018b/bin:$PATH
    注意:输入为export PATH=[你的MATLAB安装路径]/bin:$PATH,如果你在安装时没有修改默认的安装路径,那么输入应该为export PATH=/usr/local/MATLAB/[你的MATLAB版本]/bin:$PATH。输入的时候请注意替换。

    如果bash.bashrc文件内已经存在有别的export PATH语句了,请直接在原来的语句的等号后面加上/usr/local/MATLAB/[你的MATLAB版本]/bin:,用最后的冒号将新加入的路径与原先的PATH路径相分隔。例如:
export PATH=/usr/local/MATLAB/R2018b/bin:/usr/local/anaconda/bin:$PATH
  • 输入完以后,请使用“Esc”键退出编辑模式,应能看到终端模拟器左下角的“- - 插入 - -”或“- - INSERT - -”提示语消失。
  • 再输入:wq!,表示write并quit本文档,输入完毕后回车确认。输入时该命令应在终端模拟器左下角可见。
  • 回到bash界面,再输入下述指令
zhaokuangshi@zhaokuangshi-WorkStation:~$ source /etc/bash.bashrc

没有使用bash.bashrc的系统输入

zhaokuangshi@zhaokuangshi-WorkStation:~$ source /etc/profile

此时就已经成功引用了最新的环境变量。

  • 尝试输入
zhaokuangshi@zhaokuangshi-WorkStation:~$ matlab

应当能打开MATLAB

【错误1】
在linux打开MATLAB图形界面失败,提示“段错误”或“Segmentation fault”。此为早期MATLAB版本的C++库与系统的库不兼容的bug,解决方法是进入[MATLAB安装目录]/sys/os/glnxa64下,默认为/usr/local/MATLAB/[MATLAB版本号]/sys/os/glnxa64文件夹,将libstdc++.so.6重命名为libstdc++.so.6.old,此举让MATLAB无法在自身安装目录下找到这个C++库,迫使它寻找系统自带的C++库,从而解决了兼容性问题。这是MathWorks的官方解决方案

由于权限问题,在/usr/local下的文件应当均无法直接在桌面环境改名成功。请至上述路径下打开终端。

是的没错,linux就是那么需要终端嘻嘻。

输入:

/usr/local/MATLAB/R2018b/sys/os/glnxa64$ sudo mv libstdc++.so.6 libstdc++.so.6.old

再重启MATLAB即可

2.6 设置sudoers

如果直接在终端输入matlab命令打开MATLAB,应当会有关于jvm的报错。那是因为linux严格的权限管理机制,使得MATLAB的一些功能必须要用超级管理员的身份才能运行,也就是要使用sudo matlab命令才能运行。不过如果直接在终端中输入sudo matlab,会发现终端提醒:

sudo: matlab: command not found

明明已经安装好了MATLAB,怎么会找不到命令呢?因为我们没有把matlab命令添加入sudo可以执行的范围,所以需要设置sudoers文件。在任意终端输入:

sudo vim /etc/sudoers

打开sudoers文件,使用键盘方向键找到Default secure_path

光标移至该行最后,使用键盘“i”键切换至编辑模式,并添加:/usr/local/MATLAB/[MATLAB的版本号]/bin

随后先使用键盘“Esc”键退出编辑模式,再输入:wq!命令保存并退出vim。

3. 安装fsl

PANDA是基于fsl运行的,在发表本篇博文时,fsl的最新版本是6.0版。这一版本已经可以使用官方的python脚本进行自动安装。请至https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FslInstallation/Linux阅读安装说明并下载安装脚本。

3.1 寻找安装Python 2.7

fsl的安装脚本是基于Python 2写就的,大部分linux系统原生安装Python 2。检查自己的系统是否具有Python 2的方法是,在任意终端输入:

~$ python2

如果系统提示:

Command 'python2' not found

则再输入

~$ sudo apt-get install python

安装过程中遇到询问(Y/n)的一律选择Y,直到完成安装。
如果系统内存在Python 2,应当在输入python2后,得到这样的输出:

Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information
>>>

3.2 安装fsl

进入fsl的下载目录,如果你是在Firefox浏览器直接下载的,那么目录应该是~/Downloads,进入到这一目录,并打开终端模拟器。

输入

~/Downloads$ sudo python2 fslinstaller.py

安装过程中需要联网下载相关包,请确保你的计算机能够正常联网,否则不要使用Python脚本的安装方式。
安装的时候,Python脚本会抛出一些对话,包括设置安装路径等。如果没有特殊要求,对于所有的对话都直接使用回车确认,来采用它给出的默认选项。fsl比较大,下载安装需要15分钟以上,所以稍安勿躁。

3.3 配置环境变量

和上面的2.5节一样,fsl运行也需要环境变量,尤其是对于PANDA来说。

fsl官网描述说,Python脚本安装fsl可以一气呵成,环境变量自动配置生效。但我在四台电脑上安装了四次,只有一次真的自动配置成功了,其余的都没有“一气呵成”。

首先先尝试在任意一个终端输入:

~$ echo $FSLDIR

如果发现输出一个空行,什么都没有,那么说明你需要按照本节内容手动配置环境变量了。

  • 在任意位置打开终端模拟器,输入:
sudo vim /etc/bash.bashrc

在终端模拟器内可打开一个系统配置文件。

【错误1】打开的文件为空白——这行命令仅针对使用bash的Ubuntu 18.04 LTS,你的系统环境变量配置并不是使用/etc/bash.bashrc文件,请你搜索自己版本系统的环境变量配置方法或在本文末留言。大部分其他系统的配置文件为/etc/profile
【错误2】提示“vim: command not found”——你的系统尚未安装vim。请尝试输入sudo apt-get install vim进行安装,安装过程需要联网,在命令行询问你(Y/n)时,请输入Y并敲击回车键确认。安装完成后再次尝试上面的步骤。

  • 使用“↓方向键”,将光标移至文档最底端。
  • 使用“i”键,切换至编辑模式,可见终端左下角有“- - 插入 - -”或“- - INSERT - -”提示语。
  • 在末尾插入如下语句
# FSL Setup
FSLDIR=/public/software/fsl
PATH=${FSLDIR}/bin:${PATH}
export FSLDIR PATH
. ${FSLDIR}/etc/fslconf/fsl.sh
  • 输入完以后,请使用“Esc”键退出编辑模式,应能看到终端模拟器左下角的“- - 插入 - -”或“- - INSERT - -”提示语消失。
  • 再输入:wq!,表示write并quit本文档,输入完毕后回车确认。输入时该命令应在终端模拟器左下角可见。
  • 回到bash界面,再输入下述指令
zhaokuangshi@zhaokuangshi-WorkStation:~$ source /etc/bash.bashrc

没有使用bash.bashrc的系统输入

zhaokuangshi@zhaokuangshi-WorkStation:~$ source /etc/profile

此时就已经成功引用了最新的环境变量。

  • 尝试输入
zhaokuangshi@zhaokuangshi-WorkStation:~$ echo $FSLDIR

如果正确显示了你的安装路径,则随后再在终端中输入:

zhaokuangshi@zhaokuangshi-WorkStation:~$ flirt -version

如果显示

FLIRT version 6.0

则表明安装成功。否则请见【错误1】

Flirt版本显示正确的话,说明fsl安装已经成功,尝试打开fsl:

zhaokuangshi@zhaokuangshi-WorkStation:~$ sudo fsl

如果能够见到如图所示界面
fsl的GUI界面

恭喜你!至此fsl已经安装成功了。如果不成功,欢迎留言询问。

【错误1】
输入flirt -version显示
error while loading shared libraries: libopenblas.so.0: cannot open shared object file: No such file or directory.
这是由于缺失openblas运算库,使用

~$ sudo apt-get install libopenblas-base

安装库,安装完成后,再输入flirt -version,显示

FLIRT version 6.0

4. 安装PANDA

前面的所有安装步骤均是为安装PANDA做准备,下图显示PANDA在linux系统上的依赖关系:

请至PANDA的下载页下载最新的PANDA 1.3.1 for linux版本,解压并添加至MATLAB的搜索路径。

在MATLAB的命令行窗口内输入:

>> PANDA

打开PANDA。

至此,整个PANDA的安装过程全部完成了。

【错误1】
打开后跳出弹窗,提示:

Please install FSL first !
http://fsl.fmrib.ox.ac.uk/fsldownloads/fsldownloadmain.html
Download Centos version for Linux(Ubuntu, Centos, RedHat, Fedora, ...) and MAC version for MAC!

而你又确信你先前安装fsl确实成功了,能够正常打开fsl。那么请在MATLAB中打开你定义PANDA路径下的PANDA.m文件,修改第292行,将原本的

FSLDIR = getenv('FSLDIR');

修改为

FSLDIR = '/usr/local/fsl';

随后保存该脚本,再打开PANDA则不会再出错。
注意,这里修改路径是将其修改为你的fsl安装路径,上面给出的是默认安装路径。如果你安装的时候有改动,那么请根据你的安装路径来修改

参考与引用

[1] How to run fullpipeline in command, not GUI
[2] Issue with libstdc++.so.6
[3] 解决ubuntu16.04 matlab2015b 使用sudo matlab命令,提示command not found 问题


在Ubuntu 18.04 LTS安装PANDA 1.3.1:一个用于弥散张量磁共振成像的管道模型工具 由 赵匡是 采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://www.zhaokuangshi.cn/ 处获得。

可从关于知识产权了解更多本文的著作权信息。

0 0 vote
Article Rating
Subscribe
提醒
guest
1 评论
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Wu

博主你好,按照您的步骤我成功用Ubuntu18.04版本,安装了matlab R2016b和FSL centos6,在运行PANDA处理.bral、. bvec、. nii. gz这三个文件的时候,总是报错,failed job 为extractB0。matlab打开错误报告提示具体问题是/bin/bash:fslroi:command not found还有/bin/bash:fslmaths:command not found。请问这是什么原因呢?怎么样才可以解决?