英语法语西班牙语

Ad


OnWorks 网站图标

funcnts - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 funcnts

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令函数,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


funcnts - 计算指定区域的光子,使用 bkgd 减法

概要


函数 [开关] [source_region] [bkgd_file] [bkgd_region 获取bkgd_value]

配置


-e "source_exposure[;bkgd_exposure]"
# 使用匹配文件的源 (bkgd) FITS 曝光图像
-w "source_exposure[;bkgd_exposure]"
# 使用 WCS 变换的源 (bkgd) FITS 曝光图像
-t "source_timecorr[;bkgd_timecorr]"
# 源 (bkgd) 时间校正值或头参数名称
-g # 使用漂亮的 g 格式输出
-G # 使用 %.14g 格式输出(最大精度)
-i "[column;]int1;int2..." # 基于列的间隔
-m # 匹配单个源和 bkgd 区域
-p # 以像素为单位输出,即使存在 wcs
-r # 输出环(和熊猫)的内/外半径(和角度)
-s # 输出总和值
-v "scol[;bcol]" # 表的 src 和 bkgd 值列
-T # 以starbase/rdb 格式输出
-z # 输出面积为零的区域

商品描述


函数 计算指定源区域中的光子并报告每个区域的结果
地区。 区域是使用空间区域过滤机制指定的。 光子是
也算在指定的 bkgd 区域中应用到相同的数据文件或不同的
数据文件。 (或者,计数/像素**2 中的恒定背景值可以是
指定。) bkgd 区域要么与源区域一对一配对,要么合并
并按面积归一化,然后从每个区域的源计数中减去。
显示的结果包括每个区域的 bkgd 减去计数,以及误差
在计数上,每个区域的面积和表面亮度(cnts/area**2)
为每个区域计算。

程序的第一个参数指定 FITS 输入图像、数组或原始事件文件
处理。 如果指定了“stdin”,则从标准输入读取数据。 使用 Funtools
用于指定 FITS 扩展、图像部分和过滤器的括号表示法。

可选的第二个参数是源区域描述符。 如果没有指定地区,
使用整个字段。

背景参数可以采用两种形式中的一种,这取决于单独的
指定了背景文件。 如果源文件也用于背景,则
第三个参数可以是背景区域,也可以是一个常数值,表示
背景 cnts/像素。 或者,第三个参数可以是后台数据文件,
在这种情况下,第四个参数是背景区域。 如果没有第三个参数
指定时,使用常数值 0(即,无背景)。

总之,以下命令参数是有效的:

[sh] funcnts sfile # 在源文件中计数
[sh] funcnts sfile sregion # 在源区域计数
[sh] funcnts sfile sregion bregion # bkgd reg. 来自源文件
[sh] funcnts sfile sregion bvalue # bkgd reg. 是常数
[sh] funcnts sfile sregion bfile bregion # bkgd reg. 来自单独的文件

注意:与其他 Funtools 程序不同,源和背景区域被指定为
在命令行上单独的参数,而不是作为一部分放在括号内
源文件名和背景文件名。 这是因为函数中的区域不仅仅是
用作数据过滤器,也用于计算面积、曝光等。如果你把
括号内的源区域(即仅将其用作过滤器)而不是指定
作为参数二,程序仍然只会计算通过区域过滤器的光子。
但是,面积计算将在整个字段上执行,因为 场地()
默认源区域。 这很少是期望的行为。 另一方面,随着 FITS
二进制表,将列过滤器放在文件名括号中通常很有用,以便
只有与列过滤器匹配的事件才会在区域内计数。

例如,要提取距离中心点半径 22 个像素内的计数
FITS 二进制表 snr.ev 并减去从同一图像中确定的背景
半径为 50-100 像素的圆环:

[sh] funcnts snr.ev "circle(502,512,22)" "annulus(502,512,50,100)"
# 来源
# 数据文件:snr.ev
# 度/像素:0.00222222
# 背景
# 数据文件:snr.ev
# 列单位
# 区域:arcsec**2
# surf_bri:cnts/arcsec**2
# surf_err:cnts/arcsec**2

# 减去背景的结果
reg net_counts 错误背景 berror 区域 surf_bri surf_err
---- ------------ --------- ------------ --------- ---- ----- --------- ---------
1 3826.403 66.465 555.597 5.972 96831.98 0.040 0.001

# 使用了以下源和背景组件:
源区
----------------
圆(502,512,22)

reg 计算像素
---- ------------- ---------
1 4382.000 1513

背景区域
--------------------
环(502,512,50,100)

reg 计算像素
---- ------------- ---------
全部 8656.000 23572

标记为“area”、“surf_bri”(表面亮度)和
“surf_err”将以弧秒为单位给出(如果合适的 WCS 信息在
数据文件头)或以像素为单位。 如果数据文件有 WCS 信息,但您不想要 arc-
第二个单位,使用 -p 切换到以像素为单位强制输出。 此外,面积为零的区域
通常不包括在主(扣除背景)表中,但包括
在辅助源表和 bkgd 表中。 如果您希望这些区域包含在
主表,使用 -z 开关。

请注意,一个简单的 sed 命令将提取背景减去结果以进一步
分析:

[sh] 猫 funcnts.sed
1,/----.*/d
/^$/,$d

[sh] sed -f funcnts.sed funcnts.out
1 3826.403 66.465 555.597 5.972 96831.98 0.040 0.001

如果指定了单独的源文件和背景文件, 函数 将尝试正常化
背景区域,使背景像素大小与源像素相同
尺寸。 只有在适当的 WCS 信息是
包含在两个文件中(例如 CDELT 中的度数/像素值)。 如果任一文件没有
包含必要的大小信息,则不执行归一化。 在这种情况下,
用户有责任确保两者的像素大小相同
文件。

通常,如果指定了多个背景区域, 函数 将它们全部结合起来
成一个区域,并使用这个背景区域来产生背景减去
每个源区域的结果。 这 -m (匹配多个背景)开关告诉 函数
在背景和源区域之间进行一一对应,而不是
使用单个组合背景区域。 例如,默认情况是将 2
背景区域变成单个区域,然后将该区域应用到每个源
地区:

[sh] funcnts snr.ev "annulus(502,512,0,22,n=2)" "annulus(502,512,50,100,n=2)"
# 来源
# 数据文件:snr.ev
# 度/像素:0.00222222
# 背景
# 数据文件:snr.ev
# 列单位
# 区域:arcsec**2
# surf_bri:cnts/arcsec**2
# surf_err:cnts/arcsec**2

# 减去背景的结果
reg net_counts 错误背景 berror 区域 surf_bri surf_err
---- ------------ --------- ------------ --------- ---- ----- --------- ---------
1 3101.029 56.922 136.971 1.472 23872.00 0.130 0.002
2 725.375 34.121 418.625 4.500 72959.99 0.010 0.000

# 使用了以下源和背景组件:
源区
----------------
环(502,512,0,22,n=2)

reg 计算像素
---- ------------- ---------
1 3238.000 373
2 1144.000 1140

背景区域
--------------------
环(502,512,50,100,n=2)

reg 计算像素
---- ------------- ---------
全部 8656.000 23572

请注意基本区域过滤规则“每个光子计数一次,没有光子是
计数不止一次”在使用时仍然适用 -m 匹配背景区域。 那
即,如果两个背景区域重叠,则重叠的像素将仅计入一个
其中。 在最坏的情况下,如果两个背景区域是同一个区域,则
第一个将获得所有计数和面积,第二个将没有。

使用 -m 切换原因 函数 独立使用两个背景区域中的每一个
两个源区域中的每一个:

[sh] funcnts -m snr.ev "annulus(502,512,0,22,n=2)" "ann(502,512,50,100,n=2)"
# 来源
# 数据文件:snr.ev
# 度/像素:0.00222222
# 背景
# 数据文件:snr.ev
# 列单位
# 区域:arcsec**2
# surf_bri:cnts/arcsec**2
# surf_err:cnts/arcsec**2

# 减去背景的结果
reg net_counts 错误背景 berror 区域 surf_bri surf_err
---- ------------ --------- ------------ --------- ---- ----- --------- ---------
1 3087.015 56.954 150.985 2.395 23872.00 0.129 0.002
2 755.959 34.295 388.041 5.672 72959.99 0.010 0.000

# 使用了以下源和背景组件:
源区
----------------
环(502,512,0,22,n=2)

reg 计算像素
---- ------------- ---------
1 3238.000 373
2 1144.000 1140

背景区域
--------------------
安(502,512,50,100,n=2)

reg 计算像素
---- ------------- ---------
1 3975.000 9820
2 4681.000 13752

请注意,大多数浮点量使用“f”格式显示。 你可以改变
这到“g”格式使用 -g 转变。 这在每个像素中的计数时很有用
非常小或非常大。 如果你想要最大的精度而不关心
列排列整齐,使用 -G, 它将所有浮点值输出为 %.14g。

当使用环形和熊猫(饼形和环形)形状计算光子时,通常是
访问每个单独区域的半径(和熊猫角)很有用。 这 -r
switch 会将半径和角度列添加到输出表中:

[sh] funcnts -r snr.ev "annulus(502,512,0,22,n=2)" "ann(502,512,50,100,n=2)"
# 来源
# 数据文件:snr.ev
# 度/像素:0.00222222
# 背景
# 数据文件:snr.ev
# 列单位
# 区域:arcsec**2
# surf_bri:cnts/arcsec**2
# surf_err:cnts/arcsec**2
# 半径:弧秒
# 角度:度数

# 减去背景的结果
reg net_counts 错误背景错误区域 surf_bri surf_err radius1 radius2 angle1 angle2
---- ------------ --------- ------------ --------- ---- ----- --------- --------- --------- --------- --------- ---------
1 3101.029 56.922 136.971 1.472 23872.00 0.130 0.002 0.00 88.00 不适用 不适用
2 725.375 34.121 418.625 4.500 72959.99 0.010 0.000 88.00 176.00 不适用 不适用

# 使用了以下源和背景组件:
源区
----------------
环(502,512,0,22,n=2)

reg 计算像素
---- ------------- ---------
1 3238.000 373
2 1144.000 1140

背景区域
--------------------
安(502,512,50,100,n=2)

reg 计算像素
---- ------------- ---------
全部 8656.000 23572

半径以像素或弧秒为单位(取决于 WCS 信息的存在),
而角度值(如果存在)以度为单位。 这些列可用于绘制
径向轮廓。 例如,脚本 函数图 在 funtools 发行版中)将
使用 gnuplot(3.7 或更高版本)绘制径向轮廓。 这个的简化版
脚本如下所示:

#!/ bin / sh的

如果 [ x"$1" = xgnuplot]; 然后
if [ x`which gnuplot 2>/dev/null` = x ]; 然后
回声“错误:gnuplot 不可用”
退出1
fi
awk '
开始{标题= 1; 数据=0; 文件=""; XLABEL="未知"; YLABEL="未知"}
标题==1{
if( $1 == "#" && $2 == "data" && $3 == "file:" ){
如果(文件!=“”)文件=文件“,”
文件 = 文件 $4
}
else if( $1 == "#" && $2 == "radii:" ){
XLABEL = 3 美元
}
else if( $1 == "#" && $2 == "surf_bri:" ){
标签 = 3 美元
}
否则 if( $1 == "----" ){
printf "set nokey; set title \"funcnts(%s)\"\n", FILES
printf "设置 xlabel \" 半径(%s)\"\n", XLABEL
printf "设置 ylabel \"surf_bri(%s)\"\n", YLABEL
使用 3:4:6:7:8 和 boxerrorbars 打印“绘图 \”-\”
标题 = 0
数据 = 1
下页
}
}
数据==1{
如果(NF == 12){
打印 $9, $10, ($9+$10)/2, $7, $8, $7-$8, $7+$8, $10-$9
}
其他{
出口
}
}
' 看 gnuplot -persist - 1>/dev/null 2>&1

elif [ x"$1" = xds9]; 然后
awk '
开始{标题= 1; 数据=0; XLABEL="未知"; YLABEL="未知"}
标题==1{
if( $1 == "#" && $2 == "data" && $3 == "file:" ){
如果(文件!=“”)文件=文件“,”
文件 = 文件 $4
}
else if( $1 == "#" && $2 == "radii:" ){
XLABEL = 3 美元
}
else if( $1 == "#" && $2 == "surf_bri:" ){
标签 = 3 美元
}
否则 if( $1 == "----" ){
printf "funcnts(%s) radius(%s) surf_bri(%s) 3\n", FILES, XLABEL, YLABEL
标题 = 0
数据 = 1
下页
}
}
数据==1{
如果(NF == 12){
打印 9 美元、7 美元、8 美元
}
其他{
出口
}
}
'
其他
echo "funcnts -r ... 获取funcnts.plot [ds9 获取gnuplot]"
退出1
fi

因此,要运行 函数 并使用 gnuplot(3.7 或更高版本)绘制结果,使用:

funcnts -r snr.ev "annulus(502,512,0,50,n=5)" ... 获得 funcnts.plot gnuplot

-s (sum) 开关原因 函数 生成一个附加的求和表(综合)
背景扣除值,以及单个值的默认表:

[sh] funcnts -s snr.ev "annulus(502,512,0,50,n=5)" "annulus(502,512,50,100)"
# 来源
# 数据文件:snr.ev
# 度/像素:0.00222222
# 背景
# 数据文件:snr.ev
# 列单位
# 区域:arcsec**2
# surf_bri:cnts/arcsec**2
# surf_err:cnts/arcsec**2

# 总和减去背景的结果
upto net_counts 错误背景错误区域 surf_bri surf_err
---- ------------ --------- ------------ --------- ---- ----- --------- ---------
1 2880.999 54.722 112.001 1.204 19520.00 0.148 0.003
2 3776.817 65.254 457.183 4.914 79679.98 0.047 0.001
3 4025.492 71.972 1031.508 11.087 179775.96 0.022 0.000
4 4185.149 80.109 1840.851 19.786 320831.94 0.013 0.000
5 4415.540 90.790 2873.460 30.885 500799.90 0.009 0.000

# 减去背景的结果
reg 计数错误背景 berror 区域 surf_bri surf_err
---- ------------ --------- ------------ --------- ---- ----- --------- ---------
1 2880.999 54.722 112.001 1.204 19520.00 0.148 0.003
2 895.818 35.423 345.182 3.710 60159.99 0.015 0.001
3 248.675 29.345 574.325 6.173 100095.98 0.002 0.000
4 159.657 32.321 809.343 8.699 141055.97 0.001 0.000
5 230.390 37.231 1032.610 11.099 179967.96 0.001 0.000

# 使用了以下源和背景组件:
源区
----------------
环(502,512,0,50,n=5)

reg 计数像素 sumcnts sumpix
------------------------------------------------
1 2993.000 305 2993.000 305
2 1241.000 940 4234.000 1245
3 823.000 1564 5057.000 2809
4 969.000 2204 6026.000 5013
5 1263.000 2812 7289.000 7825

背景区域
--------------------
环(502,512,50,100)

reg 计算像素
---- ------------- ---------
全部 8656.000 23572

-t-e 开关可分别用于应用定时和曝光校正,
到数据。 请注意,这些更正旨在定性地使用,因为
应用更准确的修正系数是一项复杂且依赖于任务的工作。
应用这些简单修正的算法如下:

C = 源区域中的原始计数
Ac= 源区面积
Tc= 源数据的曝光时间
Ec= 源区域的平均曝光,来自曝光图

B= 背景区域中的原始计数
Ab=背景区域的面积
Tb= 背景数据的(曝光)时间
Eb=背景区域的平均曝光,来自曝光图

然后,源区域中的净计数为

净值 = C - B * (Ac*Tc*Ec)/(Ab*Tb*Eb)

使用网络错误的标准错误传播。 那么净利率将是

净利率 = 净额/(Ac*Tc*Ec)

每个区域的平均曝光是通过将像素值相加来计算的
给定区域的曝光图,然后除以该区域的像素数
地区。 曝光图通常以块因子 > 1 生成(例如,块 4 意味着
每个曝光像素包含全分辨率的 4x4 像素)和 函数 将处理
自动阻塞。 使用 -e switch,你可以提供源和背景
曝光文件(以“;”分隔),如果您有单独的源和背景数据文件。
如果您不提供背景曝光文件以使用单独的背景数据
文件, 函数 假设曝光已经应用于背景数据文件。
此外,它假设背景数据文件中像素的误差为零。

注意: -e switch 假设曝光贴图覆盖图像文件 究竟, 除
为块因子。 图像中的每个像素都按块因子缩放以访问
曝光图中的相应像素。 如果您的曝光图没有完全对齐
随着图像, do 不能 使用-e 曝光校正。 在这种情况下,仍然可以
执行曝光校正 if 图像和曝光图都有有效的 WCS
信息:使用 -w 切换以便从图像像素到曝光的转换
像素使用 WCS 信息。 也就是说,图像区域中的每个像素都将是
首先从图像坐标转换为天空坐标,然后从天空坐标转换为
曝光坐标。 请注意,使用 -w 可以增加处理所需的时间
曝光校正相当大。

时间校正可以应用于源数据和背景数据,使用 -t 开关。
更正的值可以是数字常量或标题的名称
源(或背景)文件中的参数:

[sh] funcnts -t 23.4 ... # 源编号
[sh] funcnts -t "LIVETIME;23.4" ... # 源参数,bkgd 数字

指定时间修正后,它也适用于净计数(参见
算法),使表面亮度的单位变为 cnts/area**2/sec。

-i (间隔)开关用于运行 函数 在多个基于列的间隔上
只通过一次数据。 相当于跑 函数 几次
每次都将不同的列过滤器添加到源数据和背景数据中。 对于每个
间隔,全 函数 生成输出,并插入换行符 (^L)
每次运行之间。 此外,每个区间的输出将包含区间
其标题中的规范。 间隔对于生成 X 射线硬度非常有用
比率有效。 当然,只有在包含输入数据时才支持
在桌子上。

间隔规范支持两种格式。 最通用的格式是半
用作间隔的以冒号分隔的过滤器列表:

funcnts -i "pha=1:5;pha=6:10;pha=11:15" snr.ev "circle(502,512,22)" ...

从概念上讲,这相当于运行 函数 三次:

funcnts snr.ev'[pha=1:5]' "circle(502,512,22)"
funcnts snr.ev'[pha=6:10]' "circle(502,512,22)"
funcnts snr.ev'[pha=11:15]' "circle(502,512,22)"

然而,使用 -i 交换机将只需要一次通过数据。

请注意,复杂过滤器可用于指定间隔:

funcnts -i "pha=1:5&&pi=4;pha=6:10&&pi=5;pha=11:15&&pi=6" snr.ev ...

该程序只是简单地依次通过每个过滤器运行数据并生成三个 函数
输出,由换行符分隔。

事实上,虽然目的是支持硬度比的区间,但指定的
过滤器根本不必是间隔。 也不必使用一个“间隔”过滤器
与另一个有关。 例如:

funcnts -i "pha=1:5;pi=6:10;energy=11:15" snr.ev "circle(502,512,22)" ...

相当于跑 函数 XNUMX 次与不相关的过滤器规格。

对于使用单列的简单情况,支持第二种间隔格式
为该列指定多个齐次区间。 在这种格式中,列名
首先指定,然后是间隔:

funcnts -i "pha;1:5;6:10;11:15" snr.ev "circle(502,512,22)" ...

这等效于第一个示例,但需要较少的输入。 这 函数 程序
将简单地在每个指定的间隔之前加上“pha=”。 (注意这个格式
列参数中不包含“=”字符。)

通常,当 函数 在 FITS 二进制表(或原始事件表)上运行,一个
对给定区域内包含的每一行(事件)累积积分计数。 这 -v
“scol[;bcol]” (值列)开关将使用来自
给定事件的指定列。 如果只指定了一个列,它用于
源和背景区域。 两个单独的列,用分号分隔,
可以指定来源和背景。 特殊标记“$none”可用于
指定一个值列用于一个而不是另一个。 例如,
'pha;$none' 将使用 pha 列作为源,但使用整数计数
背景,而 '$none;pha' 则相反。 如果值列的类型为
逻辑,那么 T 使用的值将是 1,F 使用的值将是 0。使用值列,对于
例如,积分概率而不是积分计数。

如果 -T (rdb table) 开关被使用,输出将符合starbase/rdb 数据库
格式:将在列之间插入制表符而不是空格,并且换行符将被插入
插入表之间。

最后,请注意 函数 是一个图像程序,即使它可以直接在 FITS 上运行
二进制表。 这意味着图像过滤应用于行以确保
无论是表格还是等效的分箱,都可以获得相同的结果
图像被使用。 然而,正因为如此,使用 函数 能够
不同于使用行过滤程序找到的事件数量,例如 基金管理公司 or
有趣的 有关这些差异的更多信息,请参阅 Region 的讨论
边界。

使用 onworks.net 服务在线使用功能


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad