先确认究竟是哪份测量
源文件为作者仓库固定提交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。缩窄占比先验,后验与剩余偏差都会改变。
连续正先验内部的正区间,不能检验单点假设 。这里没有计算证据积分或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