Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

  • 关于Topas
    • 学习前提
  • 安装Topas
    • 获取topas.tar.gz
      • 获取方法一
      • 获取方法二
    • 配置unix环境
    • 安装Topas
    • 安装Geant4
    • 设置Geant4环境
  • 使用Topas
    • 一个简单的 HelloWorld 程序 OneBox.txt
    • Topas中txt参数文件的编写规则
      • (1)**Parameter_Type**
      • (2)**Parameter_Name**
      • (3)Physical Models
      • (4) 引用其他参数文件
      • (5)Topas中的数学表达式
      • (6)Topas参数文件构建的基本步骤
      • (7)Topas GUI
  • Updating。。。

  本文内容参考Joseph Perl 的线上会议Introduction to TOPAS,视频详情可见于Topas会议录屏,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

关于Topas

总的来说,topas是一个用于调用Geant4的小程序,如果你也被Geant4恶心到了,那不如试试使用topas解决你想研究的高能物理问题
  TOPAS 包装并扩展了 Geant4 模拟工具包,使医学物理学家更容易使用各种形式的放射治疗的高级蒙特卡罗模拟。 TOPAS 可以对 X 射线和粒子治疗治疗头进行建模,基于 CT 图像对患者几何形状进行建模,对剂量、能量等进行评分,保存和回放相空间,提供高级图形,并且是全四维 (4D)处理治疗期间光束传输和患者几何形状的变化。 TOPAS 用户配置预先构建的组件(例如喷嘴、患者几何形状、剂量测定和成像组件)来模拟各种放射疗法,而无需了解底层 Geant4 模拟工具包或任何编程语言。模拟的所有方面,包括所有 4D 行为,都由独特的 TOPAS 参数控制系统控制。

学习前提

使用Topas不需要掌握C++或其他编程语言,但是需要会Unix( Linux / MacOS )的基本知识,以及以下技能:

  1. 如何打开terminal窗口;
  2. 如何使用纯文本编辑器(比如emacs、vi、pico、TextEdit、Notepad++);
    如果用了高级文档编辑器,里面所隐藏的字符会导致编译错误
    ps:但我觉得就用电脑自带的txt文本编辑器就可以了
  3. 如何使用cd进入某个路径;
  4. 如何设置环境变量;
  5. 如何调用一个可执行程序:如 /Application/topas/bin/topas

放射物理相关知识:
  明白剂量的相关基本概念:dosedose to waterdose to materialfluence

安装Topas

  Topas的具体安装步骤在其官网的Installation guide(外网)上就有详细步骤,可以兼容Linux(Centos、debian、Ubuntu),以及MacOS等多个Unix系统,但是不能在Windows上运行。
  具体安装步骤可参照官网上的流程,其中Ubuntu用户也可以参考本文的安装过程。

获取topas.tar.gz

获取方法一

  推荐使用该方法进行安装,可以获取到完整的Topas资源(包括正版使用license、所有历史版本的Topas、以及可以加入Topas用户论坛),但是缺点是需要先注册Topas账号,然后听完一个两小时的线上会议后自动开启使用权限,申请周期以及耗时比较久。急着马上要用Topas可以直接看获取方法二
  首先需要访问Topas官网(外网),或者Google搜索 Topas mc 第一个就是,打开官网后点击Registration for license

  如实填写完成该表单后,等待Topas给回复邮件(他说大概等24h才会有邮件回复,可是我等了3天才收到回复。。。)

  不出意外的话,一段时间之后会收到 Joseph Perl 回复的邮件,可能让你先等待申请 list 满12个人之后才会开这个会议,比如这样(这种情况的话就只能先等等了):

  或者直接收到Joseph Perl的参会邀请,比如这样:

  收到会议邀请后,听完2 hours的介绍会议,Topas安装包的获取权限会自动打开,这个会议其实讲的还蛮有用的,虽然是全英语,但还是比较好理解的,听完一遍之后就能直接上手Topas。

获取方法二

  百度网盘(提取码:tpsf)

配置unix环境

  本文采用安装在Windows10上的Ubuntu20.04虚拟机 VMWare 作为操作系统环境,也可以使用 硬件安装的Ubuntu系统 或 Topas官网提供的"Additional Installation Notes for Windows Subsystem for Linux" 方法

  在终端使用apt依次安装libexpat1-dev、libgl1-mesa-dev、libglu1-mesa-dev、libxt-dev、xorg-dev、build-essential、libharfbuzz-dev这几个包:

安装Topas

  接着cd进入上一步获取到的两个topas_3_8_1.tar.gz的安装包的路径,使用cat指令合成一个压缩包:

cat topas_3_8_1_debian9.tar.gz.part_* > topas_3_8_1_debian9.tar.gz


  使用tar指令解压该压缩包,得到topas:

tar -zxvf topas_3_8_1_debian9.tar.gz

  将topas文件夹移动到主目录,就得到了~/topas:

安装Geant4

  在主目录下新建一个文件夹G4Data

在~/G4Data目录下执行wget指令,获得所有Geant4文件包

wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.4.6.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.7.13.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.5.7.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.5.6.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.3.1.1.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.2.0.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.3.1.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.1.0.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4ENSDFSTATE.2.3.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4RealSurface.2.2.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.1.3.2.tar.gz

  或者,通过百度网盘下载以上Geant4资源。再将下载到的所有.tar.gz文件导入~/G4Data文件夹中。
下载完成后,使用ubuntu指令解包:

find . -name "*.tar.gz" -exec tar -zxvf {} \;

最后得到的所有Geant4文件如下所示:

设置Geant4环境

在任意位置Ctrl+Alt+T打开terminal,输入指令进入编辑模式:

vim ~/.bashrc


打开.bashrc文件如下图所示:

i进入--Insert--模式,输入

#topas
export TOPAS_G4_DATA_DIR=~/G4Data/

然后按Esc退出编辑,输入:wq回车 保存并退出,并输入

source ~/.bashrc

激活路径,使得Geant4的路径生效,就大功告成啦!

接下来,跑一个案例试试吧~
进入目录~/topas/examples/SpecialComponents,在该目录下打开Terminal,输入指令,跑一个多叶准直器MLC的案例看看效果:

../../bin/topas MultiLeafCollimator_sequence.txt

敲回车后出现以下提示,说明topas和Geant4都配置成功:

跑出来的OpenGL效果如下所示:

或者,也可以在~/topas目录下使用指令,一次性测试所有标准案例的运行效果:

source rundemos.csh

使用Topas

Topas的最完整的使用手册参见[Topas User Guide](https://topas.readthedocs.io/en/latest/)

一个简单的 HelloWorld 程序 OneBox.txt

在Topas中,运行程序的方式是通过修改各种参数文件来告诉Topas你想进行什么样的仿真。在topas安装目录~/topas/examples/Basic中包含有几个OneBox开头的txt文件,用于介绍最基础的Topas参数控制文件的编写方式,以下为OneBox.txt的示例:

# Simplest TOPAS example.
# A box in a beam with EM physics.s:Ge/MyBox/Type     = "TsBox"
s:Ge/MyBox/Material = "Air"
s:Ge/MyBox/Parent   = "World"
d:Ge/MyBox/HLX      = 2.5 m
d:Ge/MyBox/HLY      = 2. m
d:Ge/MyBox/HLZ      = 1. m
d:Ge/MyBox/TransX   = 2. m
d:Ge/MyBox/TransY   = 0. m
d:Ge/MyBox/TransZ   = 0. m
d:Ge/MyBox/RotX     = 0. deg
d:Ge/MyBox/RotY     = 0. deg
d:Ge/MyBox/RotZ     = 0. degsv:Ph/Default/Modules = 1 "g4em-standard_opt0"s:Gr/ViewA/Type             = "OpenGL"
i:Gr/ViewA/WindowSizeX      = 1024
i:Gr/ViewA/WindowSizeY      = 768
b:Gr/ViewA/IncludeAxes      = "True"
d:Gr/ViewA/Theta            = 55 deg
d:Gr/ViewA/Phi              = 20 deg
s:Gr/ViewA/Projection       = "Perspective"
d:Gr/ViewA/PerspectiveAngle = 30 deg
u:Gr/ViewA/Zoom             = 2.b:Ts/PauseBeforeQuit = "True"

通过在终端调用topas执行仿真:

得到仿真结果:

Topas中txt参数文件的编写规则

  Topas指令文件中的语句,和Geant4中的C++宏命令相似,但是并不相同
  每一条指令独立并发控制,每条指令的顺序不影响执行结果,比如以下两种情况执行效果相同:

大小写不敏感,以下同一列都是相同的表达效果:

Topas的参数语句构造规则

Parameter_Type : Parameter_Name = Parameter_Value # Optional comment

(1)Parameter_Type

  写在每个参数语句前的最前端,用表示数据类型的字符缩写来控制,用于核实与Parameter_Value的数据类型是否一致。因为在Topas仿真中,一个小的错误就可能导致长达一天时间的仿真白费,因此Topas加入了这个控制参数来校验每条参数语句是否正确——如果在Parameter_Type字段写了一个代表"String"的"s:",而后面的Parameter_Value字段却写了一个数字,则Topas会在开始仿真前报错这个问题。
  以下为常见几种Parameter_Type的缩写含义:

  来看几个具体例子:

  有时候还会在 " : " 之前加入一个 " v "来把这个参数描述成一个Vector向量,比如:

  除此之外,也可以在 " : " 之前加入一个 " c ",代表这个参数作为变量,在后续的 TOPAS GUI 部分可以控制这个变量

(2)Parameter_Name

  Parameter_Name一般由三部分组成,即 部分一/部分二/部分三,其中部分一部分三一般有固定的控制参数,部分二可以由自己构造,主要是为了把控部分一部分三是在对同一个部分二进行描述。比如下面这个例子,其中的Parameter_Name包括:Ge/MyComp/Type、Ge/MyComp/Material、Ge/AnotherComp/Parent、Ge/AnotherComp/RMax等,其中的Ge作为部分一Type、Material、Parent、HLX、TransX等作为部分三都是固定的控制参数名词;而MyComp、AnotherComp都作为部分二自定义

以下为部分一的所有控制参数,及其相应的解释含义:

参数 解释
Ma for Materials
El for Elements
Is for Isotopes
Ge for Geometry Components
So for Particle Sources
Ph for Physics
Vr for Variance Reduction
Sc for Scoring
Gr for Graphics
Tf for Time Features
Ts for TOPAS overall control

  再以其中的Ge为例说明部分二部分三的定义方法——如果在部分一定义了一个Ge,也就是选择创建一个几何原件(Geometry Components),然后在部分二可以自己定义这个几何原件的名字,比如说就叫MyComp;接着,在部分三就要对MyComp的各种取值进行定义,最关键的一些定义就是:
  1.这个MyComp是个什么类型的原件——定义TypeWorld(Defualt值)、或TsBox、或TsCylinder等;(具体参见Topas User Guide)
  2.这个MyComp是个介质是什么——是空气Air、或是水G4_water等;
  3.这个MyComp的大小——由HLXHLYHLZ控制;(HL即Half Length)
  4.其他:旋转角度、半径、内径、外径、平移等参数详情参见Topas User Guide

(3)Physical Models

通过一条指令控制,包含所有模型情况:

sv:Ph/Default/Modules = 6 "g4em-standard_opt4" "g4h-phy_QGSP_BIC_HP" "g4decay" "g4ion-binarycascade" "g4h-elastic_HP" "g4stopping"

  但是用越多的模型,仿真需要的时间越久,一般情况下就用一个最简单的 “g4em-standard_opt0” 模型,先把大致情况给做出来,再以此为基础做更具体的模型仿真。也就是通过这条指令:

sv:Ph/Default/Modules = 1 "g4em-standard_opt0"

(4) 引用其他参数文件

  在最开始,介绍了一个简单的 HelloWorld 程序 OneBox.txt ,在这时如果我们想在这个OneBox的基础上再做一些改变、或者是一些新增,那么可以在一个新的OneBoxRotate.txt中直接调用:

includeFile = OneBox.txt

然后,如果想把这个Box旋转一定角度的话,可以在此基础重写RotX参数:

d:Ge/MyBox/RotX = 45. deg


除此之外,还可以新增一些参数,或者重载includeFile里面的参数

(5)Topas中的数学表达式

  Topas只支持最基础的数学运算 +-* ,并且每个运算符的前后必须有空格,没有 / 是为了避免除数为零导致的错误;同时需要保持两个运算的数具有相同的单位。总而言之,就是尽量不要在Topas参数文件里写运算符。

(6)Topas参数文件构建的基本步骤

(7)Topas GUI

Updating。。。

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具相关推荐

  1. 蒙特卡洛粒子滤波定位算法_蒙特卡罗定位算法(基于粒子滤波的定位算法) ——原理、理解与仿真...

    1 算法原理 1.1 机器人定位问题 关于机器人定位,有三大问题,它们分别是: (1)"全局定位":指初始位置未知,机器人靠自身运动确定自己在地图中的位姿. (2)"位姿 ...

  2. 非确定性算法_使用最坏情况提高基于MPC的避障算法对参数不确定性的鲁棒性

    编者按:避障问题是AGV行驶过程中的一个重点,尤其是在未知和非结构化的环境中,没有关于环境的先验知识以及准确的车辆模型参数,难以充分发挥车辆的性能.作者在以前工作中,提出了在未知和非结构化环境中基于非 ...

  3. 基于强化学习的五子棋算法设计-python代码完整实现

    目录 1  课程设计目的 2  设计任务与要求 3  设计原理 3.1  强化学习 3.2  蒙特卡洛树搜索 4  模型介绍 4.1  模拟 4.2  走子 4.3  神经网络 5  仿真过程与结果 ...

  4. 栅格法路径算法C语言,基于地图栅格与QPSO算法结合的机器人路径规划方法与流程...

    本发明属于机器人路径规划领域,提出一种基于地图栅格与QPSO结合的机器人路径规划方法. 背景技术: 移动机器人路径规划是寻找一条无碰撞的可行路径问题的方法.近些年,群智能优化算法逐渐成为移动机器人路径 ...

  5. 随机算法-蒙特卡罗算法

    在论文中多次看到ε-approximation概念,然后百度发现也很少说这个的.只有在其他论文里面有讲到.这里就是记录下目前所了解的比较浅显的理解. 可以比较论文基于k-means的(1+ε)近似算法 ...

  6. 马尔可夫链蒙特卡罗算法(MCMC方法)

    MCMC方法是什么 具体而言,假设我们要计算积分 μ = ∫ S h ( θ ) π ( θ ∣ x ) d θ \mu=\int_Sh(\theta)\pi(\theta|x)d\theta μ=∫ ...

  7. 基于微软开源深度学习算法,用 Python 实现图像和视频修复

    ‍‍ 作者 | 李秋键 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 图像修复是计算机视觉领域的一个重要任务,在数字艺术品修复.公安刑侦面部修复等种种实际场景中被广泛应用.图像 ...

  8. 欧盟「人脑计划」​最新进展:新算法模拟生物进化,为大脑如何工作提供新见解...

    来源:ScienceAI 编辑:凯霞 2013 年,欧盟「人脑计划」(Human Brain Project,HBP)正式启动,是欧洲最大的脑科学项目,也是欧盟资助的最大研究项目之一.是欧盟首批为期 ...

  9. matlab画梅花,基于Matlab图像素描生成算法究.doc

    毕 业 文 图像素描生成算法研究 姓 名 院(系) 信息学院 专业班级 学 号 指导教师 职 称 论文答辩日期 年月日 摘 要 分析比较图像处理提供参考.关键词: 目 录 1 前言1 1.1 课题研究 ...

最新文章

  1. ijkplayer-丢帧策略深入分析
  2. 从Python调用外部命令
  3. 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
  4. 8086汇编-实验5(微调)-用栈实现数据交换位置
  5. Android 动画(一)---布局动画
  6. 在创建表时,对于auto_now=True与 auto_now_add=True 的区别
  7. const与define之间的区别?
  8. 一步步创建第一个Docker App —— 4. 部署应用
  9. matlab制作数字滤波器(带通滤波器)
  10. 听完了61课的IT播吧,这是我整理的学习笔记。
  11. 河北计算机应用对口升学,2019年河北省中等职业学校对口升学考试:计算机文化基础+计算机应用基础模拟试卷...
  12. 硬件设计——PWM原理与设计
  13. .chm文件如何打开
  14. cad刷新快捷键_36个CAD快捷键命令,18个CAD制图技巧,学会轻松玩转CAD
  15. 各类抽奖活动开发总结及分析
  16. 小米android10升级版本,小米9 MIUI安卓10开发版已开始推送,建议大家不要去升级!...
  17. vue项目购物车组件、清空购物车
  18. 邮件营销活动如何被病毒式传播?
  19. 0503《软件工程》的简单小总结与展望
  20. 第二章 为Encog获取数据

热门文章

  1. 一加3t android 7.1,一加3T 7.1 ROM刷机包 7.1.2 Xposed框架主题号码归属地杜比全息来电闪光网...
  2. 一加5t升级 android p,第三方速度够快,一加1、一加5和一加5T火速升级AndroidP
  3. gitlab默认加密方式
  4. 基于微软案例数据挖掘之Microsoft 关联规则分析算法
  5. Less CSS 预处理器
  6. 编译OpenBLAS
  7. 从一道CTF题目学习Tanner图和LDPC
  8. 初探arcgis的python脚本的使用 (三)
  9. ppt怎么压缩,ppt压缩教程
  10. Java序列化与反序列化详解