Esempio n. 1
0
def make_total_event_list():
    """Make total event list.

    TODO: move this function to the datastore class
    and the sky box selection to the `make_counts_image` function.
    """
    data_store = DataStore(dir=HESSFITS_MPP)

    observation_selection = dict(type='sky_box', frame='galactic',
                                 lon=Quantity([-120, 70], 'deg'),
                                 lat=Quantity([-5, 5], 'deg'), border=Quantity(2, 'deg')    )
    observation_table = data_store.make_observation_table(observation_selection)

    # For testing, only process a small subset of observations
    # observation_table = observation_table.select_linspace_subset(num=1000)

    event_list_files = data_store.make_table_of_files(observation_table, filetypes=['events'])

    ds = EventListDataset.vstack_from_files(event_list_files['filename'])
    print('Total number of events: {}'.format(len(ds.event_list)))
    print('Total number of GTIs: {}'.format(len(ds.good_time_intervals)))

    print('Converting EventListDataset to HDUList ...')
    hdu_list = ds.to_fits()

    print('Writing {}'.format(TOTAL_EVENTS_FILE))
    hdu_list.writeto(TOTAL_EVENTS_FILE, clobber=True)
def make_reco_model():
    """Make a reco bg cube model."""

    METHOD = "default"

    data_dir = "test_dataset"
    overwrite = OVERWRITE
    test = TEST
    group_id = GROUP_ID

    # create output folder
    outdir = os.path.join(OUTDIR, "reco")
    _create_dir(outdir, overwrite)

    # 0. create dummy observation grouping
    obs_groups = create_dummy_observation_grouping()
    # save
    outfile = os.path.join(outdir, "bg_observation_groups.ecsv")
    print("Writing {}".format(outfile, overwrite=overwrite))
    obs_groups.write(outfile)

    # 1. create dummy dataset

    # use enough stats so that rebinning (and resmoothing?) doesn't take place
    n_obs = 100
    if test:
        # run fast
        n_obs = 2

    az_range = AZ_RANGE
    alt_range = ALT_RANGE
    random_state = np.random.RandomState(seed=0)

    sigma = SIGMA
    spectral_index = INDEX

    make_test_dataset(
        outdir=data_dir,
        overwrite=overwrite,
        observatory_name="HESS",
        n_obs=n_obs,
        az_range=az_range,
        alt_range=alt_range,
        date_range=(
            Time("2010-01-01T00:00:00", format="isot", scale="utc"),
            Time("2015-01-01T00:00:00", format="isot", scale="utc"),
        ),
        n_tels_range=(3, 4),
        sigma=sigma,
        spectral_index=spectral_index,
        random_state=random_state,
    )

    # 2. get observation table
    data_store = DataStore.from_dir(dir=data_dir)
    observation_table = data_store.make_observation_table()
    outfile = os.path.join(outdir, "bg_observation_table_group{}.fits.gz".format(group_id))
    print("Writing {}".format(outfile))
    observation_table.write(outfile, overwrite=overwrite)

    # 3. build bg model
    method = METHOD
    bg_cube_model = make_bg_cube_model(
        observation_table=observation_table, data_dir=data_dir, method=method, do_not_force_mev_units=True
    )

    # save
    outfile = os.path.join(outdir, "bg_cube_model_group{}".format(group_id))
    print("Writing {}".format("{}_table.fits.gz".format(outfile)))
    print("Writing {}".format("{}_image.fits.gz".format(outfile)))
    bg_cube_model.write("{}_table.fits.gz".format(outfile), format="table", clobber=overwrite)
    bg_cube_model.write("{}_image.fits.gz".format(outfile), format="image", clobber=overwrite)