ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

核医学仿真GATE安装指南:Geant4与ROOT版本匹配及环境配置

核医学仿真GATE安装指南:Geant4与ROOT版本匹配及环境配置

简介:这份资源是核医学仿真软件GATE的安装流程文档,面向从事核医学仿真、蒙特卡罗模拟研究的科研人员与研究生,帮助其在Linux环境下完成GATE及其依赖组件的部署。资源包内含1个PDF文件,大小约1.09MB,以图文形式系统梳理了从环境检查到组件安装的完整脉络。内容覆盖gcc与cmake的版本核查与安装、针对不同Ubuntu版本(12.04至18.04)的必备包安装命令、ROOT二进制包的解压与source配置,以及Geant4版本匹配与编译要点,并特别提示了GATE_USE_OPTICAL功能所需的libxml2-dev依赖。文档还针对依赖冲突、包版本不匹配等常见问题给出了排查思路,并建议为Gate及相关软件单独建立目录以便管理。目前已有1049人学习,适合需要快速搭建GATE仿真环境、减少编译踩坑的读者参考。

1. 核医学仿真软件GATE安装流程:从零把Geant4和ROOT串起来

如果你做核医学成像仿真,比如PET、SPECT的蒙特卡洛建模,大概率绕不开GATE这套开源框架。它底层跑的是Geant4的物理过程,上层用ROOT做数据输出和分析,整套工具链在Linux上跑得最顺。但很多人第一次装GATE就卡住了——不是卡在GATE本身,而是卡在Geant4和ROOT的版本匹配、环境变量串联、ccmake配置这几个环节。这篇笔记按我实际装Gate 8.0的流程走一遍,从检查gcc/cmake开始,到跑通benchPET验证结束。适合刚接触核医学仿真、需要在Ubuntu上从源码编译GATE的从业者,也适合之前装失败过、想排查版本对应关系的熟手。

2. 装GATE之前先把地基打牢:gcc、cmake与系统依赖包

GATE的安装本质上是一条编译链:系统基础工具 → Geant4 → ROOT → GATE。任何一环版本不对或者环境变量没串上,后面都会翻车。所以这一章先把最底层的gcc、cmake和系统依赖包处理干净,别急着去下载GATE的tar包。

2.1 检查gcc和cmake版本是否达标

先看当前系统里有没有编译工具,以及版本够不够。打开终端直接敲:

gcc --version cmake --version

GATE 8.0对gcc的要求是版本不低于4.8,cmake不低于3.x。我机器上gcc是7.3.0,虽然不在官方推荐的[4.8-6.2]区间内,但只要不低于最低版本就能用。cmake同理,满足最低要求即可。如果提示“command not found”或者版本太低,就往下走安装步骤。

2.2 安装build-essential和cmake

Ubuntu下最省事的做法是用apt一把装齐:

sudo apt-get update sudo apt-get install build-essential sudo apt-get install cmake

build-essential这个包会带上gcc、g++、make、libc-dev等一整套编译工具,不用单独一个个装。cmake单独装是因为它不在build-essential的依赖里。装完再跑一次gcc --version和cmake --version确认。

2.3 按Ubuntu版本装系统依赖包

这一步是最容易出玄学问题的地方。GATE官方wiki按Ubuntu版本给了不同的包列表,核心差异在Qt4和Qt5的库名上。我整理成表格方便对照:

系统版本对应GATE/Geant4版本关键依赖包
Ubuntu 18.04.2 LTSGATE v8.2 / Geant4 10.5 p01cmake-curses-gui、libqt5-default、libxmu-dev
Ubuntu 16.04.2 LTSGATE v8.0 / Geant4 10.3 p01cmake-curses-gui、libqt4-dev、libxmu-dev
Ubuntu 14.04.3 LTSGATE v7.1 / Geant4 10.1 p02libqt4-opengl、libqt4-core、libX11-dev

以Ubuntu 16.04装GATE 8.0为例,完整命令是:

sudo apt-get install cmake cmake-curses-gui build-essential \ libqt4-opengl-dev qt4-qmake libqt4-dev \ libx11-dev libxmu-dev libxpm-dev libxft-dev

如果编译时要启用GATE_USE_OPTICAL光学仿真功能,还得补一个:

sudo apt-get install libxml2-dev

注意:如果apt报依赖冲突或版本不对,优先按提示把缺失的依赖库补上;实在解决不了就换Ubuntu 16.04,这个版本在GATE社区里验证得最充分。

2.4 建立独立的安装目录树

在动手编译之前,建议先规划好目录结构。我一般会在home下建一个sim_workspace,里面分root、geant4、gate三个子目录,各自再分source、build、install。这样做的好处是后面写环境变量脚本时路径清晰,不会把源码目录和编译目录搞混。源码解压到source,ccmake在build里跑,make install指向install,三个目录互不污染。

3. ROOT和Geant4的编译安装:版本匹配是生死线

GATE本身不直接依赖ROOT和Geant4的源码,它依赖的是这两个库编译出来的二进制和头文件。所以这一章的核心就两件事:ROOT用二进制包快速搞定,Geant4用源码编译并确保版本和GATE对得上。

3.1 ROOT优先用官方二进制包

ROOT没必要从源码编译,官方提供了各平台的预编译二进制包,下载解压就能用。去ROOT官网下载对应Ubuntu版本和gcc版本的tar.gz,比如:

tar -xzf root_v6.xx.xx.Linux-ubuntu16-x86_64-gcc5.4.tar.gz mv root root_v6.xx source /home/user/sim_workspace/root/root_v6.xx/bin/thisroot.sh

thisroot.sh这个脚本会把ROOT的bin、lib、include路径写进当前shell的环境变量。验证方式是直接输入root,如果能进入ROOT的C++交互界面就说明成功了。

注意:source thisroot.sh只在当前终端会话有效。新开一个终端就得重新source,这也是后面要写gate_env.sh统一管理的原因。

3.2 Geant4版本必须和GATE版本严格对应

这是整个安装流程里最关键的一条:GATE 8.0对应Geant4 10.3,GATE 8.2对应Geant4 10.5 p01。版本不对,ccmake配置阶段就会报错,或者编译到一半链接失败。去Geant4官网下载对应版本的源码包:

tar -xzf geant4.10.03.p03.tar.gz mkdir geant4.10.03-build mkdir geant4.10.03-install cd geant4.10.03-build ccmake ../geant4.10.03.p03

3.3 ccmake配置Geant4的关键参数

进入ccmake界面后,按c开始配置,按e返回。需要重点关注的几个参数:

参数名设置值说明
CMAKE_INSTALL_PREFIX/home/user/sim_workspace/geant4/geant4.10.03-install必须用绝对路径
GEANT4_INSTALL_DATAON自动下载物理数据文件,必选
GEANT4_USE_SYSTEM_CLHEPOFFGATE 7.0之后用Geant4集成的CLHEP
GEANT4_USE_OPENGL_X11ON可视化需要
GEANT4_USE_QTON图形界面需要

配置完再按一次c重新配置,然后按g生成Makefile并退出。接着编译安装:

make -j4 make install source /home/user/sim_workspace/geant4/geant4.10.03-install/bin/geant4.sh

-j4里的4是并行编译的核数,按自己CPU核心数填。编译过程大概二三十分钟,取决于机器性能。

4. 编译GATE 8.0:ccmake配置与常见报错处理

前面ROOT和Geant4都装好并且source过环境变量之后,才能开始编译GATE。这一章把GATE的编译流程和几个高频报错点讲清楚。

4.1 下载解压与目录准备

从GATE官网下载Gate-8.0.tar.gz,解压后建build和install目录:

tar -xzf Gate-8.0.tar.gz mkdir gate_v8.0-build mkdir gate_v8.0-install

在进入build目录之前,务必在当前终端重新source一次ROOT和Geant4的环境变量:

source /home/user/sim_workspace/root/root_v6.xx/bin/thisroot.sh source /home/user/sim_workspace/geant4/geant4.10.03-install/bin/geant4.sh

如果这一步忘了source,ccmake配置时找不到ROOT或Geant4的路径,后面会连环报错。

4.2 ccmake配置GATE的核心参数

cd gate_v8.0-build ccmake ../Gate-8.0

按c配置后,重点检查这几个参数:

参数名设置值说明
CMAKE_INSTALL_PREFIX/home/user/sim_workspace/gate/gate_v8.0-install安装路径
Geant4_DIRGeant4安装目录下的lib/Geant4-10.3.3路径不匹配需手动改
ROOTCINT_EXECUTABLEROOT安装目录下的bin/rootcint路径不匹配需手动改
GATE_USE_ECAT7OFF可选包,普通用户不需要
GATE_USE_ITKOFF可选包,普通用户不需要
GATE_USE_LMFOFF可选包,普通用户不需要

如果Geant4_DIR和ROOTCINT_EXECUTABLE的路径和你实际安装的不一致,手动改成正确路径。改完按c再配置一次,按g生成Makefile。

4.3 编译安装与验证

make -j4 make install

编译时间比Geant4短一些,大概十几分钟。装完之后GATE的可执行文件在gate_v8.0-install/bin/下面。

4.4 环境变量脚本gate_env.sh的写法

在gate_v8.0-install/bin/下新建gate_env.sh:

#!/bin/sh source /home/user/sim_workspace/root/root_v6.xx/bin/thisroot.sh source /home/user/sim_workspace/geant4/geant4.10.03-install/bin/geant4.sh export PATH=$PATH:/home/user/sim_workspace/gate/gate_v8.0-install/bin

然后source一下:

source /home/user/sim_workspace/gate/gate_v8.0-install/bin/gate_env.sh

输入Gate如果能进入交互界面就说明环境变量串通了。为了不用每次开终端都手动source,把最后这行加到~/.bashrc末尾:

echo "source /home/user/sim_workspace/gate/gate_v8.0-install/bin/gate_env.sh" >> ~/.bashrc

5. 避坑指南:GATE安装中最容易翻车的五个地方

这一章记录我在装GATE过程中实际踩过的坑,每条按现象、原因、解决来写。如果你正在装或者装失败了,对照排查。

5.1 ccmake报错找不到Geant4或ROOT

现象:ccmake配置GATE时提示Could NOT find Geant4或ROOTCINT_EXECUTABLE-NOTFOUND。

原因:当前终端没有source Geant4和ROOT的环境变量,或者source的路径写错了。

解决:在跑ccmake之前,先确认which geant4-config和which root能输出正确路径。如果输出为空,重新source对应的sh脚本。source完再进build目录跑ccmake。

5.2 Geant4编译时DATA下载失败

现象:make过程中卡在下载物理数据文件,或者报网络超时。

原因:Geant4的DATA文件体积大,网络不稳定时容易断。

解决:在ccmake里把GEANT4_INSTALL_DATA设为ON后,可以手动去Geant4官网下载对应的DATA包,解压到install目录下的share/Geant4-10.3.3/data/,再重新make install。

5.3 GATE编译时报CLHEP链接错误

现象:链接阶段报undefined reference to CLHEP::...。

原因:ccmake里GEANT4_USE_SYSTEM_CLHEP被设成了ON,但系统里没有独立安装CLHEP。

解决:回到Geant4的build目录,重新ccmake,把GEANT4_USE_SYSTEM_CLHEP改成OFF,重新make install。GATE 7.0之后用Geant4集成的CLHEP就够了。

5.4 新开终端后Gate命令找不到

现象:当前终端能跑Gate,新开一个终端就提示Gate: command not found。

原因:gate_env.sh只在当前shell里source过,没有写进~/.bashrc。

解决:把source /path/to/gate_env.sh加到~/.bashrc末尾,然后source ~/.bashrc。之后每次开终端会自动加载。

5.5 benchmark运行报错或卡死

现象:跑Gate benchPET.mac时程序卡住不动,或者报ROOT文件写入错误。

原因:可能是之前残留的benchmarkPET.root文件权限不对,或者ROOT环境变量没加载。

解决:先删掉旧的root文件rm benchmarkPET.root,确认root命令能正常启动,再重新跑Gate benchPET.mac。跑大约1分钟后按Ctrl+z终止,然后用ROOT打开生成的root文件验证。

6. 验证安装与benchPET跑通:从mac脚本到root分析

装完不验证等于没装。GATE源码包里自带benchmarks目录,其中benchPET是最适合做安装验证的算例。这一章把验证流程走一遍,顺便说几个我常用的检查习惯。

6.1 跑benchPET验证基本组件

先开一个新终端,确认Gate命令可用,然后进入benchmarks目录:

cd /home/user/sim_workspace/gate/Gate-8.0/benchmarks/benchPET ls

如果目录下有benchmarkPET.root,先删掉:

rm benchmarkPET.root

然后运行:

Gate benchPET.mac

程序会开始跑蒙特卡洛模拟,大约1分钟后按Ctrl+z终止。此时目录下应该生成了benchmarkPET.root文件。

6.2 用ROOT查看仿真输出

root

进入ROOT交互界面后:

.x benchmarkPET.C

这个宏会读取root文件并画出PET探测器的能量谱和符合事件分布。如果能看到直方图正常显示,说明Geant4的物理过程、ROOT的I/O、GATE的探测器建模这条链路全部打通了。

6.3 我每次装完必做的三个检查

第一个检查是Gate --version,确认版本号输出正确。第二个检查是root -b -q跑一个空宏,确认ROOT的批处理模式没问题。第三个检查是看gate_v8.0-install/bin/下有没有Gate可执行文件,以及gate_env.sh里的路径是否都指向实际存在的目录。这三个检查花不了一分钟,但能避免后面跑正式仿真时才发现环境有问题。

6.4 关于可选包的取舍

ECAT7、ITK、LMF这些可选包,普通玩家做基础PET/SPECT仿真基本用不到。我的建议是第一次装GATE全部保持OFF,先把主流程跑通。等确实需要读ECAT7格式的医学图像数据,或者要做LMF列表模式仿真时,再回头重新编译GATE并打开对应选项。这样能把第一次安装的变量降到最少,出了问题也容易定位。

从那以后我每次装GATE,都会先把gcc、cmake、Geant4、ROOT四个组件的版本号写在纸上,ccmake配置时逐个核对路径,最后跑一遍benchPET确认整条链路通畅。这套流程走下来,基本不会再出现装到一半发现版本不对要推倒重来的情况。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进