Я сейчас пытаюсь изменить заголовок файла FITS.Более конкретно, я хочу добавить новые ключевые слова к нему.Я работаю с FitsIO для python, в его версии 0.9.11.
Во время некоторой обработки данных моя программа создает новые файлы FITS и обновляет их содержимое и заголовок.Раньше я работал с Astropy, но это больше не вариант, поэтому я возвращаюсь к FitsIO, что для меня довольно сложно.
Обновление / перезапись контента довольно проста, но у меня проблемы смодификация заголовка.Чтобы изолировать мои проблемы и найти правильную процедуру (документация была не очень полезна), я создал небольшую программу, которая проверяет только, как написать заголовок.
В качестве входных данных я использую объект FITSHDR, содержащийследующие вещи:
update_data = fitsio.FITSHDR([
"IVAL = 36 / integer value ",
"SHORTS = 'hello w' ",
"DBL = 1.25 ",
"CDELT1 = 0.00333333333333 "])
А вот проверенные функции:
def write_hdu_1(data, fits_file):
with fitsio.FITS(fits_file, 'rw', clobber=True) as fits:
fits[extension].write_keys(data)
RESULT : удаляет карту END, повреждая HDU.
def write_hdu_2(data, fits_file):
with fitsio.FITS(fits_file, 'rw', clobber=True) as fits:
for key in data.keys():
fits[extension].write_key(key, data.get(key))
РЕЗУЛЬТАТ : удаляет карту КОНЕЦ, повреждая HDU.
def write_hdu_3(fits_file):
with fitsio.FITS(fits_file, 'rw', clobber=True) as fits:
keydict = { 'name':'test', 'value':35, 'comment':'keydict test'}
fits[-1].write_key(**keydict)
РЕЗУЛЬТАТ :
File "test_fitsio.py", line 26, in write_hdu_3
fits[-1].write_key(**keydict)
TypeError: write_key() got an unexpected keyword argument 'name'
ИзВ отчаянии я наконец-то добавил карту «END» вручную, вот так:
def write_hdu(self, header_content):
self.fits[extension].write_keys(header_content)
self.fits[extension].write_key('END', '')
Но затем карта END была заполнена пробелами, которые не были правильно распознаны другими библиотеками, которые я использую.
Итак, есть ли у вас какие-то мысли о том, как добавить / обновить ключевые слова заголовка, с помощью Python FitsIO и без потери карты «END» в процессе?
Спасибо!