admin管理员组

文章数量:1565292

SoFiA 2 用户手册

一、 介绍

随着下一代厘米波射电望远镜(包括 A S K A P ASKAP ASKAP M e e r K A T MeerKAT MeerKAT W S R T / A p e r t i f WSRT/Apertif WSRT/Apertif)将要进行新一代大规模盲中性氢测量以及快速、全自动、准确和可靠的寻找源,对这些测量对于科学来说至关重要。 S o F i A SoFiA SoFiA(Serra et al.2015)的找源应用程序旨在满足中性氢社区的源查找需求,并已成为光谱线数据事实上的标准源查找工具。

虽然 S o F i A SoFiA SoFiA引入了大量新的算法,这些算法彻底改变了中性氢源的查找,但仍有一些问题影响了其对大数据量的适用性及其长期可维护性:

  • S o F i A SoFiA SoFiA的很大一部分是用 P y t h o n Python Python编写的,这导致了不必要的大量执行时间以及内存消耗。

  • S o F i A SoFiA SoFiA依赖于大量的第三方库,这些库往往由于不同库版本之间缺乏兼容性。

  • S o F i A SoFiA SoFiA的不同部分是用不同的编程语言编写的,包括 P y t h o n Python Python C + + C++ C++ C y t h o n Cython Cython,使得软件难以维护。

为了解决这些问题,特别是速度和内存问题, S o F i A SoFiA SoFiA团队决定用C语言重新实现软件中最关键、最强大的组件。这个新版本被命名为sofia2,和它的前一个版本一样,已经在 G i t H u b 1 GitHub^1 GitHub1上提供了。

1.1 安装

S o F i A 2 SoFiA2 SoFiA2的安装非常简单,因为目前只有一个依赖项 w c s l i b 2 wcslib^2 wcslib2, 它是在基于像素的坐标和世界坐标之间转换所必需的。此外, G U N C GUN C GUNC编译器( g c c gcc gcc)必须可用,尽管其他支持 C 99 C99 C99标准的 g c c gcc gcc兼容编译器(包括 c l a n g clang clang)也可以使用。 S o F i A 2 SoFiA2 SoFiA2可以通过运行 c o m p i l e . s h compile.sh compile.sh 基本目录中的 s h e l l shell shell脚本。这将编译源代码并生成名为 s o f i a sofia sofia的可执行文件。通过将 − f o p e n m p -fopenmp fopenmp标志添加到 c o m p i l e . s h compile.sh compile.sh脚本调用。

重要的是要确保编译器在编译过程中不会产生错误消息,否则 S o F i A 2 SoFiA2 SoFiA2将无法正确编译并且可能无法运行。此外,应遵循安装过程结束时显示的说明,将全局别名或符号链接设置为 s o f i a sofia sofia可执行文件。

S o F i A 2 SoFiA2 SoFiA2使用 O p e n M P OpenMP OpenMP广泛使用多线程。由于 O p e n M P OpenMP OpenMP支持本机内置在 G C C GCC GCC编译器中,因此不需要额外的库或依赖项,默认情况下启用多线程。如果用户没有另外指定, S o F i A 2 SoFiA2 SoFiA2将使用环境变量 O M P _ N U M _ T H R E A D S OMP\_NUM\_THREADS OMP_NUM_THREADS来控制 O p e n M P OpenMP OpenMP使用的线程数。如果未设置,这通常会默认使用机器上所有可用的CPU内核,从而最小化管道的运行时间。 S o F i A 2 SoFiA 2 SoFiA2使用的最大核心数可以使用 p i p e l i n e . t h r e a d s pipeline.threads pipeline.threads 选项。这在某些情况下可能是可取的,以减少SoFiA2引起的CPU负载。


图 1 : S o F i A 2 的 流 程 图 , 显 示 管 道 中 的 各 个 步 骤 ( 黄 色 ) 、 S o F i A 2 接 受 的 输 入 数 据 立 方 体 ( 蓝 色 ) 和 可 以 生 成 的 不 同 输 出 文 件 ( 紫 色 ) 。 图1:SoFiA 2的流程图,显示管道中的各个步骤(黄色)、SoFiA 2接受的输入数据立方体(蓝色)和可以生成的不同输出文件(紫色)。 1:SoFiA2SoFiA2

1.2 参数文件

S o F i A 2 SoFiA2 SoFiA2通过所谓的参数文件进行控制,这些文件用于选择或取消选择 S o F i a 2 SoFia2 SoFia2提供的不同算法,并控制它们各自的设置。因此,参数文件是由一个或多个参数设置组成的简单文本文件,每个参数设置必须位于单独的行上。每个参数设置必须采用以下形式:

$ module.parameter = value$

允许在赋值运算符(=)周围以及每行的开头或结尾使用任意数量的空白字符;解析器将忽略这些字符。

空行和任何以散列字符(#)开头的字符序列也将被忽略,并被视为注释。

S o F i A 2 SoFiA 2 SoFiA2接受的控制参数的完整列表可在附录A中找到。由于未设置的参数将自动采用其默认值,用户可以选择仅在其参数文件中指定相关设置的子集,尤其是输入数据集的名称。

1.3 运行管道

创建并保存参数文件后,可以通过运行以下命令从终端启动管道:

s o f i a < p a r a m e t e r _ f i l e > sofia <parameter\_file> sofia<parameter_file>

其中 < p a r a m e t e r _ f i l e > <parameter\_file> <parameter_file> S o F i A 2 SoFiA 2 SoFiA2参数文件的名称。如果参数文件已保存到当前目录,只需提供其名称即可,否则需要包含完整路径。 S o F i A 2 SoFiA 2 SoFiA2管道的流程图如图1所示。

请注意,不必在用户参数文件中定义所有现有参数。任何未定义的参数都将仅采用其默认值。因此,通常只设置几个需要调整的参数就足够了,例如输入数据立方体的名称。也可以通过以下方式在命令行上指定各个设置:

s o f i a   < p a r a m e t e r _ f i l e >   < p a r a m e t e r > = < v a l u e > sofia\ <parameter\_file>\ <parameter>=<value> sofia <parameter_file> <parameter>=<value>

它将首先读取用户参数文件并更新指定的参数设置。注意,和之间不能有空格。实际上,任何数量的参数文件和/或单个设置都可以在命令行上以任何顺序传递给 S o F i A 2 SoFiA 2 SoFiA2。所有文件和设置都将按照提供的顺序读取和处理,稍后的设置将覆盖先前的设置。例如,这可以用于在单独的文件中定义默认参数设置,同时在命令行上指定输入数据多维数据集名称。

二、 导入数据集

S o F i A 2 SoFiA 2 SoFiA2接受多种类型的输入文件,包括要搜索的数据立方体。目前, S o F i A 2 SoFiA 2 SoFiA2仅支持灵活图像传输系统 ( F I T S ) (FITS) FITS格式,所有输入和输出的图像数据文件必须是标准的 F I T S FITS FITS文件。

2.1 数据立方体

数据立方体通常是三维的,前两个轴包含空间坐标(赤道坐标或银河坐标),第三个轴包含光谱坐标(频率或速度)。 S o F i A 2 SoFiA 2 SoFiA2还可以处理二维图像(例如,无线电连续图像),在这种情况下,假设第三轴的大小为 1 1 1。四维立方体也可以被接受,只要第四个维度的大小正好是1。在这种情况下,只需删除第四个轴(例如Stokes I)即可获得三维数据结构。最后,还支持第三个轴的大小为1,而第四个轴的大小大于1的四维立方体;在这种情况下, S o F i A 2 SoFiA 2 SoFiA2假设第四个轴包含光谱信息,并且第三和第四个轴的头元素简单地交换。

使用 S o F i A 2 SoFiA 2 SoFiA2只能处理完整数据立方体的一个子区域。如果完整的多维数据集太大而无法放入内存,或者多维数据集的某些部分包含人造数据,那么这个功能将非常有用。这个 i n p u t . r e g i o n input.region input.region在这种情况下,可以使用选项以像素坐标(基于0)指定子区域,然后只将指定的区域读入内存并进行处理。需要注意的是,所有输出(如输出目录中的源质心)都将针对子区域而不是完整立方体指定,除非 p a r a m e t e r . o f f s e t parameter.offset parameter.offset设置为 t r u e true true

为了简化带有负信号的数据立方体的处理,例如中性氢吸收线, S o F i A 2 SoFiA 2 SoFiA2提供了在处理之前反转数据立方体的可能性。这可以通过 i n p u t . i n v e r t input.invert input.invert选项。应该注意的是,启用此选项只需将数据立方体乘以−1,这样正信号就会变为负信号,反之亦然。因此,在这种情况下,所有与磁通相关的输出,如磁通测量或第0时刻,也将被反转并报告为正。

2.2 掩码立方体

除了输入数据立方体外,还可以将输入掩码立方体加载到 S o F i A 2 SoFiA 2 SoFiA2中。掩码多维数据集必须具有与输入数据多维数据集相同的维度,并且用于用非零值标记被认为是源的一部分的所有像素。 S o F i A 2 SoFiA 2 SoFiA2通常会在查找源期间生成一个新的掩码立方体。然而 i n p u t . m a s k input.mask input.mask选项可用于加载现有的掩码多维数据集,例如从以前运行的 S o F i A 2 SoFiA 2 SoFiA2加载。源查找器检测到的任何附加像素将简单地添加到现有的掩码中。

2.3 噪声立方体

使用 i n p u t . n o i s e input.noise input.noise选项,可以向 S o F i A 2 SoFiA 2 SoFiA2提供一个噪声立方体,以便噪声在空间上或频谱上变化的情况下,对数据立方体上的噪声级进行归一化。 S o F i A 2 SoFiA 2 SoFiA2将在查找源之前将数据立方体除以噪声立方体。典型的用例是在 S o F i A 2 SoFiA 2 SoFiA2中实现局部噪声标准化(见第3.3节),并文件写出产生的噪声立方体。该噪声立方体可以在 S o F i A 2 SoFiA 2 SoFiA2的后续运行中加载,从而减少了反复运行计算代价高昂的噪声归一化算法的需要。请注意,将在数据立方体上执行源参数化,而不进行噪声归一化,以确保测得的通量密度是正确的。

2.4 权重立方体

使用 i n p u t . w e i g h t s input.weights input.weights选项,可以提供权重立方体。 S o F i A 2 SoFiA 2 SoFiA2将在源查找之前将数据立方体乘以权重立方体的平方根。请注意,源参数化将在数据立方体上执行,而不应用权重立方体,以确保测得的通量密度是正确的。还请注意,可以向 S o F i A 2 SoFiA 2 SoFiA2提供权重立方体或噪声立方体,但不能同时提供两者。

2.5 增益立方体

一些数据立方体,如无线电干涉镶嵌,可能会受到空间或光谱增益变化的影响。如果未进行校正,这些将导致参数化错误,特别是与基于磁通量的参数有关。 S o F i A 2 SoFiA 2 SoFiA2允许用户指定增益立方体,该增益立方体可用于在源参数化之前纠正增益变化。为此,输入数据立方体将被增益立方体分割,以使增益在整个多维数据集上法线化为1。与噪声变化不同,增益变化不一定会影响源查找,因此增益立方体仅在源查找之后和参数化之前应用。

三、 预处理

在查找源算法应用于数据立方体之前,可能还需要对这个立方体数据进行一系列预处理步骤,例如,去除那些可能被源查找器获取的伪影,或确保在应用源查找阈值之前穿过数据立方体的噪声电平是恒定的。 S o F i A 2 SoFiA 2 SoFiA2目前提供了本节概述的几个先决条件选项。

3.1 数据标记

受干扰或人工影响的数据可能需要在找源之前进行标记。 S o F i A 2 SoFiA 2 SoFiA2目前提供了三种方法来标记数据立方体的受影响区域。如果干扰或人工制作数据的位置已知,那么 f l a g . r e g i o n flag.region flag.region 选项可用于为 S o F i A 2 SoFiA 2 SoFiA2提供需要标记的区域列表。这些需要以像素为单位指定(基于0)。一旦数据立方体被加载,相关的标记就会被应用。需要注意的是,如果适用,标记区域应该相对于正在处理的子区域而不是整个数据立方体来指定。

S o F i A 2 SoFiA 2 SoFiA2提供的另一个手动标记选项允许用户使用 f l a g . c a t a l o g flag.catalog flag.catalog选项。文件必须包含两列,其中包含本机坐标系中天空位置坐标和输入数据立方体的单位(例如,右提升和小数度的斜角)。列可以用空格、表格或逗号分隔,并且可以使用#字符注释整行。如果位于数据立方体覆盖的区域内,则每个位置周围的圆形区域将在源查找之前标记。圆形标记区域的半径可以通过标志半径选项。基于目录的标记选项对于掩盖由于连续差分不足而导致的剩余连续源位置是有用的。

除了手动标记外, S o F i A 2 SoFiA 2 SoFiA2还为受干扰影响的光谱通道和/或空间像素提供自动标记模式。此模式可以使用 f l a g . a u t o flag.auto flag.auto选项。自动标记算法的工作原理是首先测量在每个光谱通道或空间像素 i i i中的均方根( R M S RMS RMS)噪声等级, σ r m s ( i ) \sigma_{rms}(i) σrms(i),。然后计算均方根值的中位数 μ \mu μ和中位数的绝对偏差 μ ~ \widetilde\mu μ ,分别用作表示平均噪声级和该噪声级标准偏差。最后,用户指定的阈值 ϑ \vartheta ϑ已应用( f l a g . t h r e s h o l d flag.threshold flag.threshold)所有通道或像素 i i i
∣ σ r m s ( i ) − μ ∣ > C ϑ μ ~ |\sigma_{rms}(i)-\mu| > C\vartheta\widetilde\mu σrms(i)μ>Cϑμ
将被标记。公式1中使用常数C≈1.4826,以转换中值绝对偏差转换为规则标准偏差,前提是均方根值中的基本散射遵循高斯分布。通过启用 f l a g . l o g flag.log flag.log选项,可以将标记的通道和像素写入日志文件。

应注意确保数据立方体不包含扩展发射区域(例如来自银河系),因为通道或扩展发射像素可能会被算法标记。同样,如果在数据立方体中存在显著的噪声空间或光谱变化,噪声归一化滤波器(第3.3节)也必须启用,否则在本质上噪声级别较高的区域的通道或像素可能会被标记。

3.2 连续减法

如果输入数据立方体存在低水平的残留持续发射,那么 S o F i A 2 SoFiA 2 SoFiA2可以通过启用 c o n t s u b . e n a b l e contsub.enable contsub.enable来帮助消除它。启用设置。然后, S o F i A 2 SoFiA 2 SoFiA2将使用一种稳健的算法,在立方体的每个空间位置拟合一个低阶多项式到频谱,并从数据中减去该多项式。多项式阶数可以通过 c o n t s u b . o r d e r contsub.order contsub.order进行参数控制。目前,只支持命令0(恒定偏移量)和命令1(偏移量+斜率)。需要注意的是,连续减法只会在找到源之前发生,而源参数化将在没有连续减法的原始数据立方体上发生。

该算法将提取数据立方体中每个空间位置的频谱。然后它将频谱对称移动± c o n t s u b . s h i f t contsub.shift contsub.shift并将在一个方向上移动的频谱与在相反方向上移动的频谱相减。接下来,将测量减谱中的噪声以及信号绝对值超过 c o n t s u b . t h r e s h o l d contsub.threshold contsub.threshold的所有通道。阈值乘以噪声水平将被标记并从多项式拟合中排除。± c o n t s u b . p a d d i n g contsub.padding contsub.padding的附加填充。在标记信道周围填充信道可以作为安全裕度。最后,对原始谱的剩余信道拟合一个多项式,并从原始数据立方中减去。

多项式拟合算法是相当稳健的,通常不应该受到光谱线发射或其他伪影的影响,无论它们有多亮。然而,重要的是要确保相当一部分波段不受线发射和伪影的影响。作为一个一般的准则,这些扩展不应超过总带宽的20%,否则连续体将开始受到它们的影响。另一个问题可能出现在靠近光谱边缘的发射,或者是非常宽的、平滑的发射,这些可能无法被算法过滤掉。在这种情况下,增加 c o n t s u b . s h i f t contsub.shift contsub.shift的值。和 c o n t s u b . p a d d i n g contsub.padding contsub.padding转变。填充物可能有助于提高合身度。

3.3 噪声正则化

S o F i A 2 SoFiA 2 SoFiA2提供的另一个重要的预处理滤波器是噪声归一化,当噪声水平沿频谱轴或在空间域随数据立方体变化时,就需要噪声归一化。由于 S o F i A 2 SoFiA 2 SoFiA2将对数据应用源发现阈值,在这种情况下,有必要首先将数据立方体除以局部噪声水平,以消除任何变化。

S o F i A 2 SoFiA 2 SoFiA2提供了两种校正噪声变化的方法。如果噪声仅作为频率的函数变化,而不是空间的, S o F i A 2 SoFiA 2 SoFiA2可以通过设置 s c a l e N o i s e . m o d e = s p e c t r a l scaleNoise.mode = spectral scaleNoise.mode=spectral选项在每个信道的基础上测量和修正噪声。如果噪声在空间平面上也发生变化,例如在干涉镶嵌中,则可以通过设置 s c a l e N o i s e . m o d e = l o c a l scaleNoise.mode = local scaleNoise.mode=local来启用局部噪声缩放。

局部噪声缩放操作是通过移动一个给定大小的窗口( s c a l e N o i s e . w i n d o w X Y scaleNoise.windowXY scaleNoise.windowXY s c a l e N o i s e . w i n d o w Z scaleNoise.windowZ scaleNoise.windowZ)跨越网格上数据立方体的所有三个维度,也可以由用户指定( s c a l e N o i s e . g r i d X Y scaleNoise.gridXY scaleNoise.gridXY s c a l e N o i s e . g r i d Z scaleNoise.gridZ scaleNoise.gridZ)。如果没有指定网格大小,那么 S o F i A 2 SoFiA 2 SoFiA2将默认使用窗口大小的一半。然后,它将测量每个窗口的 R M S RMS RMS噪声水平,并将相应网格单元中的数据除以噪声值。另外,插值可以启用(选项 s c a l e N o i s e . i n t e r p o l a t e scaleNoise.interpolate scaleNoise.interpolate)在网格中心之间线性插值噪声值,从而避免出现尖锐的边界。

3.4 波纹滤波器

有时,数据立方体会受到空间和光谱扩展的低层次人工因素的影响,但在天空中或随频率变化,例如由太阳干扰引起的光谱波纹。在S+C finder中,空间和光谱平滑后,这些弱特征会被提升到灵敏度阈值以上,可能导致误检。 S o F i A 2 SoFiA 2 SoFiA2提供了一个特殊的纹波过滤器,如果需要的话,可以通过激活 r i p p l e F i l t e r . e n a b l e rippleFilter.enable rippleFilter.enable来移除这些痕迹。

过滤器通过计算一个运行窗口的平均值或中值( r i p p l e F i l t e r . s t a t i s t i c rippleFilter.statistic rippleFilter.statistic)运行,其空间和光谱大小可以由用户定义( r i p p l e F i l t e r . w i n d o w X Y rippleFilter.windowXY rippleFilter.windowXY r i p p l e F i l t e r . w i n d o w Z rippleFilter.windowZ rippleFilter.windowZ)。同样,窗口移动的空间和光谱步长也可以控制( r i p p l e F i l t e r . g r i d X Y rippleFilter.gridXY rippleFilter.gridXY r i p p l e F i l t e r . g r i d Z rippleFilter.gridZ rippleFilter.gridZ);默认情况下,它将被设置为窗口大小的一半。然后从网格单元内的每个像素中减去平均值或中值,除非插值被启用( r i p p l e F i l t e r . i n t e r p o l a t e rippleFilter.interpolate rippleFilter.interpolate),在这种情况下,数值将首先在网格单元之间线性插值,然后再从数据中减去。

虽然该滤波器在默认情况下使用平均过程中的中值对异常值和真实源的存在具有相当的鲁棒性,但在使用时应该非常谨慎,因为它有可能从数据立方体中去除真实的天文信号。在空间上或光谱上扩展的天文源,如附近的星系存在时,风险尤其高。用户负责定义足够大的空间和光谱窗口大小,以确保即使在数据立方体中预期出现的最扩展源也不会影响窗口中的中值。

四、 寻找天体源

S o F i A 2 SoFiA 2 SoFiA2自带两种不同的寻源算法:一个简单的阈值查找器和平滑+剪辑查找器( S + C S+C S+C查找器)。阈值查找器相当基本,只是将绝对通量密度超过指定阈值的所有像素添加到源掩模中。请注意,这明确包括显著的负通量密度,以避免产生正偏置。阈值可以是绝对的,也可以是相对于数据立方体中的全局 R M S RMS RMS噪声水平的。阈值查找器是有用的,如果一个预滤波的立方体是搜索信号超过一定的重要程度。

4.1 S+C查找器

第二个算法是 S + C S+C S+C查找器,它是 S o F i A 2 SoFiA 2 SoFiA2中最复杂的查找源算法,通常应该应用于数据集以实现盲查找源。 S + C S+C S+C查找器通过空间和频谱平滑原始数据立方体在多个尺度上的工作,如用户定义的。在每次平滑迭代中,对数据应用平滑后相对于全局均方根噪声水平的用户指定的通量阈值,绝对通量密度超过该阈值的所有像素将被添加到源掩模中。注意,这将提取具有正通量密度和负通量密度的像素,以消除仅考虑正通量密度可能导致的偏差。

通过平滑相关尺度上的数据,与平滑尺度相匹配的源的信噪比将达到最大,使其能够检测到在非平滑数据立方体中仍然低于噪声水平的微弱扩展发射。任何来源的信噪比将最大空间和光谱卷积滤波器尺寸匹配源的空间和光谱范围,这是用户的责任,选择适当的过滤器尺寸的预计将出现在数据来源。

S o F i A 2 SoFiA 2 SoFiA2将在空间域应用高斯滤波器,在光谱域应用箱形滤波器,以适应典型的河外H I源(如遥远的星系)具有指数径向表面亮度轮廓和带有陡峭侧翼的双角光谱轮廓的事实。空间高斯核的半宽限是用 s c f i n d scfind scfind指定的。 k e r n e l s X Y kernelsXY kernelsXY选项,以像素为单位。假设高斯滤波器在二维空间上是对称的。光谱箱形滤波器的宽度用 s c f i n d scfind scfind指定。 k e r n e l s Z kernelsZ kernelsZ选项并以通道为单位定义 b o x c a r boxcar boxcar过滤器的全宽度。光谱箱形滤波器尺寸必须是奇数(3,5,7,…)。

空间内核列表中的所有滤波器将与光谱内核列表中的所有滤波器组合,𝑁空间滤波器与𝑀光谱滤波器组合将导致𝑁×𝑀不同的滤波器组合。对于每一个谱平滑核和空间平滑核的组合,算法操作如下:

  1. 创建原始数据多维数据集的副本。

  2. 在数据立方体副本中,用 s c f i n d scfind scfind替换在前一次迭代中已经检测到的所有像素的值。替换乘以原始立方体中的均方根。这是为了确保在大尺度上的平滑不会把发射涂抹在太大的区域上,否则产生的源掩模会远远超出源的边缘。

  3. 在平滑前将所有空白像素设为0。

  4. 将数据立方体副本与下一组空间滤波器和光谱滤波器进行卷积。

  5. 将所有原来的空白像素从0改为空白。

  6. 测量平滑拷贝的均方根噪声水平。

  7. 在源蒙版中,将超过 s c f i n d scfind scfind平滑副本中具有通量密度的所有像素标记为已检测到的像素。阈值乘以平滑的均方根噪声水平。

  8. 再次删除数据立方体的平滑副本,并继续执行第1项,直到所有空间平滑核和光谱平滑核的组合都被应用。

在此过程的最后,源掩码将包含至少一个应用的平滑尺度上超过源查找阈值的所有像素。接下来的步骤是将检测到的像素分组为相干源,丢弃那些被认为是基于简单的大小阈值的虚假的像素。

关于S+C查找器,需要注意一些重要的事情。首先,重要的是要指定所有平滑核的大小,包括空间和谱,按大小递增的顺序。这是至关重要的,否则之前探测到的像素的替换机制将无法防止S+C探测器在太大的区域掩盖源发射。特别是,建议始终将核大小指定为0作为第一个空间和谱核。

另一件需要注意的事情是,由于速度的原因, S o F i A 2 SoFiA 2 SoFiA2中的高斯空间平滑是用一系列的箱形滤波器来近似的。因此,该算法原则上不能近似大小小于3个像素的空间滤波器,因此最小的可感知空间滤波器大小(除0外)应≥3。

五、 检测像素的链接

在生成源目录之前,需要将源掩码中记录的像素分组为单独的源。这是在 S o F i A 2 SoFiA 2 SoFiA2中通过应用一个基于用户选择的合并长度的基本好友算法来实现的。

该算法将在掩模立方体上循环,直到它检测到已标记为检测但尚未与源关联的像素。该像素将被分配一个新的源ID,然后算法将递归搜索所有邻近的像素在一定的合并长度内的其他检测到的像素,所有这些将被分配相同的源ID。一旦递归结束,所有属于该源的像素都将被正确标记,算法将继续链接下一个源。

用户可以通过设置 l i n k e r . r a d i u s X Y linker.radiusXY linker.radiusXY l i n k e r . r a d i u s Z linker.radiusZ linker.radiusZ选项来控制立方体的空间维度和光谱维度中的合并长度。实际的合并体积假设为这种形式的椭球体:
( x − x 0 ) 2 r x y 2 + ( y − y 0 ) 2 r x y 2 + ( z − z 0 ) 2 r z 2 ≤ 1 \frac{(x-x_0)^2}{r_{xy}^2}+\frac{(y-y_0)^2}{r_{xy}^2}+\frac{(z-z_0)^2}{r_{z}^2} \leq 1 rxy2(xx0)2+rxy2(yy0)2+rz2(zz0)21
其中 ( x 0 , x 0 , x 0 ) (x_0,x_0,x_0) (x0x0x0)为待检查相邻像素的中心像素, r x y r_{xy} rxy r z r_z rz为用户选择的合并半径。所有满足上述不平等的像素 ( x , y , z ) (x,y,z) (xyz)将被视为需要合并的像素 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0y0z0)的邻居。

在链接过程中, S o F i A 2 SoFiA 2 SoFiA2将立即拒绝低于(或高于)用户指定的最小(或最大)尺寸标准的链接源,从而提供了一种基本的方法来消除噪声峰值或人工干扰造成的潜在错误检测。源的最小尺寸要求可以被分别用于空间和光谱维度的 l i n k e r . m i n S i z e X Y linker.minSizeXY linker.minSizeXY l i n k e r . m i n S i z e Z linker.minSizeZ linker.minSizeZ指定。同样,相应的 l i n k e r . m a x S i z e X Y linker.maxSizeXY linker.maxSizeXY l i n k e r . m a x S i z e Z linker.maxSizeZ linker.maxSizeZ选项可用于指定最大大小要求。

最后,链接器( l i n k e r linker linker)将设置一个质量标志来指示源是位于立方体的边缘附近还是接近空白像素。标志是一个简单的整数,取值为0(没有问题)、1(立方体的空间边缘附近)、2(立方体的光谱边缘附近)和4(接近空白像素附近)。当各自的结构位于源的合并半径内时,即使掩码没有直接接触边缘或任何空白像素,也会设置标志。标志值是附加的,例如,值5表示源同时在立方体的空间边缘和接近空白像素。

注意,可以通过设置 l i n k e r . e n a b l e = f a l s e linker.enable=false linker.enable=false来禁用链接器。在这种情况下,管道将在查找源之后终止,并且不会创建目录或源数据产品。因此,只有当用户只对源查找程序产生的原始掩码(设置输出)感兴趣时,禁用链接器才有用(设置 o u t p u t . w r i t e R a w M a s k = t r u e output.writeRawMask = true output.writeRawMask=true)。

图2: S o F i A 2 SoFiA 2 SoFiA2用于确定震源可靠性的三维参数空间中阳性(红色)和阴性(蓝色)探测分布的2D投影。黑点表示的是被认为超过90%可靠的阳性来源。浅灰色椭圆是核密度估计器中使用的三维高斯函数的1 σ \sigma σ、2 σ \sigma σ和3 σ \sigma σ轮廓,而深灰色虚线表示信噪比限值,在此限值下,不管源的可靠性如何,通常都会丢弃源。

六、 可靠性计算

可靠性计算提供了一种自动确定检测可靠性的方法,通过设置一个简单的可靠性阈值,丢弃所有被认为不可靠的源。这允许应用3至4倍于均方根噪声水平的非常低的源头发现阈值,而无需在产生的源头目录中处理大量虚假检测的风险。

S o F i A 2 SoFiA 2 SoFiA2的可靠性计算基于 S e r r a Serra Serra等人(2012)描述的方法。为了实现这一点,我们必须做出这样一个基本假设:一个数据立方体包含以零为中心的正态分布的随机噪声加上我们感兴趣的天文信号。进一步假设所有天文信号都具有正通量。如果我们对数据立方体应用一个阈值 S t h r e s h S_{thresh} Sthresh来检测所有带有 ∣ S i ∣ > S t h r e s h |S_i| >S_{thresh} Si>Sthresh的信号,我们可以得出这样的结论:所有带有负通量的信号必定是噪声峰值,而带有正通量的信号既可以是噪声峰值,也可以是真实的天文信号。

S o F i A 2 SoFiA 2 SoFiA2的可靠性计算比较积极和消极的密度检测在一个特定的参数空间, ( s m a x , s s u m , s m e a n ) (s_{max},s_{sum},s_{mean}) (smax,ssum,smean),其中 s m a x = S m a x / σ r m s s_{max} =S_{max} /\sigma_{rms} smax=Smax/σrms为通量密度峰值, s s u m = S s u m / σ r m s s_{sum} =S_{sum} /\sigma_{rms} ssum=Ssum/σrms通量密度总和, s m e a n = s s u m / n p i x s_{mean} =s_{sum} /n_{pix} smean=ssum/npix为穿过源的平均通量密度,等于总数除以像素数 n p i x n_{pix} npix。所有三个参数都由数据立方体的 R M S RMS RMS噪声水平( σ r m s \sigma_{rms} σrms)归一化。

与噪声峰值引起的错误检测相比,真实检测通常会填充不同的参数空间区域。通过比较参数空间中不同区域的正检测和负检测的密度,我们可以估计该区域中任何正检测为真的概率,
R = { n p o s − n n o g n p o s    f o r    n p o s ≥ n n e g 0      o t h e r w i s e R=\left\{ \begin{array}{lr} \frac{n_{pos}-n_{nog}}{n_{pos}}\ \ for\ \ n_{pos} \geq n_{neg}\\ 0\ \ \ \ otherwise \end{array} \right. R={nposnposnnog  for  nposnneg0    otherwise
其中 n p o s n_{pos} npos n n e g n_{neg} nneg分别为该区域的阳性和阴性检测数。如果我们只有阳性检测,则 R = 1 R= 1 R=1,所有来源都被认为是完全可靠的。另一方面,如果我们有相等数量的阳性和阴性检测,则 R = 0 R= 0 R=0,我们没有理由假定该区域的任何阳性检测都是真实的。注意,由于 R < 0 R< 0 R<0适用于 n n e g > n p o s n_{neg} >n_{pos} nneg>npos,在本例中我们只需设置 R = 0 R= 0 R=0

通过对参数空间中的单个数据点进行高斯核密度估计( K D E KDE KDE)来测量正检测和负检测的密度。三维高斯核的最优大小由负检测的协方差矩阵确定,假设负检测具有三维高斯分布,这可以从随机噪声引起的假检测中得到。在 K D E KDE KDE中使用的高斯核的相对大小可以通过使用 r e l i a b i l i t y . s c a l e K e r n a l reliability.scaleKernal reliability.scaleKernal选项应用一个恒定的尺度因子来控制。然后将该分析得到的阳性和阴性检测的密度输入公式3,以确定所有阳性检测的可靠性。

图2是可靠性分析的一个例子,其中正、负检测的密集簇标记了参数空间中由于噪声而被假检测所占据的区域。右上角的黑色噪声源是可靠度超过90%的正噪声源,与噪声峰值簇很好地分离。 S o F i A 2 SoFiA 2 SoFiA2根据用户的要求制作诊断图(选项 r e l i a b i l i t y . p l o t reliability.plot reliability.plot)。

图2右面板中的虚线表示恒定的综合信噪比 S N R m i n SNR_{min} SNRmin,受 r e l i a b i l i t y . m i n S N R reliability.minSNR reliability.minSNR选项控制。位于该线以下的所有检测,即检测
S s u m σ r m s N p i x Ω P S F < S N R m i n \frac{S_{sum}}{\sigma_{rms}\sqrt{N_{pix}\Omega_{PSF}}} \lt SNR_{min} σrmsNpixΩPSF Ssum<SNRmin
将自动从目录中删除,并在默认情况下赋予可靠性为零。这里, S s u m S_{sum} Ssum是整个检测的通量密度之和, σ r m s \sigma_{rms} σrms是数据立方体的全局 R M S RMS RMS噪声水平(假设为常数), N p i x N_{pix} Npix是构成检测的空间和光谱像素的总数, Ω P S F \Omega_{PSF} ΩPSF是波束立体角(以像素为单位)。

注意 为使 reliability.minSNR阈值有意义,相关的 WCS和波束信息必须从FITS头(关键字 BMAJ, BMINCDELT1)可得,并且波束必须不随位置或频率变化。如果没有光束信息,SoFiA 2将打印一个警告,并隐式假设Ω_PSF = 1,即光束大小等于像素大小。

可靠性计算的一个潜在问题是,如果天文源占用相同的参数空间,负伪影可能会降低它们的可靠性。这类问题可能来自连续体减法残差,或来自明亮连续体光源中看到的实际中性氢吸收。 S o F i A 2 SoFiA 2 SoFiA2为这个问题提供了一个解决方案,它允许用户指定一个被排除在可靠性分析之外的天空位置目录(使用可靠性。目录选项)。带有包含目录中任何位置的空间边界框的阴性检测将被排除在可靠性分析之外。这有助于减少连续体残差或中性氢吸收(通常与明亮的连续体源一起配置)对可靠性分析的影响,并减少被 S o F i A 2 SoFiA 2 SoFiA2错误地丢弃为不可靠的真实检测的数量。

目录文件必须包含精确的两列,列出要在本地坐标系中排除的天空位置的经度和纬度,以及输入数据立方体的单位(例如,以十进制表示的赤经和赤纬)。列可以用空格、制表符或逗号分隔,整行可以用#字符注释掉。请注意,虽然受影响的阴性检测将从可靠性分析本身中排除,但它们仍将保留在检测列表中,因此仍将出现在可靠性图中,尽管在这种情况下对周围的阳性检测没有影响。

七、 掩模膨胀

任何基于设置阈值的源寻找算法的问题是,它将排除位于阈值以下的源的任何发射,可能导致源掩模太小,从而错过源外部区域的一些通量。如果需要设置一个相当高的寻找源阈值(例如由于数据中的人为因素),这就变得特别成问题。

缓解漏通量问题的一种方法是向外增加源掩模,直到包含所有源通量。这就是 S o F i A 2 SoFiA 2 SoFiA2的掩模膨胀算法的目的。它的工作原理是不断地将掩码向外扩大,直到每次迭代中集成通量的相对增加低于用户设置的相对阈值,或者直到达到最大迭代次数(以最先出现的次数为例)。掩模沿谱轴和在空间平面内分别进行膨胀,在空间膨胀之前进行光谱膨胀。

空间迭代和谱迭代的最大次数可以通过默认值分别为10和5的 d i l a t i o n . i t e r a t i o n s X Y dilation.iterationsXY dilation.iterationsXY d i l a t i o n . i t e r a t i o n s Z dilation.iterationsZ dilation.iterationsZ参数来控制。相对阈值是通过 d i l a t i o n . t h r e s h o l d dilation.threshold dilation.threshold参数来设置的,当通量在一次迭代中增加时,膨胀立即停止,小于相对阈值乘以源的总通量。默认阈值为0.001,即总通量的0.1%。注意 d i l a t i o n . t h r e s h o l d dilation.threshold dilation.threshold为正值时,对于总通量为正或负的源,阈值将正确地工作。当 d i l a t i o n . t h r e s h o l d dilation.threshold dilation.threshold为负时将完全禁用流量检查,并且始终执行最大迭代次数。

S o F i A   2 SoFiA\ 2 SoFiA 2的掩模膨胀算法在空间平面上使用一个圆形的膨胀核,其半径在每次迭代中增加1个像素。这确保了在大致保持源的整体形状的同时,在所有方向上尽可能均匀地发生膨胀。沿谱轴的膨胀只是在每次迭代中将掩模扩展1个通道。

所有相关的源参数将在掩模膨胀期间更新。此外,如果在膨胀过程中一个源的掩码与相邻源的掩码接触,质量标志将被更新为8。注意,属于不同源的像素通常会被排除在掩模膨胀之外。因此,检查掩码膨胀后的标志值是识别相邻源可能连接的情况和可能是同一对象的一部分的重要方法。

最后,掩模膨胀应谨慎使用,因为它有可能引入系统的正通量偏置。特别是,如果 S + C S+C S+C查找器的检测阈值非常低,在 3 − 4 σ 3-4\sigma 34σ范围内,通常不需要掩码膨胀。

表1:SoFiA 2测量的源参数表。注意统计不确定性之前有err_。例如,err_f_sum将是总的通量密度的统计不确定性。

参数符号描述
Namename源的名称。
Identifierid标识源的唯一整数。
Positionx, y, z源的通量加权质心位置(以像素表示)。
Bounding boxx_min, x_max,
y_min, y_max,
z_min, z_max
包围框的源在𝑥,𝑦和𝑧的像素,包括限制本身。
Number of pixelsn_pix源覆盖的空间和光谱像元总数。
Flux densityf_min, f_max数据立方体本地通量单元中的最小和最大通量密度。
Fluxf_sum数据立方体的原生流量单元中流经源的流量密度之和。
Reliabilityrel源可靠性取值范围为0(不可靠)~ 1(可靠)。
Flagflag指示源是否位于立方体的空间(1)或光谱(2)边缘附近,接近空白像素(4)或邻近另一个源(8)的标志。标志值是相加的。
Noise levelrms在数据立方体的本地通量单元中,源的边界盒内的局部噪声的均方根值。
Line widthw_20, w_50在峰值通量密度的20%和50%时的谱线宽度。
Ellipse fit: sizeell_maj,
ell_min
椭圆的长轴和短轴尺寸以像素为单位拟合到综合通量密度地图。像素按其通量密度加权。
ell3s_maj,
ell3s_min
与ell_maj和ell_min相同,但只包含大于本地RMS 3倍的像素,并且没有加权。
Ellipse fit: angleell_pa将ell∘u maj的角度定位在−90∘到+90∘的范围内,其中0∘指向上。
ell3s_pa和ell_pa一样,但作用于ell3s_maj。
Kinematicskin_pa运动主要轴线的位置角的范围为0∘到360∘,0∘方向向上。对应的方向是指被光源覆盖的光谱通道范围上端的物体的侧面
WCS spatialra, dec / l, b在数据立方体的本地坐标中,源位置的赤经和赤纬,或经度和纬度;通常单位为度。
WCS spectralfreq / v_rad /
v_opt / v_app
在数据立方体的本地坐标中源位置的频率或速度;通常以Hz或m/s表示。

八、 源参数化

一旦连接、可靠性过滤(可选)和掩码膨胀(也可选)完成, S o F i A   2 SoFiA\ 2 SoFiA 2将能够在一个称为源参数化(或源特性)的过程中测量一系列基本源参数。源参数是通过源掩码测量的,即包括根据掩码被认为是源的一部分的所有像素。表1概述了 S o F i A   2 SoFiA\ 2 SoFiA 2测量的所有源参数。下面解释了用于测量一些不太直观的参数的方法。

参数化的一个重要方面是,默认情况下 S o F i A   2 SoFiA\ 2 SoFiA 2将使用数据立方体的原生像素和通量密度值测量所有参数。因此,位置将以像素为单位提供,线宽以通道为单位提供,综合通量仅作为源上所有通量密度的总和,等等。但是,可以通过设置 p a r a m e t e r . w c s parameter.wcs parameter.wcs p a r a m e t e r . p h y s i c a l parameter.physical parameter.physical选项为true来启用向物理上有意义的参数的转换。前者将使用 w c s l i b wcslib wcslib和相关的 F I T S FITS FITS头部信息将像素坐标和通道坐标转换为适当的世界坐标系统( W C S WCS WCS),而后者将相关参数乘以光谱通道宽度,将空间整合参数除以波束立体角,以修正波束大小引起的空间像元相关性。

注意 为使如果 parameter.physical = true那么SoFiA 2将尝试自动将一些参数转换成物理单位的隐式假设下 光束大小中指定的(符合标题关键词BMAJ和BMIN)是正确的,不改变位置或频率和不相关的 光谱通道和光谱分辨率是相等的到通道宽度。如果这些假设中的任何一个是错误的,那么所得到的物理参数,如积分通量,可能是错误的。 SoFiA 2基本上没有纠正仪器拓宽的线宽

8.1 源位置

测量数据立方体中源的三维位置( x ˉ , y ˉ , z ˉ \bar{x},\bar{y},\bar{z} xˉ,yˉ,zˉ)是最基本的参数化步骤之一,最有意义的方法是确定源的通量加权质心,这相当于 x x x y y y z z z中的第一个力矩,因此
x ˉ = ∑ i x i S i ∑ i S i \bar{x} = \frac{\sum_ix_iS_i}{\sum_iS_i} xˉ=iSiixiSi
对于 y ˉ \bar{y} yˉ z ˉ \bar{z} zˉ也是如此,其中的总和是对源的所有像素的, S i S_i Si是以像素 i i i测量的通量密度。请注意,为了防止负信号影响质心测量, S o F i A   2 SoFiA\ 2 SoFiA 2在测量正(负)源位置和正(负)源不确定性时,只使用正(负)通量密度像素。源位置将以相对于完整数据立方体或(如果指定)请求的子区域的原始像素坐标提供。通过启用 p a r a m e t e r . w c s parameter.wcs parameter.wcs选项,可以创建额外的天体和速度/频率坐标。

在假设统计误差的唯一来源是图像中的高斯噪声以及我们在适用误差传播定律所需的线性范围内操作的基本假设下,应用误差传播定律可以导出通量加权质心测量的统计不确定度。质心的方差如下所示
σ x ˉ 2 = ∑ i ( ∂ x ˉ ∂ S i ) 2 σ S i 2 \sigma_{\bar{x}}^2=\sum_i(\frac{\partial\bar{x}}{\partial{S_i}})^2\sigma_{S_i}^2 σxˉ2=i(Sixˉ)2σSi2
σ y ˉ \sigma_{\bar{y}} σyˉ σ z ˉ \sigma_{\bar{z}} σzˉ也是如此。通过应用商规则求解偏导数,并假设整个图像的噪声级为常数,即 σ S i = σ r m s \sigma_{S_i}=\sigma_{rms} σSi=σrms,我们得到
σ x ˉ 2 = ( σ r m s S t o t ) 2 ∑ i ( x i − x ˉ ) 2 \sigma_{\bar{x}}^2=(\frac{\sigma_{rms}}{S_{tot}})^2\sum_i(x_i-\bar{x})^2 σxˉ2=(Stotσrms)2i(xixˉ)2
对于 σ y ˉ \sigma_{\bar{y}} σyˉ σ y ˉ \sigma_{\bar{y}} σyˉ也是一样,其中 S t o t = ∑ i S i S_{tot}=\sum_iS_i Stot=iSi是穿过源的总通量密度。应注意的是,公式7仅在计算质心时未对数据应用通量阈值的情况下才是严格有效的,因为任何阈值都会导致额外的混叠偏差,而公式7在其当前形式中并未说明。

等式7的另一个问题是没有考虑到相邻像素中的通量密度值可能由于有限的光束尺寸而相关的事实。如果 p a r a m e t e r . p h y s i c a l parameter.physical parameter.physical设置为 e n a b l e d enabled enabled S o F i A   2 SoFiA\ 2 SoFiA 2将另外将不确定性乘以光束立体角 P S F PSF PSF的平方根,以校正相关像素的影响,从而
σ x ˉ 2 = Ω P S F ( σ r m s S t o t ) 2 ∑ i ( x i − x ˉ ) 2 \sigma_{\bar{x}}^2=\Omega_{PSF}(\frac{\sigma_{rms}}{S_{tot}})^2\sum_i(x_i-\bar{x})^2 σxˉ2=ΩPSF(Stotσrms)2i(xixˉ)2
σ y ˉ \sigma_{\bar{y}} σyˉ σ z ˉ \sigma_{\bar{z}} σzˉ也是如此。光束立体角来自输入数据立方体标题中的 B M A J BMAJ BMAJ B M I N BMIN BMIN关键字,并以像素为单位测量。进一步假设它在数据立方体覆盖的整个空间和光谱范围内是常数,并由椭圆高斯描述(见等式12)。应注意的是,公式8仅为真实统计不确定度的近似值,其准确度应在30%以内。为了获得更准确的位置不确定性,需要进行全面的协方差分析或模拟数据测试。

8.2 通量密度

源的最小和最大通量密度简单地定义为
S m i n = m i n S i ,    S m a x = m a x S i S_{min}=min{S_i},\ \ S_{max}=max{S_i} Smin=minSi,  Smax=maxSi
最小和最大通量密度的统计不确定度仅由数据的均方根噪声 σ r m s \sigma_{rms} σrms给出,假设噪声在整个源范围内是恒定的。

应注意的是,在存在噪声的情况下,选择最大通量密度值将导致系统正偏差,其重要性将取决于源的形状和范围。这是因为最大通量密度更可能与正噪声峰值相一致,而不是与负噪声峰值相一致。因此,需要应用形态学相关的统计偏差校正来校正该偏差。

8.3 通量

S o F i A   2 SoFiA\ 2 SoFiA 2通过对源所覆盖的所有像素的通量密度值求和得出总通量,因此
S s u m = ∑ i S i S_{sum}=\sum_iS_i Ssum=iSi
结果值将以数据立方体的本机通量单位表示,通常为 J y / b e a m Jy/beam Jy/beam,尚未进行校正,以说明数据的束立体角或光谱通道宽度。如果 p a r a m e t e r . p h y s i c a l parameter.physical parameter.physical 选项被启用,并且数据立方体的本机通量密度单位( B U N I T BUNIT BUNIT)是 J y / b e a m Jy/beam Jy/beam,那么 S o F i A   2 SoFiA\ 2 SoFiA 2将一个光谱通道的总通量乘以宽度 z z z, 除以光束的立体角 Ω P S F \Omega_{PSF} ΩPSF
S s u m = Δ z Ω P S F ∑ i S i S_{sum}=\frac{\Delta{z}}{\Omega_{PSF}}\sum_iS_i Ssum=ΩPSFΔziSi
根据 C D E L T 3 CDELT3 CDELT3标题关键字和存储在数据立方体标题中的波束信息( B M A J BMAJ BMAJ B M I N BMIN BMIN关键字)导出。将使用 C U N I T 3 CUNIT3 CUNIT3关键字指定的立方体的本机光谱单位。假设光束由二维椭圆高斯函数描述,光束立体角计算如下:
Ω P S F = π ϑ a ϑ b a ln ⁡ ( 2 ) \Omega_{PSF}=\frac{\pi\vartheta_a\vartheta_b}{a\ln(2)} ΩPSF=aln(2)πϑaϑb
式中, ϑ a \vartheta_a ϑa ϑ b \vartheta_b ϑb是高斯光束长轴和短轴半最大值处的全宽,单位为像素(不是弧秒)。此外,假设光束在数据立方体覆盖的空间和光谱范围内是恒定的。

积分通量的统计不确定度原则上可通过将误差传播定律应用于等式10得出,因此
σ S s u m 2 = ∑ i ( ∂ S s u m ∂ S i ) σ S i 2 = ∑ i σ S i 2 = N p i x σ r m s 2 \sigma_{S_{sum}}^2=\sum_i(\frac{\partial{S_{sum}}}{\partial{S_i}})\sigma_{S_i}^2=\sum_i\sigma_{S_i}^2=N_{pix}\sigma^2_{rms} σSsum2=i(SiSsum)σSi2=iσSi2=Npixσrms2
其中, N p i x N_{pix} Npix是集成信号的像素总数。在最后一步中,我们再次假设噪声在整个声源范围内是恒定的。如前所述,这还没有针对光谱通道宽度或由于光束而导致的空间像素的相关性进行校正。如果我们将误差传播定律应用于完全校正的等式 11 11 11,并同时考虑噪声的空间相关性,则我们得到
σ S s u m = N p i x Ω P S F Δ z σ r m s \sigma_{S_{sum}}=\sqrt{\frac{N_{pix}}{\Omega_{PSF}}}\Delta{z}\sigma_{rms} σSsum=ΩPSFNpix Δzσrms
源的真实积分通量的不确定性。应注意的是, S o F i A   2 SoFiA\ 2 SoFiA 2得出的纯统计通量不确定性通常不能代表通量测量的真实误差。在大多数情况下,积分通量误差主要是由系统误差引起的,这些系统误差明显大于随机噪声引起的小的统计误差。因此,实际的误差分析必须基于数值方法,例如将已知通量的模型源注入数据立方体。

8.4 线条宽度

S o F i A 2 SoFiA 2 SoFiA2将在剖面峰值通量密度的20%和50%(分别为 w 20 w20 w20 w 50 w50 w50)的水平上测量源的综合光谱剖面的宽度。该算法将从光谱的两个边缘向内移动,直到发现通量密度增加到峰值的20%或50%以上。光谱轮廓两侧这两个点之间的间隔定义了线的宽度。为了提高测量精度, S o F i A   2 SoFiA\ 2 SoFiA 2将在通量密度超过各自阈值水平的两个通道之间进行线性插值。

应注意,这种测量 w 20 w20 w20 w 50 w50 w50的方法受到频谱中噪声电平的强烈影响,并且由于单个噪声峰值的影响,线宽可能被高估。这将在一定程度上缓解的事实,峰值通量密度通常会被高估,以及在噪声的存在。更准确的测量线宽的方法是将解析函数拟合到光谱轮廓,例如,简单轮廓的高斯函数,或双喇叭轮廓的忙函数。

8.5 椭圆拟合

椭圆拟合的目的是获得源的角度大小和方向的测量值。将椭圆拟合到源的二维图像的最快和最简单的方法之一是通过空间矩分析。让我们把图像的二阶矩定义为
M x x = ∑ i ( x i − x ˉ ) 2 S i ∑ i S i , M_{xx}=\frac{\sum_i(x_i-\bar{x})^2S_i}{\sum_iS_i}, Mxx=iSii(xixˉ)2Si,

M y y = ∑ i ( y i − y ˉ ) 2 S i ∑ i S i , M_{yy}=\frac{\sum_i(y_i-\bar{y})^2S_i}{\sum_iS_i}, Myy=iSii(yiyˉ)2Si,

M z z = ∑ i ( z i − z ˉ ) 2 S i ∑ i S i , M_{zz}=\frac{\sum_i(z_i-\bar{z})^2S_i}{\sum_iS_i}, Mzz=iSii(zizˉ)2Si,

其中,对源的所有空间像素 i i i求和,( x ˉ , y ˉ \bar{x},\bar{y} xˉ,yˉ)是如等式5中所定义的源的空间质心。椭圆的参数如下所示:
a = 2 ( M x x + M y y + ( M x x − M y y ) 2 + 4 M x y 2 ) (18) a=\sqrt{2(M_{xx}+M_{yy}+\sqrt{(M_{xx}-M_{yy})^2+4M_{xy}^2})}\tag{18} a=2(Mxx+Myy+(MxxMyy)2+4Mxy2 ) (18)

b = 2 ( M x x + M y y − ( M x x − M y y ) 2 + 4 M x y 2 ) , (19) b=\sqrt{2(M_{xx}+M_{yy}-\sqrt{(M_{xx}-M_{yy})^2+4M_{xy}^2})},\tag{19} b=2(Mxx+Myy(MxxMyy)2+4Mxy2 ) ,(19)

θ = 1 2 arctan ⁡ ( 2 M x y M x x − M y y ) , (20) \theta=\frac{1}{2}\arctan(\frac{2M_{xy}}{M_{xx}-M_{yy}}),\tag{20} θ=21arctan(MxxMyy2Mxy),(20)

其中, a a a b b b分别是完整的长轴和短轴尺寸,而𝜃是椭圆的位置角。如果源是一个二维椭圆高斯函数,那么 a / 2 a/2 a/2 b / 2 b/2 b/2将与沿高斯长轴和短轴的标准差 σ a \sigma_a σa σ b \sigma_b σb相同,因为二阶矩描述了数据的色散。

S o F i A   2 SoFiA\ 2 SoFiA 2对每个源的moment-0贴图执行两种不同类型的空间椭圆拟合。它首先将一个椭圆拟合到具有正通量密度的矩映射的所有像素上,用每个像素的通量密度对每个像素进行加权。第二次拟合在矩图的所有像素上执行,信噪比大于3,并且每个像素的权重相等。前者通常会将更多的权重放在光源明亮的中心区域,而后者通常会在 3 σ 3\sigma 3σ的水平上更好地描述对象的整体形状和大小,尽管这在很大程度上取决于对象的表面亮度相对于数据的噪声水平。

应注意,以这种方式导出的椭圆大小和方向角将相对于像素网格,而不是相对于与数据立方体相关联的世界坐标系。椭圆的长轴和短轴将以像素为单位,而方向角将以度为单位,以数学上的积极意义从−90∘(右)穿过0∘(上)到+90∘(左)。

8.6 运动长轴

S o F i A   2 SoFiA\ 2 SoFiA 2通过首先计算每个通道中发射的质心来测量源运动主轴的位置角,只考虑到局部噪声水平三倍以上的值。如果源是旋转的星系盘,那么产生的点应该在天空上形成一条直线,标记星系的运动主轴。为了提取位置角, S o F i A   2 SoFiA\ 2 SoFiA 2将使用 D e m i n g Deming Deming回归(也称为正交回归)拟合直线,并将结果坡度转换为适当的位置角度,以度表示,使 0 ∘ 0^\circ 0点向上,由此产生的方向对应于银河系的一侧,该侧占据源覆盖的通道范围的上端。

注意,用户有责任在必要时将位置角旋转 18 0 ∘ 180^\circ 180以符合银河系接近或后退侧的所需定义。这还将取决于数据立方体是以频率或速度为单位提供的。还应注意,位置角将与数据立方体的像素网格相对,而不是基础的天体坐标系。

九、 输出产品

S o F i A   2 SoFiA\ 2 SoFiA 2提供了从源查找和参数化结果生成的各种不同的输出产品,这些产品不仅限于源目录。所有输出产品都将写入与输入数据文件相同的目录,除非用户指定了不同的输出目录( o u t p u t . d i r e c t o r y output.directory output.directory目录选项)。同样,输入数据文件的名称将用作所有输出产品的基名称,除非指定了不同的基名称( o u t p u t . f i l e n a m e output.filename output.filename文件名选项)。输出文件名由基本名称、下划线(\)和产品标识符(如目录的cat)组成。例如,如果输入文件名是 n g c _ 300 _ m o s a i c . f i t s ngc\_300\_mosaic.fits ngc_300_mosaic.fits,则输出目录将命名为 n g c _ 300 _ m o s a i c _ c a t . t x t ngc\_300\_mosaic\_cat.txt ngc_300_mosaic_cat.txt等等。

这个 o u t p u t . o v e r w r i t e output.overwrite output.overwrite选项允许用户决定是否自动覆盖现有文件。如果设置为false, S o F i A   2 SoFiA\ 2 SoFiA 2将在管道的开头显式检查是否存在任何输出文件,如果文件已经存在,则会以错误消息终止。

9.1 源目录

S o F i A   2 SoFiA\ 2 SoFiA 2提供的最重要的输出文件是管道运行产生的源目录。源目录包含所有检测到的源及其基本参数(如位置、线宽、通量等)的列表。目录以三种不同的可能格式提供:

  • ASCII( _ c a t . t x t \_cat.txt _cat.txt)——纯文本文件,包含人类可读的ASCII格式的源目录。
  • XML( _ c a t . x m l \_cat.xml _cat.xml)——XML文件,包含VO表格式的源目录,用于使用与VO兼容的工具(如 t o p c a t topcat topcat)进行处理。
  • SQL( _ c a t . s q l \_cat.sql _cat.sql)——包含用于创建SQL数据库表并将源参数插入该表的命令的文件。

ASCII目录旨在使用户能够用肉眼快速检查输出目录,但可能不适合定量分析,因为某些列的精度可能会受到限制。XML和SQL目录更适合对源参数进行数值分析,特别是与VO兼容的分析和可视化工具结合使用,因为所有参数都以完全可用的精度存储。

XML目录还定义了统一内容描述符(UCD),允许符合VO的软件工具自动确定目录的相关列,例如用于提取天空位置。SQL目录可以导入任何SQL数据库。它将尝试创建一个名为 S o F i A C a t a l o g u e SoFiA Catalogue SoFiACatalogue的新数据表,并将所有源的测量参数插入该表中。必须编辑目录文件才能更改默认表名。

9.2 图像产品

除了目录外, S o F i A   2 SoFiA\ 2 SoFiA 2还可以制作一系列图像产品,以协助评估和解释震源发现结果。其中包括:

  • 噪声立方体( _ n o i s e . f i t s \_noise.fits _noise.fits)——包含由局部噪声缩放算法测量的RMS噪声级的三维立方体。

  • 过滤立方体( _ f i l t e r e d . f i t s \_filtered.fits _filtered.fits)——预处理(如标记或噪声缩放)后的三维数据立方体副本。

  • 遮罩立方体( _ m a s k . f i t s \_mask.fits _mask.fits)——由 S o F i A   2 SoFiA\ 2 SoFiA 2建立的最终 3 D 3D 3D源检测掩模。遮罩立方体中所有检测到的像素都设置为目录中列出的各自的源ID,而未检测到的像素的值为0。

  • 遮罩图像( _ m a s k − 2 d . f i t s \_mask-2d.fits _mask2d.fits)——3D遮罩立方体的光谱投影2d图像,以显示哪些空间像素包含源发射。注意,在2D掩模中,图像源可以隐藏在其他源之后,从而使得它们的源id不可见。

  • 原始遮罩立方体( _ m a s k − r a w . f i t s \_mask-raw.fits _maskraw.fits)——在链接和过滤之前由源查找算法创建的原始二进制源检测掩码。原始掩模将包含源查找器最初拾取的所有像素(包括具有负通量的像素),因此主要用于调试目的。检测到的像素值为1,所有其他像素值为0。

  • 矩映射( _ m o m 0. f i t s , _ m o m 1. f i t s , _ m o m 2. f i t s \_mom0.fits, \_mom1.fits, \_mom2.fits _mom0.fits,_mom1.fits,_mom2.fits)——数据立方体的第0、第1和第2光谱矩在源掩码上的2D图像。所有数据将用于第0时刻,而第1和第2时刻将仅包括正通量密度的通道。

  • 航道图( _ c h a n . f i t s \_chan.fits _chan.fits)——2D图像,显示在每个空间中产生第0个谱矩的通道数。

请注意,需要通过在输出模块中设置相应的选项,在参数文件中显式启用每个数据产品的创建。

默认情况下,所有输出图像都将使用本机像素和通量密度单位。通过启用 p a r a m e t e r . w c s parameter.wcs parameter.wcs选项,用户可以选择通过将光谱通道转换为频率或速度单位的世界坐标,以适当的物理单位创建所有矩贴图。为此,标头中的WCS信息必须准确,否则相关的映射值可能不正确。

9.3 小方块

除了第9.2节中介绍的全局图像产品外, S o F i A   2 SoFiA\ 2 SoFiA 2还能够生成每个检测到的源(所谓的 c u b e l e t s cubelets cubelets)和相关的源特定数据产品的剪切。它们存储在一个目录中,该目录的名称是基名称,后跟 _ c u b e l e t s \_cubelets _cubelets.每个源特定文件的名称遵循以下方案:

b a s e n a m e _ i d _ p r o d . t y p e basename\_id\_prod.type basename_id_prod.type

其中 b a s e n a m e basename basename是文件基名称, i d id id是目录中的源 i d id id p r o d prod prod是产品标识符, t y p e type type是文件类型后缀。例如,从输入数据立方体获得的目录中的源编号3的立方体 n g c _ 300 _ m o s a i c . f i t s ngc\_300\_mosaic.fits ngc_300_mosaic.fits将被命名为 n g c _ 300 _ m o s a i c _ 3 _ c u b e . f i t s ngc\_300\_mosaic\_3\_cube.fits ngc_300_mosaic_3_cube.fits存储在子目录 n g c _ 300 _ m o s a i c _ c u b e l e t s ngc\_300\_mosaic\_cubelets ngc_300_mosaic_cubelets中。以下列表概述了 S o F i A 2 SoFiA 2 SoFiA2提供的各个源特定数据产品:

  • Cubelet( _ c u b e . f i t s \_cube.fits _cube.fits)——包含原始数据立方体源的切口的小型三维数据立方体。_
  • Mask( _ m a s k . f i t s \_mask.fits _mask.fits)——小3D立方体,包含源遮罩的切口。属于源的像素的值为1,而所有其他像素都设置为0,包括属于其他源的像素。
  • Moment maps( _ m o m 0. f i t s , _ m o m 1. f i t s , _ m o m 2. f i t s \_mom0.fits, \_mom1.fits, \_mom2.fits _mom0.fits,_mom1.fits,_mom2.fits)——源 C u b e l t Cubelt Cubelt穿过源遮罩的第0、1和2光谱矩的2D图像。注意,所有数据将在第0时刻使用,而第1和第2力矩仅包括通量密度大于 o u t p u t . t h r e s h o l d M o m 12 output.thresholdMom12 output.thresholdMom12乘以本地RMS噪声级。
  • Channel map( _ c h a n . f i t s \_chan.fits _chan.fits)——显示每个空间像素中贡献0小时光谱矩的信道数的二维图像。
  • Spectrum( _ s p e c . t x t \_spec.txt _spec.txt)——文本文件,包含源掩码上源的综合光谱。对每个光谱通道有贡献的空间像素的数目也被记录,从而允许导出不确定性。

就所有的输出产品而言 p a r a m e t e r . w c s parameter.wcs parameter.wcs以及 p a r a m e t e r . p h y s i c a l parameter.physical parameter.physical可以启用选项将力矩贴图和光谱转换为世界坐标,并将所有光谱分别除以梁立体角。此外,用户可以通过设置 o u t p u t . m a r g i n C u b e l e t s output.marginCubelets output.marginCubelets. 默认值为0,即图像和光谱将被紧密剪切,而不在源周围添加额外的填充,这将最小化文件大小和磁盘存储要求。

9.4 诊断输出

sofia2可以为诊断目的生成一些额外的输出文件,这些文件可能有助于评估源代码查找运行的质量和成功率。其中包括:

  • 可靠性图( _ r e l . e p s \_rel.eps _rel.eps)——以EPS格式总结可靠性过滤器结果的图。这有助于评估 S o F i A   2 SoFiA\ 2 SoFiA 2进行的可靠性计算的质量(见第6节)。

  • 自动标记日志( _ f l a g s . l o g \_flags.log _flags.log)——列出自动标记器标记的光谱通道和空间像素的日志文件(见第3.1节)。

请注意,只有在用户明确请求时,才会生成这些诊断文件。

十、 小技巧

10.1 2D图像

如前所述, S o F i A   2 SoFiA\ 2 SoFiA 2能够处理2D图像,例如无线连续地图。这些图像在内部将被视为三维立方体,其轴尺寸在频率维度中为1。为了让 S o F i A   2 SoFiA\ 2 SoFiA 2在2D图像上正常工作,需要一些特殊的设置。最重要的是, S + C S+C S+C取景器的设置将需要调整,以通过设置禁用沿频率轴的平滑 s c f i n d . k e r n e l s Z = 0 scfind.kernelsZ = 0 scfind.kernelsZ=0. 因此,只能使用$scfind.kernelsXY $选项。

同样,必须调整链接器设置以考虑输入的2D性质。特别是,沿频率轴的最大合并半径必须设置为 l i n k e r . r a d i u s Z = 1 linker.radiusZ =1 linker.radiusZ=1,以确保在其余两个维度中正确应用空间合并半径。此外,沿频率轴的最小源大小必须设置为 l i n k e r . m i n S i z e Z = 1 linker.minSizeZ =1 linker.minSizeZ=1,因为2D源的光谱范围不能大于一个通道。

从2D图像生成的源目录还将包含仅与3D立方体相关的参数,例如源的频率或其谱线宽度。这些参数应该被忽略,并且在许多情况下可能被设置为默认值零。如果输入图像是2D, S o F i A   2 SoFiA\ 2 SoFiA 2原则上不会产生某些输出数据产品。省略的产物包括积分光谱以及第一和第二光谱矩图,尽管将生成第0矩,有效地包含输入图像的屏蔽副本。

总之,处理2D图像时要记住的最重要一点是将频率相关的控制参数设置为以下默认值:

s c f i n d . k e r n e l s Z = 0 scfind.kernelsZ = 0 scfind.kernelsZ=0
l i n k e r . m i n S i z e Z = 1 linker.minSizeZ = 1 linker.minSizeZ=1
l i n k e r . r a d i u s Z = 1 linker.radiusZ = 1 linker.radiusZ=1

类似的限制适用于可选方法的频率相关参数,例如局部噪声缩放算法。

10.2 吸收线

S o F i A   2 SoFiA\ 2 SoFiA 2用于探测hi发射线,但原则上可用于在数据立方体中搜索光谱吸收信号。为此,需要通过启用 i n p u t . i n v e r t input.invert input.invert 索非亚2号的选择。应注意的是,在H I吸收和发射都存在于源中的情况下,吸收特征的提取可能会失败,因为 S o F i A   2 SoFiA\ 2 SoFiA 2默认情况下会将显著的正信号和负信号合并到相同的检测中。

10.3 提取子立方体

虽然 S o F i A   2 SoFiA\ 2 SoFiA 2最初是一个源查找管道,但它也可以用来从一个大的 F I T S FITS FITS数据立方体中简单地提取一个较小的子区域。这可以通过明确禁用除以下设置外的所有模块和输出产品来实现:

i n p u t . d a t a = < d a t a _ c u b e > input.data = <data\_cube> input.data=<data_cube>
i n p u t . r e g i o n = < r e q u e s t e d _ r e g i o n > input.region = <requested\_region> input.region=<requested_region>
o u t p u t . w r i t e F i l t e r e d = t r u e output.writeFiltered = true output.writeFiltered=true

其中, < d a t a _ c u b e > <data\_cube> <data_cube>是数据立方体的输入,而 < r e q u e s t e d _ r e g i o n > <requested\_region> <requested_region>是要提取的子区域。假设所有其他设置都被禁用,在需要时将其设置为 f a l s e false false,那么 S o F i A   2 SoFiA\ 2 SoFiA 2只需从输入多维数据集中读取所请求的子区域,并将其直接写入一个输出文件中,并过滤额外的后缀 f i l t e r e d _filtered filtered。管道将在此后终止,因为没有其他事情可以做。

请注意,提取子立方体只需要存储子立方体所需的内存。因此,可以从远大于机器上可用内存量的 F I T S FITS FITS立方体中提取足够小的子区域。

10.4 Python中的源目录

由于 A s t r o p y Astropy Astropy包包含一个用于处理 V O T a b l e VOTable VOTable文件的模块,因此可以直接将 S o F i A SoFiA SoFiA源目录以 X M L XML XML格式加载到 P y t h o n Python Python中。这可以通过以下代码行来完成(记住要替换 c a t a l o g u e . x m l catalogue.xml catalogue.xml使用您的实际目录文件名):

from astropy.io.votable import parse_single_table
table = parse_single_table("catalogue.xml")

这将创建一个包含完整目录的 A s t r o p y Astropy Astropy表对象。然后可以通过 t a b l e table table对象的 a r r a y array array成员访问目录的各个条目,该成员将返回一个2维 n u m p y numpy numpy数组,其中包含目录的所有行和列。然后,可以通过标准数组索引访问各个行、列和条目。例如,

table.array[0]

将返回包含目录第一行的1D数组,依此类推。

A 控制参数

本附录系统描述了 S o F i A   2 SoFiA\ 2 SoFiA 2接受的控制参数,按主题分组。

A.1 总则

参数类型默认值描述
pipeline.pedanticbooltrue,falsetrue如果设置为true,则如果在输入参数文件中遇到未知参数名,管道将终止并显示错误消息。如果设置为false,则将忽略未知参数。
pipeline.threadsint ≥ 0 \geq0 00设置允许 S o F i A SoFiA SoFiA中的多线程算法使用的最大并行线程数。如果设置为0(默认值),则 O M P _ N U M _ T H R E A D S OMP\_NUM\_THREADS OMP_NUM_THREADS环境变量用于控制线程数。如果该值等于(或超过)可用线程数,则将使用所有CPU内核,从而以最大CPU负载为代价最小化管道的运行时间。
pipeline.verbosebooltrue,falsefalse确定管道生成的输出消息的级别。通过将该值设置为true,可以启用其他警告消息。

A.2 输入

参数类型默认值描述
input.datastring要在其上运行源查找器的输入数据多维数据集的名称。必须提供数据文件的绝对路径。如果只指定了文件名,管道将假定该文件位于当前工作目录中。目前,仅支持FITS格式。
input.gainstring包含图像增益的可选数据立方体的名称。如果指定,输入数据立方体将在源参数化之前除以增益立方体,以确保提取正确的通量值。增益多维数据集必须与输入数据多维数据集具有相同的维度。必须提供增益文件的绝对路径。如果只指定了文件名,管道将假定该文件位于当前工作目录中。目前,仅支持FITS格式。
input.invertbooltrue,falsefalse如果设置为true,则在处理之前反转数据立方体。这在搜索负信号而不是正信号(如吸收线)时非常有用。请注意,在这种情况下,所有与通量相关的参数和贴图也将反转,因此是正的而不是负的。
input.maskstring输入掩码多维数据集的文件名。源查找器检测到的任何其他像素都将添加到输入掩码中。如果来自两个不同源findin运行的结果应该组合到一个掩码中,那么这将非常有用。掩码多维数据集的维度必须与输入数据多维数据集的维度相同。必须提供掩码文件的绝对路径。如果只指定了文件名,管道将假定该文件位于当前工作目录中。目前,仅支持FITS格式。
input.noisestring包含图像中噪声级的可选数据立方体的名称。如果指定,输入数据立方体将在源查找之前除以噪声立方体,以确保可以应用恒定的源查找阈值。噪波多维数据集的维度必须与输入数据多维数据集的维度相同。必须提供噪声文件的绝对路径。如果只指定了文件名,管道将假定该文件位于当前工作目录中。目前,仅支持FITS格式。请注意,可以应用噪波立方体或权重立方体,但不能同时应用两者。
input.regionlist要搜索的输入数据立方体的区域。只有指定的区域将被加载到内存中并进行处理。区域必须包含以下格式的六个逗号分隔的整数值:x_min、x_max、y_min、y_max、z_min、z_max(均以像素为单位,以0为基础)。如果没有指定区域,则将加载整个数据立方体。
input.weightsstring包含图像权重的可选数据立方体的名称。如果指定,输入数据立方体将在源查找之前乘以权重立方体的平方根,以确保可以应用恒定的源查找阈值。权重多维数据集的维度必须与输入数据多维数据集的维度相同。必须提供权重文件的绝对路径。如果只指定了文件名,管道将假定该文件位于当前工作目录中。目前,仅支持FITS格式。请注意,可以应用噪波立方体或权重立方体,但不能同时应用两者。

A.3 预处理

参数类型默认值描述
contsub.enablebooltrue,falsefalse如果启用,SoFiA将通过拟合并减去0阶(偏移)或1阶(偏移+斜率)多项式,尝试在源查找之前从数据立方体中减去任何剩余的连续发射。多项式的阶由contsub.order定义
contsub.orderint0 … 10连续相减中多项式的阶contsub.enable 设置为true。对于简单偏移可以为0,对于偏移+坡度可以为1。目前不支持更高的订单。
contsub.paddingint ≥ 0 \geq0 03应用于从配合中排除的通道任一侧的附加填充量(通道中)。
contsub.shiftint ≥ 1 \geq1 14在自减法之前,频谱将被移动(在两个方向上对称)的通道数。
contsub.thresholdfloat ≥ 0.0 \geq0.0 0.02.0相对剪裁阈值。通量密度>contsub.threshold 次噪声将被剪裁并排除在多项式拟合之外。
flag.autostringtrue,false,channels,pixelsfalse如果设置为true,SoFiA将尝试根据其RMS噪声水平自动标记受干扰或人工制品影响的光谱通道和空间像素。如果设置为通道,则仅标记光谱通道。如果设置为像素,只会标记空间像素。如果设置为false,将禁用自动标记。详情请参阅用户手册。
flag.catalogstring目录文件的路径,其中包含两列,指定要在本机坐标系中标记的天空位置的经纬度坐标和输入数据立方体的单位。这两列可以用空格、制表符或逗号分隔。另请参见flag.radius.
flag.logbooltrue,falsefalse如果设置为true,则将自动标记器标记的通道和像素列表写入日志文件。请注意,如果没有发现需要标记的通道或像素,则不管flag.log.
flag.radiusint ≥ 0 \geq0 05星空周围的半径flag.catalog 那应该被标记。如果为0,则仅标记距离该位置最近的像素。否则,将标记最近像素周围指定半径内的像素。
flag.regionlist处理前要在输入数据立方体中标记的区域。标记区域必须包含以下格式的六个逗号分隔整数值的倍数:x_min,x_max,y_min,y_max,z_min,z_max(全部以像素为单位,以0为基础)。在输入立方体中,这些区域内的像素将设置为空白。如果未设置,则不会发生标记。
flag.thresholdfloat5.0由自动标记算法应用的以标准偏差倍数表示的相对阈值。仅在以下情况下相关flag.auto 已启用。有关详细信息,请参阅文档。
rippleFilter.enablebooltrue,falsefalse如果设置为true,则涟波滤波器将在源查找之前应用于数据立方体。滤波器的工作原理是测量并减去运行窗口中的平均值或中值。如果数据中存在直流偏移或空间/光谱纹波,这将非常有用。
rippleFilter.gridXYint ≥ 0 \geq0 00纹波滤波器中使用的运行窗口的空间网格分离(像素)。该值必须是奇数整数值,并指定移动窗口的空间步长。或者,可以将其设置为0,在这种情况下,它将默认为空间窗口大小的一半(请参阅)rippleFilter.windowXY).
rippleFilter.gridZint ≥ 0 \geq0 00用于纹波滤波器的运行窗口通道中的光谱网格分离。该值必须是奇数整数值,并指定移动窗口的光谱步长。或者,它可以设置为0,在这种情况下,它将默认为光谱窗口大小的一半(参见rippleFilter.windowZ).
rippleFilter.interpolatebooltrue,falsefalse如果设置为true,则在纹波滤波器的运行窗口中测量的平均值或中值将在网格点之间进行线性插值。如果设置为false,将从整个网格单元中减去平均值或中值,而不进行插值。
rippleFilter.statisticstringmean,medianmedian控制是否应在纹波滤波器的运行窗口中测量和减去平均值或中值。强烈建议使用中位数,因为它更稳健。
rippleFilter.windowXYint ≥ 1 \geq1 131涟波滤波器中使用的运行窗口的空间大小(以像素为单位)。大小必须是奇数整数。
rippleFilter.windowZint ≥ 1 \geq1 115在纹波滤波器中使用的运行窗口的通道中的光谱大小。大小必须是奇数整数。
scaleNoise.enablebooltrue,falsefalse如果设置为true,将启用噪波缩放。噪声缩放模块的目的是测量输入立方体中的噪声级,然后将输入立方体除以噪声。这可用于在运行源查找器之前,校正输入立方体上的空间或光谱噪声变化。
scaleNoise.fluxRangestringpositive,negative,fullnegative噪声测量中使用的通量范围。如果设置为负或正,则仅分别使用具有负通量或正通量的像素。这有助于防止实际发射或人工制品影响噪声测量。如果设置为“满”,则所有像素都将用于噪声测量,而与它们的通量无关。
scaleNoise.gridXYint ≥ 0 \geq0 00将在数据立方体上移动噪声测量窗口的空间网格的大小。它必须是奇数整数值。如果改为设置为0,则空间网格大小将默认为空间窗口大小的一半。
scaleNoise.gridZint ≥ 0 \geq0 00噪声测量窗口将在数据立方体上移动的光谱网格的大小。它必须是奇数整数值。如果设置为0,则光谱网格大小将默认为光谱窗口大小的一半。
scaleNoise.interpolatebooltrue,falsefalse如果设置为真,将使用线性插值来插值网格点之间的测量局部噪声值。如果设置为false,则整个网格单元将被测量的噪波值填充。
scaleNoise.modestringspectral,localspectral噪声缩放模式。如果设置为“光谱”,则将通过测量每个图像平面内的噪声来确定每个光谱通道的噪声级。这对于噪声随频率变化的数据立方体非常有用。如果设置为“局部”,则噪声级将在整个立方体的所有三维窗口中进行局部测量。这对于具有更复杂噪声变化的数据立方体非常有用,例如应用了主光束校正的干涉图像。
scaleNoise.scfindbooltrue,falsefalse如果启用了true和全局或局部噪波缩放,则在S+C finder中的每个平滑操作之后,还将应用噪波缩放。在干涉测量数据中存在大规模人工制品的某些情况下,这可能很有用。但是,使用此功能时应非常小心,因为它可能弊大于利。
scaleNoise.statisticstringstd,mad,gaussmad噪声测量过程中使用的统计数据。可能的值分别是标准偏差的标准差、绝对偏差的中值和通量直方图的高斯拟合。标准差是迄今为止最快的算法,但对于数据中的发射和伪影,它也是最不健壮的算法。中位数绝对偏差和高斯拟合在存在强、扩展发射或人工制品的情况下更为稳健,但通常需要更长的时间。
scaleNoise.windowXYint ≥ 0 \geq0 025用于确定局部噪声级的窗口的空间大小。它必须是奇数整数值。如果设置为0,管道将改用默认值。
scaleNoise.windowZint ≥ 0 \geq0 015用于确定局部噪声级的窗口的光谱大小。它必须是奇数整数值。如果设置为0,管道将改用默认值。

A.4 寻找源

参数类型默认值描述
scfind.enablebooltrue,falsetrue如果设置为true,将启用“平滑+剪辑(S+C)”查找器。S+C finder通过使用用户定义的一组平滑内核对数据立方体进行迭代平滑,在每个平滑尺度上测量噪声水平,并将绝对通量高于用户定义的相对阈值的所有像素添加到源检测掩码。
scfind.fluxRangestringpositive,negative,fullnegative噪声测量中使用的通量范围。如果设置为负或正,则仅分别使用具有负通量或正通量的像素。这有助于防止实际发射或人工制品影响噪声测量。如果设置为“满”,则所有像素都将用于噪声测量,而与它们的通量无关。
scfind.kernelsXYlist ≥ 0 \geq0 00,3,6要应用的空间高斯核大小的逗号分隔列表。单个核大小必须是浮点值,并表示用于平滑空间域中数据的高斯半最大宽度(FWHM)。值为0表示不应用空间平滑。
scfind.kernelsZlist ≥ 0 \geq0 00,3,7,15要应用的Boxcar内核大小的逗号分隔列表。单个核大小必须是3或更大的奇数整数值,并表示用于平滑光谱域数据的Boxcar滤波器的全宽。值为0表示不应用光谱平滑。
scfind.replacementfloat2.0在S+C迭代期间平滑数据立方体之前,数据立方体中在上一次迭代中已经检测到的每个像素将被该值乘以未平滑数据立方体中的原始噪声级替换,同时保持数据值的原始符号。通过指定<0的值,可以完全禁用此功能。
scfind.statisticstringstd,mad,gaussmad噪声测量过程中使用的统计数据。可能的值分别是标准偏差的标准差、绝对偏差的中值和通量直方图的高斯拟合。标准差是迄今为止最快的算法,但对于数据中的发射和伪影,它也是最不健壮的算法。中位数绝对偏差和高斯拟合在存在强、扩展发射或人工制品的情况下更为稳健,但通常需要更长的时间。
scfind.thresholdfloat ≥ 0.0 \geq0.0 0.05.0S+C探测器在每次平滑迭代中相对于测量噪声级使用的通量阈值。实际上,在大多数情况下,3至5范围内的值都是有用的,在这一范围内的值较低,需要使用可靠性滤波器来减少错误检测的次数。
threshold.enablebooltrue,falsefalse如果设置为true,将启用阈值查找器。阈值查找器是一个非常基本的源查找器,它只对原始数据立方体应用一个固定的阈值(绝对或相对于噪声)。如果将一个简单的通量阈值应用于预处理或过滤后的数据立方体,那么它将非常有用。
threshold.fluxRangestringpositive,negative,fullnegative噪声测量中使用的通量范围。如果设置为负或正,则仅分别使用具有负通量或正通量的像素。这有助于防止实际发射或人工制品影响噪声测量。如果设置为“满”,则所有像素都将用于噪声测量,而与它们的通量无关。
threshold.modestringabsolute,relativerelative如果设置为绝对,阈值查找器的流量阈值将被解释为数据立方体的本机流量单位中的绝对流量阈值。如果设置为“相对”,则阈值将以整个数据立方体的噪声级为单位进行解释。
threshold.statisticstringstd,mad,gaussmad噪声测量过程中使用的统计数据,如果threshold.mode 设置为“相对”。可能的值分别是标准偏差的标准差、绝对偏差的中值和通量直方图的高斯拟合。标准差是迄今为止最快的算法,但对于数据中的发射和伪影,它也是最不健壮的算法。中位数绝对偏差和高斯拟合在存在强、扩展发射或人工制品的情况下更为稳健,但通常需要更长的时间。
threshold.thresholdfloat ≥ 0.0 \geq0.0 0.05.0由阈值查找器应用的通量阈值。取决于threshold.mode 参数,它可以是绝对的(以数据立方体的本机通量单位表示),也可以是相对于立方体的噪声级的。

A.5 链接

参数类型默认值描述
linker.enablebooltrue,falsetrue如果为真,则将运行链接器,将源查找器检测到的像素合并为相干检测,然后可以对其进行参数化和编目。如果为假,则在源查找后终止管道,并且不会创建目录或源产品。如果只需要源查找器的原始掩码,则禁用链接器可能很有用。
linker.keepNegativebooltrue,falsefalse如果设置为true,则链接器将不会丢弃具有负通量的检测。必须禁用可靠性筛选才能保留负源。还请注意,负源不会出现在时刻1和2地图。此选项应仅用于测试或调试目的,但决不能用于生产模式。
linker.maxSizeXYint ≥ 0 \geq0 00空间维度中源的最大大小(像素)。超过此限制的源将被链接器丢弃。如果该值设置为0,则将禁用最大大小筛选。
linker.maxSizeZint ≥ 0 \geq0 00光谱维度中源的最大大小(像素)。超过此限制的源将被链接器丢弃。如果该值设置为0,则将禁用最大大小筛选。
linker.minSizeXYint ≥ 1 \geq1 15空间维度中源的最小大小(像素)。低于此限制的源将被链接器丢弃。
linker.minSizeZint ≥ 1 \geq1 15光谱维度中光源的最小尺寸(像素)。低于此限制的源将被链接器丢弃。
linker.positivitybooltrue,falsefalse如果设置为true,则链接器将仅合并正像素,并通过从掩码中移除负像素来丢弃所有负像素。使用此选项时应特别小心,这样会使可靠性过滤器无用。不过,如果数据中存在诸如残余旁瓣之类的明显的负伪影,它可能是有用的。
linker.radiusXYint ≥ 1 \geq1 11空间维度中的最大合并长度。间隔小于等于此值的像素将合并到同一个源中。
linker.radiusZint ≥ 1 \geq1 11谱维中的最大合并长度。间隔小于等于此值的像素将合并到同一个源中。

A.6 可靠性

参数类型默认值描述
reliability.catalogstring包含要从可靠性分析中排除的天空位置的文件的路径。文件必须包含两列,用空格、制表符或逗号分隔,用于指定要排除在输入文件的nativeWCS坐标和单位中的位置的经度和纬度。包含边界框内任何位置的负检测将被排除在可靠性分析之外,尽管它们仍将显示在可靠性图中。
reliability.debugbooltrue,falsefalse如果设置为true并且启用了可靠性模块,则会创建两个目录文件,其中包含负检测和正检测的相关可靠性参数,以便进行调试。目录将以可编辑的格式书写。
reliability.enablebooltrue,falsefalse如果设置为true,将启用可靠性计算和过滤。这将通过在三维参数空间中比较正探测和负探测的密度来确定每个正总通量探测的可靠性。低于指定可靠性阈值的源将被丢弃。请注意,这将需要足够数量的负检测,这通常可以通过将源查找阈值设置为噪声级的3到4倍来实现。
reliability.minSNRfloat ≥ 0.0 \geq0.0 0.03.0可靠来源的较低信噪比限制。低于此阈值的检测将被视为不可靠,并将可靠性指定为0。该值表示综合信噪比, S N R = F / ( σ N Ω ) SNR=F/(\sigma\sqrt{N\Omega}) SNR=F/(σNΩ ), 其中 Ω \Omega Ω是数据点扩散函数的立体角(以像素为单位), N N N 是源的空间和光谱像素数, F F F是通量密度和 σ \sigma σ是局部均方根噪声级(假定为常数)。注意,假设光谱分辨率等于沟道宽度。
reliability.plotbooltrue,falsetrue如果设置为真,将创建一个诊断图(EPS格式),以便评估可靠性估计的质量。建议生成并检查该图,以确保可靠性过滤程序的结果令人满意。
reliability.scaleKernelfloat0.4在估计参数空间中正检测和负检测的密度时,高斯核的大小由参数空间中负检测分布的协方差矩阵决定。此参数设置可用于按常量因子缩放内核。值为1将使用原始协方差矩阵比例,而无需额外的比例。在许多情况下,0.4左右的值可以给出可接受的结果
reliability.thresholdfloat0.0…1.00.9可靠性阈值在0到1之间。可靠性低于此阈值的源将被丢弃。

A.7 掩膜扩张

参数类型默认值描述
dilation.enablebooltrue,falsefalse设置为true以启用源掩码扩展,其中每个源的掩码将向外增长,直到所产生的积分通量增加降至给定阈值以下或达到最大迭代次数。
dilation.iterationsXYint ≥ 1 \geq1 110设置遮罩扩张算法的最大空间迭代次数。一旦达到这个迭代次数,即使通量增加仍然超过由设置的阈值,空间平面中的掩模膨胀也将停止dilation.threshold.
dilation.iterationsZint ≥ 1 \geq1 15设置遮罩扩张算法的最大光谱迭代次数。一旦达到了这个迭代次数,即使通量增加仍然超过了所设置的阈值,沿着光谱轴的掩模扩张也将停止dilation.threshold.
dilation.thresholdfloat0.001如果提供了正值,则当单个迭代过程中积分通量的增量低于该值乘以总积分通量(来自上一次迭代)时,或者当达到最大迭代次数时,掩模膨胀将结束。指定负阈值将完全禁用通量检查,并始终执行最大迭代次数。

A.8 参数化

参数类型默认值描述
parameter.enablebooltrue,falsetrue如果设置为真,参数化模块将被启用,以测量每个检测到的源的基本参数
parameter.offsetbooltrue,falsefalse如果设置为false,则使用input.region 参数,则源目录中的位置参数x、y、z、x_min、x_max、y_min、y_max、z_min和z_max将相对于区域指定。如果设置为true,则位置参数将改为相对于完整立方体。请注意,自动标记日志文件也将遵循此设置。
parameter.physicalbooltrue,falsefalse如果设置为true,SoFiA将尝试将相关参数转换为物理单位。这包括将通道宽度转换为频率/速度单位,并根据光束的立体角划分基于通量的参数。为此,必须正确设置相关的头参数,包括CTYPE3、CDELT3、BMAJ和BMIN。进一步假设光束不随频率或位置变化。
parameter.prefixstringSoFiA要在源名称中使用的前缀。默认前缀为SoFiA,生成的默认源名称为SoFiAJhhmmss.ss-用于J2000赤道坐标的ddmmss.s(同样适用于其他坐标类型)。
parameter.wcsbooltrue,falsetrue如果设置为true,SoFiA将尝试使用标头中存储的WCS信息将源质心位置(x,y,z)转换为世界坐标。

A.9 输出

参数类型默认值描述
output.directorystring所有输出文件将写入的目录的完整路径。如果未设置,默认情况下将使用输入数据立方体的目录。
output.filenamestring将用作所有输出文件模板的文件名。例如,如果output.filename =my_data,则输出文件将命名为my_data_cat.xml,my_data_ mom0.fits等。如果未设置,则默认情况下将使用输入数据立方体的名称作为文件名模板。
output.marginCubeletsint ≥ 0 \geq0 00在创建立方体、矩图和单个源的光谱时,要应用的探测周围的边距(像素)。相同的边距将应用于立方体的所有轴。默认值为0意味着将生成没有任何额外边距的紧密剪切,以最小化文件大小。
output.overwritebooltrue,falsetrue如果为真,现有的输出文件将在没有警告的情况下被覆盖。如果为false,SoFiA将拒绝运行任何要创建的输出文件和目录。
output.thresholdMom12float0.0如果output.cubelets 如果启用,则每个单独检测的矩1和2贴图将仅使用通量密度超过该值乘以局部RMS噪声级的那些光谱通道创建。例如,设置output.thresholdMom12 将值设置为3.0将为力矩1和力矩2设置一个3西格玛通量密度阈值。请注意,此设置对力矩0贴图或全局力矩1和2贴图没有影响。
output.writeCatASCIIbooltrue,falsetrue如果设置为true,输出源目录将以人类可读的ASCII格式生成。目录文件将有后缀_cat.txt.
output.writeCatSQLbooltrue,falsefalse如果设置为true,将以SQL格式生成输出源目录。目录文件将有后缀_cat.sql. SQL目录可以导入到任何与SQL兼容的数据库中。将生成一个包含源参数的新数据表,默认情况下名为SoFiA Catalogue。
output.writeCatXMLbooltrue,falsetrue如果设置为true,输出源目录将以VO兼容的XML格式生成。目录文件将有后缀_cat.xml.
output.writeCubeletsbooltrue,falsefalse如果设置为true,则将为每个检测到的源创建单独的源产品,包括子立方体、遮罩、矩映射和集成光谱。源产品将被写入后缀为_cubelets的子目录。每种来源产品都将贴上来源识别号的标签,以便识别。
output.writeFilteredbooltrue,falsefalse如果设置为true并且启用了任何输入过滤算法,则包含过滤数据的数据立方体将以FITS格式写入。过滤后的多维数据集将具有后缀_filtered.fits.
output.writeMaskbooltrue,falsefalse如果设置为true,则包含源查找器生成的最终源掩码的数据立方体将以FITS格式写入。源掩码中的像素值将对应于目录中的各个源ID号。掩码立方体将具有后缀_mask.fits.
output.writeMask2dbooltrue,falsefalse如果设置为true,则包含三维遮罩立方体的二维投影的图像将以FITS格式写入。2D遮罩图像的后缀为_mask-2D.fits。请注意,在这个二维投影中,某些源可能隐藏在其他源之后。
output.writeMomentsbooltrue,falsefalse如果设置为true,则光谱矩0、1和2的图像将以FITS格式写入。力矩贴图的后缀为_mom0.fits、_mom1.fits和_mom2.fits。请注意,如果输入数据立方体仅为二维,则不会产生矩1和2。
output.writeNoisebooltrue,falsefalse如果设置为true并且启用了局部噪波缩放,则包含测量的局部噪波值的数据立方体将以FITS格式写入。噪波立方体将具有后缀_noise.fits.
output.writeRawMaskbooltrue,falsefalse如果设置为true,则包含源查找器在链接之前生成的原始二进制源掩码的数据立方体将以FITS格式写入。原始掩码多维数据集将具有后缀_mask-raw.fits.

B 文件和目录结构

整个sofia2管道都是用C编写的,由于采用了面向对象的方法,源代码具有高度的模块化。主管道的源代码存储在base目录的sofia.c文件中,而其余的源代码可以在src/目录中找到。定义类的文件以大写字母开头,例如DataCube.c,而过程源代码则出现在以小写字母开头的文件中,例如statistics_flt.c。所有公共声明都存储在同名的头文件中,例如DataCube.h。

下表概述了sofia2的基本文件和目录结构。文件名和目录名是指向sofia2github存储库中相应目标的超链接。

文件名描述
sofia.c实际索非亚2号管道。
template_par_file.par模板参数文件。
compile.sh用于编译sofia2的Shell脚本。
README.md基本信息和安装说明。
LICENSE许可证信息。
src/包含源代码的目录。
common.c所有源文件常用的函数。
statistics_dbl.cdouble类型的基本统计函数。
statistics_flt.c浮点型的基本统计函数。
Array_dbl.cdouble类型的数据数组的类
Array_siz.csize_t类型的数据数组的类
Catalog.c用于存储源目录的类。
DataCube.c用于处理数据立方体的类。
Header.c用于存储标题信息的类。
LinkerPar.c用于在链接期间收集对象属性的类。
Map.c用于存储类型为size_t的类型的键值对的类。
Matrix.c处理矩阵的类。
Parameter.c用于存储SoFiA 2参数设置的类
Path.c用于处理文件名和路径的类。
Source.c用于存储检测到的源的属性的类。
Stack.c实现类型为size_t的一个基本堆栈的类
String.c用于存储和处理字符串的类。
Table.c用于从文件中读取表格数据的类。
WCS.c用于处理WCS转换的类。
templates/包含函数和类模板的目录
statistics.c基本统计函数的模板。
Array.c数据数组类的模板。
Array_maketemplate.sh用于实例化数据数组模板的Shell脚本。
statistics_maketemplate.sh用于实例化统计模板的Shell脚本。

C 回到代码

终止后,SoFiA 2将提供一个返回代码,用于分析管道执行期间发生的任何错误的原因。下表列出了SoFiA 2目前支持的返回码列表。

代码标志描述
0ERR_SUCCESS运行成功
1ERR_FAILURE一个未指定的错误发生
2ERR_NULL_PTR空指针错误
3ERR_MEM_ALLOC发生内存分配错误。这可能表示数据立方体对于计算机上的可用内存量来说太大。
4ERR_INDEX_RANGE数组越界错误
5ERR_FILE_ACCESS当尝试读文件或访问一个文件夹或文件时发生错误
6ERR_INT_OVERFLOW发生整数溢出
7ERR_USER_INPUT由于用户无效的数据报错。可能由于无效的参数输入或错误的文件数据。
8ERR_NO_SRC_FOUND未指定的错误发生,但是不知道哪里发生错误。

本文标签: 用户手册