---
title: "从一条 SDSS 光谱，重算森林里透过了多少光"
description: "固定一个类星体和同一份 SDSS 合并光谱，逐步检查掩码、拟合连续谱、计算透射率，并量出连续谱假设对结果的影响。"
canonical_url: "https://sandboxphysics.com/zh/stories/lyman-alpha-forest/recompute-a-fixed-sdss-sightline/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/lyman-alpha-forest/recompute-a-fixed-sdss-sightline/"
last_modified: "2026-11-05"
---

[莱曼阿尔法森林](https://sandboxphysics.com/zh/stories/lyman-alpha-forest/)

莱曼阿尔法森林 · L3

# 从一条 SDSS 光谱，重算森林里透过了多少光

Sandbox Physics · 2026-11-05

这条固定 SDSS 光谱给出的森林平均透射率约为 0.746，但这个数依赖我们怎样估计背景连续谱。先保留文件、波长和筛选规则，再算透射率，才能把可复算的算术结果与气体的物理解释接起来。下面会完整走过一次，也让负透射率和大于一的像素留在结果里。

## 开始前需要什么

先读概念篇，知道类星体提供背景光、中性氢吸收其中一部分。这里需要数组、加权拟合和平均值；不要求先会拟合宇宙学参数。

## 先固定天体，再打开文件

选择对象是 SDSS J030335.42−002001.1，位置来自 Chen 等人的类星体表，而不是先把候选光谱都算一遍，再挑结果最好看的一条。固定 SDSS 标识为 plate 2068、MJD 53386、fiber 316，归约标记 run2d 为 26。重算材料列出完整下载地址、文件长度与 SHA-256，避免同名文件或后续归约版本悄悄换掉输入。

这份 FITS 是多次曝光合并、经仪器归约后的光谱，不是原始 CCD 计数。文件含 3812 个合并像素。管线把它分类为 QSO，红移约为 2.6945615，ZWARNING 为零；论文表中的 2.72 是另一处给出的近似值。以下所有波长变换使用这份文件的管线红移。

读数据前先查列的定义。SDSS 的 loglam 是真空、日心系波长的十进制对数，波长单位为埃；flux 的单位是每平方厘米、每秒、每埃 $10^{-17}$ 尔格。ivar 是相应通量单位平方的倒数，用作噪声权重。这份光谱的列单位标记不完整；上面的单位取自 SDSS 官方数据说明。

对应阅读：Chen et al. (2017), published quasar target table: SDSS J030335.42−002001.1 · SDSS DR17: Spectroscopic Data Basics · Fixed SDSS continuum and flux-statistics exercise

## 给波长和掩码一份明确的分工

把观测波长除以一加类星体红移，得到类星体静止系波长。用静止系定义窗口，是为了让森林与类星体自身发射线的位置对应。这里的森林窗口固定为 1040 至 1180 埃。它避开靠近莱曼阿尔法发射线的区段，但单靠这个窗口不会自动除去金属吸收或强氢吸收系统。

森林里的氢位于类星体前方。每个像素若解释为莱曼阿尔法吸收，吸收体红移要用该像素的观测波长除以 1215.67 埃，再减一。这段窗口大致对应红移 2.16 至 2.59，不能把整片森林都放到类星体的红移上。

默认保留波长、通量和逆方差都有限、逆方差大于零，并且 and\_mask 等于零的像素。SDSS 的 AND 掩码按所有参与曝光共有的标记合并；OR 掩码保留任一曝光出现过的标记。两者回答不同的问题。这里没有声称 AND 为零就排除了所有可能的污染。

固定规则后，森林保留 548 个像素，排除一个。把规则改为 or\_mask 等于零，会只剩 359 个。后面把它作为筛选敏感性对照；像素集合变了，两个均值也在回答不同选样下的问题。

$$
\begin{aligned}\lambda_{\rm rest}&=\frac{10^{\tt loglam}}{1+z_{\rm QSO}}\\ z_{\rm abs}&=\frac{\lambda_{\rm obs}}{1215.67\,\mathrm{\mathring A}}-1\end{aligned}
$$

前一个式子定位类星体静止系窗口，后一个式子定位前景吸收体。两种红移有不同用途。

对应阅读：SDSS DR17: Spectroscopic Data Basics · Fixed SDSS continuum and flux-statistics exercise

## 估计被吸收之前，本来应该有多少光

透射率需要一个分母：假如没有这段吸收，类星体原本会给出多少通量？观测文件没有直接替我们测出这个连续谱。这里采用一条简单、可检查的幂律，拟合静止系 1270 至 1290、1315 至 1325、1340 至 1360 埃三个固定窗口。它们在森林红端以外，提供向森林外推的基准。

三个窗口共保留 166 个像素。用逆方差加权，拟合在 1280 埃处的幅度与幂律斜率。得到幅度约 3.31429，沿用原通量单位；斜率约负 0.846066。第二种求解办法先在每个斜率下解析求最佳幅度，再作一维搜索；它与二维最小二乘的参数相对相差不到十亿分之四。

这证明两种求解办法算的是同一个拟合问题。它没有证明幂律就是天体真实的未吸收连续谱。加权残差平方和约 288.862，名义自由度 164；像素相关、发射结构和模型失配没有完整纳入，因此不把它换算成可靠的拟合显著性。

图中连续谱穿过红端三个拟合窗口，再延伸到森林。现在回头看“透过了多少光”，分母来自什么假设就一目了然。

$$
\begin{aligned}C(\lambda)&=A\left(\frac{\lambda_{\rm rest}}{1280\,\mathrm{\mathring A}}\right)^p\\ F_i&=\frac{f_i}{C_i}\end{aligned}
$$

$f_i$ 是合并像素的通量，$C_i$ 是拟合后外推的连续谱，$F_i$ 是相对于这个估计连续谱的通量比。

![固定SDSS合并光谱、外推连续谱和未经截断的森林通量比](https://sandboxphysics.com/_astro/observed.DF8V17ff.svg)

SDSS J030335.42−002001.1，plate2068、MJD53386、fiber316。蓝色为森林窗口，绿色为连续谱窗口；连续谱是本教程的加权幂律估计。下图保留小于零与大于一的带噪声比值。这是实测派生数据，与合成气体屏幕分开。 [查看完整图像](https://sandboxphysics.com/_astro/observed.DF8V17ff.svg)

对应阅读：Fixed SDSS continuum and flux-statistics exercise

## 先保留所有像素，再计算统计量

对 548 个森林像素，直接求通量比的算术平均，得到 0.7461836。样本方差约为 0.0996164。若暂时把连续谱视为已知，并忽略像素间相关，逐像素噪声方差除以连续谱平方的平均约为 0.0355552；相减得到约 0.0640612。这是带条件的噪声扣除估计，不能直接叫做宇宙气体的本征方差。

其中 13 个通量比小于零，109 个大于一。真实透射概率当然在零和一之间，但带噪声的通量、减背景和连续谱估计会把观测比值推到外面。把它们截回零到一，会改变均值、方差和分布。这里保留原值。分布图采用负 0.5 至 1.5 的 20 个箱，并另报一个下溢、三个上溢像素。

有效光学深度先对通量比取平均，再取负对数，约为 0.292784。不能先对每个像素取负对数再平均：两种运算本来就不等价，而且负像素没有实数对数。

更严格的 OR 掩码对照得到平均值约 0.767696，有效光学深度约 0.264362。这个变化提醒我们：统计量属于这批被保留的像素。筛选选择本身也需要记录。

$$
\begin{aligned}\overline F&=\frac1N\sum_{i=1}^{N}F_i\\ \tau_{\rm eff}&=-\ln\overline F\end{aligned}
$$

这里平均的是保留像素的通量比。有效光学深度存在的前提是整体均值为正。

对应阅读：Fixed SDSS continuum and flux-statistics exercise

## 主动改变一个假设，看看答案怎样移动

把整条估计连续谱乘以 0.95，不改观测通量，平均透射率升到约 0.785456，有效光学深度降到约 0.241490。改乘 1.05，平均值降到约 0.710651，有效光学深度升到约 0.341574。分母变高，同一份收到的光就显得损失更多。

这两个百分之五是人为选择的敏感性测试，不是从数据得到的一倍标准差。再把斜率分别减去或加上 0.3，平均透射率约为 0.714569 和 0.779293。幅度误差与斜率误差会以不同方式影响外推距离较远的蓝端。

高信噪比也不能替代天体与连续谱检查。如果整段平均比值超过一，先看所选天体的发射结构、红移和连续谱窗口。它可能暴露了背景估计或天体识别的问题；把均值截到一，会把这条诊断线索藏起来。

对应阅读：Fixed SDSS continuum and flux-statistics exercise

## 把重算结果交给下一个物理问题

重算时，先比较文件哈希，再逐项检查单位、红移、窗口、掩码、连续谱参数和像素数，最后才比较统计量。下载包给出输入清单、计算脚本与预期结果；实际运行脚本会生成派生像素表。原始 FITS 从注明的 SDSS 地址另取。先用固定文件复现，再尝试另一天体，才知道差异出在对象还是代码。

这一次练习得到的是一条视线、一个窗口、一个连续谱估计下的通量统计。尚未加入完整仪器线扩散函数、像素协方差、金属线、阻尼翼系统或连续谱协方差。它足以练习从文件到可检查结果的路径，不足以给出星系间气体温度或暗物质质量。

前面的数值气体屏幕设在红移三，而这份森林位于更低的吸收红移。即使两个平均值看起来接近，也没有构成模型拟合。下一步若要做物理推断，就要让模拟、仪器处理、筛选和统计窗口对应同一批观测。

对应阅读：SDSS DR17: Spectroscopic Data Basics · Fixed SDSS continuum and flux-statistics exercise

## 练习与解释性答案

1. 观测通量固定，把连续谱整体调高百分之五，平均透射率应怎样变？

   展开解释

   所有通量比都除以 1.05，所以均值由约 0.746184 降到约 0.710651。有效光学深度增加约 0.04879。它是连续谱假设引起的变化，不是观测到气体突然变密。

2. 为什么管线红移约 2.69456，而森林吸收体红移更低？

   展开解释

   光先从类星体出发，再经过前景气体。类星体红移用于标出自身静止系窗口；每个前景吸收体由它所在像素的观测波长定位。

## 动手检验预测

### [把观测统计与正向模型分开比较](https://sandboxphysics.com/zh/labs/lyman-alpha-sightline/)

1. 固定数值视线，记录平均透射率，再只改变电离光强。
2. 说明数值模型中给定的入射连续谱，与观测中需要外推的连续谱有何不同。
3. 列出把红移三的气体屏幕用于拟合这份较低红移森林前，仍要补齐的对应关系。

## 独立复算材料

[下载科学复算包](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/lyman-alpha-science-v1.zip) · [阅读安装与计算范围](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/README.md)

Python配合NumPy和SciPy可离线重算三条合成光谱。观测练习另需Astropy及单独获取、核对哈希的固定SDSS合并光谱；带噪声的比值保留原值，不截回零到一。

单件脚本、字节与SHA-256

- [README.md](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/README.md) (5881 B)
  `0f1259a35614944edbc800caab26c9ddfda8efcbdcadb76a1c407b6ee41c21db`
- [calculate.py](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/calculate.py) (1960 B)
  `789206ae0a4100c1ad25437d59c64f4b55d8482d9d4a03dfde040e900b727b2b`
- [expected-observed.json](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/expected-observed.json) (10116 B)
  `469a2191d51bf9050e1800df9ebb5e5b9aa3083da81db313f3cea8b5f2f28c12`
- [expected-synthetic.json](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/expected-synthetic.json) (51605 B)
  `1409ebb5261bcef0ab0871a40e48bdbce4a32404c08e9b6abe7a024ab7c56ade`
- [fetch\_sdss.py](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/fetch_sdss.py) (1694 B)
  `23d8553b76c604c4e071411d845fe576f32471770313ae7e2e823c756c7ef32c`
- [field-input.json](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/field-input.json) (934 B)
  `1206529ed37acab5d72b1e83458c1db78f7a8cd579964ce01db4c02470c0dc43`
- [input-manifest.json](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/input-manifest.json) (651 B)
  `692fce6cd598d3bc14288384381afd24f7432d4e8f054fb94609e1a469e8dcdb`
- [lyman-alpha-science-v1.zip](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/lyman-alpha-science-v1.zip) (29960 B)
  `0a169f89a41770dd33b6bbefa7cda8ccd1d8579d0c77013ea77e0ccaa6112ea3`
- [model.py](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/model.py) (3656 B)
  `6a05678c4e50a5e4180aa8017633be68dcce3e7f16f55150df90edca9d465a22`
- [sdss.py](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/sdss.py) (6728 B)
  `4c9e99d73bfee1f07c9069caf1442f77cdee2cfba51fd079c06732759b6055be`

[上一篇：不同位置的气体怎样挤进同一段光谱](https://sandboxphysics.com/zh/stories/lyman-alpha-forest/when-several-places-share-one-velocity/) [下一篇：从速度梯度里，读出气体过去受过的热](https://sandboxphysics.com/zh/stories/lyman-alpha-forest/read-pressure-history-in-small-scale-velocities/)

## 来源与计算范围

1. [Chen et al. (2017), published quasar target table: SDSS J030335.42−002001.1](https://academic.oup.com/view-large/94840027)

   目标表只用于在通量分析前固定已发表天体名称、位置与近似红移2.72。实际合并光谱给出管线红移2.69456148147583。这里只读目标表，没有声称全文核读。

2. [SDSS DR17: Spectroscopic Data Basics](https://www.sdss4.org/dr17/spectro/spectro_basics/)

   官方说明用于解释合并光谱、真空日心波长、通量单位、逆方差、对数采样和AND/OR掩码。固定文件有3812个合并像素，不是原始曝光，也没有直接测得未吸收连续谱。

3. [Fixed SDSS continuum and flux-statistics exercise](https://sandboxphysics.com/stories/lyman-alpha-forest/materials/README.md)

   固定plate2068/MJD53386/fiber316、run2d26，SHA-256为83b81bfc16c91750030758d00646366ff2cada06b7f05a80ac97ad152fc387fa。原FITS另取；派生比值使用明确窗口与掩码。噪声扣除以固定连续谱和对角噪声为条件，不构成温度或宇宙学推断。
