Cutout2D не центрируется на галактиках

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

from astropy.io import fits
import numpy as np
from astropy.table import Table
import os
from astropy.nddata.utils import Cutout2D

def merge(list1, list2):
    #merges to lists into pairs so you can have list of corresponding coordinates matched together
    merged_list =[(list1[i], list2[i]) for i in range(0, len(list1))]
    return merged_list

#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, (3480.136, 2771.585), 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, его даже нет на моем исходном изображении. Есть ли способ предотвратить это?


person yikesthisisamess    schedule 11.02.2020    source источник
comment
Кстати, ваша функция merge() в Python называется zip(), и является встроенной функцией.   -  person Iguananaut    schedule 12.02.2020
comment
Еще одно примечание, эта строка: ID.astype(str) и другие в вашем коде, как будто они ничего не делают. ndarray.astype возвращает новый массив, он не изменяет массив на месте. Итак, здесь вы просто создаете новый массив, а затем выбрасываете его. Я не уверен, что это необходимо, хотя столбец «имя» вашей таблицы уже содержит по крайней мере строки. Также строки типа sciim = np.copy(indata) не нужны. Вы просто делаете копию массива в памяти - вам не нужно этого делать. Исходные данные не будут перезаписаны.   -  person Iguananaut    schedule 12.02.2020
comment
Я не думаю, что можно сказать, в чем проблема, не видя данных. Убедитесь, что ваши оси координат расположены в правильном порядке, это все, что я могу сказать...   -  person Iguananaut    schedule 12.02.2020