---
title: "用三次 GPI 曝光提取对比度光谱"
description: "下载固定 β Pic 公开数据范围，检查原始头与卫星斑，提取稀疏对比度光谱并保留空间模型失败。"
canonical_url: "https://sandboxphysics.com/zh/stories/direct-imaging/betapic-gpi-tutorial/"
language: "zh-CN"
page_type: "story"
alternate_languages:
  en: "https://sandboxphysics.com/stories/direct-imaging/betapic-gpi-tutorial/"
last_modified: "2026-10-28"
---

[从恒星眩光读到伴星光谱](https://sandboxphysics.com/zh/stories/direct-imaging/)

L3 · 直接成像

# 用三次 GPI 曝光提取对比度光谱

Sandbox Physics · 2026-10-28

打开 Bonnefoy 等人的《Physical and orbital properties of β Pictoris b》arXiv:1407.4001v1，先看第二节和表一，再打开下方固定来源清单。跟着三次真实 J 波段曝光，可以提取条件通道对比度光谱，也能看到简单图像模型在哪里失效。

## 开始前需要什么

前三章已经解释光子计数、角差谱差响应与协方差。脚本使用 Python 和 NumPy，不需要私有仓库、pyKLIP 安装或 Lab Engine；独立下载清单附在文后。

## 从三个文件和原始观测夜开始

观测发生在二〇一三年十二月十日，项目 GS-ENG-GPI-COM。固定作者仓库提交为 72a7517b1a34bdc29c33211f2ef591ddff64dcf9，提交日期二〇一六年八月九日。三个文件编号 S0092、S0099、S0111，后接 \_spdc\_distorcorr.fits。这些文件在二〇一六年约简，观测、后来处理和论文发表属于不同日期。

每个原文件长 14,673,600 字节。下载器匿名请求原始头及十组 SCI、DQ 平面的精确字节范围，逐段检查 206 状态、Content-Range、长度和 SHA256。完整文件的 Git blob 标识也保存了，但部分下载没有被说成完整文件 SHA256。

保留的原始零基通道编号是 0、4、8、12、16、20、24、28、32、36。三份输入都是实际观测背景；之后的 PSF 注入才是单独标记的合成标定实验。

| 文件编号 | 2013-12-10 的 UTSTART–UTEND | AVPARANG / 度 |
| --- | --- | --- |
| S0092 | 05:38:15.843–05:39:48.718 | 14.9632 |
| S0099 | 05:51:16.703–05:52:48.843 | 22.3861 |
| S0111 | 06:14:45.796–06:16:19.187 | 34.6878 |

对应阅读：Bonnefoy et al. · Jason Wang and contributors · GPI Data Pipeline 1.4.0 data formats

## 先读单位和质量位，再看亮点

SCI 有三十七个原生波长平面，每面为二百八十一乘二百八十一像素。BUNIT 写的是每次 coadd 的 ADU，ITIME 为每次 88.74219 秒，COADDS 为一。起止窗口含有开销，直接取中点不保证等于电荷加权曝光中点；投影采用 CD 矩阵，头中 AVPARANG 用来检查视场转角跨度。

波长起点是 1.11407300105 微米，原生间距为 0.00654594640474 微米，FITS 参考像素从一开始。选定通道延伸到 1.34972707162 微米。原生采样比论文约三十五至三十九的分辨本领更密，十个保留通道不能当作十个独立光谱分辨单元。

DQ 扩展保存质量位。默认屏蔽坏像素和两种饱和位；读坡离群值剔除位、已修补或插值像素，只要没有同时标成基本坏像素，就暂保留。验证脚本还会尝试屏蔽所有非零质量位，若有效像素不足就报告测量失效。

文件没有给出校准方差的 ERR 扩展，经过约简的 ADU 不能直接当独立泊松电子。教程从处理后的比较区估条件空间光谱协方差，并保留模型欠拟合。

$$
\lambda_k=1.11407300105+0.00654594640474\,k\quad[\mu\mathrm m]
$$

这里沿用原始零基通道编号 k。

对应阅读：GPI Data Pipeline 1.4.0 data formats · Bonnefoy et al.

## 检查方向，再重测卫星斑

小天空偏移采用二维 CD 矩阵，列向量长度对应每原生像素十四点一四毫角秒。旧 CDELT 与它不符；PAR\_ANG 注释还明说应使用 AVPARANG。FITS 的 CRPIX 从一计数，源读取程序的 PSFCENT 和 SATS 则按原生零基位置解释。

S0099、S0111 的 SATS 坐标字符串与 PSFCENT 完全重复。这些卡片原样保留。脚本对实际斑点像素重新拟合局部高斯和倾斜背景；自由迭代重心容易被邻近散斑吸走，因此搜索限制在头位置周围一个像素，边界解拒绝，并用独立经验 PSF 注入检查定位偏差。

独立定位检验把经验斑形加到真实光晕的其他已知位置。一百四十四次注入中，一百一十四次局部拟合通过，三十次失败；通过者的百分之九十五位置偏差分位约为零点八二五像素。失败和模板差异限制了真实卫星斑定位的精度解释。

每个通道以重测卫星斑的平均位置配准，再经原始 CD 投到北上东左网格。稀疏约简中，目标环带最强点的位置角约二百一十二点六二度，历史表一为二百一十一点六加减一点三度。这是像素尺度的独立方向对照，后来约简数据的精密测位还需自己的板尺与真北标定。

对应阅读：GPI Data Pipeline 1.4.0 data formats · Jason Wang and contributors · Bonnefoy et al.

## 通量标定沿用同一个有限模板

逐曝光、逐通道取实际卫星斑小图，扣局部背景，对齐后平均形状。模板与卫星斑亮度使用同一个半径三像素的圆孔径和局部背景约定归一，归一量是积分流量，不拿 SATF 头中的峰值顶替。

论文第二节采用 J 波段卫星斑比恒星暗九点三六星等，误差零点一五星等。脚本在选定约简通道间采用这个常数公共比值，没有测得精密的色标定；来源与误差未明确的离轴透射表也未应用。零点一五星等约对应百分之十四的整体尺度误差，相关地作用于各波段，与经验噪声协方差分别保存。

得到的是采用经验模板标定后的约简通道伴星恒星对比度。要换成伴星绝对流量，还需要恒星谱形与标定；原论文采用恒星模板，教程在对比度处停止。

$$
f_{\rm spot}/f_\star=10^{-0.4\Delta m},\qquad(C_{\rm cal})_{ij}=c_ic_j(0.4\ln10\;\sigma_{\Delta m})^2
$$

历史星等误差以同一个公共因子一起缩放整条对比度光谱。

对应阅读：Bonnefoy et al. · Greco & Brandt

## 处理、注入，再读实际结果

主约简取三张配准图的平均作角差参考，残差各经自己的 CD 矩阵投影再叠加。明确采用历史角距四百三十毫角秒、位置角二百一十一点六度定义局部测量区，已经利用了伴星的先验位置知识，不是盲搜发现。

把经验点源模板逐通道注入原选定数据，整套减除和投影重跑，测全部输出。另跑一次先谱差后角差，展示通道混合。这些确定性注入标定的是冻结观测背景上的处理响应，没有重新生成光子观测。

下表列中心孔径的代表结果；误差是条件经验噪声估计。公共星等标定和各单独卫星模板敏感性分别保存。缺少增益、原始噪声信息时，不能从约简 ADU 精确重建源光子方差。

| 原生通道 | 波长 / 微米 | 角差对比度 | 条件噪声标准误 |
| --- | --- | --- | --- |
| 0 | 1.11407 | 0.0000272 | 0.00000731 |
| 16 | 1.21881 | 0.0000514 | 0.00000679 |
| 20 | 1.24499 | 0.0000671 | 0.00000694 |
| 32 | 1.32354 | 0.000105 | 0.00000549 |

对应阅读：Bonnefoy et al. · Pueyo · Greco & Brandt

## 把空间拟合失败放在光谱旁边

十个通道对比度能恰好拟合十个孔径和，因此脚本还逐通道加入中心孔径、径向差和切向差。四十七个比较区估三十维协方差，再在扩大的四十九点位置网格及新增二十四个局部细化点上拟合十个对比度；测量区域和协方差保持不变。

扩大的角差剖面在网格内部得到最小二次残差约一百七十五，对应二十个残差维度；位置约为四百三十毫角秒、二百一十三点一度。谱差加角差的最小残差仍约三百八十九，局部细化也仍碰到边缘。简单空间模型没有拟好这组数据，单独卫星模板也会改变提取颜色。先保留条件诊断光谱，改善 PSF 和背景模型后再拟合大气参数，更符合这些结果。

角差谱差诊断的最后通道还出现约负零点零零零零零八三六的估计，结果原样保留。处理选择和经验模板明显改变光谱，也是误差的一部分，即使合成图像仍有亮点。

输入只有三份公开文件，不是论文完整十九次曝光约简；上游微透镜光谱串扰和曝光内运动也没有完整重建。论文提供历史对照与阅读目标，保存的失败则说明这里实际完成的小规模计算。

对应阅读：Bonnefoy et al. · Samland et al. · Greco & Brandt

## 在本地运行并保留出处

把下方科学材料下载到同一目录。公开包只含自有脚本、精确字节来源清单、原始头与数值结果；GPI 科学像素和派生图像没有内嵌，数据专用重分发许可仍未明确。下载器直接从原作者固定公开地址读取，用具名 User-Agent 和逐段字节校验。

在干净环境里执行命令。可选 local-images 参数会把派生像素写到本地，供自己查看；让来源清单跟着这些产物走，作图时区分注入标定源与实际观测伴星。

```
            python3.12 -m venv .venv
. .venv/bin/activate
python -m pip install numpy==2.3.5
python download-gpi-ranges.py --manifest data-source-manifest.json --output gpi-cache
python reproduce-gpi.py --manifest data-source-manifest.json --cache gpi-cache --output local-results
python reproduce-gpi.py --manifest data-source-manifest.json --cache gpi-cache --output local-results --algorithm asdi
python validate-gpi-registration.py --manifest data-source-manifest.json --cache gpi-cache --output registration-validation.json
          
```

对应阅读：Jason Wang and contributors · GPI Data Pipeline 1.4.0 data formats

## 下载并运行科学材料

材料包包含自有合成观测、独立 Python 分析、原始来源头和数值结果。真实 GPI 像素由单独校验下载器从作者固定地址读取，不需要私有仓库或交互 Lab Engine。

[阅读输入、单位与复算说明](https://sandboxphysics.com/stories/direct-imaging/materials/README-science.txt) · [精确公开文件清单](https://sandboxphysics.com/stories/direct-imaging/public-reproduction.json)

[下载完整科学材料 ZIP](https://sandboxphysics.com/stories/direct-imaging/materials/direct-imaging-science.zip)

```
curl -fsS -A 'SandboxPhysics-Public-Tutorial/1.0' -o download-tutorial.py https://sandboxphysics.com/stories/direct-imaging/materials/download-tutorial.py
python3 download-tutorial.py --archive --output direct-imaging-tutorial
cd direct-imaging-tutorial
python3.12 -m venv .venv
. .venv/bin/activate
python -m pip install numpy==2.3.5
python verify-public-inputs.py .
python reproduce-synthetic.py --materials .
python download-gpi-ranges.py --manifest data-source-manifest.json --output gpi-cache
python reproduce-gpi.py --manifest data-source-manifest.json --cache gpi-cache --output local-results
```

逐文件下载与 SHA256 校验

- [download-gpi-ranges.py](https://sandboxphysics.com/stories/direct-imaging/materials/download-gpi-ranges.py)

  text/x-python; charset=utf-8 · 3,737 bytes

  `e9e1d5d1ab9ec7d4a0fe01d8edb46ac4c5fb1492e7b49143d6f25090e3501a41`

- [download-tutorial.py](https://sandboxphysics.com/stories/direct-imaging/materials/download-tutorial.py)

  text/x-python; charset=utf-8 · 4,505 bytes

  `037cc5f7a6b38f704b9428024fde72cefd21d4cc3ecb4b8dda9b4a127c83fd6c`

- [focal\_mask.py](https://sandboxphysics.com/stories/direct-imaging/materials/focal_mask.py)

  text/x-python; charset=utf-8 · 1,867 bytes

  `e2828e2ef4b8c06452ba7a8a92cdc0fbbade9e720e85c89c157e7da9cc309812`

- [gpi\_data.py](https://sandboxphysics.com/stories/direct-imaging/materials/gpi_data.py)

  text/x-python; charset=utf-8 · 3,856 bytes

  `084026cc3b261b3ac0a8051d7228cc806751a8f0c9e650d103ce6477962445d7`

- [gpi\_reduction.py](https://sandboxphysics.com/stories/direct-imaging/materials/gpi_reduction.py)

  text/x-python; charset=utf-8 · 7,899 bytes

  `e08394023446afdc9d77fcbcc630ba163b7d7a8144258b2d3bc7ebe901c0924f`

- [gpi\_profile.py](https://sandboxphysics.com/stories/direct-imaging/materials/gpi_profile.py)

  text/x-python; charset=utf-8 · 2,820 bytes

  `7f74644fab759a8564dbbd6b6100d7e2275a1aba14edc5078580ecf270342ea5`

- [image\_tools.py](https://sandboxphysics.com/stories/direct-imaging/materials/image_tools.py)

  text/x-python; charset=utf-8 · 5,753 bytes

  `a7e21790880381c5830875764f9ce6a61b1030bfa80ebbda0fae5b5808dc7f27`

- [imaging\_reduction.py](https://sandboxphysics.com/stories/direct-imaging/materials/imaging_reduction.py)

  text/x-python; charset=utf-8 · 6,877 bytes

  `25ede33dc67445032b50fa96d599167c9661156aac0e14eeaee38365fc7134a2`

- [negative\_injection.py](https://sandboxphysics.com/stories/direct-imaging/materials/negative_injection.py)

  text/x-python; charset=utf-8 · 2,767 bytes

  `8067b1f877ceb474a5f6ea2dfb065baf09bbcc9ed0a15c42772d645aa0f697da`

- [noise\_covariance.py](https://sandboxphysics.com/stories/direct-imaging/materials/noise_covariance.py)

  text/x-python; charset=utf-8 · 5,061 bytes

  `a4b0e8c9acb6fa039e4b876a13a61b3da928fc7bfe161e01bb6522ba9010e71c`

- [plot-synthetic.py](https://sandboxphysics.com/stories/direct-imaging/materials/plot-synthetic.py)

  text/x-python; charset=utf-8 · 4,621 bytes

  `d5ce82a1f7bebf004bcabbe97229521e85084a9d2efe78f806ab8f592ec0e681`

- [reproduce-gpi.py](https://sandboxphysics.com/stories/direct-imaging/materials/reproduce-gpi.py)

  text/x-python; charset=utf-8 · 7,024 bytes

  `331120d2bb3c5e4c801a19761c9e488f3f4933262064513b914acec169b10324`

- [reproduce-synthetic.py](https://sandboxphysics.com/stories/direct-imaging/materials/reproduce-synthetic.py)

  text/x-python; charset=utf-8 · 5,506 bytes

  `70c71608d982cef95e4053352138b5fdf03851e4b9ceb3a463f7cfb40a699ead`

- [synthetic\_optics.py](https://sandboxphysics.com/stories/direct-imaging/materials/synthetic_optics.py)

  text/x-python; charset=utf-8 · 5,860 bytes

  `aba9822dd7b10b3c138499048b8564f16b42d3d999e266075c73d275d48ff789`

- [validate-blind-search.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-blind-search.py)

  text/x-python; charset=utf-8 · 4,829 bytes

  `e64d89e0b91b56ea9bfa415fde031adbcd8471aa51fbd6bb68962a7a400e36b7`

- [validate-band-pixels.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-band-pixels.py)

  text/x-python; charset=utf-8 · 2,452 bytes

  `47c352509c663a7d846196ff2448e030e5f1552908e58fc41d1b5a7dfb64cfdb`

- [validate-extraction-grid.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-extraction-grid.py)

  text/x-python; charset=utf-8 · 3,078 bytes

  `848ad4763b960a6584c2e620e94871ef3bbed8f253e49c6ce3ff3629bfa5f3b7`

- [validate-gpi-registration.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-gpi-registration.py)

  text/x-python; charset=utf-8 · 5,147 bytes

  `3273e092f4110580ed1fd6a83a3487ad91bd985bc83f970c5e695f88796ec099`

- [validate-noise-coverage.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-noise-coverage.py)

  text/x-python; charset=utf-8 · 9,078 bytes

  `37a8d85a5be90c2fb1926d46db44b4f2c9ef3099315c5e0ce59a6a3a97d03c25`

- [validate-optical-grids.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-optical-grids.py)

  text/x-python; charset=utf-8 · 4,681 bytes

  `d36c02d1018542a3affaee7e5b1cfc0ed24c1dce5de6a860cd2608c47cc4e0ec`

- [validate-response-recovery.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-response-recovery.py)

  text/x-python; charset=utf-8 · 5,334 bytes

  `96436e8e3cb943dfe428bb46bd8fb80de5d7b724bfd29207746296efc8b0b904`

- [validate-supported-optics.py](https://sandboxphysics.com/stories/direct-imaging/materials/validate-supported-optics.py)

  text/x-python; charset=utf-8 · 2,551 bytes

  `c612ae523c4003efc96fc61f5609573c68b9f0d6b8765b4b09819674ca57c034`

- [verify-small-sample.py](https://sandboxphysics.com/stories/direct-imaging/materials/verify-small-sample.py)

  text/x-python; charset=utf-8 · 1,342 bytes

  `160108d181ef96aeff595a80688fed7b39b029648bb7d106522126a2dbab3b05`

- [verify-public-inputs.py](https://sandboxphysics.com/stories/direct-imaging/materials/verify-public-inputs.py)

  text/x-python; charset=utf-8 · 753 bytes

  `d15820342daa54f854137f10ebdc8117371df722e042c7d82154a47be4e99784`

- [run-noise-validations.py](https://sandboxphysics.com/stories/direct-imaging/materials/run-noise-validations.py)

  text/x-python; charset=utf-8 · 1,730 bytes

  `9f091218bb003bb2aa891c04de71d32864491ff7d77252e81a3e1701169df8e2`

- [data-source-manifest.json](https://sandboxphysics.com/stories/direct-imaging/materials/data-source-manifest.json)

  application/json; charset=utf-8 · 21,913 bytes

  `8a338668d02bd7388180e23baa68c32eb7f0d364af12ea5cf1151475a0eeee0c`

- [paper-hashes.json](https://sandboxphysics.com/stories/direct-imaging/materials/paper-hashes.json)

  application/json; charset=utf-8 · 1,571 bytes

  `5ee504d62684bd81d2709da2c45be4fd23271a1b25d847b2461a2f8100c4f8d5`

- [small-sample-reference.json](https://sandboxphysics.com/stories/direct-imaging/materials/small-sample-reference.json)

  application/json; charset=utf-8 · 488 bytes

  `5747d7e16ca8cd203a201209f3c4211e3b790b0b51f2c6bb636d2b266d18093a`

- [README-science.txt](https://sandboxphysics.com/stories/direct-imaging/materials/README-science.txt)

  text/plain; charset=utf-8 · 10,042 bytes

  `63fcae8bf0687d8bf699fc8a456469cd7d083cf8a3033469eeed21da7791d33c`

- [source-BSD-3-Clause.txt](https://sandboxphysics.com/stories/direct-imaging/materials/source-BSD-3-Clause.txt)

  text/plain; charset=utf-8 · 1,493 bytes

  `54a4f2a1c0068f9efa2d00d7bf7c6488beb2a308271ad714173f39c89c378a22`

- [asdi-response.json](https://sandboxphysics.com/stories/direct-imaging/materials/asdi-response.json)

  application/json; charset=utf-8 · 1,762 bytes

  `4bb988464a28b9c20d25713b77eafa01d99d712b5a7571619e72efc34f985be0`

- [band-pixel-validation.json](https://sandboxphysics.com/stories/direct-imaging/materials/band-pixel-validation.json)

  application/json; charset=utf-8 · 10,743 bytes

  `ff9d1e63dd542ef1e4914b39ebace21b23e6efe64ea30ae620dde319c9a9588e`

- [blind-null.json](https://sandboxphysics.com/stories/direct-imaging/materials/blind-null.json)

  application/json; charset=utf-8 · 14,390 bytes

  `d610a85c4f3aef16ca3fe1194aee78550e00232db6dca3e3d203cb99aa1c86f2`

- [close-summary.json](https://sandboxphysics.com/stories/direct-imaging/materials/close-summary.json)

  application/json; charset=utf-8 · 3,918 bytes

  `ce94f39a1408d652f87f90ff4ad1906b8785b75f59ae4b73b8ed0ec2052c8a44`

- [extraction-grid.json](https://sandboxphysics.com/stories/direct-imaging/materials/extraction-grid.json)

  application/json; charset=utf-8 · 2,571 bytes

  `5f1ccdbe8c14b82f7e85a1f65084fa115d24d45af62c0e6202365edcca7c817d`

- [independent-reproduction.json](https://sandboxphysics.com/stories/direct-imaging/materials/independent-reproduction.json)

  application/json; charset=utf-8 · 4,852 bytes

  `d4f0720ed8997bf3064d39d2c0084513b246d69dfd31859ac1ebc257b6ff4994`

- [noise-coverage-adi.json](https://sandboxphysics.com/stories/direct-imaging/materials/noise-coverage-adi.json)

  application/json; charset=utf-8 · 89,253 bytes

  `f61c912139c9022facafa9523c75359f0857a43690d4dd6e272fb88053276eeb`

- [noise-coverage-asdi.json](https://sandboxphysics.com/stories/direct-imaging/materials/noise-coverage-asdi.json)

  application/json; charset=utf-8 · 90,344 bytes

  `1fecaef871c736ee3f421440b1d2c29b8b5dce635d3efcf8537c69096f340081`

- [noise-coverage-klip.json](https://sandboxphysics.com/stories/direct-imaging/materials/noise-coverage-klip.json)

  application/json; charset=utf-8 · 40,551 bytes

  `ded4655281ee9624c5c448540dbe31c88bc267ccce6ae868c0a9aa93008f5aca`

- [optical-convergence.json](https://sandboxphysics.com/stories/direct-imaging/materials/optical-convergence.json)

  application/json; charset=utf-8 · 14,570 bytes

  `5e8d68f6f85d2138c458a9dd3abe8700a0931b91e3ce59b351a48e72f32adf97`

- [optical-reference.json](https://sandboxphysics.com/stories/direct-imaging/materials/optical-reference.json)

  application/json; charset=utf-8 · 22,360 bytes

  `9206a44c0e266e2aabc1a342a7f5a8a53fb2e481ee5f7bbfd0cead1016de5cd6`

- [position-profile.json](https://sandboxphysics.com/stories/direct-imaging/materials/position-profile.json)

  application/json; charset=utf-8 · 12,024 bytes

  `fba6c7ddc009d2e7f95376d381ed781af9ee75ddce1a98797f0ba0aa9b237f47`

- [response-validation.json](https://sandboxphysics.com/stories/direct-imaging/materials/response-validation.json)

  application/json; charset=utf-8 · 4,190 bytes

  `b27ab646f026fb461297f20d5784897ec349211655559cf231350cced4d7ff56`

- [speckles-summary.json](https://sandboxphysics.com/stories/direct-imaging/materials/speckles-summary.json)

  application/json; charset=utf-8 · 6,389 bytes

  `57c6ae1ee6da078f2e3a862bb56a3cac746c9df8852de8f0a302898453549d45`

- [stays-summary.json](https://sandboxphysics.com/stories/direct-imaging/materials/stays-summary.json)

  application/json; charset=utf-8 · 6,394 bytes

  `db89be752a99e258d1d3566ab52c18fbbade96e04b8d897d61de75f11d5e13b9`

- [supported-optics.json](https://sandboxphysics.com/stories/direct-imaging/materials/supported-optics.json)

  application/json; charset=utf-8 · 84,206 bytes

  `5f6e81d795a2e4e432858d5a6e0e6fdb3e5d40ad063eb89fcaf6a375d317f946`

- [synthetic-input.json](https://sandboxphysics.com/stories/direct-imaging/materials/synthetic-input.json)

  application/json; charset=utf-8 · 1,492 bytes

  `131b5aa2bc87420ef8ed2402826491d9f446e3a984a9138faf570f1399825ec2`

- [turns-summary.json](https://sandboxphysics.com/stories/direct-imaging/materials/turns-summary.json)

  application/json; charset=utf-8 · 6,399 bytes

  `c3ea00f8b973e964538925505b4390dd3766b0e1b340db9047ca6153278b9289`

- [synthetic-observation.npz](https://sandboxphysics.com/stories/direct-imaging/materials/synthetic-observation.npz)

  application/octet-stream · 8,750,537 bytes

  `1a07d059256064fd191babf72653c83ee4a934d49b7e1c7951105fe70d1984b5`

- [gpi-adi-results.json](https://sandboxphysics.com/stories/direct-imaging/materials/gpi-adi-results.json)

  application/json; charset=utf-8 · 85,320 bytes

  `6c4ceb2eb87964e6f3c6b474f980d613de1bfd8cb97c12e2b4751bac2af0835c`

- [gpi-asdi-results.json](https://sandboxphysics.com/stories/direct-imaging/materials/gpi-asdi-results.json)

  application/json; charset=utf-8 · 86,841 bytes

  `b796c236c0c70db41efb58915a517020278777a5c1e35a83284d4a25f3b00e78`

- [registration-validation.json](https://sandboxphysics.com/stories/direct-imaging/materials/registration-validation.json)

  application/json; charset=utf-8 · 56,343 bytes

  `30d6a6c5e33ec60314a9ebea505945e7960c95b4facbadead13fcf494088239b`

- [gpi0092-original-headers.bin](https://sandboxphysics.com/stories/direct-imaging/materials/gpi0092-original-headers.bin)

  application/octet-stream · 57,600 bytes

  `9301a7a8e7f646dc9c39b0063eedffe8518c5d7193f41b002f6242662298b88f`

- [gpi0092-dq-header.bin](https://sandboxphysics.com/stories/direct-imaging/materials/gpi0092-dq-header.bin)

  application/octet-stream · 5,760 bytes

  `ac9afde0cc370587bf991a4757497c0a074da689f1725ff0f88659c833c120d4`

- [gpi0099-original-headers.bin](https://sandboxphysics.com/stories/direct-imaging/materials/gpi0099-original-headers.bin)

  application/octet-stream · 57,600 bytes

  `178d18ede9bf6b2b03e60ca1a11220d07db24b6c0c26e37eaeb9390d0b46d2a3`

- [gpi0099-dq-header.bin](https://sandboxphysics.com/stories/direct-imaging/materials/gpi0099-dq-header.bin)

  application/octet-stream · 5,760 bytes

  `5ad44224eefbf4107b1be8ef5830444a2bc216441b175058636eca113023c7be`

- [gpi0111-original-headers.bin](https://sandboxphysics.com/stories/direct-imaging/materials/gpi0111-original-headers.bin)

  application/octet-stream · 57,600 bytes

  `e2ffa3eaa6626ea6ad2573d727225b10992f3c157c54a2049afc44fd56582f7a`

- [gpi0111-dq-header.bin](https://sandboxphysics.com/stories/direct-imaging/materials/gpi0111-dq-header.bin)

  application/octet-stream · 5,760 bytes

  `f71d62b03cca1b756d70dfec8875bdb959d797e359b860191bf700da71f7e452`

- [spectral-response.svg](https://sandboxphysics.com/stories/direct-imaging/materials/spectral-response.svg)

  image/svg+xml · 51,023 bytes

  `5b19b387dca5c72f6cfe2516f962dac9d1f8a5919fd8f691716e598557bc2517`

- [synthetic-processing.svg](https://sandboxphysics.com/stories/direct-imaging/materials/synthetic-processing.svg)

  image/svg+xml · 138,433 bytes

  `745bced94f54b8d27c11a905e70fe90879659fa9f517c0b5bf404e3ea60d2e15`

- [synthetic-spectrum.svg](https://sandboxphysics.com/stories/direct-imaging/materials/synthetic-spectrum.svg)

  image/svg+xml · 35,680 bytes

  `c0173b4d2927f8ee4307f85dd28ff6fe778492a0d0029a36a3c36ad0604fe051`

- [hashes.json](https://sandboxphysics.com/stories/direct-imaging/materials/hashes.json)

  application/json; charset=utf-8 · 9,714 bytes

  `7c1743ed3dc4a803e9428398089fef40b4237ad6c34eee5fc1cab5ace41aa182`

- [direct-imaging-science.zip](https://sandboxphysics.com/stories/direct-imaging/materials/direct-imaging-science.zip)

  application/zip · 9,064,709 bytes

  `520ff132f51a8c7f2de47854b838d0cb6dbb27459aaf73782dab892f881850e3`

## 亲手观察

### [用已知合成输入演练标定](https://sandboxphysics.com/zh/labs/pupil-engineering-coronagraph/)

1. 在默认合成采样中辨认直接和非对角光谱响应。
2. 与真实教程更稀疏的旋转序列、约简通道响应比较。
3. 用散斑干扰预设解释，为何明亮局部结构或名义统计量不足以支持大气解释。

## 练习与答案

选定数组位置五的通道，其原始编号为二十，应使用哪个波长？

把 $k=20$ 代回原始头关系，得到约一点二四四九九微米。代入五会错配波长，连带破坏谱差几何与光谱横轴。

十通道孔径拟合很准，空间拟合却失败，为什么？

孔径求解是十个自由对比度配十个测量；三十维空间拟合还检查光在哪儿、PSF 长什么样。大残差揭示了总孔径流量无法检查的结构。

[上一篇：提取光谱时把误差一起带回来](https://sandboxphysics.com/zh/stories/direct-imaging/recovering-a-coupled-spectrum/) [下一篇：沿着原论文读懂散斑与伴星分离](https://sandboxphysics.com/zh/stories/direct-imaging/reading-speckles-and-wavefront-control/)

## 来源与计算范围

1. [Pueyo, Detection and Characterization of Exoplanets Using Projections on Karhunen–Loève Eigenimages (2016)](https://arxiv.org/abs/1604.06097v1)

   固定 v1，第二点一至二点五、第三点一至三点三、第四点一至四点二节；附录 E 的 E18/E20 和附录 F 的 F8–F12。光源污染会改变参考基；文中 J 波段示例采用合成注入。

2. [Greco & Brandt, The Measurement, Treatment, and Impact of Spectral Covariance and Bayesian Priors in Integral-Field Spectroscopy of Exoplanets (2016)](https://arxiv.org/abs/1602.00691v1)

   固定 v1，第二节公式一至六、第三点一至三点二节公式七至八：光谱协方差怎样改变宽谱结构的权重。

3. [Bonnefoy et al., Physical and orbital properties of beta Pictoris b (2014)](https://arxiv.org/abs/1407.4001v1)

   固定 v1，第二节与表一：论文分析十九次 J 波段曝光，并采用卫星斑标定和恒星光谱；教程仅选三组后来重新处理的公开立方体。

4. [GPI Data Pipeline 1.4.0 data formats](https://docs.planetimager.org/pipeline/ifs/dataformats.html)

   SCI/DQ 扩展、质量位、坐标和曝光元数据。原始卡片原样保存；天空方向采用 CD 与 AVPARANG，不采用旧 CDELT 或明示不准确的 PAR\_ANG。

5. [Jason Wang and contributors, original public GPI data commit](https://github.com/semaphoreP/pyklip/tree/72a7517b1a34bdc29c33211f2ef591ddff64dcf9/tests/data)

   固定作者仓库二〇一六年八月九日提交，选用 S20131210S0092、S0099、S0111。SCI/DQ 范围与原始头逐段校验 SHA256；软件 BSD 许可不自动覆盖观测像素重分发。

6. [Samland et al., Spectral cube extraction for the VLT/SPHERE IFS (2022)](https://arxiv.org/abs/2210.06390v1)

   固定 v1，第三点四、第四点二至四点三、第四点六、第五点二至五点三及第六节。原始探测器微透镜像拟合与光谱串扰发生在教程采用的已约简 GPI 立方体之前。
