Data sources and versions¶
gwtc_analysis uses only public data products of the LVK collaboration.
Event lists: GWOSC¶
Event metadata (names, GPS times, false-alarm rates, median masses and distances, network SNR) come
from the event API of the Gravitational Wave Open Science Center
(https://gwosc.org/eventapi/jsonfull/<list>/). The catalog keys map to these lists:
| Key | GWOSC list | Observing runs of its events | Events | Zenodo PE and skymap release |
|---|---|---|---|---|
GWTC-1 |
GWTC-1-confident |
O1 (3), O2 (8) | 11 | none of its own: the GWTC-2.1 release, Zenodo 6513631, which re-analysed O1–O2 |
GWTC-2.1 |
GWTC-2.1-confident |
O3a (44), plus O1 (3) and O2 (7) re-analysed | 54 | Zenodo 6513631 |
GWTC-3 |
GWTC-3-confident |
O3b | 35 | Zenodo 22685054 |
GWTC-4 |
GWTC-4.0 |
O4a (128), plus GW230518 from the engineering run ER15 | 129 | Zenodo 17602505 |
GWTC-4.1 |
GWTC-4.1 |
O4a (138), plus GW230517 and GW230518 from ER15: GWTC-4.0 re-analysed, with 11 new events | 140 | Zenodo 20275769 |
GWTC-5 |
GWTC-5.0 |
O4b (156), plus 5 events of 6–8 April 2024, just before the start of O4b | 161 | Zenodo 20348005 (part 1, with the skymaps) and 20348006 (part 2) |
GWTC-4.1 is an update of GWTC-4.0: the same O4a data re-analysed, with the 129 events of
GWTC-4.0 and 11 new ones. It is used only when named (--catalogs GWTC-4.1), in place of GWTC-4 for
the O4a events: ALL and the defaults of every mode keep GWTC-4.0, the catalog of the published
analyses. Its PE files are read only on request (--zenodo-version GWTC-4.1=latest).
All the keys are confident catalogs: every event of these lists has a probability of
astrophysical origin p_astro ≥ 0.5 (the re-analysed O1–O2 events of GWTC-2.1 carry no p_astro value).
The marginal lists are read only by the rates and hubble_constant modes (below).
Event counts of the GWOSC lists in September 2026. A catalog key holds the events of its release
only: GWTC-4.0, for instance, does not repeat the O1–O3 events. The exception is GWTC-2.1, whose list
also has 10 O1–O2 events re-analysed with the GWTC-2.1 methods; the same events are in GWTC-1. Events outside the observing runs
(engineering runs) are left out by the rates and hubble_constant modes, which select events by
the periods covered by the injections or by the run dates.
Observing runs¶
| Run | Start (UTC) | End (UTC) |
|---|---|---|
| O1 | 2015-09-12 | 2016-01-19 |
| O2 | 2016-11-30 | 2017-08-25 |
| O3a | 2019-04-01 | 2019-10-01 |
| O3b | 2019-11-01 | 2020-03-27 |
| O4a | 2023-05-24 | 2024-01-16 |
| O4b | 2024-04-10 | 2025-01-28 |
These are the GWOSC run boundaries used by the hubble_constant event selection.
The rates and hubble_constant modes also read the marginal lists (GWTC-2.1-marginal,
GWTC-3-marginal): some events used by the LVK population and cosmology analyses are only there
(see GW200105).
Parameter estimation and skymaps: three repositories¶
--data-repo chooses where PE files and skymaps are read from:
zenodo(default)- The official catalog releases on Zenodo (table above).
s3- The
gwtcbucket of an S3/MinIO mirror athttps://minio-dev.odahub.fr. galaxy- Collections staged by Galaxy (
./galaxy_inputs/<CATALOG>-PE,-SKYMAPS); when none is staged, PE files are downloaded over HTTP from the public usegalaxy.org "GWTC" published history (anonymous, no API key).
Zenodo release versions¶
The Zenodo releases are versioned: GWTC-3, for instance, has v1, v2 and v3. With
--data-repo zenodo, each catalog uses its latest version by default. The version listing is
fetched from the Zenodo API (/api/records/<id>/versions) and cached for one day in
~/.cache_gwtc_analysis/zenodo, so a new release is picked up automatically.
An older version is selected with --zenodo-version CATALOG=VERSION, versions being numbered from the
oldest (v1); latest is also accepted:
gwtc_analysis zenodo_releases --catalogs GWTC-3 GWTC-4 # list the versions
gwtc_analysis search_skymaps --catalogs GWTC-3 --ra-deg 40 --dec-deg -30 --zenodo-version GWTC-3=v2
gwtc_analysis parameters_estimation --src-name GW200105_162426 --zenodo-version GWTC-3=v2
Skymap tarballs are cached per Zenodo record, and the PE index is rebuilt when the selected records change. If zenodo.org is unreachable, the cached listing is used; with no cache at all, the latest version falls back to the record of the table above.
Search-sensitivity injections¶
The rates and hubble_constant modes use the LVK search-sensitivity estimates: large sets of
simulated signals injected into the detector data and searched by the LVK pipelines (see
Selection effects and injections). They are downloaded automatically
from the latest version of their Zenodo record and cached:
| Release key | Record | File used by rates |
File used by hubble_constant |
|---|---|---|---|
gwtc4 |
Zenodo 16740128 | mixture-real_o3_o4a-cartesian_spins_*.hdf (~400 MB) |
mixture-semi_o1_o2-real_o3_o4a-cartesian_spins_*.hdf |
gwtc5 |
Zenodo 19500052 | mixture-real_o3_o4a_o4b-cartesian_spins_*-clipped.hdf (~900 MB) |
mixture-semi_o1_o2-real_o3_o4a_o4b-cartesian_spins_*-clipped.hdf |
The real mixtures cover O3 onward, with signals injected in the real data. The semi mixtures add semi-analytic O1+O2 injections (detection from the SNR computed on the noise spectra of the time), so that the whole catalog since 2015 can be used. The release is described in Essick et al. 2025 [38].
Special case: GW170817¶
GW170817 has no PESummary file in the catalog releases. build_unofficial_pe rebuilds one from the
public GWTC-1 products of the LIGO DCC: see build_unofficial_pe.
Adding a new catalog¶
All the catalogs, observing runs and sensitivity releases are described in one module,
gwtc_analysis/catalog_registry.py; every other table of the package (catalog keys, GWOSC list names,
Zenodo records, S3 prefixes, run mappings, the ALL expansions, the releases of rates and
hubble_constant, the help texts) is derived from it. When the LVK publishes a new catalog (for
instance the one of the O4c run):
-
check_catalogscompares what GWOSC and Zenodo publish with the registry:gwtc_analysis check_catalogs --out-json check.jsonIt lists the registry catalogs with their GWOSC event counts and Zenodo records (latest version, concept ID, number of versions, publication date), then reports the GWTC event lists and observing runs that the registry does not describe, and the registry records that have a newer Zenodo version. For each new list it drafts the registry entry: the observing runs of its events, its Zenodo records (found from the PE links of its events in the GWOSC v2 API) with their concept IDs and skymap tarball, and
update_ofwhen the list covers the runs of an existing catalog (a re-analysis, as GWTC-4.1 of GWTC-4.0). The draft is a starting point: check it against the release notes. On the current registry it reports nothing new. -
OBSERVING_RUNS: add the run with its official start and end of observing (the GWOSC run limits may include the engineering run before it). CATALOGS: add an entry with the catalog key, its GWOSC event list, its run(s), its Zenodo record(s) (one per part of a split release, the first one with the skymap tarball name) and its S3 prefix. The record IDs are only starting points: the latest version of each is resolved at run time. An update of an existing catalog (a re-analysis of the same runs) takesupdate_of: it is then used only when named, andALLand the defaults are unchanged.SENSITIVITY_RELEASES, if the catalog comes with injections: its Zenodo record, the covered runs and the patterns of its real and semi-analytic mixture files; setDEFAULT_RATES_RELEASEto it. The spectral-siren values of the matching cosmology paper, when published, go inpublished.- Check what the registry cannot know in advance: the PE labels of the new files (
hubble_constantprefersIMRPhenomXPHM-SpinTaylor), any new PE distance-prior class (unknown ones stop thepreparestage with an error), the priors of a new cosmology paper (h0_icarogw.PRIOR_SETS), and events with missing products (pe_supplements.py). - Upload the new release to the S3 bucket and the Galaxy history if these repositories are used, then
update the catalog tables of these pages, set
REGISTRY_CHECKEDto the date of the check, and regenerate the README and docs blocks (python gwtc_analysis/gen_readme_cli_tables.py), which name the catalogs of the version.
tests/test_catalog_registry.py checks the consistency of the registry, and that a new entry reaches
every derived table.