The Zephyr Ecosystem¶
Zephyr is made up of four repositories that work together to take a user from “I want this subset of this dataset” to a downloaded NetCDF file:
flowchart LR
A[iac-metadata] -->|dataset metadata JSON| B[zephyr-frontend]
B -->|user builds request| C[zephyr-request]
C -->|processes request| D[zephyr]
D -->|output .nc files| E[User]
Repository |
Purpose |
|---|---|
Web application where users browse available datasets and configure their extraction request. Downloads a JSON request file. See Using the Web Interface. |
|
GitHub Issues-based request tracking. Users submit their JSON file as an issue; a GitHub Actions pipeline processes it on |
|
Core extraction engine. Reads a JSON request, finds the matching files, extracts data, saves NetCDF output. See Installation and Running an Extraction. |
|
Scans the datasets on the server and generates the JSON metadata files consumed by the frontend’s dataset browser (available variables, date ranges, file sizes). |
Note
🔒 These repositories are private and require access to the C2SM GitHub organization.
How the repos connect¶
iac-metadata → Frontend (metadata). Scheduled GitHub Actions workflows in
iac-metadataperform a daily scan of the datasets on/net/atmos/dataand copy the resulting JSON files to/net/co2/c2sm-services/zephyr/file_index, served at https://data.iac.ethz.ch/zephyr/file_index/. The frontend reads these JSONs to populate the dataset browser.Frontend → Zephyr-request. After configuring a request, users generate a JSON file from the frontend and open an issue in
zephyr-request, inserting the JSON.Zephyr-request → Zephyr. A GitHub Actions pipeline runs
launch_zephyr.pyoniacdipl-7.ethz.ch, passing the JSON path, the output directory, thezephyr-requestversion, and the GitHub issue ID. The version and issue ID are embedded as attributes in the output NetCDF files for traceability. A download link is posted back to the issue.Self-service. Users with access to the IAC servers can skip
zephyr-requestentirely and runzephyrdirectly — see Installation and Running an Extraction.
Two ways to get your data¶
Whichever path you take, you always end up building the same JSON request (see Request JSON Format) — the two options differ only in who runs the extraction:
You want |
Do this |
|---|---|
No account/login on IAC servers, and are fine posting a GitHub issue |
Build a request in zephyr-frontend, download the JSON, open an issue in zephyr-request (Using the Web Interface) |
Access to an IAC machine (e.g. |
Install |