gpt4 book ai didi

python - 如何使用 Python 将 TESScut 中的一颗星绘制到天空中的正确位置(而不是大约 10 度的误差)?

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:37 24 4
gpt4 key购买 nike

我想绘制 Beta Dor 的 TESS 测量值,使用来自 TESScut 的数据.在Gaia DR2 archive我查看 Beta Dor 的 RA 和 DEC 值,我得到:

RA: 83.40630967798376 DEC:  -62.48977125108528 

我去 TESScut ,把这两个值放进去,选择Sector 1,然后Download FFI Cutout。解压缩下载的文件,然后在 Python 中执行:

import matplotlib.pyplot as plt
from lightkurve import TessTargetPixelFile
import numpy as np

sector1ffi_cutout='tess-s0001-4-4_83.40630967798376_-62.48977125108528_64x64_astrocut.fits'
tpf_s1 = TessTargetPixelFile(sector1ffi_cutout)

fig = plt.figure(figsize=(5,5))
fig.add_subplot(111, projection=tpf_s1.wcs)
plt.pcolormesh(np.log(tpf_s1.flux[0]))
plt.show()

给我:

enter image description here

从坐标 (~ -53°, ~6h30min) 来看显然是错误的,根据盖亚(和其他来源),恒星不在这个位置。

我做错了什么,我怎样才能将这颗星标到它应该在的地方?


为了完整起见,当我绘制星星时,我收到以下警告:

> /home/szabopal/.local/lib/python3.5/site-packages/ipykernel_launcher.py:10:
> RuntimeWarning: divide by zero encountered in log # Remove the CWD
> from sys.path while we load stuff.
> /home/szabopal/.local/lib/python3.5/site-packages/ipykernel_launcher.py:10:
> RuntimeWarning: invalid value encountered in log # Remove the CWD
> from sys.path while we load stuff.
> /home/szabopal/.local/lib/python3.5/site-packages/astropy/visualization/wcsaxes/grid_paths.py:73:
> RuntimeWarning: invalid value encountered in greater discontinuous =
> step[1:] > DISCONT_FACTOR * step[:-1]
> /home/szabopal/.local/lib/python3.5/site-packages/astropy/visualization/wcsaxes/grid_paths.py:73:
> RuntimeWarning: invalid value encountered in greater discontinuous =
> step[1:] > DISCONT_FACTOR * step[:-1]
> /home/szabopal/.local/lib/python3.5/site-packages/astropy/visualization/wcsaxes/grid_paths.py:73:
> RuntimeWarning: invalid value encountered in greater discontinuous =
> step[1:] > DISCONT_FACTOR * step[:-1]
> /home/szabopal/.local/lib/python3.5/site-packages/astropy/visualization/wcsaxes/grid_paths.py:73:
> RuntimeWarning: invalid value encountered in greater discontinuous =
> step[1:] > DISCONT_FACTOR * step[:-1]

进一步发展

我认为上述问题是由 wcs 引用整个 FFI 而不是 cutout 引起的。

print(tpf_s1.wcs)

给出:

WCS Keywords

Number of WCS axes: 2
CTYPE : 'RA---TAN-SIP' 'DEC--TAN-SIP'
CRVAL : 90.634460449219 -57.666290283203
CRPIX : 250.0 -984.0
PC1_1 PC1_2 : 1.0 1.0
PC2_1 PC2_2 : 1.0 1.0
CDELT : 0.00571299832697903 0.005705604460241471
NAXIS : 81986 1282

最佳答案

这个问题源于 matplotlib 处理 WCS 投影的方式的微妙之处。

WCSAxes,它为 maplotlib 图创建 WCS 投影,没有考虑 WCS 中的 SIP 失真(因为它使用 wcs.wcs_world2pix 而不是 wcs.all_world2pix)。

通常这无关紧要,但是在显示 TESScut 切口时有两个因素会使其变得非常重要。首先是 TESScut 生成的 TPF 带有针对剪切位置调整的全帧图像的原始 WCS 信息。这意味着,与 TESS 管道 TPF 中的 WCS 信息不同,TESScut TPFS 中的 WCS 信息包括 SIP 失真的完整补充,而这些失真被 matplotlib 忽略。显示坐标准确度的第二个因素是源落在 TESS CCD 上的位置。由于 TESS 视场很大,在全帧图像的边缘,忽略 SIP 失真所产生的差异可能约为 15 个像素。

这个特定的源在 FFI 的边缘非常多,因此 SIP 失真会产生很大的差异:

TESS CCD with source shown near edge

有两种方法可以解决这个问题:

  1. 不要直接使用 matplotlib 投影选项,而是将所有内容移动到像素空间,根据需要手动调用 wcs.all_world2pix 或 wcs.allpix2world。

  2. 为不包括 SIP 失真的切口创建一个新的 WCS(这很好,因为切口足够小,实际上不需要它们)。这是一个 Jupyter 笔记本,它描述了一种为切口制作这个新 WCS 的方法:https://github.com/ceb8/tessworkshop_wcs_hack/blob/master/tesscut_wcs_hack.ipynb .

关于python - 如何使用 Python 将 TESScut 中的一颗星绘制到天空中的正确位置(而不是大约 10 度的误差)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55422310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com