Exemple #1
0
    def _make_extension_fits(self, ext, filename, **kwargs):

        maps = {'EXT_TOT_MAP': ext['ext_tot_map'],
                'EXT_SRC_MAP': ext['ext_src_map'],
                'EXT_BKG_MAP': ext['ext_bkg_map'],
                'PTSRC_TOT_MAP': ext['ptsrc_tot_map'],
                'PTSRC_SRC_MAP': ext['ptsrc_src_map'],
                'PTSRC_BKG_MAP': ext['ptsrc_bkg_map']}

        hdu_images = []
        for k, v in sorted(maps.items()):
            if v is None:
                continue
            hdu_images += [v.make_hdu(k)]

        tab = fits_utils.dict_to_table(ext)
        hdu_data = fits.table_to_hdu(tab)
        hdu_data.name = 'EXT_DATA'

        if ext.get('tsmap'):
            hdus = [ext['tsmap'].make_hdu(hdu='PRIMARY')]
        else:
            hdus = [fits.PrimaryHDU()]

        hdus += [hdu_data] + hdu_images
        hdus[0].header['CONFIG'] = json.dumps(utils.tolist(ext['config']))
        hdus[1].header['CONFIG'] = json.dumps(utils.tolist(ext['config']))
        fits_utils.write_hdus(hdus, filename,
                              keywords={'SRCNAME': ext['name']})
Exemple #2
0
    def _make_extension_fits(self, ext, filename, **kwargs):

        maps = {
            'EXT_TOT_MAP': ext['ext_tot_map'],
            'EXT_SRC_MAP': ext['ext_src_map'],
            'EXT_BKG_MAP': ext['ext_bkg_map'],
            'PTSRC_TOT_MAP': ext['ptsrc_tot_map'],
            'PTSRC_SRC_MAP': ext['ptsrc_src_map'],
            'PTSRC_BKG_MAP': ext['ptsrc_bkg_map']
        }

        hdu_images = []
        for k, v in sorted(maps.items()):
            if v is None:
                continue
            hdu_images += [v.make_hdu(k)]

        tab = fits_utils.dict_to_table(ext)
        hdu_data = fits.table_to_hdu(tab)
        hdu_data.name = 'EXT_DATA'

        if ext.get('tsmap'):
            hdus = [ext['tsmap'].make_hdu(hdu='PRIMARY')]
        else:
            hdus = [fits.PrimaryHDU()]

        hdus += [hdu_data] + hdu_images
        hdus[0].header['CONFIG'] = json.dumps(utils.tolist(ext['config']))
        hdus[1].header['CONFIG'] = json.dumps(utils.tolist(ext['config']))
        fits_utils.write_hdus(hdus,
                              filename,
                              keywords={'SRCNAME': ext['name']})
Exemple #3
0
    def _make_lc_fits(self, lc, filename, **kwargs):

        # produce columns in fits file
        cols = OrderedDict()
        cols['tmin'] = Column(name='tmin', dtype='f8',
                              data=lc['tmin'], unit='s')
        cols['tmax'] = Column(name='tmax', dtype='f8',
                              data=lc['tmax'], unit='s')
        cols['tmin_mjd'] = Column(name='tmin_mjd', dtype='f8',
                                  data=lc['tmin_mjd'], unit='day')
        cols['tmax_mjd'] = Column(name='tmax_mjd', dtype='f8',
                                  data=lc['tmax_mjd'], unit='day')

        # add in columns for model parameters
        for k, v in lc.items():
            if k in cols:
                continue
            if isinstance(v, np.ndarray):
                cols[k] = Column(name=k, data=v, dtype=v.dtype)

        tab = Table(cols.values())
        hdu_lc = fits.table_to_hdu(tab)
        hdu_lc.name = 'LIGHTCURVE'
        hdus = [fits.PrimaryHDU(), hdu_lc]
        keywords = {'SRCNAME': lc['name'],
                    'CONFIG': json.dumps(lc['config'])}
        fits_utils.write_hdus(hdus, filename, keywords=keywords)
Exemple #4
0
    def _make_lc_fits(self, lc, filename, **kwargs):

        # produce columns in fits file
        cols = OrderedDict()
        cols['tmin'] = Column(name='tmin', dtype='f8',
                              data=lc['tmin'], unit='s')
        cols['tmax'] = Column(name='tmax', dtype='f8',
                              data=lc['tmax'], unit='s')
        cols['tmin_mjd'] = Column(name='tmin_mjd', dtype='f8',
                                  data=lc['tmin_mjd'], unit='day')
        cols['tmax_mjd'] = Column(name='tmax_mjd', dtype='f8',
                                  data=lc['tmax_mjd'], unit='day')

        # add in columns for model parameters
        for k, v in lc.items():
            if k in cols:
                continue
            if isinstance(v, np.ndarray):
                cols[k] = Column(name=k, data=v, dtype=v.dtype)

        tab = Table(cols.values())
        hdu_lc = fits.table_to_hdu(tab)
        hdu_lc.name = 'LIGHTCURVE'
        hdus = [fits.PrimaryHDU(), hdu_lc]
        keywords = {'SRCNAME': lc['name'],
                    'CONFIG': json.dumps(lc['config'])}
        fits_utils.write_hdus(hdus, filename, keywords=keywords)
Exemple #5
0
    def _make_localize_fits(self, loc, filename, **kwargs):

        tab = fits_utils.dict_to_table(loc)
        hdu_data = fits.table_to_hdu(tab)
        hdu_data.name = 'LOC_DATA'

        hdus = [loc['tsmap_peak'].make_hdu(hdu='PRIMARY'),
                loc['tsmap'].make_hdu(hdu='TSMAP'),
                hdu_data]

        hdus[0].header['CONFIG'] = json.dumps(loc['config'])
        hdus[2].header['CONFIG'] = json.dumps(loc['config'])
        fits_utils.write_hdus(hdus, filename)
Exemple #6
0
    def _make_localize_fits(self, loc, filename, **kwargs):

        tab = fits_utils.dict_to_table(loc)
        hdu_data = fits.table_to_hdu(tab)
        hdu_data.name = 'LOC_DATA'

        hdus = [loc['tsmap_peak'].create_primary_hdu(),
                loc['tsmap'].create_image_hdu('TSMAP'),
                hdu_data]

        hdus[0].header['CONFIG'] = json.dumps(loc['config'])
        hdus[2].header['CONFIG'] = json.dumps(loc['config'])
        fits_utils.write_hdus(hdus, filename)
Exemple #7
0
    def _make_residmap_fits(self, data, filename, **kwargs):

        maps = {'DATA_MAP': data['data'],
                'MODEL_MAP': data['model'],
                'EXCESS_MAP': data['excess']}

        hdu_images = []
        for k, v in sorted(maps.items()):
            if v is None:
                continue
            hdu_images += [v.create_image_hdu(k)]

        hdus = [data['sigma'].create_primary_hdu()] + hdu_images
        hdus[0].header['CONFIG'] = json.dumps(data['config'])
        hdus[1].header['CONFIG'] = json.dumps(data['config'])
        fits_utils.write_hdus(hdus, filename)
Exemple #8
0
    def _make_residmap_fits(self, data, filename, **kwargs):

        maps = {'DATA_MAP': data['data'],
                'MODEL_MAP': data['model'],
                'EXCESS_MAP': data['excess']}

        hdu_images = []
        for k, v in sorted(maps.items()):
            if v is None:
                continue
            hdu_images += [v.make_hdu(k)]

        if data['projtype'] == 'WCS':
            hdus = [data['sigma'].make_hdu(hdu='PRIMARY')] + hdu_images
            hdus[0].header['CONFIG'] = json.dumps(data['config'])
            hdus[1].header['CONFIG'] = json.dumps(data['config'])
        elif data['projtype'] == 'HPX':
            hdus = [fits.PrimaryHDU(),
                    data['sigma'].make_hdu(hdu="SIGMA")] + hdu_images
            hdus[1].header['CONFIG'] = json.dumps(data['config'])
            hdus[2].header['CONFIG'] = json.dumps(data['config'])
        fits_utils.write_hdus(hdus, filename)
Exemple #9
0
    def _make_tsmap_fits(self, data, filename, **kwargs):

        maps =  {'SQRT_TS_MAP': data['sqrt_ts'],
                 'NPRED_MAP': data['npred'],
                 'N_MAP': data['amplitude']}

        hdu_images = []
        for k, v in sorted(maps.items()):
            if v is None:
                continue
            hdu_images += [v.create_image_hdu(k)]
        
        tab = fits_utils.dict_to_table(data)
        hdu_data = fits.table_to_hdu(tab)
        hdu_data.name = 'TSMAP_DATA'

        hdus = [data['ts'].create_primary_hdu(),
                hdu_data] + hdu_images

        hdus[0].header['CONFIG'] = json.dumps(data['config'])
        hdus[1].header['CONFIG'] = json.dumps(data['config'])        
        fits_utils.write_hdus(hdus, filename)
Exemple #10
0
    def _make_tsmap_fits(self, data, filename, **kwargs):

        maps = {'SQRT_TS_MAP': data['sqrt_ts'],
                'NPRED_MAP': data['npred'],
                'N_MAP': data['amplitude']}

        hdu_images = []
        for k, v in sorted(maps.items()):
            if v is None:
                continue
            hdu_images += [v.to_hdu(hdu=k)]

        tab = fits_utils.dict_to_table(data)
        hdu_data = fits.table_to_hdu(tab)
        hdu_data.name = 'TSMAP_DATA'

        hdus = [data['ts'].to_hdu(hdu='PRIMARY'),
                hdu_data] + hdu_images

        data['config'].pop('map_skydir', None)
        hdus[0].header['CONFIG'] = json.dumps(data['config'])
        hdus[1].header['CONFIG'] = json.dumps(data['config'])
        fits_utils.write_hdus(hdus, filename)
Exemple #11
0
    def _make_sed_fits(self, sed, filename, **kwargs):

        # Write a FITS file
        cols = [Column(name='e_min', dtype='f8', data=sed['e_min'], unit='MeV'),
                Column(name='e_ref', dtype='f8',
                       data=sed['e_ref'], unit='MeV'),
                Column(name='e_max', dtype='f8',
                       data=sed['e_max'], unit='MeV'),
                Column(name='ref_dnde_e_min', dtype='f8',
                       data=sed['ref_dnde_e_min'], unit='ph / (MeV cm2 s)'),
                Column(name='ref_dnde_e_max', dtype='f8',
                       data=sed['ref_dnde_e_max'], unit='ph / (MeV cm2 s)'),
                Column(name='ref_dnde', dtype='f8',
                       data=sed['ref_dnde'], unit='ph / (MeV cm2 s)'),
                Column(name='ref_flux', dtype='f8',
                       data=sed['ref_flux'], unit='ph / (cm2 s)'),
                Column(name='ref_eflux', dtype='f8',
                       data=sed['ref_eflux'], unit='MeV / (cm2 s)'),
                Column(name='ref_npred', dtype='f8', data=sed['ref_npred']),
                Column(name='dnde', dtype='f8',
                       data=sed['dnde'], unit='ph / (MeV cm2 s)'),
                Column(name='dnde_err', dtype='f8',
                       data=sed['dnde_err'], unit='ph / (MeV cm2 s)'),
                Column(name='dnde_errp', dtype='f8',
                       data=sed['dnde_err_hi'], unit='ph / (MeV cm2 s)'),
                Column(name='dnde_errn', dtype='f8',
                       data=sed['dnde_err_lo'], unit='ph / (MeV cm2 s)'),
                Column(name='dnde_ul', dtype='f8',
                       data=sed['dnde_ul'], unit='ph / (MeV cm2 s)'),
                Column(name='e2dnde', dtype='f8',
                       data=sed['e2dnde'], unit='MeV / (cm2 s)'),
                Column(name='e2dnde_err', dtype='f8',
                       data=sed['e2dnde_err'], unit='MeV / (cm2 s)'),
                Column(name='e2dnde_errp', dtype='f8',
                       data=sed['e2dnde_err_hi'], unit='MeV / (cm2 s)'),
                Column(name='e2dnde_errn', dtype='f8',
                       data=sed['e2dnde_err_lo'], unit='MeV / (cm2 s)'),
                Column(name='e2dnde_ul', dtype='f8',
                       data=sed['e2dnde_ul'], unit='MeV / (cm2 s)'),
                Column(name='norm', dtype='f8', data=sed['norm']),
                Column(name='norm_err', dtype='f8', data=sed['norm_err']),
                Column(name='norm_errp', dtype='f8', data=sed['norm_err_hi']),
                Column(name='norm_errn', dtype='f8', data=sed['norm_err_lo']),
                Column(name='norm_ul', dtype='f8', data=sed['norm_ul95']),
                Column(name='ts', dtype='f8', data=sed['ts']),
                Column(name='loglike', dtype='f8', data=sed['loglike']),
                Column(name='norm_scan', dtype='f8', data=sed['norm_scan']),
                Column(name='dloglike_scan', dtype='f8',
                       data=sed['dloglike_scan']),

                ]

        tab = Table(cols)
        tab.meta['UL_CONF'] = 0.95
        hdu_sed = fits.table_to_hdu(tab)
        hdu_sed.name = 'SED'

        columns = fits.ColDefs([])

        columns.add_col(fits.Column(name=str('energy'), format='E',
                                    array=sed['model_flux']['energies'],
                                    unit='MeV'))
        columns.add_col(fits.Column(name=str('dnde'), format='E',
                                    array=sed['model_flux']['dnde'],
                                    unit='ph / (MeV cm2 s)'))
        columns.add_col(fits.Column(name=str('dnde_lo'), format='E',
                                    array=sed['model_flux']['dnde_lo'],
                                    unit='ph / (MeV cm2 s)'))
        columns.add_col(fits.Column(name=str('dnde_hi'), format='E',
                                    array=sed['model_flux']['dnde_hi'],
                                    unit='ph / (MeV cm2 s)'))
        columns.add_col(fits.Column(name=str('dnde_err'), format='E',
                                    array=sed['model_flux']['dnde_err'],
                                    unit='ph / (MeV cm2 s)'))
        columns.add_col(fits.Column(name=str('dnde_ferr'), format='E',
                                    array=sed['model_flux']['dnde_ferr']))

        hdu_f = fits.BinTableHDU.from_columns(columns, name='MODEL_FLUX')

        columns = fits.ColDefs([])

        npar = len(sed['param_names'])
        columns.add_col(fits.Column(name=str('name'),
                                    format='A32',
                                    array=sed['param_names']))
        columns.add_col(fits.Column(name=str('value'), format='E',
                                    array=sed['param_values']))
        columns.add_col(fits.Column(name=str('error'), format='E',
                                    array=sed['param_errors']))
        columns.add_col(fits.Column(name=str('covariance'),
                                    format='%iE' % npar,
                                    dim=str('(%i)' % npar),
                                    array=sed['param_covariance']))
        columns.add_col(fits.Column(name=str('correlation'),
                                    format='%iE' % npar,
                                    dim=str('(%i)' % npar),
                                    array=sed['param_correlation']))

        hdu_p = fits.BinTableHDU.from_columns(columns, name='PARAMS')

        hdus = [fits.PrimaryHDU(), hdu_sed, hdu_f, hdu_p]
        hdus[0].header['CONFIG'] = json.dumps(sed['config'])
        hdus[1].header['CONFIG'] = json.dumps(sed['config'])

        fits_utils.write_hdus(hdus, filename,
                              keywords={'SRCNAME': sed['name']})