关于 SetuHQ transit search
SetuHQ 是面向系外行星研究者和公众的开源观测工具,用于搜索、审查并解释 TESS 凌星候选信号。它结合盲审的 AI Sentinels 与确定性 Probes,并保留审查依据和数据来源;结果始终标记为候选,而非已确认行星。
主要功能
- 01处理 TESS 光变曲线
- 02盲审并聚合候选信号
- 03拟合凌星并检查假阳性
- 04记录审查标记与数据来源
- 05导出候选目录和后续观测信息
- 06提供系外行星目录与交互视图
适用场景
- 01筛查 TESS 数据中的凌星信号
- 02复核候选信号的审查过程与来源
- 03导出候选以便后续跟进
- 04浏览系外行星目录与观测方法
MCP 相关
项目包含名为 setuhq-mcp 的 MCP 服务。README 未说明该服务向 MCP 客户端暴露的具体工具或资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx setuhqSETUHQ_ROOTData root the tools read and write (a SetuHQ checkout holds the stored runs, the catalogue and the benchmarks). No tool reaches outside it. Default: the checkout the package runs from, else the working directory.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
16收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 否 | |
| method | any | 否 | |
| catalogue_path | string | 否 |
详细介绍
SetuHQ · सेतु · 桥
开放系外行星天文台:从公开天空数据到经过审查、解说的候选目标。
setuhq.com · 应用 · 运行原理 · 证据 · 快速开始 · 版本 · 引用 · 许可证
天空中的每一次亮度骤降,都经过审查并得到解释
TESS 已观测约 98% 的天空。几乎所有这些光变数据都已公开,但几乎没有人逐次检查其中的亮度骤降。SetuHQ 负责检查:由 AI 哨兵和确定性探测器组成的审查小组,会像 Planet Hunters 志愿者一样,在盲编码光变曲线上标记每一次亮度骤降。每份判定都会保留标记、权重;对于哨兵,还会保留文字说明的理由。随后,流水线进行物理分析:考虑边缘昏暗效应的凌星拟合、有界误报概率、奇偶次凌星与次级凌星检查,并为所有结果诚实标注。
哨兵默认基于 Claude(Anthropic)运行;也支持其他提供商,并会标明。探测器是确定性的匹配滤波检测器。
SetuHQ 致力于成为:
- 可审计的搜索工具。 每个候选体都附有完整来源信息:数据哈希值、配置哈希值、代码指纹以及每位审查者的标记。
- **让所有人都保持诚实的基准测试,**包括 SetuHQ 自身。基于 662 个真实 TESS 候选体的冻结盲测,配有对照组、公开排行榜,并将负面结果置于首位展示。
- 可供探索的天文台。 在一个应用中,探索所有已知系外行星的 3D 分布、完整目录,以及十五个介绍行星发现过程的动画章节。
0.1.0 新增内容
首个公开版本(更新日志)。本页内容均不声称发现了行星: SetuHQ 会发现并审核候选体。
- 名称。 项目最初以 exoplan 为名开发,现在更名为 SetuHQ;setu 在梵语中意为桥梁,寓意从公开的天空数据到经过审核的候选体。软件包和命令名为
setuhq,MCP 服务名为setuhq-mcp;旧的exoplan命令仍可运行,但会显示弃用通知。Logo 中的 Q 是一颗被行星掠过的恒星(品牌套件)。 - 开放许可。 采用 AGPL-3.0-only,或使用 Ashforde OÜ 提供的商业许可;数据、基准测试、排行榜数据和论文采用 CC BY 4.0(许可)。
- 信息流的预注册规则。 搜索信息流现在要求信号同时出现在两个经审核的扇区中,且 FAP 低于 0.001。在留出数据上用当前代码测得,该规则将噪声减少约 4.5 倍,但每 100 个目标仍会纳入约 6 个假信号,因此纳入的信息只是待审核线索(见证据)。
- 此版本包含: 像素级和 Data-Validation 风格的审核、带稳定性门槛的降低假阳性概率、ExoFOP 风格导出以及深凹陷裁剪修复;一篇方法论文,以及真实 TOI 排行榜,其中设有 SetuHQ 尚未超越的目录元数据基准线;“所有变暗天体”目录、全天区扫描和贡献者数据包;适用于任意提供方的 Sentinels、一个 MCP 服务和一个 Claude Code 插件;本 README、生成的图表和品牌套件。各部分在合并前均经过独立审核。
应用
以下每张截图都遵循同一帧规则:窗口大小为 1440 × 900,像素密度为两倍,将动画设为静止状态,并裁剪为应用的 1360 × 850 内容区域(16:10),从所示部分上方开始。浅色和深色模式会跟随你的 GitHub 主题。网站的各个版块、地址和端到端测试见 docs/SITE.md。
任务控制中心。 六个互相关联的面板:实时银河系视图、天空位置、光变曲线、带恒星查找器的目录切片、动态系统视图和 Sentinel 信息流。在一个面板中选择恒星后,所有面板和弹出窗口都会同步选中该恒星。遥测栏上的每个数字都由应用自己的数据计算得出。
概览。 着陆页:介绍审核面板,并说明只有确认是行星后才会称其为行星。 |
星系。 exoplanet.eu 收录的 8,376 颗行星中,有 8,049 颗以 3D 形式放置在太阳周围。银河系是页面绘制的艺术想象图;每颗行星的位置都是数据。 |
目录。 exoplanet.eu 的全部 8,376 条记录、5,684 颗恒星,每颗行星都有自己的页面,还可以从任何位置搜索(⌘K)。 |
行星页面。 显示存储的参数及其上下限,并根据存储值按比例绘制行星系统;有数据时,还会显示 SetuHQ 自有的数据点。 |
凌日案例。 SetuHQ 自有的凌日下降数据,包含存储的数据点、肢暗化拟合结果和每位审阅者的标记。 |
方法篇:15 章。 巡天如何工作、凌日、远近运动、视向速度、天体测量、微引力透镜、遮挡星光、计时与相位、射电、假阳性、大气解读、分子与生命、行星族群、生命方程、历史与论文。物理模型通过与闭式解和已发表数值的测试进行验证。 |
标注清晰的真实数据。 WASP-39 b 的真实 JWST 光谱(4.37 µm 处的 CO₂),以及一座 大气实验室。每张图都注明其内容是真实数据、模型还是插图。 |
通过计算模拟日冕仪。 Lyot 日冕仪、渐晕入瞳、涡旋日冕仪,以及结合角差成像的自适应光学,均基于真实的夫琅禾费数值计算。 |
方法章节中的更多内容
- 物理计算通过与闭式解和已发表数值进行对比测试验证;下方四项均使用相同函数绘制。
- **日冕仪:**将 Lyot 光阑从 150% 收至 80%,可使 8 λ/D 处的星光从峰值的 6.7×10⁻⁵ 降至 1.8×10⁻⁷。
- **逐种模式解析分子。**涵盖十种分子,将每种振动与其红外波段关联,标出红外静默模式,并注明每种模式的振幅夸大倍数。
- **径向速度:**恒星与行星绕共同质心运行,通过开普勒方程求解;并注明恒星运动的夸大倍数。
功能
一颗已知行星:盲测发现并完成拟合
pi Men 的已存运行结果(TESS 第 1 扇区):面板中的标记、七个共识凌星信号,以及考虑临边昏暗效应的拟合,并与 Huang et al. 2018 对比。
天空观测覆盖范围
Survey footprints 天空页面绘制的观测覆盖范围,以及各范围内有多少行星宿主星。
15 个方法章节中的 4 个,由应用使用的同一组函数绘制,并经过测试验证。
一次运行的工作流程
分步说明
1. **摄取**来自 MAST 的 TESS SPOC 光变曲线、CHEOPS 光变曲线 FITS 文件或 CSV。 2. **清理并去趋势**:尖峰裁剪、带掩码的局部二次基线,以及分箱。 3. **切分盲编码目标**:固定为 13 天的片段,并使用不透明 ID。目标名称绝不会传给审阅者。 4. **运行评审小组**:每位审阅者独立标记并标注每个目标。任务采用 Planet Hunters 的任务形式:标记每次下降的开始和结束,然后标注为 `potential_planet` 或 `noise`。 5. **聚合**标记:通过单链接聚类,按标记该次下降的审阅者中技能加权审阅者的占比为每次下降评分,并要求评审小组将目标判定为潜在行星。 6. **审核**每个共识事件:SNR、持续时间、边缘效应、奇偶深度、次级食,以及与周期星历的拟合情况。 Kepler/SPOC Data Validation 套件之外的扩展测试会在其旁边添加标记(`dvtests.py`、`pixel.py`): SPOC 拥挤度(CROWDSAP 低于 0.8 时标记为 `crowded`)、使用拟合持续时间在所有相位搜索较弱次级食(阈值来自白噪声模拟,`scripts/calibrate_secondary.py`)、通过逐历元拟合计算奇偶深度、逐历元凌星时刻(线性星历和奇偶计时测试);所有测试均基于经过两轮重新去趋势的光变曲线,拟合的凌星已屏蔽,仿照 DV 屏蔽凌星的做法(第二轮还会屏蔽相位 0.5;只有当第一轮已发现最显著的其他下降具有统计显著性时,才会屏蔽它);此外,还会根据 SPOC 目标像素文件,计算以像素和角秒为单位的差分图像质心及其显著性、质心移动测试、核心/光晕鬼影检查、动量卸载重合情况,以及一张目录中邻近天体的表格,列出每个天体所需的食深。**默认情况下,这些测试只会添加标记**:通过/失败仍按原先方式判定,因此运行结果和基准测试可与早期版本保持可比。设置 `[vetting] decide = true` 会将 `secondary_any_phase`、`odd_even_depth`、`odd_even_timing` 和 `centroid_offset` 设为否决条件,并允许全相位次级食搜索取代相位 0.5 检查。像素测试会下载 TPF,除非设置 `[vetting] pixel = true`,否则默认关闭。 7. **评估**每个周期候选体的假阳性情景(`validate.py`):SetuHQ 自行计算的简化 FPP(行星、周期为 P 或 2P 的食双星、已分辨邻近天体上的食),基于 S2 测量值和明确列出的先验。这不是 TRICERATOPS,也绝不会称其为“已验证”。只有使用 TRICERATOPS,且 FPP < 0.015、NFPP < 10⁻³,*并且*具有高分辨率成像对比曲线时,才会标注为“已验证(统计意义上)”;没有对比曲线时,所有候选体均标注为“未验证:无对比曲线”。SetuHQ 绝不会称自己的结果为已确认。 8. **写入**候选体目录(CSV 和 JSON)、Zooniverse 格式的分类导出文件、SQLite 存储、溯源清单和静态报告站点。 9. **导出以供后续观测**(`setuhq export RUN --out DIR`、`exofop.py`):生成一份 ExoFOP CTOI 风格的表格(CSV 和 JSON),包含通过 S2 和 S3 门槛、且在同一 TIC 上没有重复 TOI 的已审核候选体;另外还会预测未来 12 个月的凌星时窗,并给出星历不确定性范围,σ(Tₙ)² = σ_T0² + n²σ_P² (+ 2n cov),采用与 `match_toi` 相同的传播方式(`ephemeris.py`)。**尚未核实 CTOI 字段列表是否与 ExoFOP 当前表单一致**(ExoFOP 无法访问);字段列表仅在 `exofop.CTOI_FIELDS` 中定义。须由个人使用自己的 ExoFOP 账户提交 CTOI;SetuHQ 不会代为提交。若没有该归档的 TOI 表,导出会拒绝执行,除非指定 `--allow-unchecked`;此时每一行都会注明尚未进行检查。 10. **扩展处理规模**,使用 `setuhq batch CONFIG --targets FILE`(`batch.py`):对任意目标列表运行 `discover` 流程,将光变曲线缓存到 `cache/lightkurve`,并使用状态文件支持因进程被终止或时间限制而中断的会话恢复(跳过已完成的目标,重试失败的目标;配置发生变化时则从头开始)。
评审面板:Sentinel 和 Probe
| 评审者类型 | 显示为 | 说明 | 需要 |
|---|---|---|---|
simulated | Probe | 确定性的匹配滤波检测器,具有人类式局限(阈值、漏检率、边界抖动)。作为基线和校准参考。 | 无 |
claude_code | Sentinel | Claude 通过 Claude Code CLI 审阅渲染后的图表,并使用 Claude 团队或个人订阅登录。 | PATH 中有 claude,且已登录 |
claude | Sentinel | 通过 Anthropic API(视觉功能)使用 Claude。 | ANTHROPIC_API_KEY |
页面显示的是展示名称;所有数据文件、CSV、JSON 和 URL 中的评审者 ID 均保持不变。默认面板包含 2 个 Sentinel 和 3 个 Probe:Sentinel · 志愿者(claude-volunteer)、Sentinel · 怀疑者(claude-skeptic),以及 Probe · 灵敏型、Probe · 典型型和 Probe · 谨慎型(volunteer-sensitive、volunteer-typical、volunteer-cautious)。
Sentinel 收到的任务与志愿者相同,看到的是盲编码图表,且不会收到目标名称。它们返回严格 JSON,经过验证后会裁剪至受试对象的时间范围。不可用的评审者会被跳过,并列入清单。响应按模型、提示词和图像的哈希缓存,因此重新运行无需额外成本且结果可复现。
两个 Sentinel 使用两种角色设定:volunteer(谨慎,会标记低谷)和 skeptic(除非二元和系统性特征十分明显,否则会予以否定)。Sentinel 也可以通过 OpenAI、Gemini 或任何兼容 OpenAI 的端点运行,并会标明相应来源(参见 AI 提供商)。
证据
SetuHQ 报告实际测量结果,也会说明其局限。
| 测量指标 | 结果 | 来源 |
|---|---|---|
| pi Men c,与 Huang et al. 2018 的 Rp/R★ 对比 | 1.05(0.0179 ± 0.0017) | 验证 |
| pi Men c,凌星持续时间 T14 | 1.04(3.07 ± 0.17 h) | 验证 |
| Real-TOI 基准测试,留出集完整率 | 60%(90/150;52–67%),在当前代码上重新运行;首次运行时为 57%(86/150),使用的是修复前的代码 | 基准测试 |
| … 半径小于 2 R⊕ 的行星 | 10% | 基准测试 |
| 实时数据流中的“新”信号 | 按旧规则,与噪声一致(对照组每 100 个目标约 12 个,而观测值为 15.8)。在当前代码中,预先注册的双扇区规则将留出集噪声降低约 4.5 倍,从每 100 个目标 27.8(23.1–33.1)降至 6.1(4.0–9.4),仍高于每 100 个目标 1.6 个真实新信号,且完整率降低超过一半;按该规则重新运行实时数据流后,接纳的新信号为 0 个 | 验证 |
| Real-TOI 排行榜:Probes 与不读取任何光变曲线的基准对比 | 未显示出优于基准(配对 ΔJ 区间包含零) | 排行榜 |
Results in full
真实数据:π Men(TIC 261136679)的 TESS SPOC 第 1 扇区数据,使用 3 个 Probes 和 2 个 Sentinels(Skeptic 和 Volunteer,通过 CLI 使用 Claude),数据存储在 runs/tess-pi-men-s1 中,并使用当前代码运行(复用 Sentinels 已存储的答案:主题图像和提示词的字节完全一致):
- 7 个共识凹陷:6 个通过审查,其中 1 个被标记为
off_ephemeris,另有 1 个未通过审查(low_snr、off_ephemeris)。 - 其中 5 个符合已发表的 pi Men c 星历。在 26 天的观测窗口内,预测的 5 个历元全部被检出;与 NASA Exoplanet Archive 的数值相比,平均凌星时间偏差为 −8 分钟(
docs/results/pi_men_crossmatch.json)。 - 凌星形状,含边缘昏暗效应的拟合(见 docs/results/pi_men_validation.md)。对 5 个历元进行联合拟合,并允许周期在 BLS 周期附近自由变化(6.2680 ± 0.0005 d;Huang:6.26790 d),先给出可直接对照的量:Rp/R★ = 0.0179 ± 0.0017(相当于 Huang et al. 2018 数值的 1.05 倍),T14 = 3.07 ± 0.17 h(相当于 1.04 倍)。含边缘昏暗效应模型的凌星中点深度为 292 ± 8 ppm(相当于 Huang 已发表的 300 ppm 的 0.97 倍;该 300 ppm 按照论文中的定义计算,并非由此模型定义)。被替代的箱形测量结果在深度和持续时间上分别为 0.81 倍和 0.64 倍。误差取值较保守,综合了协方差和沿冲击参数剖面的变化范围。
- **冲击参数需要结合恒星信息。**对 5 次 TESS 凌星进行自由拟合,只能得到 b < 0.87(1σ),因此 a/R★ 和 ρ★ 均为范围值(ρ★ 在 1σ 下为 0.28 到 2.2 g/cm³,与 TIC 的 1.02 一致)。将 TIC 密度作为高斯先验(1.02 ± 0.20 g/cm³)后,拟合得到 b = 0.64 ± 0.12、a/R★ = 12.85(1σ 范围为 11.5 到 13.6)以及 T23/T14 = 0.95;Huang 对应的值为 0.59、13.38 和 0.95。拟合形状为 U 形,而非 V 形。
- 两个主题中的周期信号,其虚警概率都低于 10⁻⁴。在 10,000 次区块自助法试验中,没有一次达到观测到的 SNR,因此 10⁻⁴ 是上限,而非具体数值。零假设下的最大值已提交至
runs/tess-pi-men-s1/fap_null/;对这些最大值进行的 Gumbel 拟合存储为fap_tail,其尾部概率低于 10⁻⁶(仅供参考,见下文)。 - BTJD 1348.9 处通过审查的凹陷(0.87 h,SNR 9.5)不符合星历,很可能是假阳性。该凹陷予以保留并标记,未被隐藏。
- BTJD 1348.4 处的凹陷(SNR 6.7)未通过审查,仍保留在已存储的候选项中,并附有相应标记。
已存储的运行结果于 2026-10-21 使用当前代码从头重新运行(scripts/rerun_pi_men.py)。所有凹陷、审查结果、拟合和 FAP 均与首次使用修复前代码进行的运行结果相同(运行清单记录了逐字段比较结果);没有再次询问 Sentinels,而是复用其已存储的答案,因为每个主题图像和提示词的字节完全一致。同一次运行中的扩展审查、降低后的 FPP 和导出结果:
-
扩展审查与像素级审查(
scripts/vet_pi_men_s2.py,真实 SPOC sector-1 文件;参见 docs/results/pi_men_s2_vetting.md)。对全部五个历元进行联合拟合 (P = 6.26795 ± 0.00049 d,T14 = 3.09 ± 0.16 h)后,对经两轮重新去趋势处理的光变曲线进行分析;处理时屏蔽了凌星和相位 0.5 (窗口 1.55 d,12 T14;第一轮中最强的凹陷不显著,因此未将其屏蔽):CROWDSAP 0.9997,FLFRCSAP 0.980(无拥挤);凌星之外任意相位处最强的凹陷为 相位 0.622 处的 42 ± 7 ppm(名义显著性 5.6σ),低于校准阈值 6.9σ(扫描稳健离散度 1.33 的 5.16 倍),其中 86% 来自一个历元;相位 0.5 处为 −12 ± 7 ppm。各历元分别拟合得到的奇偶次凌星深度一致(301 ± 14 对比 311 ± 12 ppm,0.5σ);五个中间时刻符合线性历表(自由度为 3 时 χ² = 1.9,p = 0.59,O−C 在 1.8 min 以内),且没有奇偶次计时偏移(0.5σ)。在本次运行所用设置下没有触发标记,但次级信号处于阈值边缘,是否标记取决于设置:12 种相近的运行设置中(去趋势窗口 1 或 2 d × 分箱间隔 2、6、10、15、20 和 30 min,每种设置都经过完整的两轮预处理),有 3 种标记了secondary_any_phase:使用 1.55 d 审查窗口时的 15 和 30 min 分箱,以及使用 2 d 窗口时的 30 min 分箱;这些设置下,相位 0.64 处的凹陷达到阈值的 1.05–1.2 倍,且前两种设置在第一轮中就已检测到显著信号。其余 9 种设置均未标记:信号仅达阈值的 0.68–0.93 倍,或不具周期性(20 min 分箱、1.55 d 窗口下,相位 0.74 处的凹陷达到阈值的 1.05 倍,其中 90% 来自一个历元)。此前的代码无论第一轮中最强的凹陷是否显著,都会将其屏蔽,导致默认设置下的凹陷显著性从 5.6σ 升至 7.0σ,并在 15 种设置中有 8 种触发标记,包括窗口不超过 1.5 d 时的所有 6 和 15 min 分箱(即审查者的测量结果)。这些不是相互独立的试验:所有不超过 12 T14 的运行窗口都会归并为相同的 1.55 d 审查窗口,因此这 12 种设置实际上是 2 个不同的审查窗口(1.55 和 2 d)× 6 种分箱间隔,且使用的是同一组数据(审查者采用的 15 种设置网格包含 0.75–2 d 的窗口 × 3 种分箱间隔;同理,实际上只有 6 种不同设置)。 -
pi Men c 的 FPP 降低结果,来自已存储的运行记录(
candidates.json中的metrics.validation;该方案的先验是明确的选择,见“诚实的限制”)。每个 13-day 目标:第一个为 0.019(0.0186),第二个为 0.015(0.0148)。在管线的五种去趋势设置下(默认设置,以及窗口 ×0.75 和 ×1.5,屏蔽范围为 1.0 和 2.0 T14),使用两种噪声模型时,范围为 0.0111–0.0216(第二个目标为 0.0123–0.0190),对数几率跨度为 0.29 dex(0.19),因此通过稳定性门槛。分类为“未确定”:范围跨越 0.015 阈值。NFPP 未知,因为该次运行没有邻近天体表;标签为“未验证:无对比曲线”。pi Men c 是一颗已发表且测得质量的行星;这说明了该方案在真实数据上的局限。 历史记录:2026-10-20,对整个 sector 的全部五个历元进行联合拟合(scripts/vet_pi_men_s2.py, docs/results/pi_men_s2_vetting.json)后,在相同设置下的结果范围为 0.0079–0.093,因不稳定而被拒绝(几率跨度为 12.9×;允许上限为 10×);在更宽的网格上,其次级信号扫描在 15 种设置中的 6 种显示为白噪声,最大增亮幅度为 2.6–6.2σ。 -
历表锥体。 导出已存储的运行记录(
setuhq export runs/tess-pi-men-s1 --allow-unchecked;归档的 TOI 表请求超时,HTTP 504)后,得到一个信号:根据第一个目标的联合拟合,P = 6.2681 ± 0.0012 d;其对 2026 年 10 月的预测凌星(历元 479)携带 σ = 13.8 h,即 3σ 窗口为 86 h。ATLAS G5 警告,单目标历表在几年内就会过时。使用 TOI 表时,该信号为 TOI 144.01,并因重复项而排除(已使用已发表的历表进行测试)。 -
pi Men 的差分图像质心不可用,SetuHQ 也明确指出了这一点。 PSF 拟合显示,差分图像与星表位置相差 2.05 px(40.1″),偏移主要位于行坐标方向(行 −1.91 px,列 −0.74 px);这正是电荷沿 CCD 列溢出的方向。SPOC 针对 TOI 144.01 的 DV 报告也发现了相同的偏移量级和方向:40.5″,行 −2.07 px,列 0.02 px;DV 质量指标为 0.58,低于 DV 的 0.7 可靠性阈值。pi Men(Tmag 5.1)已饱和:同一列中的五个像素位于接近峰值 5% 以内的平台上,形成溢出拖尾。凌星会缩短拖尾,而不是使 PSF 变暗,因此“偏移”其实是拖尾末端的位置。 拟合结果也印证了这一点:差分图像 PSF 收缩至 0.3 px 的宽度下限,比非凌星状态下的 PSF 窄 3.4 倍。SetuHQ 标记了
saturated和centroid_unreliable,但没有发出centroid_offset。逐次曝光的质心运动测试没有发现偏移(0.1σ),但对于饱和恒星,这同样无法提供信息:恒星变暗时,发生截断的溢出拖尾的通量加权质心不一定会移动。在 150″ 内的 56 颗 TIC 恒星中,除目标星外,其余恒星都需要超过 100% 的食深度;最近的一颗 TIC 261139071(Tmag 14.0 ± 0.75,27″)需要 111%,这一结果处于边缘:在其 Tmag 不确定度的 3σ 范围内。 本次运行中 Sentinel 的操作,依据已存储的分类结果: -
在第一个目标(BTJD 1325.3 至 1338.3)上,Sentinel · Volunteer 标记了 1325.50、1331.77 和 1338.05 处的凹陷,并将目标标记为
potential_planet(置信度 0.8);Sentinel · Skeptic 标记了 1325.50、1331.77 和 1338.05 处的凹陷,并将目标标记为potential_planet(置信度 0.7)。 -
在第二个目标(BTJD 1338.3 至 1351.3)上,Sentinel · Volunteer 标记了 1344.27 和 1350.57 处的凹陷,并将目标标记为
potential_planet(置信度 0.4);Sentinel · Skeptic 标记了 1344.27 和 1350.57 处的凹陷,并将目标标记为potential_planet(置信度 0.7)。两者都没有标记 1348.38 处的凹陷(筛查未通过),也没有标记 1348.94 处的凹陷(虽通过筛查,但不符合星历)。 -
在共识结果中,每个 Sentinel 的权重为 0.5,而 Probe 的权重为 0.4 至 0.6:Sentinel 是经过校准的评审小组中的意见来源,并非整个评审小组。
真实 TOI 上的盲测基准(于 2026-10-21 使用当前代码重新运行;结果是在明确说明的基准上测得,并非发现结果;参见 docs/results/benchmark_real_tois_clipfix.md,首次运行使用修复前的代码,参见 docs/results/benchmark_real_tois.md)。数据取自 NASA Exoplanet Archive 的 TOI 表,共 662 个 TOI(于 2026-10-19 获取,随机种子为 20261019):300 个 CP/KP、300 个 FP 和 62 个 FA,每颗恒星取一个,并按恒星划分为两半。每颗恒星的首个 SPOC 2 分钟观测扇区会经过 Probes 评审组处理,同时还会将通量反转副本和分块打乱副本作为误报对照。保留的半组数据,Wilson 95% 置信区间:
-
完备度:60%(可搜索恒星上的 150 个 CP/KP 中检出 90 个;52% 至 67%)。 半径大于 8 R⊕ 时为 84%,4 至 8 R⊕ 时为 45%,2 至 4 R⊕ 时为 23%,小于 2 R⊕ 时为 10%。按已发表参考结果使用的分组:所有半径:60%(90/150;52% 至 67%),相比之下,Kepler Robovetter DR25 为 > 85%(仅筛查已检出的 TCE,P < 100 d);3 至 4 R⊕:44%(4/9;19% 至 73%),相比之下,Planet Hunters TESS 为 51%(公民科学搜索);大于 4 R⊕:79%(81/102;71% 至 86%),相比之下,Planet Hunters TESS 为 85%(公民科学搜索)。SetuHQ 的完备度低于 Kepler Robovetter(置信区间不包含其结果);与 Planet Hunters TESS 在 3 至 4 R⊕ 时的 51% 无显著差异(9 颗恒星上的结果为 44%、19%–73%;估值低 7 个百分点,但置信区间无法判定);与 Planet Hunters TESS 在大于 4 R⊕ 时的 85% 无显著差异(102 颗恒星上的结果为 79%、71%–86%;估值低 6 个百分点,但置信区间无法判定)。Planet Hunters TESS 的比率本身也存在不确定性,且数据来自第 1 至 26 扇区。
-
FP TOI:评审组发现了 77% 的凹陷,并将其中 68% 判定为类似双星或标记出来。 这只适用于有 2 分钟数据的 FP 恒星(158 个中有 124 个)。FP TOI 更常只有 FFI 数据,因此这并不代表整个 FP 列表的可靠性。
-
实时信息流中的“新”信号与噪声一致。 在对照数据中,信息流自身的纳入规则每 1,000 个恒星扇区会通过 58 个(反转)和 61 个(打乱)误报信号。 按该规则计算,相当于每 100 个待审目标约 12 个,而实时信息流中每 100 个目标为 15.8 个(19 个目标中有 3 个)。
-
修复方案在保留数据上预先注册并进行测量。 信息流现在要求信号在两个已审查扇区中都出现(周期相差不超过 0.5%),且在 2,000 次试验中 FAP 低于 0.001。该规则在调优半组数据上选定,并在保留数据评估前提交(8909cda);保留数据评估使用当前代码重新运行,未作任何更改 (docs/results/feed_rule_validation_clipfix.json)。 使用发现配置测得的保留数据结果,从旧规则到新规则:
- 对照数据中的噪声:每 100 个目标有 27.8 个(95% CI 23.1–33.1)误报信号,降至 6.1 个(4.0–9.4) (首次评估使用修复前的代码:从 23.0 降至 6.1);
- 信息流级完备度:从 39% 降至 17%(与此前相同);
- 排除在外的 FP TOI:从 70% 升至 94%。 噪声减少了约 4.5 倍,但每 100 个目标中有 6 个,仍高于真实光变曲线目前给出的每 100 个目标 1.6 个新信号(修复前代码为 0.3 个)。信息流仍由误报主导,纳入的信息只是供人工或后续审查的线索,并非任何已确认状态的候选项。在当前代码上,用此前的扇区重新运行信息流中的 19 个目标后,纳入了 0 个新信号和 2 个已知 TOI(24 条记录),与修复前代码的结果相同。
-
对所述 40 颗留出恒星子样本,没有再次调用 Sentinels 进行重新运行。对于当前代码下目标图像和提示词字节完全相同的 37 颗恒星,沿用其已存储的回答;其余 3 颗(修复后会保留深凌星)不纳入统计。在这 37 颗恒星中,每种角色都将 CP/KP 凹陷的 47%(9/19)和 FP 凹陷的 22%(4/18)标记为潜在行星。它们对 37 颗恒星中的 35 颗看法一致(φ = 0.88):它们是同一个模型,因此只是一个相关投票者。
Probes 的注入恢复基准测试(在当前代码上重新运行): docs/results/injection_recovery_simulated_panel.md。 该测试和阈值扫描最初是在 2026-10-16 的代码上完成的,当时注入的凌星还没有加入边缘昏暗效应(2026-10-19 才加入),因此重新运行后的变化并非仅由这两项修复导致。留出集得分从 0.875 降至 0.833,因为在 1000 ppm 下,48 次注入中有 2 次不再被恢复(2 h 时从 12 次降至 5 次中的 6 次;4 h 时从 12 次降至 11 次);这一变化随加入边缘昏暗效应的注入而出现,在修复前的 5a03087 代码上也已存在。 Sentinels 不在该基准测试中。每个注入目标都需要单独调用一次 CLI,因此 Sentinels 会在小样本上单独校准(10 个注入目标和 10 个空目标:权重均为 0.5;Probes 的权重为 0.4 至 0.6)。
持续搜索及其可声称的结论
搜索命令 setuhq discover 每次运行一批 TESS 目标。它会轮换 TOI 主星列表,使覆盖范围每天递增;审查每个目标最近的两个扇区,并将每个新凹陷加入去重后的目录。若某个凹陷与已发布的 TOI 周期匹配,则标记为 known_toi;否则标记为 new_candidate。
.github/workflows/discover.yml在手动启动时运行一批任务(已关闭定时计划),以 ashfordeOU 的身份提交目录并部署网站。设置了ANTHROPIC_API_KEY密钥时,会运行 Claude 的 API 审查器;否则该批任务仅运行 Probes。scripts/improve.py会在注入基准测试上扫描面板阈值。只有在留出种子上胜出的设置才会被提升。阈值扫描中的每次试验都记录在 docs/threshold_sweep.md 中,包括未胜出的试验。这项合成扫描并非真实 TOI 排行榜(见排行榜与方法论文)。
测得的误报率。 在较早的规则下(单个扇区上进行 200 次试验,FAP < 0.01),所有信号都被破坏的光变曲线每 100 个目标仍会通过约 12 个噪声信号。实时信息流显示每 100 个目标有 15.8 个 new_candidate 信号,因此其中的“新”信号与噪声相符(见基准测试)。
现在,信息流要求信号在审查的两个扇区中均出现,并且在 2,000 次试验中 FAP 低于 0.001。该规则是在调优集的一半上选定并预先注册的,随后先在留出集的另一半上用修复前代码评估,再用当前代码以未作改动的规则重新评估 (验证)。噪声因此减少约 4.5 倍,从每 100 个目标 27.8 个(95% CI 23.1–33.1)降至 6.1 个(4.0–9.4),完整率(信息流层面)则下降超过一半,从 39% 降至 17%。噪声仍多于真实新信号(每 100 个目标约 6 个,而真实新信号为 1.6 个),因此信息流纳入的内容只是供人工或后续审查的线索。
这项工作能够和不能够声称什么。 每个条目都是候选项。这里所说的检测,意味着流水线发现了一个经过审查、且与任何已发表星历都不匹配的凌星信号。这并不意味着已经发现行星。确认需要径向速度测量、地基光度观测,或社区开展的 TESS 后续观测。像素级质心测试是新加入的,默认关闭,且无法用于饱和恒星,因此混叠的食双星仍可能通过审查。本项目能够站得住脚的主张,是提供了一项具有开放溯源信息、可复现且经过校准的搜索。它并不声称发现了新行星,也不声称胜过已发表的流水线。
排行榜与方法论文
- 真实 TOI 排行榜(docs/leaderboard/,以及网站上的 /evidence/leaderboard/)
统计方法在冻结的 662 个 TOI 基准测试留出半区中,每颗恒星检测到的事件数,并自行评分:完整率、误报拒绝率、对照组误报率和可靠性,均采用 Wilson 区间。排行榜根据基准测试可搜索集合上的 Youden's J 排名,并在两侧使用同一判定条件(干净的候选项),因此,把每个 TOI 都称为行星得 0 分,无论是否标记;只有在两个对照组上都测得结果的条目才会参与排名。Sentinel 子样本(所述 40 颗恒星中有 37 颗在重新运行后保持逐字节不变)会列出,但不会参与排名。一个完全不读取光变曲线、仅使用元数据的基准下限也参与排名,而且该基准测试无法证明 Probes 胜过它:对相同恒星进行配对比较后,下限的表现更好,但 ΔJ 的区间包含零(重新运行中,Probes 的 J = 0.35,下限为 0.39,配对 ΔJ 为 +0.04,95% 区间为 −0.10 至 +0.17;docs/leaderboard/leaderboard.md)。
setuhq leaderboard my.json会为提交评分,并拒绝任何未声明仅使用调优半区输入的哈希值,或包含白名单之外字段的提交。排行榜以 SetuHQ 自身的配置为种子,这些配置根据基准测试存储的输出构建(scripts/leaderboard_seed.py)。 - 方法论文草稿(docs/paper/paper.md,采用 AAS/AJ 样式的 Markdown)报告了基准测试及其负面结果。文中的每个数字都来自已提交的 JSON,生成方式为
scripts/paper_numbers.py;后续工作会改变的结果会标记为待定。
所有变暗现象:扫描与目录
过去,行星搜索会丢弃所有非行星候选项的凌星信号。扫描会将它们保留下来。
setuhq sweep 会遍历 TESS 扇区中的 SPOC 2 分钟目标,并针对每个恒星-扇区组合,保留面板的所有共识凌星信号(无论面板如何标注)、所有增亮现象以及恒星的变异性,然后按照 src/setuhq/variables.py 中的首个匹配规则对它们进行分类:
每条记录都保留其置信度、决定分类的提示、标记、权重、Sentinels 的原话、光变曲线的 sha256、代码指纹和配置哈希,以及搜索者姓名。没有任何目标会被称为已确认。每个类别都在同一批恒星上与其自身的零假设比较:下陷类别与通量反转副本比较(真实下陷会变成隆起,但真实耀发或脉动峰值也会变成下陷,因此该零假设并非没有真实信号);耀发与向下事件比较,并屏蔽真实下陷;变异与同一颗恒星的红噪声副本比较,该副本是对其自身分箱数据拟合的 AR(1) 过程(翻转通量不会改变周期图,因此反转副本不是适用于变异的零假设;而打乱数据会消除导致虚假峰值的红噪声)。变异规则本身要求周期具有一致性:光变曲线的前后两半中,最佳峰值相同,误差在 10% 以内。每类信号都与同类比较,恒星-观测扇区是统计单位:下陷会集中在少数恒星上,因此超额信号的 95% 区间通过对恒星-观测扇区进行配对自助法得出,同时报告仅一侧出现事件的恒星-观测扇区的 McNemar 精确检验结果。只有两者结论一致时,某个类别才算超出其零假设;否则网站会标注为“在此数据切片中无法与噪声区分”。
setuhq sweep configs/sweep.toml --sector 1 --limit 200 --workers 3 # resumable; cached; polite to MAST
setuhq bundle my-sweep/sector_0005.json.gz --contributor "Your Name" --out bundle/
setuhq ingest bundle/ --attested-by <pr-author> # sealed, not signed: re-searches every finding + max(3, 5%) by a nonce
网站读取 docs/sweep/catalogue.json:主页计数器、/catalogue/everything-that-dims/(探索 › 所有变暗目标,提供筛选、逐 TIC 页面以及 CSV/JSON 导出)、Sky map 上的巡查图层、Mission Control 的遥测数据和搜索功能。任何人都可以使用自己的 Claude 订阅或 API 密钥添加一个观测扇区(密钥保存在其环境中,绝不写入文件),并获得署名:请参阅 CONTRIBUTING.md。
首个真实数据切片(实测,仅限 Probes)。 TESS 第 1 观测扇区:按巡查顺序选取其 15,898 个 SPOC 2 分钟目标中的前 200 个,并全部完成搜索(无下载失败);搜索代码为 0e87409,分类依据为本次提交中的规则(每条记录均含 search_code 和 classify_code)。面板审查了 936 个共识下陷(2,662 个标记;60 个标记簇未达到共识),目录中共有 1,011 条记录。每项比较均针对同样 200 个恒星-观测扇区,按类别一一比较;区间通过对恒星-观测扇区进行配对自助法得出,“真实 / 零假设”恒星-观测扇区数量是指至少出现一个事件的恒星-观测扇区数量:
| 比较项 | 真实数据 | 零假设 | 超额(95%) | 星区真实数据 / 零假设 | McNemar p 值 | 在此数据切片中的结论 |
|---|---|---|---|---|---|---|
| 脉动星或自转变星(相干周期图峰值) | 8 | 2 | +6(0 至 +12) | 8 / 2 | 0.11 | 与噪声无法区分 |
| 食双星(凹陷) | 110 | 77 | +33(−11 至 +89) | 26 / 20 | 0.24 | 与噪声无法区分 |
| 行星候选规则(凹陷) | 3 | 2 | +1(−3 至 +5) | 3 / 2 | 1.0 | 与噪声无法区分 |
| 耀发(增亮) | 11 | 5 | +6(−6 至 +19) | 5 / 3 | 0.73 | 与噪声无法区分 |
| 变星波谷(凹陷) | 10 | 17 | −7(−18 至 +1) | 3 / 4 | 1.0 | 与噪声无法区分 |
| 系统性(凹陷) | 720 | 728 | −8(−103 至 +88) | 97 / 99 | 0.87 | 与噪声无法区分 |
| 系统性(增亮) | 22 | 25 | −3(−42 至 +27) | 11 / 6 | 0.23 | 与噪声无法区分 |
此数据切片中没有任何类别超过其零假设。 此表的两个早期版本曾声称有一个类别超过了零假设,但两项说法都不正确:
- 食双星的说法将凹陷计作独立事件。其中两颗恒星贡献了约三分之一的事件;逐颗恒星来看,超额与零无法区分。
- 变星的说法使用了红噪声也能通过的周期图规则,并与丢失红噪声的打乱数据零假设进行比较。在通过 FAP 和振幅规则的 36 个峰值中,8 个具有相干周期,即光变曲线前后半段的最佳峰值相同(1.0 至 2.7 d)。20 个周期长到无法用半段数据检验,5 个位于周期网格边缘,3 个在前后半段之间漂移;这 28 个现在被标记为未分类,并注明了原因。现在,零假设是每颗恒星经过相同规则处理后生成的红噪声副本。
6 条食双星类变率记录没有对应类别的零假设,因此未纳入比较。通过行星候选规则的 3 条记录(没有一条与已知 TOI 匹配)与单靠噪声产生的数量相当,因此网站不会将它们列为候选体。在 11 次耀发中,8 次上升速度快于衰减速度,2 次则相反(另有 1 次速度相同)。此数据切片未发现行星,而且在超额显现之前,每个类别都需要更多恒星。扫描时关闭了 FAP 试验(每颗恒星进行 50 次试验约需两分钟),恒星参数来自各文件的标头。记录:docs/sweep/sector_0001.json.gz 和 docs/sweep/catalogue.json。
此数据切片的溯源信息。 在 0e87409 重新搜索记录后,于此提交中基于缓存文件和已存储的运行结果,针对相干性规则和红噪声零假设重新分类一次。每条记录的 reclassifications 都列出了这一步及其规则变更。更早的记录可在 docs/sweep/ 的历史记录中查看:在 b8647ad 搜索;在 3c5862e 重新分类以修复两个错误(一项上升和衰减速度相同的耀发被判定为快速上升,以及两个相隔不到 0.01 d 的增亮事件共用了一个 ID);在 1eb9a6f 重新分类以修正短周期密度规则和各类别的零假设。
重新搜索后的一项修复:已存储的运行目录仍保留着早期搜索的分类结果,首次统计标记时将这些结果也计入其中(5,358)。一致性判定、记录和零假设仅使用本次搜索的结果。n_marks 已根据本次搜索自身的分类结果重新统计(每条发生变化的记录都会在 n_marks_note 中说明)。在干净目录中重新搜索的 8 个星区(包括所有有行星候选体的星区)都能精确复现其记录。现在,每次搜索某颗恒星前,扫描都会清空其运行目录。只有当配置哈希、搜索代码和分类代码全部匹配时,恢复运行才会复用已存储的记录。目录对每个星区仅统计一次搜索,即最新的一次;更早的搜索仅作为溯源信息保留。
数据大小。 每个星区的记录存为一个 gzip 文件(sector_NNNN.json.gz;这 200 颗恒星的数据为 0.47 MB;网站获取的目录为 1.7 MB),因此完整星区的记录约为 37 MB。超过几个星区后,记录将存放在仓库之外,作为发行版资源;仓库中会提交一份记录其 sha256 的清单,供网站构建时校验。届时,目录将只包含条目和覆盖范围,不再包含每颗恒星的事件和空值。第二步目前尚未实现。
如实说明局限
* **Sentinel 仅基于小样本进行校准。** 完整基准测试需要进行大量 CLI 或 API 调用。样本量见校准文件。 * **合成结果不等于真实天空结果。** 基准测试使用白噪声加红噪声。它衡量的是流水线的逻辑,而不是真实完备性。 * **CHEOPS 列映射尚未验证。** 加载器接受多个候选名称,并记录实际使用的名称。请对照真实的 `SCI_COR_Lightcurve` 文件检查。 * **凌星拟合是光变曲线拟合。** 每个共识凹陷都会进行一次带肢暗效应的拟合(根据 TIC 的 Teff 和 log g 使用 Claret 2017 TESS 系数),给出带误差的深度、T14、冲击参数和中间时刻,并进行 ρ★ 一致性检查和 V 形测试。对于周期信号,也会在 BLS 周期附近拟合周期,以免近似搜索周期使各历元发生偏移。只有少数 TESS 凌星时,冲击参数以及由此得到的 a/R★ 和 ρ★ 约束较弱:此时 b 会显示为上限,ρ★ 会显示为范围;此外,还会将使用 TIC 密度作为先验的第二次拟合结果与无先验拟合结果一并保存。密度带(目录值的 0.3 至 3 倍,3σ)仅供说明,并非已发布的阈值。 * **虚警概率受试验次数限制。** FAP 是 N 次区块自助法试验中的 (k + 1)/(N + 1),显示值不会低于 1/(N + 1)。已保存的 pi Men 运行使用 10⁴ 次试验,搜索批次使用 2,000 次(达到该信号 SNR 的试验有 2 次后即停止),库的默认值为 20。数据源的 FAP < 0.001 规则在 2,000 次中 k ≤ 1 时通过;仅凭这一点,仍会在 N 个目标中纳入约 N/1,000 个噪声信号。双扇区规则才是排除大部分其余信号的关键。每个候选信号都会保存一个拟合零假设最大值的 Gumbel 分布(`fap_tail`,以及 `fap_exceed` 和 `fap_method`)。它仅供参考,是在试验范围之外进行的外推,且偏保守(BLS 最大值的尾部比 Gumbel 分布更轻),显示值不会低于 10⁻⁶。 * **像素级审查是新功能,能力有限。** 差分图像质心使用圆形高斯函数代替 SPOC 像素响应函数;其标志会对照目录位置进行测试,并设置一个系统误差下限,等于无凌星拟合位置相对于该位置的偏移,因此对几十分之一个像素以下的偏移不敏感。对于 PSF 与该高斯函数相同的合成 TPF(理想情况),它能将距离 1.5 至 3 px 的邻星食定位到 0.002 px 以内(15 个案例),而目标星上的行星信号始终低于 0.2σ(10 个案例)。对于拉长的 PSF(8 种几何布局,距离 1.5–3 px,每种 2 个随机种子),模型误差占主导:在 1.6:1 时,邻星位置最多偏差 1.10 px(中位数 0.36);在 2:1 时最多偏差 2.15 px(中位数 0.72);在 2.5:1 时最多偏差 2.30 px(中位数 0.95)。在 1.6:1 和 2:1 的所有案例中,双星系统仍会被标记;在 2.5:1 时,8 种几何布局中有 2 种会被标记为不可靠(两个随机种子均如此),其余仍会被标记。目标星上的行星信号从不被标记(每个比例使用 3 个随机种子)。目前尚未在真实假阳性上进行基准测试(ATLAS S2 要求使用 Kepler `koi_fpflag_co` KOI 和 TESS FP TOI)。pi Men 等饱和恒星无法获得可用的质心。邻星表中的通量占比也使用同一高斯函数;若排除范围在恒星 Tmag 误差的 3σ 以内,则会报告为边缘情况。 * **次级搜索仅针对白噪声进行校准。** 其阈值为白噪声条件下、针对扫描位置数量计算的 99.9% 分位数,计算对象为(最大凹陷)/(稳健散布),再乘以 max(1, 扫描的稳健散布);在 3000 个干净的模拟行星中,没有一个被标记(95% CI 0–0.12%;之前引用的 2 个案例早于 max(1, ·) 下限),而被替代的规则标记了 87 个(2.9%),简单的 3 × 稳健散布规则则标记了 681 个(23%)(`scripts/calibrate_secondary.py`、`docs/results/secondary_calibration.json`)。在红噪声较强的情况下(稳健散布为 1.7),使用种子 700000–700999 时,1000 个中有 2 个被标记(审阅者的运行结果:1000 个中 0 个)。在完整的双遍准备流程中,对于使用审阅者种子、以 10 分钟为采样间隔、含 270 ppm 白噪声加 100 ppm 红噪声的 600 个干净行星,有 2 个被标记;单遍处理时有 1 个被标记。第二遍使最强凹陷的中位数提高 +0.03σ。此前的代码每次都会屏蔽第一遍中最强的凹陷,从而避免趋势拟合削弱最大噪声凹陷:600 个中有 8 个被标记,凹陷提高 +0.57σ(此前引用的“300 个中有 1 个”是错误的)。现在,第二遍始终屏蔽相位 0.5,只有在第一遍已发现显著信号时才屏蔽该凹陷。此前降低灵敏度的是去趋势处理,而非阈值:仅屏蔽凌星时,趋势会吸收约一半的次级信号(约 180 ppm 中保留 134 ppm);在每 2 分钟采样噪声为 600 ppm 时,1000/200 ppm 的双星系统在 20 次中有 10 次被标记。屏蔽相位 0.5 后,保留 161 ppm,20 次中有 19 次被标记(噪声为 1000 ppm 时,1500/300 ppm 的案例从 20 次中的 5 次升至 18 次)。第一遍中未达到阈值的偏心次级信号不会受到保护:相位为 0.62 时,1000/200 ppm 的案例在 20 次中有 13 次被标记(单遍处理为 12 次;每次都屏蔽第一遍凹陷时为 18 次)。尚未实现,属于未来工作:使用较低的第一遍阈值来决定屏蔽范围,并通过模拟这一精确的双遍流程来校准第二遍阈值,从而找回这类信号。长凌星曾导致带屏蔽区的去趋势失效(在 3 T14 屏蔽区上拟合 1 天二次曲线,在 7–10 小时处外推误差达 10⁴–10⁶ ppm);现在改为在屏蔽区间内插值趋势,审查窗口至少为 12 T14,因此在审查时,`detrend_window_days` 低于此值不会产生影响(pi Men c 为 1.55 d)。 * **已检查约简 FPP 的稳定性。** 它基于默认去趋势设置和四种变体计算(窗口 ×0.75 和 ×1.5,屏蔽范围为 1 和 2 T14;若某变体的屏蔽范围导致屏蔽区间旁剩余的点数不足一半,则不纳入),并使用两种噪声模型(扫描的稳健散布,以及去除最强凹陷后的标准差,且不会低于标称 σ/√n)。若所有结果均高于 0.5,则类别为“很可能是假阳性”;否则,赔率最多只能相差 10 倍,否则不提供 FPP;若范围跨越 0.015 或 0.5,则标记为“未确定”。其无次级信号似然使用模拟的零假设分布(此前的 max-of-N 模型会因为最强凹陷异常小而惩罚干净行星,FPP 最高达到 0.97),并在第 99 百分位以上拟合指数尾部(40,000 次模拟扫描中,超过 z = 5.1 的不到 40 次)。通过审查流程测量的结果:白噪声下的干净行星中,150 个无一被拒绝(10 分钟采样间隔;大多数被标为“未确定”,其范围跨越 0.015);6–12 小时凌星的 36 个中也无一被拒绝(10 小时那 12 个已在最终代码上重新运行),而审阅时的结果分别为 7% 和约 1/6;红噪声下仍会拒绝,比例约为 3%(审阅者在 2d268cb 上测得 150 个中有 5 个);模拟双星系统中,20 个有 19 个(1000/200 ppm)、20 个有 17 个(1500/300 ppm),以及 20 个有 13 个(相位 0.62 时为 1000/200 ppm)被判定为“很可能是假阳性”;此前其中 20 个有 15–16 个会因不稳定而被拒绝。 * **验证尚未完成。** TRICERATOPS 1.1.0 可通过 pip 安装(额外组件 `validate`),但其 `target()` 在构造时会查询 MAST、Gaia 和 TESSCut,因此无法离线运行;构建时 MAST API 也出现故障:适配器(`validate.run_triceratops`)仅在存根上进行过测试,尚未在真实目标上运行。实际运行的约简 FPP 是有文档说明的近似方法:其情景先验属于人为选择(依据 Guerrero et al. 2021,将假阳性总比例设为 25%),会忽略未分辨伴星和背景恒星;如果没有可靠的质心,就无法区分目标星与可能产生该深度信号的邻星。目前尚未纳入对比曲线。 * **批处理模式仅在离线环境中测试。** 使用合成光变曲线测试了续跑、重试和缓存;由于 MAST 搜索 API 出现故障(2026-10-19),没有运行真实批次,因此不报告真实吞吐量。CTOI 导出结果尚未与 ExoFOP 的在线表单进行比较。 * **两项修复会改变默认结果(包括通过/未通过状态)。**(1)在提交 5a03087 之前,`preprocess.clean` 会删除所有比 0.5 天滚动中位数低、且偏离点对点散布 10 倍以上的点,因此深度超过该阈值的日食或凌星(3% 的双星系统、宁静恒星上 1% 的热木星、噪声为 300 ppm 时的 5000 ppm)会在面板看到之前消失。现在只有在低异常点不属于凹陷时才会将其删除:若一段连续数据至少有 max(3, 20 分钟 / 采样间隔) 个采样点低于中位数 3σ,就视为凹陷(使用滞回处理,因此即使 10–12σ 的日食跨越截断阈值,所有点也都会保留)。向上截断方式不变。(2)深凹陷现在会进入审查流程,`vet.py` 的 `odd_even_mismatch` 曾导致 10 个干净的 1% 热木星中有 6 个未通过:深凌星的箱形深度相对于白噪声波动很大。现在会根据各历元深度相对于奇偶均值的散布增大其误差,并设置 2% 的系统误差下限。2026-10-21,所有能够在不调用 Sentinel 的情况下重新运行的修复前结果,都已使用当前代码重新运行:已保存的 pi Men 运行结果(凹陷、审查、拟合和 FAP 均相同;300 ppm 时的 pi Men c 约为 2 分钟散布的 1.5 倍,不受任何一项修复影响)、实时发现目录、注入回收基准测试、阈值扫描、真实 TOI 基准测试(以及因此更新的真实 TOI 排行榜和方法论文中的数字),还有数据源规则评估。首次运行结果仍作为历史记录保留,每个文件都附有修复前说明,并注明重新运行结果所在文件:`docs/results/benchmark_real_tois.{md,json}`、`feed_rule_validation.json`、`feed_rule_live_rerun.json` 和 `docs/discoveries/catalog_v1_fap200.json`。校准记录(`reviewer_weights_full_panel.calibration.json`)没有重新运行:若不调用 Sentinel,就无法重新测量其速率。Probe 的检出率(TPR 0.6、0.6 和 0.4)是在 2026-10-16 的代码上测得;注入的凌星信号改为带肢暗效应后(2026-10-19),相同随机种子的结果为 0.9、0.8 和 0.6。权重保持冻结,作为基准测试协议的参数:有三个 Probe、最低分数为 0.5、最低行星比例为 0.5 时,任一组权重都会接受至少有三个 Probe 中两个标记的凹陷,因此所有共识判定都相同(`tests/test_calibration_equivalence.py`)。修复(2)的一个后果是:模拟的偏心双星系统(主星 0.8%,次星 0.4%,相位 0.37)现在能够通过默认审查,因为先前的 `odd_even_mismatch` 失败属于误报;其主星星历上的 8 个事件都会被 `secondary_any_phase` 检出(即出现标记,或在 `[vetting] decide = true` 时未通过;其作为独立事件找到的次星食,有 5 次被标记为 `off_ephemeris`,1 次未标记),并且这 8 个事件均被约简 FPP 归类为“很可能是假阳性”(所有去趋势设置下的结果均高于 0.5;在使用按类别判断的门控前,这类双星系统大多显示为“FPP not computed: unstable”,而非“约为 1”)。修复(1)的权衡是:持续时间不足 20 分钟、但深度超过 10σ 的真实事件(以 2 分钟采样的 18 分钟日食)仍会作为尖峰被删除。 * **边缘事件是统计方法和审阅者的薄弱环节。** * **相干变源规则在红噪声下表现不佳,也无法识别长周期信号。** 在强红噪声(AR(1),600 ppm,相关时间 1 天)中,它对 300 ppm 正弦信号在 20 次中仅检出 3 次(白噪声下为 20 次中 20 次;`scripts/variability_rule_check.py`、`docs/sweep/variability_rule_check.json`);对于单个扇区中约 3.8 d 以上的周期,它无法进行测试,因为光变曲线的两半都必须显示该信号(第 1 扇区切片的峰值中有 20 个标为“未测试相干性”,因此仍未分类)。 * **数据源纳入的对象只是线索,不是任何已确认状态的候选对象,而且数据源仍以虚警为主。** 搜索数据源中没有任何已确认的行星。根据预注册的双扇区规则,仅噪声仍会在每 100 个目标中产生约 6 个虚假信号(留出集,95% CI 4.0–9.4),高于真实光变曲线产生的每 100 个 1.6 个。该规则也会降低完备性(数据源层面,留出集:39% 降至 17%)。 * **Real-TOI 在可搜索恒星中的完整率为 60%**(留出集;52% 至 67%),低于 Kepler Robovetter 的完整率;对于半径小于 2 R⊕ 的行星,完整率仅为 10%。FP 指标仅涵盖具有 2 分钟数据的 FP 恒星,这一群体与完整 FP 列表相比存在偏差。
- 裁剪错误已修复,并重新运行了基准测试。 首次运行的基准测试代码会移除所有低于滚动中位数超过点间散布 10 倍的点,且没有连续长度测试,因此深度超过每次采样散布约 10 倍的凌星,其凌星期间的点会被删除。在其留出集的一半中,有 27 颗 CP/KP 恒星和 11 颗 FP 恒星符合条件(深度超过散布的 8 倍),其中 3 颗 CP/KP 漏检可由此解释。使用修复后的代码重新运行,协议保持不变,27 颗符合条件的 CP/KP 恒星中有 23 颗被检出(此前为 21 颗),其中包括全部 3 颗漏检恒星;留出集完整率为 60%(90/150),而此前为 57%(86/150):5 颗恒星新增检出,1 颗检出丢失,提升 3 个百分点,但未显示出超出重采样噪声的幅度(配对自助法 95% CI 为 0 至 +6 个百分点;McNemar p = 0.22)。大多数新增检出都是被旧奇偶检验拒绝的深层行星。同一修复也解释了其他大多数变化:对于反转对照组,现在通过审查、此前未通过的 24 个凹陷中,16 个曾被旧奇偶检验拒绝,5 个是被旧版清理流程删除的深层反转特征(另有 3 个;3 个现在不再通过),因此每 1,000 个恒星扇区中通过审查的凹陷数从 573 增至 641;而 5 个凹陷现在通过审查的 FP TOI 中,有 4 个曾被旧奇偶检验拒绝(1 个现在不再通过),因此通过审查的 FP 凹陷占比从 31% 升至 34%。唯一一次检出丢失是 TOI 1905.01,其已发布星历已过时:其扇区包含两次完整凌星,深度约为 25 ppt、持续约 2.5 h,但星历预测的时间晚了 7.2 h(为传播误差的 7σ),因此即使完美检出也无法匹配。首次运行中的“检出”是在预测时间处、裁剪已删除凌星后残留的一个凹陷;重新运行后检出的凹陷是真实凌星,其测量窗口仅覆盖 Probes 标记的凌星始入阶段(0.79 h,2.9 ppt;考虑临边昏暗效应的拟合结果为 25.3 ppt、2.75 h),且周期为混叠周期(3P/2)。审计发现,这是留出集 CP/KP 漏检中唯一符合此类情况的案例(已发布星历预测时间处没有凹陷,但在预测历元 12 h 范围内存在深度相近的通过审查的凹陷,且与预测时间的偏差至少为传播星历误差的 3σ);冻结的匹配规则未变,因此仍计为漏检(重新运行报告中的“已知限制”)。首次运行及其修复前说明仍保留在 docs/results/benchmark_real_tois.md 中。
它是什么 / 不是什么
| SetuHQ 是 | SetuHQ 不是 |
|---|---|
| 在公开数据上进行可复现、经过校准的凌星搜索 | 已确认行星的来源 |
| 带有对照组和公开排行榜的盲测基准 | 声称超越已发布的处理流程 |
| 探索每一颗已知系外行星,并提供有来源依据的数据 | 后续观测的替代品 |
| 可解释:每个判定都保留标记和理由 | 黑箱 |
安装
SetuHQ 需要 Python 3.11 或更高版本。每个带标签的发行版本都会以
setuhq 的形式发布到 PyPI(docs/RELEASING.md):
pip install setuhq # the setuhq command
pip install "setuhq[mcp]" # with the MCP server (setuhq mcp, setuhq-mcp)
pip install "setuhq[tess,mcp]" # with TESS downloads too
发行版本之间 main 分支上的最新代码:
pip install "setuhq[tess,mcp] @ git+https://github.com/ashfordeOU/SetuHQ"
如需参与开发,或重新构建已存储的运行结果、基准测试和网站,请使用仓库检出版本:
git clone https://github.com/ashfordeOU/SetuHQ && cd SetuHQ
python3 -m venv .venv && . .venv/bin/activate
pip install -e ".[tess,dev]" # add ,claude for the Anthropic API backend, ,mcp for the MCP server
快速开始
pytest -q # offline tests (network- and slow-marked tests are deselected)
setuhq run configs/tess_pi_men_s1.toml --out runs/tess-pi-men-s1
setuhq rebuild runs/tess-pi-men-s1 configs/tess_pi_men_s1.toml # re-vet from the stored classifications
setuhq report runs/tess-pi-men-s1 --out site/report --validation docs/results/pi_men_validation.md
setuhq calibrate configs/tess_pi_men_s1.toml --out weights.json
setuhq benchmark configs/benchmark_simulated_panel.toml --weights weights.json --out bench.md
setuhq export runs/tess-pi-men-s1 --out export # CTOI-style table and predicted windows (refuses without the TOI check)
setuhq leaderboard my-method.json # score a submission to the real-TOI leaderboard
setuhq sweep configs/sweep.toml --sector 1 --limit 20 # the everything-that-dims sweep (resumable)
setuhq-mcp --list-tools # the MCP server (pip install -e ".[mcp]")
pytest -q -m network # live MAST download test
scripts/ci_local.sh # everything CI runs, plus the slow tests, the site builds and the README check
配置文档见 configs/default.toml。所有会影响结果的值都位于配置文件中,其哈希值会写入清单。
架构
仓库布局
src/setuhq/
lightcurve.py container with provenance loaders.py TESS (MAST), CHEOPS FITS, CSV
preprocess.py clean, detrend, bin subjects.py blind-coded 13-day segments
search.py BLS and single-event search vet.py automatic vetting
dvtests.py DV-style light-curve tests pixel.py TPF difference images, centroids, neighbours
validate.py reduced FPP, TRICERATOPS adapter, validation labels
ephemeris.py propagation, uncertainty cone exofop.py CTOI-style export, predicted windows
batch.py resumable multi-target runs leaderboard.py the real-TOI leaderboard
injection.py synthetic transits calibrate.py skill-based reviewer weights
aggregate.py clustering and consensus pipeline.py end-to-end run
benchmark.py injection recovery report.py static HTML site
store.py SQLite and CSV export config.py TOML configs
variables.py everything-that-dims rules starsearch.py one star-sector of the sweep
sweep.py resumable sector sweep contrib.py contribution bundles and ingest
everything.py #/variables, counter, Sky layer
tools.py the MCP tools' functions mcp_server.py setuhq-mcp
agreement.py Sentinel agreement, effective number of voters
reviewers/ simulated; Sentinels: sentinel.py (shared), claude (API), claude_code (CLI),
openai_compat (OpenAI and compatible endpoints), gemini
configs/ run configs scripts/ known-planet validation
docs/ research notes and results site/ generated report
tests/ offline tests, plus network- and slow-marked tests
tools/ README figures (gen_readme_assets.py) and app screenshots (capture_site_shots.mjs)
skills/, commands/, .claude-plugin/ the Claude Code plugin examples/ mixed-provider panel, example agent
贡献一次扫描
在 TESS 扇区上运行 SetuHQ,使用你自己的 Claude 订阅或 API 密钥,在 pull request 中提交密封 bundle,即可在你带来的每条记录上获得署名:先运行 setuhq sweep,然后运行 setuhq bundle;维护者会运行 setuhq ingest,在结果计入前重新搜索每项发现。指南见
CONTRIBUTING.md,扫描本身位于证据下。密钥绝不能写入文件或消息:只能使用环境变量。
AI 提供方
Sentinel 默认使用 Claude(Anthropic);也支持其他提供方,并会标注。探测器是确定性的匹配滤波检测器。
目前仅对 Claude 进行了基准测试。 每个提供方都会收到相同的任务和提示词,并使用相同的严格 JSON 架构、验证和截断规则,因此,格式错误或超出范围的回答都无法让候选项通过。每条审核都会记录提供方、API 返回的确切模型 ID、调用时间和提示词版本;缓存键包含提供方、模型、提示词和图像哈希。
[[reviewers]] 中的 type | 提供方 | 密钥(仅限环境变量) | 安装 | 是否经过基准测试 |
|---|---|---|---|---|
claude_code | 通过 Claude Code CLI 使用 Claude(订阅) | 无:已登录 claude | Claude Code | 是:40 星子样本 |
claude | 通过 Anthropic API 使用 Claude | ANTHROPIC_API_KEY | .[claude] | 未单独测试(与 CLI 使用相同模型) |
openai | OpenAI(Chat Completions,图像输入) | OPENAI_API_KEY | 无(纯 HTTPS) | 否 |
gemini | Google Gemini(generateContent) | GEMINI_API_KEY | 无(纯 HTTPS) | 否 |
openai_compatible | 通过 base_url 指定的任意端点:Ollama、vLLM、LM Studio、OpenRouter、Azure OpenAI | api_key_env 指定的变量,或无 | 无(纯 HTTPS) | 否 |
一个面板可以混用多个提供方(examples/panels/mixed_providers.toml:Sentinel · Volunteer 使用 Claude,Sentinel · Skeptic 使用 OpenAI,第三个使用 Gemini)。名称仍为“Sentinel · persona”;页面会在名称旁显示提供方和模型,并将其存入 manifest.json。
- 缺少密钥、SDK 或 CLI: 将跳过该 Sentinel,并在清单中列出跳过原因。
- 密钥不会出现在任何记录中: 若
base_url包含user:password@、片段、;param、类似令牌的路径段、名称中含有凭据字样的查询参数,或提供方密钥的值,则会拒绝该地址;端点记录为协议、主机和端口,以及路径的哈希值;密钥被拒绝(401、403、除 429 以外的其他 4xx)时会立即失败,不会重试;错误正文会被脱敏,也会处理密钥的 base64 形式。 - 缓存: Anthropic API 的缓存键现在包含提供方,因此,此变更前由
claude后端缓存的回答会重新请求一次;Claude Code 的缓存键保持不变。 - 权重按提供方和模型分别设置。 未针对其提供方和模型进行校准的 Sentinel 将使用最低权重(0.05)投票,并标记为未校准,直到
setuhq calibrate完成测量。 - 为何重要: 两个 Claude persona 的一致性为 φ = 0.89,因此它们几乎相当于一个投票者。
scripts/benchmark_real_tois.py sentinels --panel <config>会让任意面板中的 Sentinel 使用相同的 40 星子样本运行(仅限已设置密钥的 Sentinel),并在报告中添加每一对的 φ 值,以衡量另一个模型是否让面板更具独立性。
AI 助手(MCP、Agent)
setuhq-mcp 是一个 MCP 服务:助手运行 SetuHQ 自己的代码并读取其存储的结果,而不是靠猜测。它的 16 个工具各自都是对一个公共函数的轻量封装(src/setuhq/tools.py),每个回答都附带来源和真实性标签。默认使用 Stdio;通过 --http HOST:PORT 提供可自托管的流式 HTTP 服务。
服务运行在你的计算机上;不会向 Ashforde OÜ 发送任何内容。助手通过它找到的是候选目标,而非发现结果。
| 渠道 | 命令 | 要求 |
|---|---|---|
| 安装 | pip install "setuhq[mcp]"(或在检出目录中运行 pip install -e '.[mcp]'),然后运行 setuhq-mcp --list-tools | Python 3.11+ |
| Claude Code | claude mcp add setuhq -- /path/to/SetuHQ/.venv/bin/setuhq-mcp | 已安装 |
| Claude Code 插件 | /plugin install setuhq --marketplace ashfordeOU/SetuHQ | setuhq-mcp 位于 PATH 中 |
| Claude Desktop、Cursor、VS Code、Codex CLI、Gemini CLI | 配置片段见 docs/MCP-INSTALL.md | 已安装 |
| 远程(流式 HTTP) | setuhq-mcp --http 8080(localhost;除非指定 --allow-writes,否则仅提供只读工具;无身份验证) | 你自己的主机 |
| 工具 | 功能 |
|---|---|
search_catalogue、get_planet、get_star | 系外行星目录(按存储内容提供,并附带来源) |
list_candidates、get_candidate | 某次已存储运行中的凌日信号,附带完整来源信息和每位审阅者的判定 |
vet_lightcurve、fit_transit、compute_fap | BLS 和审查、肢暗化拟合、有界 FAP |
run_pipeline_csv、run_pipeline_tess | 在 CSV 或 TIC 上运行完整管线(除非另有要求,否则仅运行探测) |
rv_semi_amplitude、transit_depth、microlensing_magnification、habitable_zone | Methods 中的物理学功能 |
benchmark_results、sentinel_providers | 已存储的基准测试;哪些提供方可在此运行 |
该插件在工具之上添加了斜杠命令(/setuhq-vet、/setuhq-explain、/setuhq-sweep、
/setuhq-catalogue、/setuhq-physics、/setuhq-benchmarks),以及 skills/ 中的四项技能:
审查 TESS 目标、解释候选目标、运行扇区扫描、提交至排行榜。
examples/agents/vet_agent.py 是一个 示例 Agent(Claude Agent SDK、
.[agents]),它通过服务端端到端地审查一个候选目标:将每次工具调用和结果记录到来源文件中,
自由运行只读工具,在运行管线前征求许可,并拒绝任何面向外部的操作。其结论是供人审阅的候选结果,而非发现结果。
版本
整个引擎都是免费的。SetuHQ Pro 和定制研究面向有更多需求的机构,而所有付费方案都从一条消息开始:这里没有定价。
| 免费 | SetuHQ Pro | 定制研究 | |
|---|---|---|---|
| 内容 | 完整的开源 SetuHQ:搜索、Sentinels 和 Probes、审查、基准测试和排行榜、扫描、MCP 服务和应用,没有功能限制 | 在同一开源引擎上叠加的专有层,按合同提供 | 基于开源引擎为你完成的研究,按合同提供:行业扫描、候选目标档案或产出率研究 |
| 许可证 | AGPL-3.0-only,或商业许可证 | 专有 | 合同 |
| 状态 | 可用 | 计划中;可按需提供(尚未构建) | 按需提供 |
| 如何开始 | 安装或打开setuhq.com | 申请 Pro 评估 | 申请研究 |
用 docs/PRO.md 中的话来说,Pro 将会是:
开源 SetuHQ 的严格超集。 Pro 依赖开源引擎,绝不分叉。所有开源功能都将保持开源,也不会有任何免费功能转为需授权使用。
不引入新科学。 Pro 不添加任何检测、审查或拟合方法,也不会修改这些方法。Pro 的所有数值都来自开源引擎运行结果,任何人都可以用免费代码复现。
Pro 的规划围绕公共代码仓库无法为机构提供的内容展开:为冻结基准测试中的任意 AI 审核者提供校准证书(Pro Calibrate,主打产品);私有目标列表、尚未公开的候选目标和团队工作区(Pro Workspace);大规模托管扫描(Pro Sweeps);结合客户望远镜可观测性数据的后续观测资料包(Pro Follow-up);课堂和天文馆版本(Education & Dome);以及附带 SDK 的商业许可证。目前这些都尚未构建;docs/PRO.md 说明了每项功能将基于什么构建,以及还需要什么。Pro 产出的任何内容都不能确认或验证一颗行星,定制研究也不能。
研究
方法论文草稿见 docs/paper/paper.md,真实 TOI 排行榜见 docs/leaderboard/。注入阈值扫描(它不是排行榜)见 docs/threshold_sweep.md;Methods 各章背后的研究笔记见 docs/RESEARCH.md。
引用
请使用 CITATION.cff 引用本软件(GitHub 的引用此仓库按钮会读取该文件),并注明所用版本或提交。每个发行版本都会存档到 Zenodo:概念 DOI 10.5281/zenodo.23568348 涵盖所有版本并指向最新版本;每个发行版本也都有自己的 Zenodo 记录版本 DOI(v0.1.0:
10.5281/zenodo.23568349)。方法论文目前仍是草稿
(docs/paper/paper.md),尚无独立 DOI。
许可
SetuHQ 采用双重许可。代码依据 GNU AGPL-3.0-only(LICENSE)许可,或者对于不适合采用 AGPL 的用途(例如闭源产品,或未提供源代码的托管服务),可使用 Ashforde OÜ 提供的商业许可([email protected])。SetuHQ 自有的数据、基准测试、排行榜数据和论文依据 CC BY 4.0 许可;第三方数据遵循其自身条款。通俗易懂的许可指南见 LICENSING.md,第三方组件和数据见 NOTICE,贡献须遵循 CLA(CONTRIBUTING)。“SetuHQ”和 Setu 标志是 Ashforde® OÜ 的商标;分叉项目必须使用其他名称(TRADEMARKS.md)。字体(Geist、Geist Mono、Unbounded)依据 SIL Open Font License 许可。
另请参阅:GOVERNANCE · SECURITY · CODE OF CONDUCT · ROADMAP · CHANGELOG。
SetuHQ · सेतु · 桥梁 — 由 Ashforde OÜ 构建。Sentinels 默认运行于 Claude(Anthropic)上;也支持并标明其他提供商。Probes 是确定性的匹配滤波检测器。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。