在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
命令得到的结果进行统计学分析是使用到了两个命令asegstats2table
,aparcstats2table
,这两个命令直接执行会报错:/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
- Author: Yang
- Link: https://yangt.me/posts/install-freesurfer-on-ubuntu1804lts/
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.