我想使用TESScut中的数据绘制Beta Dor的TESS测量值。在Gaia DR2 archive中,我查找Beta Dor的RA和DEC值,得到:
RA: 83.40630967798376 DEC: -62.48977125108528
我转到TESScut,将这两个值放入,选择“扇区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()
给我:
根据盖亚(及其他来源)的资料,看坐标(〜-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而非切口引起的。
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投影的方式的微妙之处。
为maplotlib图创建WCS投影的WCSAxes不考虑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失真将产生很大的不同:
有两个选项可以解决此问题:
不要直接使用matplotlib投影选项,而是将所有内容移到像素空间中,根据需要手动调用wcs.all_world2pix或wcs.allpix2world。
为不包含SIP失真的切口创建一个新的WCS(这很好,因为切口足够小,以至于不需要它们)。这是一个Jupyter笔记本,描述了为抠图制作此新WCS的一种方法:https://github.com/ceb8/tessworkshop_wcs_hack/blob/master/tesscut_wcs_hack.ipynb。