def make_fits_header(header,first=True,LOFAR=False):
'''Takes .fil header into fits header format '''
base_header = {}
base_header['SIMPLE'] = True
base_header['NAXIS'] = 2
base_header['NAXIS1'] = int(header['Number of channels'])
base_header['DOPPLER'] = 0.0
base_header['SNR'] = 0.0
base_header['EXTEND'] = True
base_header['DELTAT'] = float(header['Sample time (us)'])/1e6
base_header['MJD'] = float(header['Time stamp of first sample (MJD)'])
base_header['XTENSION'] = 'IMAGE '
base_header['PCOUNT'] = 1
base_header['GCOUNT'] = 1
base_header['TOFFSET'] = float(header['Sample time (us)'])/1e6
if LOFAR:
base_header['BITPIX'] = -32
base_header['DELTAF'] = 0.000001497456 # LOFAR specific (project LC2_040).
base_header['DEC'] = float(header['Source DEC (J2000)'])
base_header['RA'] = float(header['Source RA (J2000)'])
base_header['SOURCE'] = header['Source Name'].replace('\xc2\xa0','_').replace(' ','_')
else:
if '32' in header['Number of bits per sample']:
base_header['BITPIX'] = -32
else:
raise ValueError('Check nbits per sample. Not equeal 32')
base_header['DELTAF'] = np.abs(float(header['Channel bandwidth (MHz)']))
base_header['DEC'] = header['Source DEC (J2000)']
base_header['RA'] = header['Source RA (J2000)']
base_header['SOURCE'] = header['Source Name'].replace('\xc2\xa0','_').replace(' ','')
base_header['FCNTR'] = float(header['Frequency of channel 1 (MHz)']) - base_header['DELTAF']*base_header['NAXIS1']/2
if first:
base_header['NAXIS2'] = int(header['Number of samples'])
key_list = ['SIMPLE','BITPIX','NAXIS','NAXIS1','NAXIS2','EXTEND','DELTAT','DELTAF','FCNTR','MJD','DEC','RA','DOPPLER','SNR','SOURCE']
else:
base_header['NAXIS2'] = 1
key_list = ['XTENSION','BITPIX','NAXIS','NAXIS1','NAXIS2','PCOUNT','GCOUNT','DELTAT','DELTAF','FCNTR','TOFFSET','DEC','RA','DOPPLER','SNR','SOURCE']
fits_header=pyfits.Header(cards=[pyfits.Card(key=key,value=base_header[key]) for key in key_list])
return fits_header
评论列表
文章目录