omniscient / omnilab
Omnilab: one contract for the public science-data APIs - entities (a compound, a gene, a protein, a species, a star, an earthquake) with their properties, units and cross-references, series (a variable measured at a place over time: weather, climate, air) and catalogued products (a satellite scene,
Requires
- php: >=8.2
- symfony/http-client-contracts: ^3.0
Requires (Dev)
- phpunit/phpunit: ^11.0
- symfony/config: ^6.4|^7.0|^8.0
- symfony/dependency-injection: ^6.4|^7.0|^8.0
- symfony/http-client: ^6.4|^7.0|^8.0
- symfony/http-kernel: ^6.4|^7.0|^8.0
Suggests
- omnilab/brightsky: Bright Sky (Deutscher Wetterdienst open data): hourly observations and MOSMIX forecasts at a point or a DWD/WMO station
- omnilab/cactus: NCI/CADD Chemical Identifier Resolver: a structure from a name, CAS number, InChIKey, InChI or SMILES, its InChIKey, InChI, SMILES, IUPAC name, formula, weight, CAS numbers and names; OPSIN for a name it cannot read
- omnilab/cams: Copernicus Atmosphere Data Store (CAMS): air quality forecasts and reanalyses, atmospheric composition, greenhouse gases as products, through omnilab/cds
- omnilab/cds: Copernicus Climate Data Store: its datasets (ERA5, seasonal forecasts, projections) as products over a place and a period, its catalogue's search; with an account's key, a request submitted and followed to its file
- omnilab/chebi: ChEBI: chemical entities by ChEBI id, InChIKey, CAS, KEGG or name, their structure, ontology (classes, roles) and cross-references
- omnilab/chembl: ChEMBL: bioactive molecules by ChEMBL id, InChIKey or name, their development phase, computed properties, mechanisms of action and targets, cross-references from UniChem
- omnilab/clinvar: ClinVar (NCBI E-utilities): variations by VariationID or VCV accession, their clinical significance, review status, conditions, genes, location and frequencies, their dbSNP id; a search
- omnilab/cod: Crystallography Open Database: crystal structures by COD id, their formula, unit cell with uncertainties, space group and publication, the CIF as a file; a search
- omnilab/codata: CODATA fundamental physical constants as NIST publishes them (2022): each constant by NIST's short name or its name, its value, uncertainty and unit, exact or not; a search
- omnilab/col: Catalogue of Life (ChecklistBank): taxa and synonyms by COL id, GBIF key (the same id since 2026) or name; GBIF, iNaturalist, WoRMS and ITIS cross-references
- omnilab/copernicus: Copernicus Data Space: Sentinel, Landsat and Copernicus service products from its STAC catalogue
- omnilab/donki: NASA DONKI: space weather events (solar flares, CMEs, geomagnetic storms, shocks, SEP events) by activity id, or by period (outside the contract)
- omnilab/earthdata: NASA Earthdata (CMR): the granules of NASA's Earth observation collections (HLS, MODIS, VIIRS, GPM...) as products by place, period and cloud cover; their files with an Earthdata Login token
- omnilab/ebird: eBird API 2.0: bird taxa by species code; with the user's key, names, search, checklists and recent observations (not tested live)
- omnilab/elevation: Open Topo Data: the elevation of points and profiles from SRTM, ASTER, EU-DEM, GEBCO and other elevation models (outside the contract)
- omnilab/emsc: EMSC (SeismicPortal FDSN): an earthquake by its id with its time and place, the earthquakes of a box or around a point as series or occurrences
- omnilab/ensembl: Ensembl: genes, transcripts, proteins and exons by Ensembl id, genes by symbol in a species, their place on the genome, biotype and assembly, their NCBI Gene and UniProt entries
- omnilab/exoplanets: NASA Exoplanet Archive: confirmed exoplanets by name, their mass, radius, orbit and temperature with uncertainties, their discovery and their host star, related by its designations (SIMBAD, Gaia DR3)
- omnilab/gaia: ESA Gaia DR3: a source by its source_id or designation, its astrometry (position, parallax, proper motion), photometry, radial velocity and astrophysical parameters; the sources of a cone on the sky
- omnilab/gbif: GBIF: taxa of its taxonomy (the Catalogue of Life eXtended Release) by key, legacy Backbone number, NCBI id or scientific name, their status, IUCN category and lineage
- omnilab/gwas: GWAS Catalog: studies, variants (rs ids) and traits (EFO, Mondo, HPO) with their strongest associations; p-values, effect sizes, risk alleles; a search of traits
- omnilab/hgnc: HGNC: human genes by HGNC id, symbol, previous symbol or alias, their approved name, location, groups and MANE Select transcript; their NCBI Gene, Ensembl, UniProt and OMIM ids
- omnilab/horizons: NASA/JPL Horizons: the ephemeris of a planet, moon, asteroid, comet or spacecraft seen from a place on the Earth as series (RA, Dec, azimuth, elevation, magnitude, distances, elongation)
- omnilab/inaturalist: iNaturalist: taxa by id or name, their common name, IUCN status, lineage and default photo with its licence; the observations of a place and a period, research grade by default
- omnilab/interpro: InterPro: InterPro entries and Pfam families by accession, their type, members, GO terms and hierarchy; a UniProt protein's domains and families, with their positions, as related things; a search
- omnilab/itis: ITIS: taxa by TSN or name; usage, accepted name, hierarchy, common names, geographic divisions and jurisdictional origins; a search of names
- omnilab/iucn: IUCN Red List API v4: taxa with their latest global assessment, with the user's token (not tested live)
- omnilab/jpl: NASA/JPL Small-Body Database: asteroids and comets by number, designation or name, their orbit, physical parameters, NEO and PHA flags, close approaches and impact risk
- omnilab/kegg: KEGG (academic use only): compounds, drugs, reactions, pathways and enzymes by KEGG id, their formula, masses, equations and classes, CAS, ChEBI, ChEMBL and Rhea ids, their reactions, pathways and enzymes as related things; a search
- omnilab/launches: The Space Devs' Launch Library 2: orbital launches by id, text or period, as occurrences at their pads (15 calls an hour without a key)
- omnilab/materials-project: Materials Project (an account's key): computed properties of inorganic materials by mp id, their formula, symmetry, energies, band gap and moduli; the materials of a formula or a chemical system
- omnilab/mpc: IAU Minor Planet Center: minor planets and comets by number, designation or name; designations, orbit, absolute magnitude, observation arc; their latest observations (outside the contract)
- omnilab/ncbi: NCBI Gene and Taxonomy: genes by GeneID, taxa by id or name, their location, summary and lineage, their UniProt, Ensembl and GBIF ids
- omnilab/ned: NASA/IPAC Extragalactic Database: galaxies, quasars and clusters by any name; type, position, redshift, NED's data counts; the objects of a cone on the sky (outside the contract)
- omnilab/noaa: NOAA: weather and climate observations as series at a point - NCEI's station records (GHCN-Daily, monthly and yearly summaries) and the National Weather Service's observations and forecasts in the United States
- omnilab/obis: OBIS (Ocean Biodiversity Information System): marine taxa by WoRMS AphiaID or name with their record counts; the occurrences of a box or around a point, by taxon and depth
- omnilab/open-meteo: Open-Meteo: hourly and daily weather series at a point, forecast and historical archive
- omnilab/openaq: OpenAQ API v3: hourly and daily air quality averages at the nearest location of a point (a key required)
- omnilab/opentargets: Open Targets Platform: targets (Ensembl genes), diseases (EFO, Mondo, HPO, Orphanet) and drugs (ChEMBL), their associations with scores, drugs and clinical candidates; a search
- omnilab/oqmd: OQMD: DFT formation energies, hull distances and band gaps of materials by OQMD id, composition or phase space
- omnilab/pbdb: Paleobiology Database: fossil and living taxa with their first and last appearances in Ma; fossil occurrences by place and age (outside the contract)
- omnilab/pdb: RCSB PDB: structures of the Protein Data Bank by PDB id, their method, resolution, citation, chains and ligands, their UniProt proteins and ligands as related things; a full-text search
- omnilab/pubchem: PubChem: compounds by CID, name, InChIKey, CAS or SMILES, their computed properties, synonyms, structure image and cross-references
- omnilab/quickgo: QuickGO (EBI): Gene Ontology terms by id, their definition, aspect, parents and children; a UniProt protein's GO annotations by aspect and evidence; a search
- omnilab/reactome: Reactome: pathways and reactions by stable id (R-HSA-70171), their compartments, GO process, inputs and outputs, their participants (UniProt proteins, ChEBI molecules) as related things; a search; the pathways of a protein or a molecule
- omnilab/rhea: Rhea: biochemical reactions by any of their four Rhea ids or their KEGG reaction, their equation, sides and participants; ChEBI participants, EC numbers, GO term, Reactome events and the reviewed UniProt proteins that catalyse them as related things; a search
- omnilab/simbad: SIMBAD (CDS): objects beyond the solar system by any identifier, their type, coordinates, motion, parallax, velocity, redshift, spectral type and magnitudes
- omnilab/string: STRING: a protein by STRING id, UniProt accession or name, its interaction partners with their scores as related things; networks with each evidence channel's score; functional enrichment
- omnilab/swpc: NOAA Space Weather Prediction Center: the aurora at a point as a series; the Kp index, the solar wind, alerts and scales outside the contract
- omnilab/tides: NOAA CO-OPS (Tides and Currents): water levels, verified hourly heights, highs and lows, tide predictions and water temperature of a station
- omnilab/uniprot: UniProt: proteins of UniProtKB by accession or entry name, their function, gene, organism, sequence, mass, cofactors and ligands, their genes in NCBI and Ensembl
- omnilab/usgs: USGS earthquake catalogue (ComCat): an earthquake by its id with its time and place, the earthquakes of a box or around a point as series
- omnilab/usgs-water: USGS Water Data (OGC APIs): streamflow, gage height and other parameters of a monitoring location as recorded or daily; monitoring locations
- omnilab/vizier: CDS VizieR: astronomical catalogues' tables by text as datasets; the rows of a table around a point of the sky or an object (outside the contract)
- omnilab/wikidata: Wikidata: any item by Q-number, by a science base's identifier or by label, its labels in a language, its cross-references and a few properties with units
- omnilab/worms: WoRMS (World Register of Marine Species): taxa by AphiaID, name, ITIS TSN, NCBI or IUCN id; classification, synonyms, vernaculars, citation; ITIS, NCBI and IUCN cross-references
- symfony/config: In a Symfony application: the configuration of Omnilab\Bridge\Symfony\OmnilabBundle
- symfony/dependency-injection: In a Symfony application: the services of Omnilab\Bridge\Symfony\OmnilabBundle
- symfony/http-kernel: In a Symfony application: Omnilab\Bridge\Symfony\OmnilabBundle itself
Provides
None
Conflicts
None
Replaces
- glitchr/omnilab: 1.x-dev
This package is auto-updated.
Last update: 2026-10-17 12:28:27 UTC
README
One contract for the public science-data APIs, whatever the domain - chemistry, biology, species, astronomy, the Earth, its weather and its air: what science knows of a thing, what it measures at a place, what it has catalogued over an area, what was found or happened there. Publications are not here: they are glitchr/omnischolar's.
Published as omniscient/omnilab (formerly glitchr/omnilab, which this package replaces: a
composer.json that still requires the old name keeps resolving, see decisions).
$caffeine = $registry->get('pubchem')->entity('caffeine'); $caffeine->property('molecular_weight'); // 194.19 g/mol, from pubchem $caffeine->identifier(Scheme::CHEBI); // 27732: a cross-reference the Collector can follow $caffeine = $collector->collect('pubchem', 'caffeine'); // then ChEBI and Wikidata, by its InChIKey and its CID $caffeine->properties('molecular_weight'); // 194.19 g/mol from pubchem, 194.194 g/mol from chebi $caffeine->property('melting_point'); // 234 °C, from wikidata [$temperature] = $registry->get('open-meteo')->series(new SeriesQuery(['temperature_2m'], new Point(48.5734, 7.7521), $tomorrow, $tomorrow)); $temperature->max(); // 20.4, in $temperature->unit: °C $scenes = $registry->get('copernicus')->products(new ProductQuery(['sentinel-2-l2a'], $strasbourg, new \DateTimeImmutable('-10 days'), maxCloudCover: 30)); $scenes->first()->preview; // the scene's thumbnail; its assets keep their hrefs $lions = $registry->get('gbif')->occurrences(new OccurrenceQuery(new Point(-24.99, 31.59), $from2025, $to2025, [OccurrenceQuery::TAXON => '4CGXP'], radius: 100)); $lions->total; // 412 lions within 100 km of Skukuza in 2025, each with its time and place
Every answer takes one of four shapes, not one per domain:
- an entity (
Model\Entity): a thing named and identified - a compound, a gene, a protein, a species, a star, an asteroid, an earthquake - its properties with their units (Property,Quantity), its synonyms, and its identifiers in other bases (Identifier,Scheme: PubChem CID, ChEBI, ChEMBL, InChIKey, CAS, UniProt, NCBI Gene and Taxonomy, Ensembl, PDB, GBIF, iNaturalist taxa and observations, SIMBAD, JPL SBDB, USGS events, Wikidata...); a time and a place for an event; - a series (
Model\Series): one variable at aPointor over aBBox, its points in time, its unit, its step and aggregation; - a product (
Model\Product, in the shape of a STAC item): a catalogued scene or file, its datetime, footprint, properties and assets; - occurrences (a
PageofModel\Entity): the things found or happened at a place in a period - the observations of a species, the earthquakes of a region -, each with its time and its place (occurrences).
A series may be asked at a station (ghcn:USW00094728) rather than a point; a catalogue's
datasets are found by text (datasets()), its files read with the source's credentials (open()),
and a file made on request is followed as a Model\Job until it is ready
(datasets); the catalogues that speak STAC are read by one reader
(Source\Stac).
This package holds the contract (Source\SourceInterface, Source\SourceFactory, Registry), the
models, the Collector that follows an entity's cross-references into the other sources and the
Merger that makes one entity of several, keeping the source of every property; and a bridge for
Symfony. It needs no framework: it requires nothing but symfony/http-client-contracts, each
source package symfony/http-client. Each source is a package of its own:
| Package | Source | Shape | Key |
|---|---|---|---|
omnilab/pubchem |
PubChem (NCBI): compounds by CID, name, InChIKey, CAS, SMILES; computed properties, synonyms, 2D structure, cross-references | entity | none (5 calls a second at most) |
omnilab/open-meteo |
Open-Meteo: hourly, 15-minute and daily weather at a point, forecast and archive (from 1940); the air quality (PM2.5, PM10, NO2, O3, the European and US indices, pollens), hourly or daily, from 2013 | series | none for non-commercial use |
omnilab/copernicus |
Copernicus Data Space: the STAC catalogue of Sentinel, Landsat, MODIS, the DEM and the Copernicus services | product | none to search (a CDSE token to download) |
omnilab/chebi |
ChEBI (EMBL-EBI): chemical entities by ChEBI id, InChIKey, CAS, KEGG or name; masses, structure, ontology (classes, roles), cross-references | entity | none |
omnilab/wikidata |
Wikidata: any item by Q-number, by a science base's identifier (PubChem, ChEBI, CAS, UniProt, NCBI...) or by label; labels in a language, cross-references, a few properties with units | entity | none (a User-Agent that names the caller; 200 calls a minute) |
omnilab/chembl |
ChEMBL (EMBL-EBI): bioactive molecules by ChEMBL id, InChIKey or name; development phase, computed properties, mechanisms of action and their targets, cross-references from UniChem | entity | none |
omnilab/uniprot |
UniProtKB: proteins by accession or entry name; function, gene, organism, sequence, mass, cofactors, ligands; their genes in NCBI and Ensembl | entity | none |
omnilab/gbif |
GBIF's taxonomy (the Catalogue of Life eXtended Release since 2026): taxa by key, legacy Backbone number, NCBI id or scientific name; status, IUCN category, lineage; NCBI cross-reference; the occurrences of a place and a period (by taxon, country, basis of record) | entity, occurrences | none |
omnilab/ncbi |
NCBI Gene and Taxonomy (Datasets v2, E-utilities): genes by GeneID, taxa by id or name; location, summary, lineage; UniProt, Ensembl and GBIF ids | entity | none (3 calls a second; 10 with an API key) |
omnilab/simbad |
SIMBAD (CDS, Strasbourg), through its TAP service: objects beyond the solar system by any identifier; type, coordinates, motion, parallax, velocity, redshift, spectral type, magnitudes | entity | none |
omnilab/jpl |
NASA/JPL's Small-Body Database: asteroids and comets by number, designation, name or SPK-ID; orbit, physical parameters, NEO and PHA flags, close approaches, Sentry's impact risk | entity | none |
omnilab/usgs |
USGS earthquake catalogue (ComCat, FDSN event service): an earthquake by its id, with its time and place; the earthquakes of a box or around a point as series, or as occurrences | entity, series, occurrences | none |
omnilab/emsc |
The EMSC's earthquake catalogue (SeismicPortal, FDSN event service): an earthquake by its SeismicPortal id, with its time, place, Flinn-Engdahl region; the earthquakes of a box or around a point as series, or as occurrences | entity, series, occurrences | none |
omnilab/usgs-water |
The USGS's Water Data OGC APIs (which replace the WaterServices): a monitoring location's discharge, gage height, water temperature or any parameter as recorded, hourly or daily, at a usgs.site or the nearest of a point; the location itself; locations by name |
entity, search, series | none (an api.data.gov key raises the limit) |
omnilab/tides |
NOAA CO-OPS (Tides and Currents): a station's water level every six minutes, verified hourly heights and highs and lows, tide predictions, water and air temperature, at a coops.station or the nearest of a point; the station itself |
entity, series | none |
omnilab/swpc |
NOAA's Space Weather Prediction Center: the aurora probability at a point (OVATION) as a series; outside the contract, the Kp index, the solar wind at L1, the alerts and the NOAA scales | series | none |
omnilab/brightsky |
The Deutscher Wetterdienst's open data through Bright Sky: hourly observations since 2010 joined to the MOSMIX forecasts, at a point or a dwd.station / WMO station; the station itself |
entity, series | none |
omnilab/elevation |
Open Topo Data: the elevation of points and profiles from SRTM, ASTER, EU-DEM, GEBCO... - outside the contract (at(), profile()) |
- | none (100 locations a call, 1,000 calls a day) |
omnilab/openaq |
OpenAQ (API v3): the hourly or daily averages of a pollutant at the nearest location of a point measuring it. Not tested live | series | a key (required) |
omnilab/obis |
OBIS, the Ocean Biodiversity Information System: a marine taxon by its WoRMS AphiaID or name, its record counts, NCBI id; the records of a box or around a point, by taxon, depth, dataset, each with its depth and the sea surface temperature and salinity at its place | entity, occurrences | none |
omnilab/worms |
WoRMS, the World Register of Marine Species: a taxon by its AphiaID, its name, or its ITIS, NCBI or IUCN id; accepted name, status, classification, synonyms, vernacular names, the citation it asks for; ITIS, NCBI and IUCN ids as cross-references | entity, search | none |
omnilab/itis |
ITIS: a taxon by its TSN or name; usage, accepted name, hierarchy, common names, geographic divisions, jurisdictional origins; a search of names | entity, search | none |
omnilab/col |
The Catalogue of Life through ChecklistBank: a taxon or synonym by its COL id, its GBIF key (the same id since June 2026) or its name; classification, vernaculars, distribution, scrutinizer, source record; GBIF, iNaturalist, WoRMS and ITIS ids as cross-references | entity, search | none |
omnilab/pbdb |
The Paleobiology Database: a fossil or living taxon by number or name, its first and last appearances in Ma, ecology; a fossil by its number; the fossils of a place and an age outside the contract (fossils(): an age is no date) |
entity, search | none |
omnilab/ebird |
eBird API 2.0: a bird taxon by its species code; with the user's key, by name, a search, a checklist, the recent observations around a point or in a region. Not tested live beyond the taxonomy | entity, search, occurrences | a key (the user's) for all but the taxonomy |
omnilab/iucn |
The IUCN Red List API v4: a taxon by SIS id or name with its latest global assessment (category, criteria, trend, citation). Not tested live | entity | a token (the user's, required) |
omnilab/horizons |
NASA/JPL Horizons: the ephemeris of a planet, moon, asteroid, comet or spacecraft seen from a place on the Earth over a period - right ascension and declination, azimuth and elevation, magnitude, illumination, distances to the observer and the Sun, elongation - each variable naming its body (499:elevation) |
series | none (one request at a time) |
omnilab/mpc |
The IAU's Minor Planet Center: minor planets and comets by number, designation or name; designations, naming citation, orbit with uncertainties, absolute magnitude, observations and arc; their latest observations (outside the contract) | entity | none |
omnilab/ned |
NED, the NASA/IPAC Extragalactic Database: galaxies, quasars, clusters by any name; type, position, redshift and its quality, the number of distances, photometry and spectra NED holds; a cone on the sky (outside the contract) | entity | none |
omnilab/vizier |
VizieR (CDS): the tables of published astronomical catalogues by text, as datasets; the rows of a table around a point of the sky or an object, with units (outside the contract) | datasets | none |
omnilab/donki |
NASA's DONKI (CCMC): space weather events - solar flares, coronal mass ejections, geomagnetic storms, shocks, SEP events - by activity id, with their links; every event of a period (outside the contract: no place on the Earth) | entity | none |
omnilab/launches |
The Space Devs' Launch Library 2: orbital launches by id or text - rocket, provider, mission, orbit, pad, status -, and the launches of a period as occurrences at their pads | entity, occurrences | none (15 calls an hour; a supporter's key) |
omnilab/ensembl |
Ensembl (EMBL-EBI): genes, transcripts, proteins and exons by Ensembl id, genes by symbol in a species; biotype, species, assembly, place on the genome; NCBI Gene and UniProt cross-references | entity | none (15 calls a second) |
omnilab/pdb |
RCSB PDB (GraphQL Data API, Search API): structures by PDB id; method, resolution, citation, chains and ligands; their UniProt proteins, organisms and ligands as related things; full-text search | entity | none (a handful of calls a second) |
omnilab/reactome |
Reactome's Content Service: pathways and reactions by stable id (R-HSA-70171); species, compartments, GO process, inputs and outputs, Rhea; their UniProt proteins, ChEBI molecules, organism, sub-events and orthologous events as related things; a search; the pathways of a protein or a molecule |
entity | none |
omnilab/string |
STRING: a protein by its STRING id (9606.ENSP00000269305), UniProt accession, Ensembl protein or name; its preferred name, annotation, species, Ensembl protein; its interaction partners with their scores as related things; the network among proteins, each evidence channel's score; their functional enrichment |
entity | none (one call a second, caller_identity) |
omnilab/interpro |
InterPro (EMBL-EBI): InterPro entries (IPR000971) and Pfam families (PF00042); type, description, member signatures, GO terms, counts, clan, hierarchy; a UniProt protein's domains and families by type, with their positions, as related things; a search |
entity | none |
omnilab/quickgo |
The Gene Ontology through QuickGO (EMBL-EBI): terms by id (GO:0005829); name, definition, aspect, synonyms, direct parents by relation, children; a UniProt protein's GO terms by aspect with their evidence codes; the annotations themselves; a search |
entity | none |
omnilab/hgnc |
HGNC: human genes by HGNC id (HGNC:4827), symbol, previous symbol or alias, or an id it records; approved name, locus type, location, groups, MANE Select, RefSeq; NCBI Gene, Ensembl, UniProt and OMIM cross-references; a search |
entity | none (10 calls a second) |
omnilab/opentargets |
The Open Targets Platform (GraphQL): targets by Ensembl gene, diseases by EFO, Mondo, HPO or Orphanet id (MONDO_0011382), drugs by ChEMBL id; their associations with scores, drugs and clinical candidates, domains, pathways, mechanisms and indications as related things; a search; the associations paged |
entity | none |
omnilab/clinvar |
ClinVar (NCBI E-utilities): variations by VariationID or VCV accession (VCV000015333); classification, review status, conditions, genes, protein change, location, SPDI, allele frequencies; its dbSNP id; its genes and conditions (Mondo, OMIM, Orphanet, HPO) as related things; a search in ClinVar's query language |
entity | none (3 calls a second; 10 with an API key) |
omnilab/gwas |
The NHGRI-EBI GWAS Catalog (REST API v2): studies (GCST000854), variants (rs334) and traits (EFO, Mondo, HPO) with their strongest associations (p-values, effect sizes, risk alleles); the studies, variants and traits they tie as related things; a search of traits; the associations paged |
entity | none |
omnilab/noaa |
NOAA: NCEI's station records (GHCN-Daily, monthly and yearly summaries) at the nearest station or one named (ghcn:USW00094728); the National Weather Service's observations and forecasts in the United States, at a point or a station (nws.station:KNYC); the stations themselves |
series, entity (stations) | none (a User-Agent for the NWS) |
omnilab/cds |
Copernicus Climate Data Store: ERA5, seasonal forecasts, projections... as products over a place and a period, the catalogue's search; a request submitted and followed to its file | product | none to read (an account's key to submit) |
omnilab/cams |
Copernicus Atmosphere Data Store (CAMS): air quality forecasts and reanalyses, atmospheric composition, greenhouse gases, through omnilab/cds | product | none to read (an account's key to submit) |
omnilab/exoplanets |
The NASA Exoplanet Archive (Caltech/IPAC), through its TAP service: confirmed planets by name, their mass, radius, orbit, temperature and discovery, their host star related by its designations | entity | none |
omnilab/gaia |
ESA's Gaia DR3, through the Gaia Archive's TAP service: a source by its source_id or designation, its astrometry, photometry, radial velocity and astrophysical parameters | entity | none |
omnilab/earthdata |
NASA Earthdata's Common Metadata Repository: the granules of HLS, MODIS, VIIRS, GPM... by place, period and cloud cover, their files | product | none to search (an Earthdata Login token to download) |
omnilab/inaturalist |
iNaturalist: taxa by id or name; common name, IUCN category, lineage, default photo and its licence; the observations of a place and a period, research grade by default, each with its licence | entity, occurrences | none (60 calls a minute) |
omnilab/kegg |
KEGG's REST API (Kanehisa Laboratories): compounds, drugs, reactions, pathway maps and enzymes by KEGG id (C07481, R00200, map00010, 2.7.1.40); formula, masses, equations, classes; CAS, ChEBI, ChEMBL, Rhea ids; reactions, pathways, enzymes, compounds as related things; a search. For academic use by academic users only; not tested live |
entity | none (academic use only; 3 calls a second) |
omnilab/rhea |
Rhea (SIB), through its SPARQL endpoint and REST search: biochemical reactions by any of their four ids (RHEA:18157) or their KEGG reaction; equation, status, sides and participants; the quartet and KEGG reaction as identifiers; ChEBI participants, EC numbers, GO term, Reactome events, the reviewed UniProt proteins that catalyse them as related things; a search |
entity | none |
omnilab/cod |
The Crystallography Open Database: crystal structures by COD id (9008565); formula, unit cell with uncertainties, space group, Z, temperature, R factors, publication and DOI; the entry it duplicates related; the CIF as a file (cif(), open()); a search of the entries' metadata |
entity | none (CC0) |
omnilab/cactus |
The NCI/CADD Chemical Identifier Resolver (CIR): a structure from a name, a CAS number, an InChIKey, an InChI or a SMILES; its InChIKey (its id), InChI, SMILES, IUPAC name, formula, weight, CAS numbers, names, picture; OPSIN (the IUPAC name parser) for a name CIR cannot read | entity | none |
omnilab/codata |
The fundamental physical constants of CODATA as NIST publishes them (2022 adjustment, 355 constants): each by NIST's short name (mp) or its name; its value, standard uncertainty and unit, exact or not, its digits as published; a search |
entity | none |
omnilab/materials-project |
The Materials Project's API: computed properties of inorganic materials by id (mp-149); formula, symmetry, density, energies per atom, stability, band gap, magnetism, moduli; the materials of a formula or a chemical system. An account's key required; not tested live |
entity | an account's API key (free) |
omnilab/oqmd |
The Open Quantum Materials Database's RESTful API: entries by OQMD id; formula, space group, prototype, volume, formation energy, hull distance, band gap, ICSD id; the entries of a composition or a phase space. Not tested live: the service was down on 2026-10-15 | entity | none |
A source answers what it can - capabilities() says what - and throws NotSupportedException
for the rest, before any call. Unknown is null, an empty page or a series without points; a
service down or rate limited is an UnavailableException (RateLimitedException), which a caller
never caches as "nothing".
Documentation
- Installation and first calls
- Sources: what each can and cannot do
- Models and identifiers
- Occurrences: the things of a place and a period
- Datasets, requests, files
- Decisions: what the contract settled, and why
- Following cross-references, merging
- Symfony
- The Docker harness
Plain PHP
composer require omniscient/omnilab omnilab/pubchem omnilab/open-meteo omnilab/copernicus omnilab/chebi omnilab/wikidata
use Omnilab\Chebi\ChebiSourceFactory; use Omnilab\Copernicus\CopernicusSourceFactory; use Omnilab\OpenMeteo\OpenMeteoSourceFactory; use Omnilab\PubChem\PubChemSourceFactory; use Omnilab\Registry; use Omnilab\Wikidata\WikidataSourceFactory; use Symfony\Component\HttpClient\HttpClient; $http = HttpClient::create(); // or the application's client; a MockHttpClient in a test $registry = new Registry([new PubChemSourceFactory($http), new ChebiSourceFactory($http), new WikidataSourceFactory($http), new OpenMeteoSourceFactory($http), new CopernicusSourceFactory($http)], [ 'pubchem' => ['factory' => 'pubchem', 'options' => ['mailto' => 'you@example.org']], 'chebi' => ['factory' => 'chebi', 'options' => ['mailto' => 'you@example.org']], 'wikidata' => ['factory' => 'wikidata', 'options' => ['mailto' => 'you@example.org', 'language' => 'fr']], 'open-meteo' => ['factory' => 'open-meteo'], 'copernicus' => ['factory' => 'copernicus'], ]);
No bundle, no container: a factory per source package, the registry built by hand. docs/installation.md opens on a whole script that runs as it is, against the real services.
Symfony
Omnilab\Bridge\Symfony\OmnilabBundle does that wiring in a Symfony application
(docs/symfony.md); its components (symfony/config,
symfony/dependency-injection, symfony/http-kernel) are not required by this package.
omnilab: sources: pubchem: { factory: pubchem, options: { mailto: '%env(OMNILAB_MAILTO)%' } } chebi: { factory: chebi, options: { mailto: '%env(OMNILAB_MAILTO)%' } } wikidata: { factory: wikidata, options: { mailto: '%env(OMNILAB_MAILTO)%', language: fr } } meteo: { factory: open-meteo } air: { factory: open-meteo, options: { api: air_quality } } copernicus: { factory: copernicus }
public function __construct(SourceInterface $pubchem, SourceInterface $meteo, Collector $collector) {}
Docker: every source, for real
cd docker && cp .env.dist .env docker compose run --rm omnilab sources docker compose run --rm omnilab entity pubchem caffeine docker compose run --rm omnilab collect pubchem caffeine # then ChEBI and Wikidata, merged docker compose run --rm omnilab series open-meteo 48.5734,7.7521 temperature_2m --from tomorrow --to tomorrow docker compose run --rm omnilab products copernicus --point 48.5734,7.7521 --from=-10days --cloud 30 docker compose run --rm omnilab occurrences gbif --point -24.99,31.59 --radius 100 --from 2025-01-01 --to 2025-12-31 -f taxon=4CGXP docker compose run --rm omnilab bare # plain PHP: no bundle, no container, and what PHP loaded docker compose run --rm omnilab test
Responsibility
omniscient/omnilab and its omnilab/* providers are independent, unofficial clients: none is
affiliated with, endorsed by or sponsored by the services it reaches. Each service keeps its own
terms (licence of its data, attribution or citation, accounts and keys, rate limits, academic or
non-commercial restrictions), summed up in the "Terms of use" section of each provider's README.
The MIT licence covers this code only and grants no right to any service or to its data.
Whoever installs and runs these packages is responsible for complying with those terms, for obtaining whatever they require, and for any use made of what they return. The authors publish them free of charge, make no commercial use of them, and accept no liability for how they are used (see LICENSE).
License: MIT.