Я пытаюсь преобразовать координаты пикселей в небесные координаты в подходящем изображении (в двоичном формате). Мой код работал до того, как я обновил python (сейчас python 3.7.1) и astropy (4.0), но теперь он не работает. Кажется, у моего WCS
объекта что-то не так. Это мой WCS
объект:
>>> wcs
WCS Keywords
Number of WCS axes: 4
CTYPE : 'DETX_ANG' 'DETY_ANG' 'RA---TAN' 'DEC--TAN'
CRVAL : 0.0 0.0 20.37 -0.365
CRPIX : 0.0 0.0 25921.0 25921.0
PC1_1 PC1_2 PC1_3 PC1_4 : 1.0 0.0 0.0 0.0
PC2_1 PC2_2 PC2_3 PC2_4 : 0.0 1.0 0.0 0.0
PC3_1 PC3_2 PC3_3 PC3_4 : 0.0 0.0 1.0 0.0
PC4_1 PC4_2 PC4_3 PC4_4 : 0.0 0.0 0.0 1.0
CDELT : 1.38888888888889e-05 1.38888888888889e-05 -1.38888888888889e-05 1.38888888888889e-05
NAXIS : 34 4776
Мой код следующий:
from astropy.wcs import WCS
from astropy.table import Table
from astropy.io import fits
hdul = fits.open(filename.fits)
wcs = WCS(header=hdul[1].header,keysel=['image','binary','pixel'])
events = Table.read(filename, hdu=1)
skyc = utils.pixel_to_skycoord(events.columns['X'], events.columns['Y'], wcs=wcs, origin=1, mode='all')
ошибка следующая:
skyc = utils.pixel_to_skycoord(events.columns['X'], events.columns['Y'], wcs=wcs, origin=1, mode='all')
File "/Users/Alessandro/anaconda3/lib/python3.7/site-packages/astropy/wcs/utils.py", line 613, in pixel_to_skycoord
wcs = wcs.sub([WCSSUB_LONGITUDE, WCSSUB_LATITUDE])
File "/Users/Alessandro/anaconda3/lib/python3.7/site-packages/astropy/wcs/wcs.py", line 584, in sub
copy.pixel_shape = tuple([None if i is None else self.pixel_shape[i] for i in keep])
File "/Users/Alessandro/anaconda3/lib/python3.7/site-packages/astropy/wcs/wcs.py", line 584, in <listcomp>
copy.pixel_shape = tuple([None if i is None else self.pixel_shape[i] for i in keep])
IndexError: tuple index out of range
Вроде как Мне нужны только третья и четвертая оси WCS (с ключевыми словами CTYPE
RA --- TAN и DE C - TAN), но я не знаю, как это исправить. Есть идеи?