---
title: "从 TESS 的十二个像素提取亮度"
description: "用固定的 TIC 25155310 第一扇区实测像素重做孔径测光，保存背景、质量标志与失败示例。"
canonical_url: "https://sandboxphysics.com/zh/stories/stellar-photometry/tess-pixels/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/stellar-photometry/tess-pixels/"
last_modified: "2026-10-28"
---

[在拥挤天空里测准星光](https://sandboxphysics.com/zh/stories/stellar-photometry/)

AC02 · L3

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

Sandbox Physics · 2026-10-28

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

## 开始前需要什么

先读前两章，知道孔径求和与背景扣除。会在终端运行 Python 脚本。离线提取不需要第三方库；重新从 FITS 冻结数据时需要 Astropy。

## 打开同一份数据

原始产品是 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 使用太阳系质心校正后的儒略日，减去固定偏移 $2457000$，单位天。不要把它误读为从观测开始计时的秒数。

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

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

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

## 找出十二个孔径像素

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

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

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

$$
F_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\;[\mathrm e^{-}\,\mathrm s^{-1}]$ 实测 TESS 像素求和

青色：正确孔径和 · 橙色：重复减背景 · 灰色：带标志帧 $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
```

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

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

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

## 动手检验预测

### [对照已知背景的合成例子](https://sandboxphysics.com/zh/labs/crowded-star-photometry/)

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

[上一篇：同一像素的光，可以属于两颗星](https://sandboxphysics.com/zh/stories/stellar-photometry/separating-stars/) [下一篇：读懂去混叠与差分图里的残差](https://sandboxphysics.com/zh/stories/stellar-photometry/reading-crowded-images/)

[下载完整复算文件包](https://sandboxphysics.com/tutorials/stellar-photometry/materials.zip) · [运行说明](https://sandboxphysics.com/tutorials/stellar-photometry/README.md)

[实测输入与来源](https://sandboxphysics.com/tutorials/stellar-photometry/tess-tic25155310-sector1.json) · [Python 提取脚本](https://sandboxphysics.com/tutorials/stellar-photometry/extract-lightcurve.py) · [文件校验和](https://sandboxphysics.com/tutorials/stellar-photometry/manifest.json)

## 来源与计算范围

1. [MAST, Read and Display A TESS Target Pixel File](https://spacetelescope.github.io/mast_notebooks/notebooks/TESS/beginner_how_to_use_tp/beginner_how_to_use_tp.html)

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

2. [TESS Science Data Products Description, Revision F (2020)](https://archive.stsci.edu/files/live/sites/mast/files/home/missions-and-data/active-missions/tess/_documents/EXP-TESS-ARC-ICD-TM-0014-Rev-F.pdf)

   第 4.2.2 节表 8：FLUX 已扣除背景；FLUX\_BKG 与 FLUX\_BKG\_ERR 保存背景估计及其误差。表 32 解释质量标志。

3. [Photutils 3.1.1, Aperture photometry](https://photutils.readthedocs.io/en/3.1.1/user_guide/aperture.html)

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