原文通道http://wiki.opengatecollaboration.org/index.php/Users_Guide:Data_output

Gate中,你必须给定一个名字,不然默认数据输出是关闭的

所有的命令行必须写在initialization之后

/gate/output/...

一ASCII和二进制输出

GateToASCII/GateToBinary类允许ASCII/binary文件输出,你可以用自己的工具生成原始数据。另一方面,数据没有被压缩,所以会非常大,这个过程也非常耗时,.bin文件输出hits,singles(??),coincidience

/gate/output/ascii(binary)/enable
/gate/output/ascii/setFileName   test
下面的指令分别输出hits,singles(??),coincidience
# enable ascii(binary) output for hits
/gate/output/ascii(binary)/setOutFileHitsFlag   1# enable ascii(binary) output for Singles (end of digitizer chain)
/gate/output/ascii(binary)/setOutFileSinglesFlag   1# enable ascii(binary) output for coincidences
/gate/output/ascii(binary)/setOutFileCoincidencesFlag   1# enable ascii(binary) output for singles (after a digitizer module)
/gate/output/ascii(binary)/setOutFileSingles< name of the digitizer module >Flag   1

数字模型的名字有:Adder(加法器), Readout(读取器), Spblurring, Blurring, Thresholder, Upholder

不输出这些庞大的文件可以

/gate/output/ascii(binary)/setOutFileHitsFlag            0
/gate/output/ascii(binary)/setOutFileSinglesFlag         0
/gate/output/ascii(binary)/setOutFileCoincidencesFlag    0

Root输出

/gate/output/root/enable
/gate/output/root/setFileName FILE_NAME

上面的命令给产生.root文件,默认情况下,root文件会包含:含有一些变量的两个SPECT系统的树(hits或者Singles),或者PET系统的tress(coincidence,hits,singles)。

如果需要,并且考虑到文件大小,您可以选择不生成所有树。

/gate/output/root/setRootHitFlag            0
/gate/output/root/setRootSinglesFlag        0
/gate/output/root/setRootCoincidencesFlag   0
/gate/output/root/setRootNtupleFlag         0

在调试模式下,将数字化器链中某个特定模块的操作后的信息存储到树中是很有用的。以下标志用于打开或关闭这些中间树。

/gate/output/root/setOutFileSinglesAdderFlag         0
/gate/output/root/setOutFileSinglesReadoutFlag       0
/gate/output/root/setOutFileSinglesSpblurringFlag    0
/gate/output/root/setOutFileSinglesBlurringFlag      0
/gate/output/root/setOutFileSinglesThresholderFlag   0
/gate/output/root/setOutFileSinglesUpholderFlag      0

如果不想用整个root输出,用下面命令

/gate/output/root/disable

使用tbrowser浏览root对象

root图形接口,Tbrowser可以交互地检查和可视化仿真数据。

在终端输入下面命令,可以看到root文件内容

root FILE_NAME.root
root [1] TBrowser t

选择目标输出文件,树(hits,single,etc)会根据.mac文件设置的flag填充

Hits树显示了很多分支。选择一个分支。要么在每一个分支上面双击来看histogram/potted数据,或者使用下面的root命令。

Hits->Draw( “posX:posY:posZ”) 

这个命令画了hits的3D位置。

增加条件来声明你的histogram

Hits->Draw(“posX:posY:posZ”,”PDGEncoding==0”)

这个命令绘画了光学光子的hit的地址

Hits->Draw(“posX:posY:posZ”,”PDGEncoding==0 && time<=1 ”)

可以添加多种条件,例如:模拟的第一秒光学光子的3D位置。

  • PDGEncoding(particle data group):可以获得典型的粒子(比如:“0”光学光子,"22"伽马粒子)
  • trackLocalTime:一个粒子走完一个轨迹的时间

根据下面公式计算trackLocalTime

时间:敏感检测器中一个hits的绝对时间

stepLength:一个粒子的两个互动的距离(比如,伽马粒子进入一个敏感volume和被分散的距离)

trackLength:一个粒子中的总距离,通常包含多个步骤

momDirX,Y,Z:一个检测器中的一个检测/吸收粒子的动量方向,包含形成3D向量的三个部分

Hits->Draw(“momDirX: momDirY: momDirZ”) 

processname:粒子在灵敏探测器中终止其路径的过程(例如:传输(“T”)、光吸收(“O”)、康普顿散射(“C”)、光电(“P”)、罗利散射(“R”)。您可能有兴趣区分在检测器(“T”)检测到的粒子和被吸收的粒子(“O”)。经过康普顿散射(“C”)的粒子在分裂时被算作两次撞击。

怎样分析root输出

你可以直接从browser里面绘制变量,或者通过PET_Analyse.C的宏文件绘制。分析宏文件https://github.com/OpenGATE/GateContrib/tree/master/imaging/ROOT_Analyse

这样的话,打开root之后

root [0] .x PET_Analyse.C

你也可以用一个叫做MakeClass的root类,它产生一个框架类来对你的root文件循环遍历,在你的root文件目录下,运行root,敲下面的命令:

root [0] TChain chain(“Hits”);          <<<=== name of the tree of interest : Hits
root [1] chain.Add(“output1.root”);
root [1] chain.Add(“output2.root”);
root [2] chain.MakeClass(“MyAnalysis”); <<<==== name of your macro : MyAnalysis.C

MakeClass会产生连个文件,MyAnalysis.h和MyAnalysis.c你可以在root中运行下面的代码

Root >  .L MyAnalysis.C
Root >  MyAnalysis t
Root >  t.Loop();

~~(暂时省略,设计root源码部分)内容分别是

1.设计一个计数器

2.把一个root文件转换成text文件

root在线绘画器

root提供一个非常方便的在线绘画器,能够显示多个变量,即使你把root output disable之后也可以使用。在线绘画器可以通过下面的宏使用。

/gate/output/plotter/enable
/gate/output/plotter/showPlotter
/gate/output/plotter/setNColumns                2                             <=== sets the number of display windows to be used
/gate/output/plotter/setPlotHeight              250
/gate/output/plotter/setPlotWidth               300
/gate/output/plotter/addPlot hist               Ion_decay_time_s              <=== plots an histogram previously defined in GATE
/gate/output/plotter/addPlot hist               Positron_Kinetic_Energy_MeV   <=== plots a variable from one of the GATE trees
/gate/output/plotter/addPlot tree Singles       comptonPhantom
/gate/output/plotter/addPlot tree Coincidences  energy1
/gate/output/plotter/listPlots

执行上面的宏文件可以得到

投影集的interfile输出

(不知所云,纯百度翻译)

文件间格式特别适用于使用多头旋转伽马照相机的采集协议。文件间v3.3格式的总说明可在文件间网站上找到:

http://www.medphys.ucl.ac.uk/interfile/index.htm.
当在多个窗口(如能量窗口、时间窗口、多个磁头)中采集图像时,将按照定义相应键的顺序记录图像。因此,如果使用多个能量窗口,则必须首先给出第一个窗口的所有图像数据,然后给出第二个窗口的图像数据等。使用“for”语句在文件间语法中定义了此循环结构。使用文件间/投影输出时会创建两个文件:your_file.hdrand your_file.sin。头文件包含有关采集的所有信息,而您的_file.sin文件包含二进制信息。这种头的一个例子是:

要使用文件间输出,必须将以下行添加到宏中:

# PROJECTION
/gate/output/projection/enable
/gate/output/projection/setFileName      your_file
/gate/output/projection/projectionPlane  YZ
/gate/output/projection/pixelSizeY       1. mm
/gate/output/projection/pixelSizeX       1. mm
/gate/output/projection/pixelNumberY     16
/gate/output/projection/pixelNumberX     16

用imageJ读取interfile图像

".sin" and ".hdr"格式的文件会写到相关的目录下面。

打开ImageJ之后,点击thumb文件,选择import->raw,便会出现一个.sin文件的窗口

用户必须小心编写,已经有用户报道说图像会堆叠出现。

第二种方法是使用这个插件来读取Interfile Plugin Decoder.

用IDL读取interfile图像

在平面投影中,用Gate产生的投影也可以用IDL中‘read binary’函数来读取。下面的例子中,投影文件.sin要在IDLmain文件下面,图像大小必须详细的告诉IDL,否则可能出错

  • IDL> file = 'name.sin'
  • IDL> SizeIMageX = 128
  • IDL> SizeImageZ = 128
  • IDL> data=READ_BINARY(file,DATA_DIMS=[SizeIMageX,SizeIMageY],DATA_TYPE=12,ENDIAN='Little')

Sinogram输出

对于ecat系统或者ecatAccel系统,可以用下面的命令打开sinogram

For the ecat system :

/gate/output/sinogram/enable
/gate/output/sinogram/setFileName MySinogramFileName

For the ecatAccel system :

/gate/output/sinoAccel/enable
/gate/output/sinoAccel/setFileName MySinogramFileName

每一对晶石环都有2Dsinogram,例如对于ECAT EXACT HR+ scanner (32 crystal-rings),有1024 2Dsinogram。可以用下面命令声明径向箱(??)的数量

For the ecat system :

/gate/output/sinogram/RadialBins 256

For the ecatAccel system :

/gate/output/sinoAccel/RadialBins 256

可以选择记录/不记录随机事件命令

For the ecat system :

/gate/output/sinogram/TruesOnly true

For the ecatAccel system :

/gate/output/sinoAccel/TruesOnly true

enable来进行raw  data输出

For the ecat system :

/gate/output/sinogram/RawOutputEnable

For the ecatAccel system :

/gate/output/sinoAccel/RawOutputEnable

sinogram文件

每个运行结束之后,一个新的3Dsinogram使用一个增加性框架写入。例如,通过下面的配置,会产生5帧(每一帧60s)

/gate/application/setTimeSlice   60 s
/gate/application/setTimeStart    0 s
/gate/appication/setTimeStop    300 s

扫描器模型的ECAT代码通过下面声明

/gate/output/ecat7/system 962

这个信息可能被基于重建策略的方法使用。

要注意的是,并非所有的主头文件和子头文件被填充了,尤其是无论/gate/output/sinogram/TruesOnly tag的值是多少,主头文件的coincidence_sampling_mode区域经常设置为Prompts and Delayed(1)。

对于子头文件,prompt场的值正确的被填充,delayed场的值是随机符合的真实数量而不是delayed符合。

子头文件中的radial bin大小是晶体横向取样的一半值,并不算入弧向和DOI(depth of interaction)效应。在弧向就整治后,径向箱应该逐微增加来说明DOI效应,注意这个纠正包含在ECAT扫描器提供的重建软件里面

Gate使用手册(四)数据输出相关推荐

  1. 第四章 C语言输入输出_C语言数据输出大汇总以及轻量进阶

    在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是: puts():只能输出字符串,并且输出结束后会自动换行,在<第一个C语言程序>中已经进行了介绍. putchar():只能输 ...

  2. dataframe 输出标题_【学界】第八章:Python代码之数据输出、调参与算法总结

    作者:小杨 学校:广东工业大学 年级:研二 专业:工业工程 主要研究兴趣:强化学习.深度学习 简介:作者是广东工业大学2016级工业工程系研究生,师从广东工业大学教授.博士生导师.<工业工程&g ...

  3. Shiny平台构建与R包开发(三)——数据输出

    作为Shiny平台构建与R包开发教程的第三小节,本节向读者展示如何利用Shiny server输出自己想要的数据,包括Rplot.Table.Text等信息. 数据输出机制 仍以上一节的案例为基础: ...

  4. ssm idea后端接收数据输出在控制台时出现中文乱码

    idea 后端接收数据输出在控制台时出现中文乱码 环境 maven项目, ssm框架(spring+springmvc+mybatis)注解和配置文件混合开发, tomcat服务器 解决乱码的方式(推 ...

  5. 将matlab中数据输出保存为txt或dat格式

    一.将matlab中数据输出保存为txt或dat格式的三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt为文件名,该文件存储 ...

  6. printf 规定数据输出方式

    功能 c语言中产生格式化输出的函数(定义在 stdio.h 中).向终端输出(显示器等) 用法 int printf(const char *format,[argument]); format 参数 ...

  7. 【flink】Flink 1.12.2 源码浅析 :Task数据输出

    1.概述 转载:Flink 1.12.2 源码浅析 :Task数据输出 Stream的计算模型采用的是PUSH模式, 上游主动向下游推送数据, 上下游之间采用生产者-消费者模式, 下游收到数据触发计算 ...

  8. 实验四 数据查询——简单查询 Sql Server数据库实验

    实验四  数据查询--简单查询   一.实验目的 1.掌握SQL查询语句的基本概念  2.掌握SQLServer查询语句的基本语法 3.熟练使用SQL的Select语句对单表进行查询 4.熟练掌握并运 ...

  9. Flask后端实践 连载十四 Flask输出Word报表

    Flask后端实践 连载十四 Flask输出Word报表 tips: 简单实现Flask输出Word报表 本文基于python3编写 代码仓库 项目场景 由于项目是工程上的使用,不仅需要对采集的数据进 ...

最新文章

  1. 英国《金融时报》:全力加码早期投资,红杉中国在下一盘怎样的棋?
  2. 第八天2017/04/17(1、拷贝构造、❤临时对象)
  3. Interview:算法岗位面试—10.30上午上海某信息公司(偏图算法)技术面试之单链表反转、给定整型数组和目标值 二分法查找+下午上海某金融公司(AI岗位,上市)CTO和主管技术面试之Xcepti
  4. centos6.4 卸载mysql_彻底删除MYSQL-CENTOS
  5. 如何使用Create React App DevOps自动化工作中所有无聊的部分
  6. 如何设置Windows 8开始画面中瓷贴最大行数
  7. 在Ubuntu上安装Drone持续集成环境
  8. 延长计算机屏幕显示时间,设置Win7电源计划的方法介绍 延长续航时间
  9. 超大规模文本数据清洗、查找、匹配神器之python模块flashtext学习使用
  10. 机器视觉最火应用领域
  11. 神舟笔记本电脑更改启动盘顺序
  12. 如何在html中在线编辑word文档,怎样用word文档编辑网页
  13. 不要女程序员,公司都爱招男性程序员,这是为什么?
  14. 基于JAVA springboot + MYSQL +VUE的项目管理系统(含数据库),包括工时统计、原型预览、效果图管理等
  15. 如何解决图片路径是中文名称的问题
  16. idea error jdk isnt specified for module
  17. Python抓取视频内容
  18. mybatis+servlet
  19. Finger Names 你知道五根手指的英文名吗?
  20. 微软云 (Microsoft Cloud) 技术概述

热门文章

  1. python ogr osr库引用失败
  2. 软件工程师的薪资为何如此之高
  3. 分享2款设备管理系统源码:Springboot医院设备管理+物联网云监控IOT设备管理
  4. byte[] valu 转 ByteBuffer
  5. 安装部署VMware vSphere 5.5文档 (6-2) 为IBM x3850 X5服务器安装配置VMware ESXi
  6. leetcode刷题记录--数据结构;深度优先搜索算法;二叉树;平衡树;1020. 飞地的数量;1669. 合并两个链表;108. 将有序数组转换为二叉搜索树
  7. 文件同步详细操作(NFS,rsync)
  8. WebGL实时视频(6) Unity里面显示视频
  9. 南大庄建军计算机学院讲座,南京大学庄建军来校进行双创教育交流
  10. 关于公钥、私钥和 CA 认证的小故事