---
title: "用真实NIRISS光谱复算一次有条件的大气检索"
description: "下载WASP-39 b实测分箱和已验证物理模型，离线复算完整后验、先验敏感性与失败残差。"
canonical_url: "https://sandboxphysics.com/zh/stories/planet-atmospheres/retrieve-a-frozen-niriss-spectrum/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/planet-atmospheres/retrieve-a-frozen-niriss-spectrum/"
last_modified: "2026-10-28"
---

[从掠射光路走到行星大气证据](https://sandboxphysics.com/zh/stories/planet-atmospheres/)

动手复算

# 用真实NIRISS光谱复算一次有条件的大气检索

Sandbox Physics · 2026-10-28

公开包用同一份WASP-39 b实测74分箱，分别拟合仅含云的大气，以及加入未掩食冷区的大气。完整后验和坏拟合都保留下来；另有明确标成合成数据的已知真值案例，检查计算是否能找回输入。

## 开始前需要什么

先读L1至L3，尤其分清拟合后的半径比平方谱与原始光变。需要Python、NumPy和终端，以及解压公开科学材料的空间；下载后无需私有仓库、账户或网络。

## 先确认究竟是哪份测量

源文件为作者仓库固定提交0608071e1e70ec7ff12707774ea03ace4b52ea85中的CMADF-WASP\_39b\_NIRISS\_transmission\_spectrum\_R100.csv，对应Feinstein等人的已发表分析。保留原始文件共11,063字节；出处文件给出完整SHA256、作者许可和Zenodo归档版本。

选取一阶、质量标记为零，而且完整区间都位于0.87至2.00微米内的分箱，剩下74行。真实外边界约为0.8732与1.9882微米，纵向误差约28.2至73.4 ppm。文件名写R100，通用表头写Native，而所给宽度对应的分辨本领约82.8至94.7；原始标记照样保留，计算直接使用数值宽度。

深度和不确定度已经以ppm表示。横向wave\_error依作者绘图脚本解释为半宽，再当成各自独立的顶帽响应近似；没有把它偷偷换成高斯误差，也没有宣称恢复了完整探测器响应。

对应阅读：WASP-39 b NIRISS author data · Zenodo 7709712 and fixed repository commit · Feinstein et al. (2023) · Early Release Science of WASP-39 b with JWST NIRISS

## 检查物理输入与运算顺序

分子输入是真实ExoMolOP POKAZATEL采样截面。原HDF5含22个压力、27个温度和76,744个波数点；精确字节区间提取保留全部22个压力、800至1600开尔文的九个温度，以及覆盖工作波段的15,084个采样。清单记录源文件总字节、数组偏移、无压缩结构，以及每段范围和哈希。

三个PHOENIX中分辨率成员分别为3500、4500和5500开尔文，来自许可明确、固定1.0版的Zenodo衍生产品。表头单位为纳米与每平方厘米、每秒、每纳米的尔格表面流量；计算保留共同的物理归一化。公开包附原成员、CRC32、哈希与署名。

前向模型采用课程推导的引力平方反比等温大气、有限顶边界和压力相关截面。先对每个原生采样波长求传输，再在实测分箱内求光子加权遮挡面积；灰云与未掩食恒星修正都作用于同一套物理计算。

浏览器把同一份正截面编码为紧凑的对数数组。在21个角点与预设、16个留出状态上，最终分箱相对Python双精度路线最大差别约0.015 ppm。这项量化检查与径向积分、以及用于后验的观测量网格插值分开记录。

对应阅读：Chubb et al. (2021) · ExoMolOP cross sections and k-tables · Polyansky et al. (2018) · The POKAZATEL water line list · Stuitje · PHOENIX medium-resolution stellar spectra, version 1.0 · Husser et al. (2013) · A PHOENIX library of stellar atmospheres and spectra

## 采样之前先验过观测量网格

后验网格保存的是已经完成传输、光子分箱后的行星面积，并先减去可精确恢复的参考半径平方基线，没有保存粗平均截面。温度插值不跨越原来每个一百开尔文的截面区间，也禁止外推。

初版在高水丰度边缘没有通过2 ppm数值目标。水丰度轴增加四个取值，对应额外476根完整原生气柱，总数从2499增到2975。统一细化至384层后，77个独立检验状态包含新增留出内点、边缘和全部预设；相对原生384层最大差别约0.425 ppm，相对另建云边界的1280层参照约1.636 ppm。

提供的validate\_grid.py用原始提取截面和恒星输入，真正重算这些传输比较。2 ppm指既定源产品模型内部的数值一致性，不是加到观测误差上的噪声，不是已标定的模型偏差分布，也不是逐线物理精度保证。

另列的源敏感性更大：原生波长隔点取样让五个预设改变约40至145 ppm，删去已知温度行改变约3.4至31.8 ppm，与实测不确定度相当。两ppm以内的内部检查以完整源产品和指定插值为条件，不能把这些表示变化换成总精度上界或高斯噪声。

可选的rebuild\_grid.py从头重建2975根完整气柱，并核对最终单精度网格哈希。这是最慢的一步；完成输入哈希与独立验证后，后验复算可直接使用提供的网格。

```
python3 validate_grid.py --materials . --output rerun-validation
python3 rebuild_grid.py --materials . --output rebuilt-grid
```

对应阅读：Chubb et al. (2021) · ExoMolOP cross sections and k-tables · Heng and Kitzmann (2017) · Transmission spectra and the radius–pressure degeneracy

## 也要检查参照本身够不够细

早先320层计算对640或960层参照看起来过关，再换1280层检查，却发现两处网格差别约2.13和2.09 ppm。实际失败点、旧网格哈希和复现所需输入都保留下来，没有把难点删掉。

生产中的场景、光谱、网格与合成恢复现在统一采用384层；难点另外对2048层比较，当前网格的差别低于1.73 ppm。公开finer\_reference.py会重算退役原生结果与当前计算；旧网格只用于复现失败，后验采用384层版本。

与指定有限积分参照相符，属于数值比较，并不是相对未知连续大气的严格误差界；更大的源采样与温度插值敏感性也仍然存在。后验继续以完整冻结产品和物理假设为条件。

```
python3 finer_reference.py --materials . --output rerun-finer
```

对应阅读：Heng and Kitzmann (2017) · Transmission spectra and the radius–pressure degeneracy · Chubb et al. (2021) · ExoMolOP cross sections and k-tables

## 在四种明示条件下复算同一后验

安装固定NumPy版本，在解压目录运行analyze.py。默认依次计算：仅含云；4500开尔文冷区、占比上限0.05；3500开尔文冷区、同样占比先验；以及4500开尔文冷区、上限收紧至0.01。各组都用同一实测74分箱、归一化高斯似然和L3给出的同一大气先验。

每组四条链，每条先预热6000步，再保留16,000步。保留位置彼此相关，因此汇总另报主体与尾部有效样本量，不把总保留数当成独立样本数。预热结束后提议不再自适应，超出先验的提议直接拒绝。

脚本保存完整物理与计算坐标链、参数分位数、诊断和逐分箱预测区间，另生成加上噪声的预测测量。比较脚本检查固定先验与收敛门槛，并对后验分位数采用明确数值容差，而不是把链文件哈希当成收敛证据；种子和软件版本在运行说明中固定。

```
python3 -m pip install -r requirements.txt
python3 analyze.py --materials . --output rerun
python3 verify_outputs.py --expected expected --actual rerun
```

对应阅读：Vehtari et al. (2021) · Rank-normalized split R-hat and effective sample size · WASP-39 b NIRISS author data · Zenodo 7709712 and fixed repository commit · Heng and Kitzmann (2017) · Transmission spectra and the radius–pressure degeneracy

## 坏结果也要留在答案里

先打开cloud-summary.json与spots4500-summary.json，再看各自预测CSV。保留样本的最小卡方约332和257，中位曲线标准化残差均方根约2.13和1.88；分别有28和23个观测点落在中央百分之九十五预测测量区间外。每个变化参数的链诊断都通过了，失败依然清楚存在。

接着看完整参数区间：温度挤向先验低界，水丰度挤向高界，云压与参考半径互相补偿。4500开尔文冷区占比中位数约0.0224；改用3500开尔文谱，移到约0.0373。缩窄占比先验，后验与剩余偏差都会改变。

连续正先验内部的正区间，不能检验单点假设 $f=0$。这里没有计算证据积分或Bayes因子，也不能把受限模型之间的卡方差，直接说成与模型无关的分子或恒星检测显著性。

练习没有其他吸收体和非灰云物理，还把未知分箱协方差当成零。原论文使用了更丰富的大气模型。这些简单模型解释部分谱带结构，同时留下需要继续处理的物理或统计偏差。

对应阅读：Feinstein et al. (2023) · Early Release Science of WASP-39 b with JWST NIRISS · Rackham, Apai and Giampapa (2019) · The Transit Light Source Effect II · Brogi and Line (2019) · Retrieval with high-resolution cross-correlation spectroscopy · Vehtari et al. (2021) · Rank-normalized split R-hat and effective sample size

## 让已知大气回答一个更窄的问题

检验命令另行求解一个不在网格节点上的大气：1123开尔文、水占比对数负3.47、云压对数负1.37、十巴半径比0.1337、冷区占比0.018。再按原分箱误差加入固定高斯噪声。合成CSV有明确标签，与真实NIRISS输入分开放置。

这组四链后验通过相同诊断，保存运行中每个注入参数都在各自边缘百分之九十五区间内。这一例找回了输入；区间覆盖率还要跨多种大气与噪声反复检验。

其他独立检查包括：严格关掉水吸收、积分均匀吸收球壳、逼近薄大气掠射柱密度极限、验证相同恒星谱不给污染、核对有限先验归一化，以及用自回归参照检查有效样本量。故意分开的链必须触发失败。

最后把真实与合成残差放在一起。模型生成的数据能找回输入，真实数据却预测不好，两件事可以同时成立，也正好把计算跑通与行星解释充分区分开。

```
python3 verify_science.py --materials . --output rerun-checks --synthetic
```

对应阅读：Vehtari et al. (2021) · Rank-normalized split R-hat and effective sample size · Heng and Kitzmann (2017) · Transmission spectra and the radius–pressure degeneracy · Feinstein et al. (2023) · Early Release Science of WASP-39 b with JWST NIRISS

## 实测后验保留失败结果

各行使用同一实测74分箱与大气先验，每组四条链，预热后每条至少保留16,000个相关位置。有效样本量另报，下面取各变化物理参数中的最小值。链诊断通过，不会消除预测失败。

| 条件 | 保留最小卡方 | 最大分链R-hat | 最小主体与尾部有效样本量 | 预测测量区间外分箱数 |
| --- | --- | --- | --- | --- |
| 灰云，无冷区 | $331.95$ | $1.00262$ | 1866 | 28 |
| 4500开尔文，占比不超过0.05 | $257.11$ | $1.00341$ | 916 | 23 |
| 3500开尔文，占比不超过0.05 | $248.17$ | $1.00536$ | 821 | 20 |
| 4500开尔文，占比不超过0.01 | $279.27$ | $1.00653$ | 1063 | 28 |

温度和水丰度堆向先验边界，固定恒星谱与占比先验也影响答案。公开预测CSV保留逐波长残差，没有计算模型证据或Bayes因子。

## [用画面解释一条后验退化](https://sandboxphysics.com/zh/labs/exoplanet-transmission-spectrum/)

1. 重现高云状态，指出哪些大气光路被云删除。
2. 加入未掩食冷区，观察气体光路不动而表观光谱改变；回到后验CSV，找出它能部分补偿的波长形状。

## 练习与解释性答案

1. 如果有人把水丰度中位数报到很多位小数，你会先检查哪份输出？

   展开解释

   先看完整丰度区间、参数边界和标准化预测残差。本题后验挤在丰度上界，同时漏掉许多实测分箱。剩下的偏差决定哪部分物理解释还需要修订。

2. 把冷区占比上限从0.05改为0.01，没有模型证据计算时还能比较什么？

   展开解释

   比较两套条件下的后验区间、边界堆积和逐分箱预测失败。公开的窄先验运行仍收敛，但拟合更差；若要进一步比较模型证据，还要对各模型的似然按适当先验积分。

## 公开科学材料

- [1. 脚本、实测与恒星输入、预期结果](https://sandboxphysics.com/stories/planet-atmospheres/materials/niriss-retrieval-materials.zip)
- [2. 原生提取截面输入](https://sandboxphysics.com/stories/planet-atmospheres/materials/niriss-opacity-source.zip)
- [3. 验证网格，第一块](https://sandboxphysics.com/stories/planet-atmospheres/materials/niriss-grid-part1.zip)
- [4. 验证网格，第二块](https://sandboxphysics.com/stories/planet-atmospheres/materials/niriss-grid-part2.zip)
- [阅读独立运行说明](https://sandboxphysics.com/stories/planet-atmospheres/materials/README.md)
- [检查精确版本、单位、许可和哈希](https://sandboxphysics.com/stories/planet-atmospheres/materials/provenance.json)
- [检查四组实测后验与失败结果](https://sandboxphysics.com/stories/planet-atmospheres/materials/comparison.json)
- [检查77项独立数值比较](https://sandboxphysics.com/stories/planet-atmospheres/materials/observable-grid-validation.json)

把四个ZIP解压到同一个新普通目录，再运行下面的组装与检查。每包均小于25 MiB；缺块、错序或改字节会在恢复同一冻结网格前被拒绝。

```
python3 assemble_grid.py .
python3 -m pip install -r requirements.txt
python3 validate_grid.py --materials . --output rerun-validation
python3 analyze.py --materials . --output rerun
python3 verify_outputs.py --expected expected --actual rerun
python3 verify_science.py --materials . --output rerun-checks --synthetic
```

[上一篇：一个大气后验究竟能告诉我们什么](https://sandboxphysics.com/zh/stories/planet-atmospheres/probability-radius-and-atmospheric-degeneracy/) [下一篇：从原文读晨昏差异与分辨谱线证据](https://sandboxphysics.com/zh/stories/planet-atmospheres/read-limb-asymmetry-and-high-resolution-evidence/)

## 来源与计算范围

1. [Vehtari et al. (2021) · Rank-normalized split R-hat and effective sample size](https://doi.org/10.1214/20-BA1221)

   Bayesian Analysis 16，667–718；采用修正后的秩归一化分母，并核读作者附录https://avehtari.github.io/rhat\_ess/rhat\_ess.html。独立NumPy实现另按Stan 2.33参考定义计算自相关与初始正、单调成对截断，附独立同分布、AR(1)及故意分离链的检验。诊断针对采样，不证明物理模型充分。

2. [Feinstein et al. (2023) · Early Release Science of WASP-39 b with JWST NIRISS](https://doi.org/10.1038/s41586-022-05674-1)

   已发表，Nature 614，670–675。核读图1至图3及谱提取、光变与大气模型方法。教程使用作者发布的固定nirHiss光谱，选取74个一阶分箱，没有重做论文的完整化学与云检索。

3. [WASP-39 b NIRISS author data · Zenodo 7709712 and fixed repository commit](https://doi.org/10.5281/zenodo.7709712)

   归档数据采用CC BY 4.0；精确CSV取自作者仓库固定提交0608071e1e70ec7ff12707774ea03ace4b52ea85，仓库另附MIT许可。公开出处文件保存原始字节、选行规则、单位与SHA256，没有整取归档。

4. [Heng and Kitzmann (2017) · Transmission spectra and the radius–pressure degeneracy](https://arxiv.org/html/1702.02051v2)

   固定接受稿arXiv 1702.02051v2，对应MNRAS 470，2972–2981，DOI 10.1093/mnras/stx1453。第2.2节推导薄大气、恒定引力极限；第3.2至3.3节讨论参考半径与压力。本课程另行推导随距离变化引力的扩展。

5. [Chubb et al. (2021) · ExoMolOP cross sections and k-tables](https://doi.org/10.1051/0004-6361/202038350)

   A&A 646，A21；核读第3.1至3.3节和表1至表3。真实采样截面产品给出压力、温度、波数及每分子的平方厘米截面。近似氢氦展宽和源分辨率保留为模型条件。

6. [Polyansky et al. (2018) · The POKAZATEL water line list](https://doi.org/10.1093/mnras/sty1877)

   主水同位素线表的一手说明。交付的截面是ExoMolOP衍生产品，没有重新计算完整线表。ExoMol数据及本题截面衍生文件保留CC BY-SA 4.0。

7. [Husser et al. (2013) · A PHOENIX library of stellar atmospheres and spectra](https://doi.org/10.1051/0004-6361/201219058)

   恒星模型库的一手说明。冻结输入采用另行固定版本的中分辨率衍生产品Zenodo 17674612，1.0版，CC BY 4.0。真实ASCII单位是纳米与每平方厘米、每秒、每纳米的尔格，光谱保留未缩放表面流量。

8. [Stuitje · PHOENIX medium-resolution stellar spectra, version 1.0](https://doi.org/10.5281/zenodo.17674612)

   三个精确源成员的温度为3500、4500与5500开尔文，cgs对数引力4.5，太阳金属丰度及零alpha增丰。公开包保留原始成员、ZIP偏移、CRC32、SHA256与CC BY 4.0出处。有效光谱分辨率为5000，过采样不会提高有效分辨率。

9. [Rackham, Apai and Giampapa (2019) · The Transit Light Source Effect II](https://arxiv.org/html/1812.06184v1)

   固定arXiv 1812.06184v1，对应AJ 157，96，DOI 10.3847/1538-3881/aaf892。第III.1节式3至式6定义未掩食区域修正及均匀亮度近似；第IV.3节说明，通常活跃程度的F、G、K型恒星分子污染一般较弱。

10. [Brogi and Line (2019) · Retrieval with high-resolution cross-correlation spectroscopy](https://arxiv.org/html/1811.01681v2)

    固定接受稿arXiv 1811.01681v2，对应AJ 157，114，DOI 10.3847/1538-3881/aaffd3。第II.2.2节推导似然映射；图2、图5、图7和图10分别检查处理、标定、线表选择与遗漏吸收体。本题低分辨教学截面不能复现论文的逐线分析。
