Как нанести звезду из TESScut в нужное место на небе, используя Python (а не с ошибкой ~ 10 градусов)? - PullRequest
2 голосов
/ 29 марта 2019

Я хотел бы построить измерения TESS Beta Dor, используя данные из TESScut архиве Gaia DR2 я смотрю значения RA и DEC для Beta Dor, я получаю:

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()

Давая мне:

enter image description here

Который, глядя на координаты (~ -53 °, ~ 6 ч 30 мин) явно неправильно, согласно Гайе (и другим источникам), звезда не находится в этом положении.

Что я делаю неправильно, и как я могу нанести эту звезду на местотак должно быть?


Для полноты картины, когда я строю звезду, я получаю следующие предупреждения:

> /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]

Дальнейшие события

IПолагайте, что проблема выше вызвана 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

1 Ответ

2 голосов
/ 03 апреля 2019

Эта проблема связана с тонкостью в том, как matplotlib обрабатывает проекции WCS.

WCSAxes, который создает проекцию WCS для графиков maplotlib, не учитывает искажения SIP в WCS (поскольку он использует wcs.wcs_world2pix, а не wcs.all_world2pix).

Часто это не имеет большого значения, однако есть два фактора, которые могут иметь большое значение при отображении вырезов TESScut.Первое состоит в том, что TPF, которые производит TESScut, идут с исходной информацией WCS из полнокадрового изображения, отрегулированного для положения выреза.Это означает, что в отличие от информации WCS в TPF конвейера TESS, информация WCS в TPFS TESScut включает в себя полный набор искажений SIP, которые игнорируются matplotlib.Второй фактор, насколько точными будут отображаемые координаты, - это то, где на ПЗС-матрице TESS падает источник.Поскольку поле зрения TESS большое, по краям полнокадрового изображения разница, возникающая при игнорировании искажений SIP, может составлять порядка 15 пикселей.

Этот конкретный источник находится на грани этого FFI, поэтому искажения SIP будут иметь довольно большое значение:

TESS CCD with source shown near edge

Есть два варианта решения этой проблемы:

  1. Не используйте опцию проекции matplotlib напрямую, а вместо этого переместите все в пиксельное пространство, вручную вызывая wcs.all_world2pix или wcs.allpix2world, как требуется,

  2. Создайте новый WCS для выреза, который не включает искажения SIP (это будет хорошо, потому что выреза достаточно мало, чтобы они на самом деле не нужны).Вот блокнот Jupyter, в котором описан один из способов изготовления этой новой WCS для выреза: https://github.com/ceb8/tessworkshop_wcs_hack/blob/master/tesscut_wcs_hack.ipynb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...