HERMES is an open-source C++17 and Python framework for modelling Galactic radiative processes and producing reproducible, HEALPix-compatible sky maps.
Four repositories, one reproducible route from physical ingredients to publication-ready products.
| Repository | What lives there | Jump in | |
|---|---|---|---|
| 🧠 | hermes | The C++ engine, Python bindings, physical models, integrators, tests, and packaging. | |
| 📚 | hermes-docs | Searchable documentation, concepts, installation, API guidance, scientific practice, and developer notes. | |
| 🧪 | hermes-examples | Ready-to-run Python examples for maps, spectra, ingredients, plots, and scientific smoke tests. | |
| 🗄️ | hermes-data | Versioned runtime tables and astrophysical datasets, distributed as checksum-verified release archives. |
flowchart LR
CR["⚡ Cosmic rays"] --> LOS
GAS["☁️ Gas densities"] --> LOS
PF["🌈 Photon fields"] --> LOS
MF["🧲 Magnetic fields"] --> LOS
LOS["🧮 Interactions +\nline-of-sight integration"] --> MAP["🗺️ HEALPix maps\nand spectra"]
MAP --> SCI["🔬 Compare • validate • publish"]
style CR fill:#00c9ff,stroke:#0077b6,color:#001219
style GAS fill:#80ffdb,stroke:#00b894,color:#001219
style PF fill:#ffe66d,stroke:#ff9f1c,color:#001219
style MF fill:#c77dff,stroke:#7b2cbf,color:#ffffff
style LOS fill:#ff4d9d,stroke:#c9184a,color:#ffffff
style MAP fill:#ff9f1c,stroke:#e85d04,color:#001219
style SCI fill:#70e000,stroke:#38b000,color:#001219
HERMES combines physical source populations, three-dimensional Galactic ingredients, particle interactions, and robust numerical integration. The same pipeline can be driven from C++ or Python and produces maps that fit naturally into the wider astronomy ecosystem.
| Messenger | A few things HERMES can model |
|---|---|
| 🟣 Gamma rays | Neutral-pion decay, bremsstrahlung, inverse Compton emission, absorption, and dark matter |
| 🟠 Radio | Synchrotron, free-free emission and absorption, dispersion, and Faraday rotation |
| 🔵 Neutrinos & neutrons | Hadronic secondary yields and neutron-decay propagation |
| 🟢 Ingredients | Cosmic rays, neutral and ionized gas, photon fields, magnetic fields, and Galactic profiles |
🧑🍳 The cosmic recipe: choose a source population, add Galactic gas and radiation fields, season with an interaction model, integrate along every line of sight, and serve in HEALPix pixels.
There is no magic pip install spell yet—the current supported route is a
CMake build with optional Python bindings:
git clone https://github.com/HERMES-SkyMaps/hermes.git
cd hermes
cmake -S . -B build \
-DENABLE_PYTHON=ON \
-DENABLE_TESTING=ON \
-DDOWNLOAD_DATA=ON
cmake --build build --parallel
ctest --test-dir build --output-on-failureThe runtime dataset is deliberately versioned separately and is downloaded only when requested. For virtual environments, macOS details, offline data, installation, and verification, follow the installation guide.
- Runtime data are released independently with explicit versions and SHA-256 verification.
- Physical units are carried through the C++ type system.
- Unit, concurrency, analytic, and scientific regression tests guard numerical behaviour.
- Configurable resolution and integration settings make convergence studies a first-class workflow.
- Examples and documentation are plain, reviewable files—not knowledge hidden in one person's laptop.
Bug reports, physical-model discussions, regression cases, documentation improvements, and new examples are welcome.
- Read the developer guide.
- Search or open a HERMES issue.
- Keep code, tests, documentation, examples, and data changes in their natural repositories.
- Send a focused pull request and tell us what scientific result should remain invariant.
If HERMES contributes to your work, please cite Dundovic, Evoli, Gaggero & Grasso, “Simulating the Galactic multi-messenger emissions with HERMES” (A&A) and the ASCL entry.