在Ubuntu18.04LTS中安装FreeSurfer

本文档主要参考了FreeSurfer官方教程以及CSDN上的一篇文章Ubuntu 18.04安装FreeSurfer软件。由于系统与软件的更新迭代,必须进行一些额外的操作才能够成功安装。

修改1:2020-02-19

​ 根据相关教程增加了freesurfer 6.0的补丁包安装步骤

修改2:2020-03-02

​ 在使用过程中发现freesurfer依赖python环境,需要安装,补充在额外操作-Python版本中

修改3:2020-03-14

​ 修改了一些输入错误

修改4:2020-08-03

​ 新增清华镜像以及dcm2niix等库

修改5:2020-11-02

新增Matlab Runtime配置

下载FreeSurfer

官网给出了下载链接以及系统需求

Ubuntu里使用命令下载:

wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0/freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gz

将下载数据移动到/usr/local文件夹下并解压:

sudo mv freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gz /usr/local
cd /usr/local
sudo tar xzvf freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gz

获取license

获取license的链接为:FreeSurfer Download and Registration,注册后邮箱会收到license.txt文件,复制其中内容。

创建license文本然后粘贴license内容:

sudo touch freesurfer/license.txt
sudo su
cd /usr/local/freesurfer
gedit license.txt

配置环境变量

输入以下指令:

sudo gedit  /etc/profile

在打开文件的最后输入以下语句:

export FREESURFER_HOME=/usr/local/freesurfer

输入以下指令:

sudo gedit  /etc/bash.bashrc

在打文件最后输入以下语句:

export FREESURFER_HOME=/usr/local/freesurfer
source $FREESURFER_HOME/SetUpFreeSurfer.sh

期间如果出现如下提示忽略即可:

Set document metadata failed: 不支持设置属性 metadata::gedit-encoding

经过上述环境变量设置之后,每次启动终端都会有FreeSurfer的相关信息输出:

-------- freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0-2beb96c --------
Setting up environment for FreeSurfer/FS-FAST (and FSL)
FREESURFER_HOME   /usr/local/freesurfer
FSFAST_HOME       /usr/local/freesurfer/fsfast
FSF_OUTPUT_FORMAT nii.gz
SUBJECTS_DIR      /usr/local/freesurfer/subjects
MNI_DIR           /usr/local/freesurfer/mni

额外操作

缺少的库

由于我操作的Ubuntu系统之前从未使用过,在启动FreeSurfer时会出现报错,提示缺少库文件,比如:

# 缺少tcsh
bash: /usr/local/freesurfer/bin/recon-all: /bin/tcsh: 解释器错误: 没有那个文件或目录
# 缺少libpng12
freeview.bin: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
# 缺少libjpg
freeview.bin: error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory

其中tcsh与libjpd可以直接安装,在Ubuntu 16.10+的系统中,libpng12已经被弃用,无法直接安装,需要手动下载编译,在进行操作前建议将 Ubuntu 镜像替换为 清华镜像

# 替换镜像之后
sudo apt update
sudo apt upgrade
sudo apt install tcsh libjpeg62 dcm2niix htop
wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb
sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb

Python版本

在对recon-all命令得到的结果进行统计学分析是使用到了两个命令asegstats2tableaparcstats2table,这两个命令直接执行会报错:/usr/bin/env: "python": 没有那个文件或目录,这是因为在我使用的Ubuntu18.04LTS中,默认的python为python3而且需要使用命令python3调出,解决这个问题可以将python命令绑定为python3,但是网络上查到的和freesurfer有关的内容均使用了python2,因此直接安装python2即可解决问题。

sudo apt-get install python

Tips:在安装是如果提示:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

参考一篇博客的内容,两种解决方法:

# 杀掉apt-get进程:
ps aux | grep apt-get
sudo kill PID
# 强制解锁:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

# 经检验第二种方法有用,在使用第二种方法后如果仍然出现报错,但是查看进程发现并没有apt-get进程信息,此时通过重启系统,再重新安装软件,发现可以成功安装。

以上是我在安装过程中遇到的库缺失情况,实际操作中需要根据报错查看缺失库的详情

用例测试

测试FreeSurfer能否正常工作可以直接使用官方的例程:

FreeSurfer comes with two sample data files (sample-001.mgz and sample-002.mgz) as well as a fully recon-ed subject named bert. These data files can be used to test that your FreeSurfer installation was done properly. To test your installation, please try the following examples:

Example 1: Convert the sample-001.mgz to nifti format.

$> cp $FREESURFER_HOME/subjects/sample-001.mgz .
$> mri_convert sample-001.mgz sample-001.nii.gz
...
reading from sample-001.mgz...
TR=7.25, TE=3.22, TI=600.00, flip angle=7.00
i_ras = (-0, -1, -0)
j_ras = (-0, 0, -1)
k_ras = (-1, 0, 0)
writing to sample-001.nii.gz...

Example 2: Perform a full recon-all on the nifti file.

$> export SUBJECTS_DIR=<path to subject directory>
$> recon-all -i sample-001.nii.gz -s bert -all (creates a folder called bert in SUBJECTS_DIR)

Example 3: Perform a full recon-all on a pre-existing subject folder

$> export SUBJECTS_DIR=<path to subject directory>
$> recon-all -s bert -all

Example 4: View the output volumes, surfaces and subcortical segmentation of the fully recon-ed subject bert.

$> cd $SUBJECTS_DIR
$> freeview -v \
    bert/mri/T1.mgz \
    bert/mri/wm.mgz \
    bert/mri/brainmask.mgz \
    bert/mri/aseg.mgz:colormap=lut:opacity=0.2 \
    -f \
    bert/surf/lh.white:edgecolor=blue \
    bert/surf/lh.pial:edgecolor=red \
    bert/surf/rh.white:edgecolor=blue \
    bert/surf/rh.pial:edgecolor=red
# 正常的话应该出现加载完成示例图像的GUI

补丁包

由于6.0.0版本部分指令运行时存在bug,因此先打好补丁避免遇到类似问题。下载freesurfer 6.0.0 patch:6.0.0 patch地址

如果需要其他版本补丁的下载,也可以在这个网站去查询对应版本是否发布patch包:freesurfer

根据readme文件的说明,分别备份freesurfer下这些指令的文件,然后将补丁文件复制过去覆盖即可,Terminal下输入:

wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/make_average_subject
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/make_average_surface
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/mri_aparc2aseg.linux
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/mri_glmfit-sim
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/mri_segstats.linux
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/mris_anatomical_stats.linux
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/recon-all
wget ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0-patch/vol2subfield

sudo cp $FREESURFER_HOME/bin/make_average_subject $FREESURFER_HOME/bin/make_average_subject.backup
sudo cp make_average_subject $FREESURFER_HOME/bin/make_average_subject

sudo cp $FREESURFER_HOME/bin/make_average_surface $FREESURFER_HOME/bin/make_average_surface.backup
sudo cp make_average_surface $FREESURFER_HOME/bin/make_average_surface

sudo cp $FREESURFER_HOME/bin/mri_aparc2aseg $FREESURFER_HOME/bin/mri_aparc2aseg.backup
sudo cp mri_aparc2aseg.linux $FREESURFER_HOME/bin/mri_aparc2aseg

sudo cp $FREESURFER_HOME/bin/mri_glmfit-sim $FREESURFER_HOME/bin/mri_glmfit-sim.backup
sudo cp mri_glmfit-sim $FREESURFER_HOME/bin/mri_glmfit-sim

sudo cp $FREESURFER_HOME/bin/mri_segstats $FREESURFER_HOME/bin/mri_segstats.backup
sudo cp mri_segstats.linux $FREESURFER_HOME/bin/mri_segstats

sudo cp $FREESURFER_HOME/bin/mris_anatomical_stats $FREESURFER_HOME/bin/mris_anatomical_stats.backup
sudo cp mris_anatomical_stats.linux $FREESURFER_HOME/bin/mris_anatomical_stats

sudo cp $FREESURFER_HOME/bin/recon-all $FREESURFER_HOME/bin/recon-all.backup
sudo cp recon-all $FREESURFER_HOME/bin/recon-all

# 原freesurfer中好像没有vol2subfield,无需备份直接拷贝即可
sudo cp vol2subfield $FREESURFER_HOME/bin/vol2subfield

Matlab Runtime

Freesurfer关于Matlab Runtime的文档 使用 fs_install_mcr 自动安装需要的Matlab,步骤如下

# 首次需要安装fs_install_mcr 
cd $FREESURFER_HOME/bin
sudo curl https://raw.githubusercontent.com/freesurfer/freesurfer/dev/scripts/fs_install_mcr -o fs_install_mcr && chmod +x fs_install_mcr
# FS 6.0版本下载 Matlab r2012b
fs_install_mcr R2012b

但是我在执行过程中遇到上面的命令无法下载Matlab安装包就报错了,另一个方案就是手动去 matlab官网 下载 r2012b linux版,下面可以执行命令进行下载。

# 新建一个文件夹进行操作
mkdir matlab
cd matlab
wget https://ssd.mathworks.com/supportfiles/MCR_Runtime/R2012b/MCR_R2012b_glnxa64_installer.zip
unzip MCR_R2012b_glnxa64_installer.zip
sudo ./install -mode silent -agreeToLicense yes

然后需要将matlab的安装目录通过软链接映射到Freesurfer的目录下,matlab安装目录默认为 /usr/local/MATLAB/MATLAB_Compiler_Runtime

cd $FREESURFER_HOME
ln -s /usr/local/MATLAB/MATLAB_Compiler_Runtime/v80 MCRv80