数据的高维度分析和低维度描述记录-137Cs能谱分析和Eigen使用记录

数据的高维度分析和低维度描述记录-^{137}Cs能谱分析和Eigen使用记录

实例-^{137}Cs能谱

放射源

放射源使用^{137}Cs,这是一种同位素,不稳定,容易发生衰变,例如有95%的概率发生\beta -衰变,产生^{137}Ba^{m}^{137}Ba^{m}是一个所谓的“亚稳态”核,它不稳定,会以85%的概率向自身的基态跃迁。这是一个退激发过程,一个具有动能0.662MeV的光子将会伴随着退激发过程从核中释放出来,我们一般会将这种光子称为\gamma射线。

探测器

探测器使用HPGe探测器,它由两个重要部件组成——HPGe晶体和闪烁光转换部件。

HPGE是一种闪烁晶体,由Ge(锗)晶体制作,其中的Ge纯度很高,因此被称作"High-Purity Germanium Detector"(“高纯锗探测器”),简称"HPGe"。锗晶体用来吸收\gamma射线的能量,以激发态的形式短暂地存储能量,最终退激发,并将能量以荧光的形式释放。这个转换过程就像晶体在发光一样,由于\gamma射线是间断进入锗晶体的,导致晶体是间断着发射荧光的,感觉上像是晶体在“闪烁”。当然,如果\gamma射线的强度非常大,在锗晶体完成荧光发射之前,又有新的\gamma光子进入了其中,那么锗晶体会继续荧光的发射,整体上就没有了“闪烁”的效果。

闪烁光转换部件,名字叫起来很高大上,其实就是个利用了光电效应的电压表,当年爱因斯坦他们可能就是拿这玩意做的实验。这个东西的主要功能就是把荧光的能量转换为电流的电荷量,中间用了用电子倍增、电磁感应之类的东西,总的来说,就是个光电转换加上一个电压表/电流表。这个东西在测量荧光能量时,会产生误差,而且不小,这也是为啥能谱看上去很圆润的原因。

样本、数据和维度

在本节的实例下,一个样本,表示一个HPGE探测器进行一次测量,测量的时间人为设定好。一个数据,就是一个HPGE进行一次测量的能谱。这里探测器的电子学使用1024道,也就说明一个数据中,包含了1024个数,有1024个维度。

模拟和能谱获取

使用模拟的方法获取能谱。模拟以蒙特卡洛方法为基础,使用建立在这种方法之上的软件Geant4来构建放射源、探测器,并且用它来模拟微观反应的全过程。最后,我来收集\gamma射线传递给的能量,并根据这些能量制作能谱。能量的转换过程可以分为两个步骤,第一个步骤是从\gamma射线进入锗晶体到锗晶体释放荧光,第二个步骤是荧光进入闪烁光转换部件,转换为电荷量,并以数据形式保存在电脑中。

第一个步骤是\gamma光子将自己的动能传递给锗晶体,锗晶体将这些动能以荧光的形式放出,导致锗晶体“闪烁”,这个过程使用Geant4模拟,统计探测器内的总能量沉积即可。

第二个步骤是考虑闪烁光转换部件的测量误差。认为每一次因光子入射而引发的“电压表”记录是一次事件,这次事件的结果是获得一个电荷量,也就是探测器认为的\gamma光子传递给它自己的能量。实际上,这个能量是有误差的,一般我们会认为这个误差是以高斯型分布引入的,准确的说,是测量得到的电荷量符合高斯分布,高斯分布的期望是真实的\gamma射线传递的能量,标准差是探测器的固有属性,是一个固定的数值。因此,在数学上,这一步的操作就是以上一步得到的能谱为函数,增加一个高斯分布,这种操作属于卷积。

卷积和能谱解释

根据前文的介绍,能谱通过两个步骤制作而成,第一个步骤是统计\gamma射线在闪烁体内沉积的能量,以能量沉积谱表征,虽然这里提到了能量沉积谱,但是这个谱并不能在实验中获取,因为它并不是数字信息,不能以数字信息的形式传输到电脑中,更不能被记录在硬盘等数字存储媒介中。为了保存这个能谱,才设计了第二个步骤,简言之就是将第一个步骤中的能量沉积谱转换为数字形式,并且保存在硬盘等数字存储媒介中。第二个步骤是沉积的能量被转换成荧光,荧光接着被转换成电子,电子接着被电场加速,用来影响电极之间的电压,最后电压被电压表测量并以数字信息保存。

虽然步骤二的目标是将能量沉积谱保存在电脑硬盘中,但是步骤二的这一套过程引入了大量的误差,使最终保存的能量不是真实的沉积能量。为了还原真实的能量,需要了解步骤二引入误差的方式。

高斯随机分布,是用来描述步骤二的分布之一,也是最简单的方法。这个方法认为,步骤二得到的能量是一个随机数,这个随机数符合一个高斯分布,这个高斯分布的期望是步骤一的沉积能量,方差与探测器系统有关。因此,步骤一的能量沉积谱中,每一道内的所有计数,也称为“事件”,都符合同一个高斯分布,在步骤二中,它们的能量会按照这个分布被分散到对应的能量区间上。在分散完所有能量道后,就得到了步骤二的结果,这个过程就称为“卷积”。

考察第i个\gamma​光子入射探测器,也就是第i个事件。该事件中,令光子在闪烁体内沉积的能量为EDep_{i}​,电子学测量到的能量为E_{i}​。那么,E_{i}​是一个符合高斯分布的随机数,这个高斯分布的期望\mu_{i}​EDep_{i}​,标准差\sigma_{i}​与探测器系统有关,并且受到沉积能量的影响。整体上,标准差与探测器系统的关系更大,在探测器系统固定的前提下,不同的能量沉积会造成不同的标准差。在误差允许的前提下,可以认为标准差与能量沉积无关,其实一般都是这么做的。

考察步骤一结束时得到的能谱,这是真正意义上的能量沉积所统计出来的直方图,这些能量是没有被探测器系统“污染”的,没有误差的,不是上文所说的随机数。这个能谱是直方图,就是一系列的区间和计数。设定区间总数量为N,某一个区间使用n表示,注意这个n与上文中的维度编号无关。在本文背景下,我们使用教学常用的1024道电子学系统,那么N为1024。

统计上,认为第nBin​个区间内的所有事件,都造成了相同的能量沉积,该能量沉积以EDep_{nBin}​表示,其数值可以以该区间的最小值、最大值、中间值等来代表,本文选择中间值。令EDep_{minBin}​表示能量沉积直方图中最低道所对应的能量,也就是最小能量沉积所对应的区间;EDep_{maxBin}​表示能量沉积直方图中最高道所对应的能量,也就是最大能量沉积所对应的区间。令BinWidth​表示一个区间的宽度,根据直方图定义,同一个直方图下,所有区间的宽度相同。
EDep_{nBin} = EDep_{minBin} + (nBin+0.5)\times BinWidth

BinWidth = \frac { EDep_{maxBin} - EDep_{minBin} } {N}

对于相同区间的事件,也就是能量沉积属于区间编号为nBin​的事件,它们在步骤一结束时造成的能量沉积在统计上认为相同,我们这里也就认为相同。原因是,由于每一个事件在步骤一的能量沉积数值太多,在模拟中虽然可以全部独立保存,但这样全部独立保存的话,会占用大量的硬盘,而且数据处理起来会消耗大量时间,不实际,因此选择将这些能量沉积数值进行统计,并且以直方图形式保存,也就是上文所谓的“步骤一的能谱”。在这个设定下,一个事件自身的能量沉积数值已经被主动舍弃了,保存下来的只有代表一个区间的能量。也就是说,其实每一个事件的能量沉积数值都可以被保存下来,但是我主动放弃了它们。

考察步骤一的能谱,第nBin​个区间内的事件,其能量为EDep_{nBin}​。由于步骤二的测量误差,EDep_{nBin}​将会被施加随机误差,从统计上分析,经过了步骤二的测量,能量值E_{nBin}​将符合一个高斯分布,这个高斯分布的期望\mu_{nBin}​EDep_{nBin}​,而标准差同样与探测器系统有关,对于同一次测量,认为探测器系统没有改变,由此可认为所有区间的能量E_{nBin}​所符合的高斯分布的标准差相同。因为第nBin​个区间内存在不止一个事件,经过了步骤二的误差引入,这些事件的能量将有可能偏离第nBin​个区间所代表的能量区域。
E_{nBin} \sim N(EDep_{nBin},\sigma_{nBin})

\sigma_{0Bin} = \sigma_{1Bin} = \dots = \sigma_{nBin} = \dots = \sigma_{NBin}

从统计上分析,步骤一的第nBin​个区间内的事件,经过步骤二的误差引入后,仍然属于第nBin​个区间内的概率P_{nBin \to nBin}​,可以使用高斯分布进行计算。为了更加明确地表示计算,将高斯分布的具体形式引入。
P_{nBin \to nBin} = \int ^{E_{nBinMax}}_{E_{nBinMin}} {N(EDep_{nBin},\sigma_{nBin})} dE
为了更加明确地表示计算,将高斯分布的具体形式引入。
N(EDep_{nBin},\sigma_{nBin}) = \frac {1} {\sqrt{2 \pi \sigma^2}} e^{- \frac {{(E-EDep_{nBin})}^2} {2 \sigma^2_{nBin}}}
那么,P_{nBin \to nBin}在真实使用环境下的表达式如下。
P_{nBin \to nBin} = \int ^{E_{nBinMax}}_{E_{nBinMin}} { \frac {1} {\sqrt{2 \pi \sigma^2}} e^{- \frac {{(E-EDep_{nBin})}^2} {2 \sigma^2_{nBin}}} } dE

E_{nBinMax} = EDep_{minBin} + nBin\times BinWidth

E_{nBinMax} = EDep_{minBin} + (nBin+1)\times BinWidth

现在考虑步骤一的第nBin个区间内的事件,经过步骤二的误差引入后,属于第mBin个区间内的概率P_{nBin \to mBin},其推演与上文相同。
P_{nBin \to mBin} = \int ^{E_{mBinMax}}_{E_{mBinMin}} { \frac {1} {\sqrt{2 \pi \sigma^2}} e^{- \frac {{(E-EDep_{nBin})}^2} {2 \sigma^2_{mBin}}} } dE

E_{mBinMax} = EDep_{minBin} + mBin\times BinWidth

E_{mBinMax} = EDep_{minBin} + (mBin+1)\times BinWidth

上文已经从步骤一的能谱视角出发,介绍了步骤二的误差如何引入。现在从步骤二的能谱视角出发,考虑如何从数学上获得误差干扰后的能谱。

在本文背景下,探测器的电子学获得的能谱是一个离散的数据,对于步骤二能谱的第nBin​道,其计数,或者说事件,由步骤一的能谱中的所有道贡献而来。由于高斯分布的形状,主要是由第nBin​道以及附近的若干道贡献。若以高斯分布的\pm 3\sigma​原则为标准,可以有效的去除无用的区间,提升计算效率。

这里就以\pm 3\sigma​原则为标准,则步骤二能谱的第nBin​道由步骤一能谱的第nBin​道主要构成,同时,\pm 3\sigma​其中的(0 \sim 3\sigma)​部分,由第(n+1)Bin​道、第(n+2)Bin​道至第(n+t)Bin​道贡献;\pm 3\sigma​其中的(-3\sigma \sim 0)​部分,由第(n-1)Bin​道、第(n-2)Bin​道至第(n-t)Bin​道贡献。其中,t表示(0 \sim 3\sigma)​所占有的区间数量,或者是(-3\sigma \sim 0)​所占有的区间数量,这两种情况所占有的区间数量是一样的,因此统一用t表示。

根据上述分析,步骤二能谱的第nBin道计数Count_{EnBin},可以通过上述步骤一的区间来计算。
Count_{EnBin} = P_{(n-t)Bin \to nBin} \times Count_{EDep(n-t)Bin} + \dots + P_{(n-1)Bin \to nBin} \times Count_{EDep(n-1)Bin} \\ + P_{nBin \to nBin} \times Count_{EDepnBin} \\ + P_{(n+1)Bin \to nBin} \times Count_{EDep(n+1)Bin} + \dots + P_{(n+t)Bin \to nBin} \times Count_{EDep(n+t)Bin}

Count_{EnBin} = \sum _{i=n-t}^{n+t} {P_{nBin \to iBin} \times Count_{EDepiBin}}

以矩阵形式表达更加简明。
Count_{EnBin} = \begin{bmatrix} 0 & \dots & 0 & P_{(n-t)Bin \to nBin} & \dots & P_{nBin \to nBin} & \dots & P_{(n+t)Bin \to nBin} & 0 & \dots & 0 \end{bmatrix} \begin{bmatrix} 0 \\ \vdots \\ 0 \\Count_{EDep(n-t)Bin} \\ \vdots \\ Count_{EDepnBin} \\ \vdots \\Count_{EDep(n+t)Bin} \\ 0 \\ \vdots \\ 0 \end{bmatrix}

img
img

能谱数据处理

中心化

中心化是针对样本矩阵而言的,针对每一个维度,将数据剪去期望。

在本文背景下,样本数据的每一列代表一个维度,每一行代表一个样本。在求取期望时,需要知道行数和列数,在Eigen3下,获取行数和列数的方法如下。

int numRows = SampleMatrix_.rows();
int numCols = SampleMatrix_.cols();

协方差矩阵

协方差矩阵由中心化的样本矩阵计算得到。

协方差矩阵的图形显示可以通过“热力图”来完成。“热力图”实际上就是一个二维直方图,使用色彩来表征每一个区间(bin)的计数值。Python下的Seaborn库中有热力图的支持,使用起来非常简单,可参考[Jianshu Matplotlib, 2017],[Seanborn, Heatmap, 2019]。Seaborn是以Matplotlib为基础的可视化库,比Matplotlib使用更加简洁方便。

相关系数矩阵

相关系数矩阵是用来描述两个维度之间的关联程度的,虽然协方差矩阵的意义相同,但是比其更加好用。因为相关系数忽略了维度自身的单位问题,避免因为同一个维度使用不同单位而导致的数值量级上的差异。

编程方面,使用Eigen进行矩阵计算,经常会使用到矩阵初始化,比如制作一个全零矩阵,用作最初始的相关系数矩阵,表示任意两个维度之间均没有关联。

int numRows = CovarianceMatrix_.rows();
int numCols = CovarianceMatrix_.cols();
MatrixXd ones = MatrixXd::Zero(numRows,numCols);

特征值和特征向量

Eigen库中的类SelfAdjointEigenSolver专门负责特征值和特征向量求解,具体参考[Eigen-EigenDeconposition, 2019]。

并不是任何矩阵都可以进行特征分解的,在本文应用背景下,由样本数据组成的矩阵只有很小概率可以进行特征分解,而且,无论是在PCA还是因子分析中,样本矩阵都不是用来进行特征分解的对象。

在PCA中,进行特征分解的矩阵是样本矩阵的协方差矩阵。协方差矩阵是一个对称阵,而且所有元素都是实数,一般称为实对称矩阵,这种矩阵的特点之一就是可以进行特征分解。

MatrixXd ones = MatrixXd::Ones(3,3);
SelfAdjointEigenSolver<MatrixXd> es(ones);
cout << "The first eigenvector of the 3x3 matrix of ones is:" 
     << endl << es.eigenvectors().col(1) << endl;

参考文献

网站

[Eigen-EigenDeconposition, 2019] Eigen官方说明文档,特征分解类介绍 http://eigen.tuxfamily.org/dox/classEigen_1_1SelfAdjointEigenSolver.html#title17

[Jianshu Matplotlib, 2017] 用python-pandas作图矩阵 https://www.jianshu.com/p/47b54eb35eed

[Seanborn, Heatmap, 2019] Seaborn API for heatmap, http://seaborn.pydata.org/generated/seaborn.heatmap.html#seaborn.heatmap

论文

[Miller, E. A., 2015]: Miller, E. A. , Robinson, S. M. , Anderson, K. K. , Mccall, J. D. , Prinke, A. M. , & Webster, J. B. , et al. (2015). Adaptively reevaluated bayesian localization (arbl): a novel technique for radiological source localization. Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, 784, 332-338.

[Penny, R. D., 2015]: Penny, R. D. , Crowley, T. M. , Gardner, B. M. , Mandell, M. J. , Guo, Y. , & Haas, E. B. , et al. (2015). Improved radiological/nuclear source localization in variable norm background: an mlem approach with segmentation data. Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, 784, 319-325.

[Jianshu Matplotlib, 2017]:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,135评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,317评论 3 397
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,596评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,481评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,492评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,153评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,737评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,657评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,193评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,276评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,420评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,093评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,783评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,262评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,787评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,427评论 2 359

推荐阅读更多精彩内容