Как мне перепроектировать файлы с использованием ccdpro c wcs_project? - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь составить серию подходящих файлов. Я узнал об этом процессе, и я знаю, что, поскольку у них есть разные wcs, мне нужно сначала настроить их ориентацию, прежде чем я даже начну складывать. Я нашел ccdpro c wcs_project как способ разумного подхода к этому. Я пытался следовать последнему примеру на этой странице. При этом, когда я пытаюсь запустить wcs_project, я получаю сообщение об ошибке с wcs.

Мой код следующий:

target_image = fits.open(list_of_fits_files[1])
target_wcs = WCS(target_image[0]).celestial

reprojected = []
for fits_file in list_of_fits_files:
    img = fits.open(fits_file)
    new_image = wcs_project(img, target_wcs)
    reprojected.append(new_image)

Мое сообщение об ошибке следующее:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-189-2f3f9f278991> in <module>
      9 for fits_file in list_of_fits_files:
     10     img = fits.open(fits_file)
---> 11     new_image = wcs_project(img, target_wcs)
     12     reprojected.append(new_image)

/anaconda3/lib/python3.6/site-packages/ccdproc/log_meta.py in wrapper(*args, **kwd)
     90         # Grab the logging keyword, if it is present.
     91         log_result = kwd.pop(_LOG_ARGUMENT, True)
---> 92         result = func(*args, **kwd)
     93 
     94         if not log_result:

/anaconda3/lib/python3.6/site-packages/ccdproc/core.py in wcs_project(ccd, target_wcs, target_shape, order)
    922     from reproject import reproject_interp
    923 
--> 924     if not (ccd.wcs.is_celestial and target_wcs.is_celestial):
    925         raise ValueError('one or both WCS is not celestial.')
    926 

AttributeError: 'HDUList' object has no attribute 'wcs'

Что я испортил? Я пытался прочитать ccdpro c, но примеров там немного. Или, если кто-то предложит лучший подход к укладке, пожалуйста, дайте мне знать.

Ответы [ 2 ]

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

Вы можете попробовать использовать программное обеспечение astromati c swarp (https://www.astromatic.net/software/swarp), чтобы сначала выровнять изображения, а затем сложить их.

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

В вашем коде вы написали:

for fits_file in list_of_fits_files:
    img = fits.open(fits_file)
    new_image = wcs_project(img, target_wcs)

Но объект, возвращаемый fits.open, является HDUList объектом (отсюда и ошибка AttributeError: 'HDUList' object has no attribute 'wcs'), которая является список одного или нескольких HDU, хранящихся в одном файле FITS. Однако wcs_project ожидает объект CCDData, содержащий фактические данные изображения (которые могут поступать из любого источника, который в вашем случае является файлом FITS).

Вы можете прочитать CCDData непосредственно из файла FITS с помощью CCDData.read('/path/to/image.fits'), поэтому вы, вероятно, захотите написать что-то вроде:

img = CCDData.read(fits_file)
new_image = wcs_project(img, target_wcs)

Если ваш файл FITS содержит одно изображение, CCDData.read() должно быть в состоянии угадать, какое изображение вы хотите загрузить. Если он содержит несколько изображений, вам может потребоваться указать, какое расширение читать; при чтении из файла FITS CCDData.read принимает все те же аргументы, что и функция более низкого уровня fits_ccddata_reader, например, для указания расширения HDU для чтения. В большинстве случаев вам не нужно этого делать, в зависимости от данных.

...