fits_wrapper.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:turbo_seti 作者: UCBerkeleySETI 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号