继续阅读
空间的整体形状 · 阅读路径
读完这篇,你会亲手跑一个 Python 脚本:它造出一片周期天空,找出立方三维环面的真圆对,拿 300 对随机假圆对给它们打分,再展示这项检验失败的四种方式。所有步骤只用三个存好的文件和 Python 标准库。方法沿用 Cornish、Spergel 和 Starkman 的圆统计量,以及 Planck 用过的假圆对门槛。这是一个玩具模型:没有真实的微波物理,没有波束,也没有遮挡,得到的数字也不是对任何卫星天图的重新分析。
请先读怎样分辨真匹配与碰巧相似那一章,下面用到的公式都在那里推导过。
把脚本、存好的输入和预期输出下载到同一个空文件夹。脚本只导入 json、math、random 和 sys。预期输出用 Python 3.9.6 生成,又用 Python 3.14.3 复现过;两次结果每个数字都相同,只有记录的版本号不同。在笔记本电脑上跑一次大约 20 秒。
在这个文件夹里运行:
python3 -I recompute_matched_circles.py tutorial-inputs.json my-output.json参数 -I 让 Python 不从当前文件夹或环境变量里加载模块,保证只用标准库。
输入文件里有四次运行,每次设定同样几项:
{"boxSide": 1.2, "bumpWidth": 0.08, "bumpCount": 3000, "seed": 86, "noiseRatio": 0.5, "circleSamples": 64, "falsePairTrials": 300, "falsePairRadiiDegrees": [10, 20, 30, 40, 50, 60, 70, 80]}长度以 为单位,即到最后散射面的共动距离,所以我们看到的球面半径为 1。盒子边长 就是 boxSide。角度用度。温度以球面上信号的标准差为单位,所以 noiseRatio 就是 ,即信噪比 的倒数。
天空由 3000 个宽度为 (即 bumpWidth)的高斯鼓包叠加而成,位置在盒内随机,权重是随机高斯数。每个鼓包都复制到所有够得着球面的格点像 上,场因此是周期的。相距 的两点,相关程度正比于 对所有像求和。实验里的天空用傅里叶模式另行构造,两者斑点类型相同,具体天空不同。要比较的是行为,不是数字。
四次运行分别是:wrapped-box,;near-the-limit,;larger-than-the-view,;noisy-sky,与 wrapped-box 相同,但噪声是信号的两倍。
打开 my-output.json,找到 runs 下的 wrapped-box。先读 periodicityDifference:它比较某一点和这一点平移一个盒长后的场值,必须恰好为零。不为零,说明求和时漏掉了一些格点像,后面每个圆的分数都会出错。
列表 predictedPairs 对每一对离我们不到 2 的像 给出一项。 时共九项:三对间距 、半径 ,六对间距 、半径 。这些半径来自 。
对每一对,脚本在绕 的圆上取 64 个点,再取这 64 个物理点平移 后的位置,它们落在绕 的圆上。没有噪声时,九项的 statisticAtZeroShift 都是 ,bestShiftSamples 都是 0:两个圆上的温度逐点相同。如果这里出现非零的最佳转角,说明两个圆采样时的起始方向不一致。
noisyStatisticAtZeroShift 给每个圆各加独立噪声。1998 年论文的第 5 式预言,噪声为信号一半时 ,输出里记作 css1998Equation5。九个带噪声的值平均为 。
盲搜索不能只给真圆对打分,它得试遍所有圆心和半径,并对每一对取最佳转角。falsePairs 这一块对随机轴上的 300 对背对背圆做了这件事,半径从 10 度到 80 度中抽取,噪声与带噪声的真圆对相同。
读两个数。singleShift.standardDeviation 是固定转角时的散布,为 ,比旁边记录的独立采样值 宽:相邻采样点共享斑点,一个圆上的独立数值少于 64 个。bestOverShifts.percentile99 是各自取最佳转角后,1% 的随机圆对能超过的假匹配水平,为 。300 次试验里,它是第四大的值。
| 运行 | 盒子边长 | 真圆对数 | 真圆对最高分 | 1% 假匹配水平 |
|---|---|---|---|---|
| wrapped-box | 9 | 至 | ||
| near-the-limit | 3 | 、、 | ||
| larger-than-the-view | 0 | 无 | ||
| noisy-sky | 9 | 至 |
wrapped-box 里每一对真圆都越过了假匹配水平。在这片玩具天空里,这算一次探测。
盒子比视野大。larger-than-the-view 的 predictedPairs 是空的,因为没有像离我们不到 2。可最好的假圆对仍有 分。如果搜索不设门槛、直接报告最高分,就会在一片没有圆的天空里宣布找到了圆。这就是不可辨识的极限:圆检验在这里给出的答案,和无限平直空间一样。
噪声淹没匹配。noisy-sky 在正确转角下的预言降到 。取最佳转角后,真圆对得分在 到 之间,九对里只有一对超过假匹配水平 。拓扑仍然在那里,只是这张天图显示不出来。
接近极限的小圆。near-the-limit 的圆半径只有 ,采样点挨得很近、共享斑点,假匹配水平升到 ,三对真圆里有一对得分 ,落到门槛以下。Planck 搜索里最小可测圆半径,也是由同一个机制定下的。
方向弄反。mirroredBestStatistic 把每个真圆和反方向读取的伙伴圆比较。这不是匹配,可取最佳转角后仍得到 到 。光滑天空上的两条温度曲线,可能碰巧在一段圆弧上对得很好。单凭一个高的最佳分数永远算不上证据,搜索必须检验拓扑预言的那种方向。
分数保留四位小数。1% 假匹配水平取自 300 个值里第四大的那个,它自身的不确定度是百分之几:噪声为信号一半的三次运行,分别给出 、 和 。真正的分析要用多得多的模拟,并完全按照数据的处理流程来做;Planck 用了 300 个完整的天图模拟。
噪声模型给每个采样点加独立高斯噪声。真实天图的噪声随天区变化,银河附近的天区要被遮掉。天图里还有气体速度和变化的引力势带来的成分,它们在通往同一点的两条路径上各不相同。脚本里这些都没有,所以它的结果描述的是方法怎样表现。
在实验里选一个预设,再点数据行里的导出按钮。导出的记录列出了预言圆对、它们的半径,以及盒轴圆对的分数和偶然水平。同一个盒子边长下,圆对数和半径应当与 predictedPairs 完全一致。分数在细节上会不同,因为两片天空不同;但没有噪声时真圆对应接近 1,噪声增大时应沉向偶然水平带。
来源:Cornish、Spergel 与 Starkman 1998,第 5、6、8 式,Planck 2015 结果第十八篇第 4.2 与 5.1.1 节,COMPACT 合作组预印本:圆信号的噪声来源。
空间的整体形状 · 阅读路径