学术资源 / 固定快照
PyAutoLens 新版改进推断随机种子管理
PyAutoLens 是开源的强引力透镜建模 Python 库,仓库为 PyAutoLabs/PyAutoLens,采用 MIT 许可证。2026 年 10 月 16 日至 18 日,项目连续发布四个版本,发布说明均注明本体代码没有直接改动,变化来自上游的 PyAutoFit 和 PyAutoArray,重点是统一的随机种子和高维 Nautilus 采样的检查点修复。本文为资料核验,未安装实测。  强引力透镜示例:亮红星系 LRG 3-757 的引力把更远处一个蓝色星系的像拉成近乎闭合的马蹄形爱因斯坦环。图像由哈勃空间望远镜第三代广域相机拍摄,并非 PyAutoLens 输出。作者:ESA/Hubble & NASA(衍生处理:Bulwersator);来源:[Wikimedia Commons](https://commons.wikimedia.org/wiki/File:A_Horseshoe_Einstein_Ring_from_Hubble.JPG);许可:公有领域。 ### 功能与输入输出 强引力透镜是指前景星系的引力把背景星系的光线弯曲,形成弧、多重像或爱因斯坦环。PyAutoLens 用解析的光分布模型(如 Sérsic)和质量分布模型(如等温椭球、幂律、NFW 暗物质晕、外部剪切)描述透镜星系和源星系,再由 `Tracer` 对象完成从像平面到源平面的光线追踪;输入三个及以上不同红移的星系时会按红移和宇宙学参数做多平面透镜计算。按官方文档,它可以拟合 CCD 成像数据和干涉阵列的可见度数据,覆盖单个星系、多星系、星系群和星系团尺度的透镜;API 还包括点源建模(多重像位置、通量和时间延迟)以及用 Delaunay 或矩形网格对源星系做像素化重建。拟合依赖同一团队的 PyAutoFit 执行贝叶斯非线性搜索,计算用 JAX 加速,文档称示例在 GPU 上明显更快。它也能模拟透镜图像,用于练习建模或生成机器学习训练集。仓库 2017 年在 GitHub 创建,截至 2026-10-20 未归档;PyPI 包名为 `autolens`,当前版本要求 Python 3.12 及以上,并固定依赖 `nautilus-sampler==1.0.5`。学习资料有官方文档、无需安装的 Colab 入门 notebook、覆盖各类用例的 autolens_workspace 示例库,以及面向本科以上读者的 HowToLens 讲义。README 还介绍了一个 AI Assistant,需要在 Claude Code 或 Codex 等编码 Agent 内运行,官方说明持续用于科研通常需要这些服务的付费权限。  干涉测量观测的透镜系统:ALMA 长基线观测拍到的 SDP.81 爱因斯坦环。PyAutoLens 支持拟合这类干涉阵列数据;本图并非 PyAutoLens 输出。作者:ALMA (NRAO/ESO/NAOJ)/Y. Tamura (The University of Tokyo);来源:[ESO eso1522c,经 Wikimedia Commons](https://commons.wikimedia.org/wiki/File:The_Einstein_Ring_SDP_81_seen_with_ALMA_(eso1522c).jpg);许可:[CC BY 4.0](https://creativecommons.org/licenses/by/4.0)。 ### 2026.10 系列版本的改动 以下日期按 GitHub Releases 记录的 UTC 时间。四份发布说明都写着“No direct changes in this release”,即 PyAutoLens 本体代码没有改动,列出的都是同步发布的上游组件变化。 - **2026.10.16.1(10 月 16 日)**:PyAutoFit 把 emcee、Zeus、BFGS/L-BFGS、Dynesty、BlackJAX NUTS、SMC 和 MultiStart 等搜索迁到统一的 `run(ctx)` 执行框架,并补上新增搜索的模板(#1689–#1692)。同时新增搜索级 `seed`(#1686):用户只需给一个种子,由 NumPy 的 `SeedSequence` 为初始化器和采样后端派生各自的随机流。DynestyDynamic 新增有效样本数 `n_effective`,并修复设定 `iterations_per_full_update` 时运行被截断的问题(#1665)。PyAutoArray 让线性求解和对数行列式共用同一次 Cholesky 分解(#634),干涉数据按成本模型在 numba 和 FFT 两种曲率矩阵算法间选择(#632),稀疏路径不再构造稠密映射矩阵(#630)。 - **2026.10.16.2(10 月 16 日)与 2026.10.17.1(10 月 17 日)**:两份说明列出的是同一项 PyAutoFit 修复(#1698)。参数维度达到 91 及以上时,Nautilus 写检查点会超出 HDF5 旧文件格式 64 KiB 的对象头上限而报错;PyAutoFit 改用较新的 HDF5 格式写检查点,使中断后续跑在任意维度可用。运行前还会检查活点数 `n_live` 是否大于参数个数,不满足时直接报错,并新增 `checkpoint=False` 选项关闭检查点。 - **2026.10.18.1(10 月 18 日,核验时的最新版本)**:PyAutoFit 修复显式固定的模型在 JSON 读写后丢失、分组模型摘要显示的数值端点错误、普通函数模型读不到配置先验等问题(#1705–#1708);PyAutoArray 对 DelaunayNN 网格的成像拟合做了两项性能优化(#636、#637)。
- 收录日期
- 2026-10-20
- 类别
- 数据与评测
- 状态
- 资料核验,未安装实测
为何收录
透镜像的形状由前景星系的质量分布决定,因此强透镜是研究星系质量结构和暗物质的常用观测手段。对做这类研究的天文学者,PyAutoLens 把建立光与质量模型、光线追踪、与成像或干涉数据比较、用贝叶斯搜索估计参数及其不确定性这几步放进同一套 Python 接口,分析过程能以脚本形式保存和重跑;软件论文 2021 年发表在 Journal of Open Source Software,README 也给出了论文引用说明。这一轮更新的作用主要在推断过程的记录与复现。按 PR #1686 的说明,同一个种子能让 15 种搜索得到相同的初始点,研究者可以把种子与软件版本一并写进方法部分;Nautilus 的修复则让参数超过 90 个的高维模型也能写入检查点,在集群作业中断后接着运行,不必从头采样。
局限与注意事项
- 改动都在上游:四个版本的 PyAutoLens 本体没有代码变化,升级后的实际行为取决于同时安装的 PyAutoFit、PyAutoArray 和 PyAutoGalaxy 版本。版本号按日期编排、发布频繁,复现分析时应记录整套依赖的版本,而不只是
autolens 的版本。
- 可复现的范围有限:PR #1686 只保证同一种子下初始点一致;逐字节相同的采样结果只在一个平台上对 emcee 做过演示,Zeus 只有初始点受种子控制。不设种子时初始点来自系统熵,无法复现;过去靠设置 Python 全局
random 复现起点的脚本,现在需要改为显式传入 seed。
- 结果目录可能变化:同一 PR 说明,BlackJAX NUTS 和 SMC 显式传入非默认种子时,输出文件夹的标识会改变;接续旧结果前应先核对路径。
- Nautilus 修复是临时绕行:新的 HDF5 写法通过替换 nautilus 内部的文件参数实现,PR 注明 nautilus 上游修复后会移除;设为
checkpoint=False 时不写检查点,也就无法续跑。
- 加速与 AI 助手的条件:GPU 加速依赖可用的 JAX 环境,本轮发布说明没有给出新的速度数据。AI Assistant 只负责在编码 Agent 中组织调用,持续使用通常需要付费服务,生成的建模设置和结论仍需研究者检查。
- 模型与许可的边界:拟合结果取决于所选质量模型、先验和数据处理方式,不同模型可能给出不同的质量分布。MIT 许可只覆盖软件代码,望远镜观测数据按各自数据档案的政策使用。
本文依据 GitHub 仓库、Releases、上游 PR、PyPI 页面和官方文档整理,核验日期为 2026 年 10 月 20 日,未安装实测。建议的小规模验收(尚未执行):用 autolens_workspace 中的模拟成像示例,以同一个 seed 连续运行两次 emcee 拟合,比较初始点和后验摘要是否一致;再中途中断一次 Nautilus 拟合,确认能否从检查点续跑,并记录全部依赖版本。
参考文献
-
PyAutoLabs. PyAutoLabs/PyAutoLens GitHub 仓库(核验日期 2026-10-20)
-
PyAutoLabs. PyAutoLens LICENSE(MIT)
-
PyAutoLabs. Release 2026.10.16.1,2026-10-16
-
PyAutoLabs. Release 2026.10.16.2,2026-10-16
-
PyAutoLabs. Release 2026.10.17.1,2026-10-17
-
PyAutoLabs. Release 2026.10.18.1,2026-10-18
-
PyAutoFit. PR #1686: feat: A4b search-level seed (SeedSequence fan-out, conditional identifier walk, legacy table)
-
PyAutoFit. PR #1698: fix: Nautilus live-point guard and HDF5 checkpoint format for D >= 91
-
autolens · PyPI
-
PyAutoLens 官方文档:Start Here
-
Nightingale, J., Hayes, R., Kelly, A., et al. (2021). PyAutoLens: Open-Source Strong Gravitational Lensing. Journal of Open Source Software, 6(58), 2825.
-
信息由 Scholay 学术一站式平台 整理并发表,如有侵权请反馈下架。
-
信息同步发表于恩特学术,智能时代的学者社区
在交互式日历中查看这条记录 ↗