Source code for cosmogrb.io.gbm_fits

import os

import numpy as np

from cosmogrb.io.grb_save import GRBSave
from cosmogrb.utils.tte_file import TTEFile


[docs]def grbsave_to_gbm_fits(file_name, destination=".", detectors=None): if isinstance(file_name, GRBSave): grb = file_name else: grb = GRBSave.from_file(file_name) files = {} # set up the detector filter if detectors is None: detectors = list(grb.keys()) else: for det in detectors: assert det in grb, f"{det} is not a in the light curve list" for key, det in grb.items(): if key in detectors: tstart = det["lightcurve"].tstart + \ det["lightcurve"].time_adjustment tstop = det["lightcurve"].tstop + det["lightcurve"].time_adjustment tte_file = TTEFile( det_name=key, tstart=tstart, tstop=tstop, trigger_time=grb.T0 + det["lightcurve"].time_adjustment, ra=grb.ra, dec=grb.dec, channel=np.arange(0, 128, dtype=np.int16), emin=det["response"].channel_edges[:-1], emax=det["response"].channel_edges[1:], pha=det["lightcurve"].pha.astype(np.int16), time=det["lightcurve"].times + det["lightcurve"].time_adjustment, ) tte_file_name = os.path.join( destination, f"tte_{grb.name}_{key}.fits") tte_file.writeto(tte_file_name, overwrite=True) rsp = det["response"] rsp_file_name = os.path.join( destination, f"rsp_{grb.name}_{key}.rsp") rsp.to_fits( rsp_file_name, telescope_name="fermi", instrument_name=key, overwrite=True ) sub_dict = {} sub_dict["tte"] = tte_file_name sub_dict["rsp"] = rsp_file_name files[key] = sub_dict return files