Cutout2D в python - PullRequest
       67

Cutout2D в python

0 голосов
/ 12 февраля 2020

Я использую Cutout2D на имеющемся у меня изображении .fits, и хотя я указываю значения пикселей в центре моего объекта, он вырезает совершенно другую галактику, которая, когда я проверяю ее положение, даже не находится внутри границы моего исходного изображения. Мой код:

из astropy.io импорт соответствует импорту numpy как np из astropy.table import Таблица импорта os из astropy.nddata.utils import Cutout2D

#read in the fits file
insciim = fits.open('/home/myname/science_image.fits')
indata = fits.getdata('/home/myname/science_image.fits')

#Read in the header
hdr = fits.getheader('/home/myname/science_image.fits')
hdr["CTYPE1"] = "RA---TAN-SIP"
hdr["CTYPE2"] = "DEC--TAN-SIP"

#working from a copy to avoid overwriting the images
sciim = np.copy(insciim)
data = np.copy(indata)

xray_sources = '/home/myname/xray_catalogue.csv' #file path to the xray sources catalgoue 
xray_table = Table.read(xray_sources, format="ascii") #imports it as a table into python 

ID = np.array(xray_table['name']) #puts the IDs into a numpy array
ID.astype(str) #makes the array into strings

x_pix = np.array(xray_table['x_pixel'])
x_pix.astype(float)

y_pix = np.array(xray_table['y_pixel'])
y_pix.astype(float)

coordinates = merge(x_pix, y_pix)

size = (200, 200) #size I want the image to be in pixels

cut_test = Cutout2D(data, (8227, 2803), size)

img_hdu = fits.PrimaryHDU(cut_test.data, header=hdr)
img_hdu.writeto("/home/myname/test_galaxy.fits", overwrite=True) 

Галактика, которую я хочу центрирован на значениях пикселей (3480.136, 2771.585), но при просмотре выреза в DS9 его нет даже на моем исходном изображении. Есть ли способ предотвратить это?

1 Ответ

0 голосов
/ 05 марта 2020

Вероятно, не связано с вашим вопросом. Но после вырезания ваш заголовок должен соответственно измениться - то есть исходный заголовок больше не подходит для ваших новых данных вырезки. используйте hdu.header.update (cutout.wcs.to_header ()), чтобы обновить заголовок.

...