DataStore¶
-
class
gammapy.data.DataStore(hdu_table=None, obs_table=None)[source]¶ Bases:
objectIACT data store.
The data selection and access happens using an observation and an HDU index file as described at Data storage.
For a usage example see cta.html
- Parameters
- hdu_table
HDUIndexTable HDU index table
- obs_table
ObservationTable Observation index table
- hdu_table
Examples
Here’s an example how to create a
DataStoreto access H.E.S.S. data:>>> from gammapy.data import DataStore >>> data_store = DataStore.from_dir('$GAMMAPY_DATA/hess-dl3-dr1') >>> data_store.info() Data store: HDU index table: BASE_DIR: /home/runner/work/gammapy/gammapy/gammapy-datasets/hess-dl3-dr1 Rows: 630 OBS_ID: 20136 -- 47829 HDU_TYPE: ['aeff', 'bkg', 'edisp', 'events', 'gti', 'psf'] HDU_CLASS: ['aeff_2d', 'bkg_3d', 'edisp_2d', 'events', 'gti', 'psf_table'] Observation table: Observatory name: 'N/A' Number of observations: 105
Attributes Summary
Default HDU table filename.
Default observation table filename.
Methods Summary
check([checks])Check index tables and data files.
copy_obs(obs_id, outdir[, hdu_class, …])Create a new
DataStorecontaining a subset of observations.from_dir(base_dir[, hdu_table_filename, …])Create from a directory.
from_events_files(paths)Create from a list of event filenames.
from_file(filename[, hdu_hdu, hdu_obs])Create from a FITS file.
get_observations([obs_id, skip_missing, …])Generate a
Observations.info([show])Print some info.
obs(obs_id)Access a given
Observation.Attributes Documentation
-
DEFAULT_HDU_TABLE= 'hdu-index.fits.gz'¶ Default HDU table filename.
-
DEFAULT_OBS_TABLE= 'obs-index.fits.gz'¶ Default observation table filename.
Methods Documentation
-
check(checks='all')[source]¶ Check index tables and data files.
This is a generator that yields a list of dicts.
-
copy_obs(obs_id, outdir, hdu_class=None, verbose=False, overwrite=False)[source]¶ Create a new
DataStorecontaining a subset of observations.- Parameters
- obs_idarray-like,
ObservationTable List of observations to copy
- outdirstr, Path
Directory for the new store
- hdu_classlist of str
- verbosebool
Print copied files
- overwritebool
Overwrite
- obs_idarray-like,
-
classmethod
from_dir(base_dir, hdu_table_filename=None, obs_table_filename=None)[source]¶ Create from a directory.
- Parameters
- base_dirstr, Path
Base directory of the data files.
- hdu_table_filenamestr, Path
Filename of the HDU index file. May be specified either relative to
base_diror as an absolute path. If None, the default filename will be looked for.- obs_table_filenamestr, Path
Filename of the observation index file. May be specified either relative to
base_diror as an absolute path. If None, the default filename will be looked for.
-
classmethod
from_events_files(paths)[source]¶ Create from a list of event filenames.
HDU and observation index tables will be created from the EVENTS header.
IRFs are found only if you have a
CALDBenvironment variable set, and if the EVENTS files contain the following keys:TELESCOP(example:TELESCOP = CTA)CALDB(example:CALDB = 1dc)IRF(example:IRF = South_z20_50h)
This method is useful specifically if you want to load data simulated with ctobssim
Examples
This is how you can access a single event list:
from gammapy.data import DataStore path = "$GAMMAPY_DATA/cta-1dc/data/baseline/gps/gps_baseline_110380.fits" data_store = DataStore.from_events_files([path]) observations = data_store.get_observations()
You can now analyse this data as usual (see any Gammapy tutorial).
If you have multiple event files, you have to make the list. Here’s an example using
Path.globto get a list of all events files in a given folder:import os from pathlib import Path path = Path(os.environ["GAMMAPY_DATA"]) / "cta-1dc/data" paths = list(path.rglob("*.fits")) data_store = DataStore.from_events_files(paths) observations = data_store.get_observations()
Note that you have a lot of flexibility to select the observations you want, by having a few lines of custom code to prepare
paths, or to select a subset via a method on thedata_storeor theobservationsobjects.If you want to generate HDU and observation index files, write the tables to disk:
data_store.hdu_table.write("hdu-index.fits.gz") data_store.obs_table.write("obs-index.fits.gz")
-
classmethod
from_file(filename, hdu_hdu='HDU_INDEX', hdu_obs='OBS_INDEX')[source]¶ Create from a FITS file.
The FITS file must contain both index files.
- Parameters
- filenamestr, Path
FITS filename
- hdu_hdustr or int
FITS HDU name or number for the HDU index table
- hdu_obsstr or int
FITS HDU name or number for the observation index table
- Returns
- data_store
DataStore Data store
- data_store
-
get_observations(obs_id=None, skip_missing=False, required_irf='all')[source]¶ Generate a
Observations.- Parameters
- obs_idlist
Observation IDs (default of
Nonemeans “all”)- skip_missingbool, optional
Skip missing observations, default: False
- required_irflist of str
Runs will be added to the list of observations only if the required IRFs are present. Otherwise, the given run will be skipped Available options are: *
aeff: Effective area *bkg: Background *edisp: Energy dispersion *psf: Point Spread Function By default, all the IRFs are required.
- Returns
- observations
Observations Container holding a list of
Observation
- observations
-
obs(obs_id)[source]¶ Access a given
Observation.- Parameters
- obs_idint
Observation ID.
- Returns
- observation
Observation Observation container
- observation