继续阅读
从21厘米氢线听见第一批恒星 · 阅读路径
只用一个简短的Python脚本和HERA一期的公开文件,就能把第一天区在 到 之间的七个上限一位不差地重建出来;再按论文要求的方式,经过窗函数,拿两种模型历史和它们比较。本指南给出文件、命令、预期输出,以及五种会改变结论的错误。
你需要知道什么是带功率、窗函数,以及规则 。课程章节把时延功率变成带功率讲解了这些概念。
所有文件放在同一个文件夹里,都可以单独下载。
| 文件 | 内容 | 标注 |
|---|---|---|
| hera-h1c-idr2-window-extract.json | HERA带功率、、窗函数行和相邻协方差,三个天区、两个频带, | 真实观测,派生摘录 |
| model-spectra.json | 在HERA窗函数网格上的只含密度预测,分加热和冷两种历史 | 理想参考 |
| recompute_window_comparison.py | 脚本,只用标准库 | 方法 |
| expected-output.json | 脚本应当写出的结果 | 核对 |
| MANIFEST.json | 字节数、SHA-256、版本和单位 | 来源记录 |
| NOTICE.txt | 来源、引用方式和再使用条件 | 来源记录 |
摘录取自HERA合作组公开发布的HERA_2021_pspec_data.zip中的三个UVPSpec文件,下载于2026年11月12日,SHA-256为1c98d163...388d2c。论文写明,其表3、表4和图17、图18背后的数据是公开的。HERA Collaboration 2022, Data section 发布页没有写许可协议,所以这份摘录仅供教学和核验,并请使用者引用原论文。用h5py和numpy读取HDF5文件的提取脚本保存在本站源代码仓库里,其中从时延到 的换算按文件里记录的git版本,照hera_pspec原样写出。hera_pspec conversions.py
模型文件不是HERA的产品,也没有拟合HERA数据。它就是实验室里的线性预测 ,取 ,用Eisenstein-Hu无振荡转移函数和Planck 2018参数。Eisenstein and Hu 1998 加热历史在 处 ,冷历史为 。
在放文件的文件夹里执行:
python3 -I recompute_window_comparison.py hera-h1c-idr2-window-extract.json model-spectra.json my-output.json这个参数让Python不从当前文件夹导入任何东西。脚本会打印:
redshift 10.38
k=0.256 U=(95.74)^2 mK^2 heated/U=0.0032 cold/U=0.375
k=0.384 U=(178.23)^2 mK^2 heated/U=0.0014 cold/U=0.163
k=0.512 U=(296.30)^2 mK^2 heated/U=0.0006 cold/U=0.076
redshift 7.93
k=0.192 U=(30.76)^2 mK^2 heated/U=0.0168 cold/U=3.132
k=0.320 U=(49.60)^2 mK^2 heated/U=0.0110 cold/U=2.063
k=0.448 U=(113.39)^2 mK^2 heated/U=0.0029 cold/U=0.542
k=0.576 U=(148.85)^2 mK^2 heated/U=0.0021 cold/U=0.389然后把my-output.json和expected-output.json对照,只有Python版本一项允许不同。参考运行用的是Python 3.9.6,模型文件由Node v26.11.1导出。
如果某一行窗函数之和与一相差超过 ,或模型网格与窗函数网格不一致,脚本会报错停下。
文件里的带功率排在 的网格上。相邻的箱彼此相关,所以HERA的公开笔记本建议:要么每个频带只取最低的那个上限,要么隔一个箱取一个。脚本照笔记本的做法隔箱取值,第一频带从 开始,第二频带从 开始。HERA Public Data Release 1, notebook
| 频带、红移 | |||||
|---|---|---|---|---|---|
| 1, | 0.256 | 1708.7 | 3729.0 | 9166.8 | 95.74 |
| 1, | 0.384 | 6829.8 | 12467.4 | 31764.6 | 178.23 |
| 1, | 0.512 | 27953.9 | 29918.7 | 87791.2 | 296.30 |
| 2, | 0.192 | 211.7 | 367.3 | 946.4 | 30.76 |
| 2, | 0.320 | 1229.8 | 2459.7 | 49.60 | |
| 2, | 0.448 | 5974.1 | 3441.1 | 12856.3 | 113.39 |
| 2, | 0.576 | 7409.6 | 7373.1 | 22155.8 | 148.85 |
功率单位为 , 单位为 。两个标志性上限, 的 和 的 ,正是论文印出的数值。HERA Collaboration 2022, §4.4 精确复现它们,同时检验了摘录和规则。
对每个保留的箱,脚本把HERA完整窗函数网格上的模型值乘以这个箱的窗函数行,再求和。它也给出箱中心处的模型值,方便你看窗函数到底起多大作用。在 ,冷历史在前两个箱超过上限,分别是 倍和 倍;加热历史在每个箱都不到上限的 。在 ,两种历史都没有被排除。
这能说明什么、不能说明什么:完全耦合、从未加热的气体,即便只算密度起伏,在 也被HERA第一天区的数据排除了。至于自旋温度或电离起伏很强的模型,这个模型没有包含这些项,所以对它们什么也说明不了。
脚本有意算出每一种错误,并把结果写在正确值旁边。
文件里的 采用HERA的宇宙学参数,。HERA Collaboration 2022, §4 模型采用Planck 2018,。两者 相差0.13%,对模型点位置的影响远小于 的窗函数宽度,这里忽略不计,并记录在清单文件里。
估计值是交叉功率谱的实部,单位 。误差是文件中协方差对角元的平方根;既然七个上限都与论文一致,它们就是论文表3和表4背后的误差棒。摘录里也有第二、第三天区,但比较只用第一天区,和论文的标志性上限一致。这不是似然分析。严格的约束要把相关的上限放进统计模型里处理。
21厘米宇宙黎明与射电前景:试试冷氢预设,把它的HERA比值和脚本输出对照。
从21厘米氢线听见第一批恒星 · 阅读路径