Skip to content
天文学

用 Potato 做天文学标注

在 FITS 裁切图三联图上甄别 ZTF 和 Rubin 候选体的真假,或为星系形态分类,每位团队成员的标签分开导出。

Potato 在浏览器中显示 FITS 图像,标注者可以根据科学图像、参考图像和差分图像的裁切图以及光变曲线,把 ZTF 和 Rubin 等巡天的暂现源候选体甄别为真实或虚假,也可以用 Galaxy Zoo 式的问题树为星系形态分类。Potato 免费开源,运行在你自己的服务器上,并把每位标注者的标签分开导出,用于训练真假甄别分类器。

差分图像是经过定标的科学曝光减去同一天区的参考图像(模板)得到的图像,真实的暂现源在差分图像中表现为一个新出现的点源。在真假甄别中,标注者把每个检测判为天体物理源,或宇宙线之类的伪迹。ZTF 的 Braai 分类器用 32,640 组已标注的科学、参考和差分图像三联图训练,这些标签来自 Zwickyverse,一个简单的基于网页的开源工具(Duev et al., 2019)。同一篇论文发现,对于早先的随机森林分类器给出低分的候选体,Zooniverse 志愿者标为虚假的标签中约有 30% 实际上是真实的。被误标的候选体大多是变星,而志愿者没有看到光变曲线。在一项 Pan-STARRS1 超新星搜寻中,志愿者分类与神经网络分类相结合,效果优于任何一方单独使用(Wright et al., 2017)。Potato 在裁切图下方显示光变曲线,并把每个候选体发给你设定人数的标注者。

Potato 中的天文学任务

下表每一行都使用 Potato 2.13 新增的 fits_cutout 显示类型,并用 radio 和 multiselect 方案提问。

任务Potato 的做法文档
甄别暂现源候选体科学、参考和差分裁切图并排显示,R、B、U 三个键分别选择 Real、Bogus 和 Unsure天文学
记录候选体为何是虚假的一道询问原因的 multiselect 问题,只在标注者选择 Bogus 之后显示天文学
查看光变曲线候选体的光变曲线显示在裁切图下方,上限画成空心三角形天文学
星系形态分类每个条目一幅图像,树的每个节点一道 radio 问题,display_logic 写明通往每个后续问题的路径天文学
把 Zooniverse 工作流转到内部运行potato import -f zooniverse 把工作流中的任务转换为方案,并可保留志愿者的分类结果数字人文
甄别标签的一致性在甄别问题上计算百分比一致率、Cohen's kappa、Fleiss' kappa 和 Krippendorff's alpha标注者间一致性

一项由三名标注者完成的 ZTF 甄别研究

下面的配置让三名标注者甄别每个 ZTF 候选体,按 ZTF 的列名读取光变曲线,并询问每个虚假检测的原因。天文学页面给出了条目格式。

yaml
annotation_task_name: "ZTF candidate vetting"
task_dir: .
media_directory: media
output_annotation_dir: annotation_output
data_files: [data/candidates.json]   # each item names three cutouts and a light curve
item_properties: {id_key: id, text_key: summary}
user_config:
  allow_all_users: true
 
num_annotators_per_item: 3
 
instance_display:
  fields:
    - key: candidate
      type: fits_cutout
      label: "Cutouts"
      display_options:
        panels:
          - {key: science, label: Science}
          - {key: reference, label: Reference}
          - {key: difference, label: Difference, stretch: asinh}
        light_curve_columns: {time: jd, band: fid, mag: magpsf, err: sigmapsf, limit: diffmaglim}
        time_label: JD
 
annotation_schemes:
  - annotation_type: radio
    name: vetting
    description: "Is this a real astrophysical transient?"
    humanize_labels: false
    labels:
      - {name: "Real", key_value: "r"}
      - {name: "Bogus", key_value: "b"}
      - {name: "Unsure", key_value: "u"}
    label_requirement: {required: true}
 
  - annotation_type: multiselect
    name: bogus_reason
    description: "What makes the candidate bogus?"
    humanize_labels: false
    labels: ["Subtraction residual (dipole)", "Cosmic ray or hot pixel", "Satellite or asteroid trail", "Bad column or image edge", "Other"]
    display_logic:
      show_when:
        - {schema: vetting, operator: equals, value: "Bogus"}

num_annotators_per_item: 3 把每个候选体发给三名标注者。Potato 的光变曲线读取器查找 mag 和 magerr 这类列名,light_curve_columns 把 ZTF 的 magpsf 和 sigmapsf 映射到 mag 和 err 两个角色。不做映射时,每个带 diffmaglim 值的行都会被画成上限。设置 humanize_labels: false 后,屏幕上的“Bogus”与 display_logic 条件中的值一致。

导入裁切图与导出标签

Potato 在服务器上用 astropy 读取 FITS 文件,astro 可选依赖会安装 astropy(pip install 'potato-annotation[astro]')。每个条目给出相对于媒体目录的 FITS 文件和光变曲线:

  • 裁切图。 .fits、.fit、.fts 以及 gzip 压缩的 .fits.gz 文件。
  • 位置。 条目可以用赤经和赤纬(RA 和 Dec)或 FITS 像素给出中心,用像素数或 "40 arcsec" 这样的角度给出尺寸;没有位置的条目显示整幅图像。
  • 光变曲线。 CSV、TSV 或 JSON 文件,或直接写在条目中的点列表。

显示类型从媒体目录读取每个文件,并拒绝 URL。consensus 导出把每个候选体的最高票答案、得票比例以及 retired 或 needs_review 状态写入 consensus_questions.csv:

bash
python -m potato.export -c config.yaml -f consensus -o exports/consensus

使用默认的 agreement_threshold(0.8)和三名标注者时,只有三名标注者意见一致,候选体才会定案(retired),其余候选体进入 needs_review。标注者把 Bogus 改为 Real 之后,原因问题的答案仍保留在存储的标注中,导出和一致性指标都不会把这个答案标为已隐藏。用这些标签训练之前,请根据甄别答案筛选 bogus_reason。

与 Zooniverse、SkyPortal 及警报代理的分工

Zooniverse 托管免费的公民科学项目,项目经过审核后公开上线,适合面向公众的志愿者群体,例如 Galaxy Zoo 和 Zwicky's Quirky Transients。SkyPortal 是一个显示天文数据集、供标注、分析和发现使用的网页应用,带有候选体扫描页面,用于查看经过筛选的警报流中的源。Fritz 是 ZTF 的科学数据平台,基于 SkyPortal 构建,适合巡天合作组的日常扫描和后续观测。ALeRCE 和 Lasair 等警报代理(alert broker)对完整的警报流进行筛选和分类,Lasair 的 SQL 筛选器可以在实时警报流上运行。当一个私有团队或一个班级标注一组固定的候选体或星系时,Potato 更合适,因为 Potato 把每个条目分配给设定人数的标注者,在正式条目之前用练习条目培训标注者,并把每位标注者的标签分开导出。一种做法是把从警报代理获取的候选体裁切图保存为 .fits.gz 文件,在 Potato 中甄别这些候选体,再用已定案的标签训练。

借助编程智能体搭建研究

potato-skill 1.2.0 认得 fits_cutout 这个显示类型名称,并指导 Claude Code、Codex 或 Cursor 完成研究设计这一侧的工作,例如向标注者问什么、每个候选体由几名标注者甄别、培训和注意力检查,以及导出。这个技能目前还没有记录 FITS 条目格式、显示选项和 astro 可选依赖。请让智能体参考天文学页面及其 Markdown 副本 https://www.potatoannotator.com/docs/annotation-types/astronomy.md,以了解格式和选项。

常见问题

标注者能否并排查看一条警报的科学、模板和差分裁切图?

能。fits_cutout 显示类型把每个候选体的科学、参考(模板)和差分裁切图显示在同一行,三个面板共享缩放和平移,并共用一个十字准线。以 .fits.gz 名称保存到磁盘的 ZTF 警报裁切图无需解压即可打开,每个面板可以设置不同的拉伸,例如在差分图像上使用 asinh。

不同观测之间朝向不一的裁切图会被旋转成北朝上吗?

不会。Potato 按 FITS 文件存储的朝向显示每幅裁切图,并根据每个面板的 WCS 在面板上画出北向和东向箭头。各面板不在同一个像素网格上时,面板下方会有一条说明指出这一点,十字准线则按天球位置放到每个面板上。

标注者能否从 FITS 图像的 WCS 读出赤经和赤纬?

能。面板下方的读数以六十进制和度两种形式显示指针所在位置的赤经和赤纬,并给出原始图像的 FITS 像素。读数对 astropy 在服务器上计算的天球位置网格做插值,因此能跟随 astropy 能读取的任何投影,包括 SIP 畸变。

延伸阅读

参考文献

  1. Duev et al. (2019). Real-bogus classification for the Zwicky Transient Facility using deep learning. Monthly Notices of the Royal Astronomical Society 489(3). https://doi.org/10.1093/mnras/stz2357
  2. Wright et al. (2017). A transient search using combined human and machine classifications. Monthly Notices of the Royal Astronomical Society 472(2). https://doi.org/10.1093/mnras/stx1812

从这里开始

其他领域

全部应用场景