Создание таблицы Ascii из заголовка файла FITS
Я хотел бы узнать, как получить информацию из заголовка файла FITS и перенести эту информацию в таблицу ascii. Например, так я бы получил информацию.
python
import pyfits
a = pyfits.open('data.fits')
header = a[0].header # Which should return something like this (It is BinHDUlist)
SIMPLE = T / conforms to FITS standards
/ institution responsible for creating this file
TELESCOP= 'Kepler ' / telescope
INSTRUME= 'Kepler Photometer' / detector type
OBJECT = 'KIC 8631743' / string version of KEPLERID
RA_OBJ = 294.466516 / [deg] right ascension
DEC_OBJ = 44.751131 / [deg] declination
Как я могу создать таблицу ASCII, которая содержит RA_OBJ и DEC_OBJ?
РЕДАКТИРОВАТЬ: Я хотел бы создать файл.dat, который содержит два столбца (RA и DEC) из заголовков. Вот пример того, что я пытаюсь:
import asciitable
import asciidata
imort pyfits
import numpy as np
# Here I have taken all the fits files in my current directory and did the following:
# ls > z.txt so that all the fits files are in one place.
a = asciidata.open('z.txt')
i = 0 #There are 371 fits files in z.txt
while i<=370:
b = pyfits.open(a[0][i])
h = b[0].header
RA = np.array([h['RA_OBJ']])
DEC = np.array(h['DEC_OBJ']])
asciitable.write({'RA': RA, 'DEC': DEC}, 'coordinates.dat', names=['RA', 'DEC'])
i = i+1
Я хотел бы для этого написать файл.dat, содержащий что-то вроде этого:
RA DEC
### ###
... ...
... ...
... ...
Вместо этого мой код просто записывает поверх ключей предыдущих файлов. Есть идеи?
1 ответ
Я думаю, что вы могли бы выиграть от более внимательного прочтения документации по pyfits. Атрибут заголовка является pyfits.header.Header
объект, который представляет собой словарь, как объект. Так что вы можете сделать что-то вроде:
import pyfits
keys = ['SIMPLE', 'TELESCOP', 'INSTRUME', 'OBJECTS', 'RA_OBJ', 'DEV_OBJ']
hdulist = pyfits.open("data.fits")
header = hdulist[0].header
for k in keys:
print k, "=", header[k]
Вы можете добавить более необычный вывод, поместить полученную строку в переменную, проверить отсутствие ключей и т. Д.
РЕДАКТИРОВАТЬ:
Вот как это может быть связано с asciitable
а также numpy
:
import asciitable
import numpy as np
keys = ['RA', 'DEC']
data = {}
# Initialize "data" with empty lists for each key
for k in keys:
data[k] = []
# Collect all data in the "data" dictionary
for i in range(0, 50):
data['RA'].append(np.array(i))
data['DEC'].append(np.array(i+1))
asciitable.write(data, "coords.dat", names=keys)