Файлы FITS организованы в виде одного или нескольких HDU (блоков данных заголовка), состоящих, как следует из названия, в виде одного объекта данных (как правило, одного массива для наблюдения, хотя иногда это может быть как таблица) и заголовка.метаданных, которые идут с этими данными.
Чтобы создать файл с нуля, особенно изображение, самый простой способ - создать объект ImageHDU
напрямую:
>>> from astropy.io import fits
>>> hdu = fits.ImageHDU()
Как и в случае сHDU, считываемый из существующего файла, этот HDU имеет (в основном пустой) заголовок и пустой атрибут данных, который можно затем назначить:
>>> hdu.data = np.array(<some numpy array>)
>>> hdu.header['TELESCOP'] = 'Gemini'
Когда вы будете удовлетворены, вы можете записать HDU изв файл с:
>>> hdu.writeto('filename.fits')
(Примечание: во многих документах, которые вы увидите, показан более сложный процесс создания объекта HDUList
, добавления HDU в список HDU и последующей записиполный список HDU. Это необходимо, только если вы создаете файл FITS с несколькими расширениями. Для одного HDU вы можете использовать hdu.writeto
напрямую, и фреймворк будет обрабатывать другие структуры.подробности.)
Как правило, вам не нужно манипулировать заголовками, которые описывают формат самих данных - это происходит автоматически и не должно быть затронуто вручную (FITS имеет неудачное ошибочное смешивание информациио структуре данных с актуальными метаданными).Вы можете увидеть больше примеров того, как манипулировать данными FITS здесь: http://docs.astropy.org/en/stable/generated/examples/index.html#astropy-io
Ваш другой вопрос касается манипулирования WCS (Всемирной системой координат) изображения, и, в частности, для спектральных данных это может быть нетривиальный.Я бы задал отдельный вопрос об этом с более подробной информацией о том, что вы надеетесь достичь.