跳到主要内容
Sandbox Physics
在拥挤天空里测准星光

AC02 · L3

从 TESS 的十二个像素提取亮度

准备好 Sandbox Physics 源码和 Python 3,就能从固定实测像素重做一次 TESS 孔径测光。数据是 TIC 25155310 第一扇区的五十七帧小样本;结果会保留所有帧,并清楚标出哪些帧参与归一化。

打开同一份数据

原始产品是 tess2018206045859-s0001-0000000025155310-0120-s_tp.fits。MAST 官方像素教程使用的也是这个目标。实际下载的文件头记录数据发布版 42,处理版本 spoc-5.0.10-20200904,相机四、探测器一。固定版本信息来自文件头,不能从文件名里的 0120 猜处理版本。

固定片段保留每隔四百行的一帧,并额外保留每一种非零质量标志第一次出现的帧。选择只依赖行号和标志,没有按亮度筛选。每帧是一幅十一乘十一像素图,连同时间、误差、背景和位置修正一并保存。这个稀疏样本适合读懂测量,不能拿来搜完整的行星凌日。

输入位于 tess-tic25155310-sector1.json。脚本先检查固定子集的 SHA-256;原始 FITS 的 SHA-256 也保存在数据来源里。若重新下载后哈希不同,先比较发布版与处理版本,再决定是否另存一份输入。

对应阅读:MAST, Read and Display A TESS Target Pixel File · TESS Science Data Products Description, Revision F (2020)

先读列名,再减背景

时间列 TIME 使用太阳系质心校正后的儒略日,减去固定偏移 24570002457000,单位天。不要把它误读为从观测开始计时的秒数。

FLUX 是经过标定、宇宙线处理并且已经扣除背景的像素亮度率,单位每秒光电子。FLUX_BKG 保存管线估计并扣掉的背景;FLUX_BKG_ERR 保存它的误差。FLUX_ERR 是提供给 FLUX 的不确定度。把 FLUX 再减一次 FLUX_BKG,会把背景扣两遍。

QUALITY 是位标志,不是连续分数。这里采用保守而清楚的规则:只让质量标志为零、时间和所需像素有限的帧参与归一化。所有帧仍保留在输出 CSV。某种标志是否适合你的科学任务,要回查数据说明表 32。

对应阅读:TESS Science Data Products Description, Revision F (2020)

找出十二个孔径像素

APERTURE 图给每个像素一个整数标志。测试 mask  &  2≠0\mathrm{mask}\;\&\;2\ne0,便得到这个产品用于测光的像素。这个“与”运算只检查对应的位;整数里还有其他标志,不能只挑等于二的像素。

本产品选出十二个像素。教程按原来的掩膜求和,既不把边缘像素平均涂满,也不补上自行生成的理想星光。实际测得的是这个孔径收到的光;没有额外做恒星污染或漏光校正。

逐像素平方误差再相加、开平方,可得独立像素近似下的孔径误差。真实像素间相关或额外系统误差没有包括进来;不要把这个误差当成所有变化来源的总误差。

Fj=∑i∈AFLUXji,σj=∑i∈AFLUX_ERRji 2F_j=\sum_{i\in\mathcal A}\mathrm{FLUX}_{ji},\qquad\sigma_j=\sqrt{\sum_{i\in\mathcal A}\mathrm{FLUX\_ERR}_{ji}^{\,2}}
下标表示第几帧和哪个孔径像素。和式的亮度、误差均以每秒光电子为单位。

对应阅读:MAST, Read and Display A TESS Target Pixel File · Photutils 3.1.1, Aperture photometry

运行并读懂输出

在源码根目录执行下面命令。默认输出目录是 reproduced;可以用 --out 指定另一个目录。程序只依赖 Python 标准库,会校验输入、生成一张 CSV 和一份摘要。

固定输入共五十七帧,其中四十六帧满足接受条件,十一帧带标志或缺失值。四十六帧的孔径亮度中位数为每秒 8444.270568847656 光电子。relative_flux 用各帧孔径亮度除以这个中位数,方便比较相对变化;带标志但数值有限的帧也会有相对值,accepted 列明确标出它们没有参与归一化。

CSV 中 spoc_background_e_per_s 单独保存十二个像素的背景估计之和。wrong_double_subtracted_e_per_s 故意展示错误算法,读者可以直接看出重复减背景会怎样改变结果。正确亮度始终在 flux_e_per_s。缺失输入留空,没有用零代替。

python3 extract-lightcurve.py
python3 extract-lightcurve.py --out /tmp/tess-photometry-check
F  [e− s−1]F\;[\mathrm e^{-}\,\mathrm s^{-1}]实测 TESS 像素求和
60007000800090001325.31353.1
青色:正确孔径和 · 橙色:重复减背景 · 灰色:带标志帧t  [BJDTDB−2457000  day]t\;[\mathrm{BJD}_{\mathrm{TDB}}-2457000\;\mathrm{day}]
来自固定 TIC 25155310 第一扇区产品的稀疏实测样本。跳过或缺失的时刻之间没有连线,也没有拟合凌日模型。

从失败示例继续检查

先挑一帧 accepted 为零的行,回到输入查看 QUALITY 与像素是否有限。问清失败来自观测质量还是缺数据,再决定科学分析里怎么处理。不要只把所有离群点删掉,直到曲线看起来平滑。

再比较正确亮度和重复减背景列。若背景随时间变化,错误操作不仅移动平均值,还会制造或放大一段假的亮度变化。这个检查来自实际保存的背景列,不是另画一条理想曲线。

重新冻结原始数据时,先从 MAST 官方教程链接下载指定 FITS,再用 freeze-tess.py 生成相同 JSON。重新提取另需 Astropy,原提取使用 6.0.1。生成器保留原始浮点数,非有限值转成 JSON 的 null,记录原始行号。这样可以从每条输出追到输入帧。

python3 freeze-tess.py /path/to/tess2018206045859-s0001-0000000025155310-0120-s_tp.fits

下一条光变曲线也按这个顺序读

先记目标、扇区、处理版本、时间和亮度单位,再确认背景是否已经扣除。随后检查掩膜定义、质量规则、缺失值和误差传播。最后才看归一化后的曲线。

如果要研究真实凌日,下一步应下载完整时间序列,检查邻星、质心变化和系统趋势,并保存筛选前后的所有数据。这里的稀疏练习没有测出凌日深度、周期或行星参数。

动手检验预测

对照已知背景的合成例子

  1. 选“背景扣得太多”,观察错误扣除使孔径亮度往哪边移动。
  2. 回到 CSV,比较正确列与重复扣背景列的差,是否等于背景估计。
  3. 区别两份数据的单位:合成曝光计数与 TESS 每秒亮度率。

来源与计算范围

  1. MAST, Read and Display A TESS Target Pixel File

    TIC 25155310、第一扇区、FITS 列与孔径标志位 2。教程固定子集来自其中指定的数据产品。

  2. TESS Science Data Products Description, Revision F (2020)

    第 4.2.2 节表 8:FLUX 已扣除背景;FLUX_BKG 与 FLUX_BKG_ERR 保存背景估计及其误差。表 32 解释质量标志。

  3. Photutils 3.1.1, Aperture photometry

    孔径覆盖权重、背景扣除与误差传播。浏览器另用文档说明的面积中点求积。

反馈这个页面有错误、看不明白,或者缺了什么?告诉我们
反馈类型

提交时会附带本页地址、Lab ID、网站语言和设备类型。请不要填写个人信息。反馈最多保存 12 个月。隐私政策