Implementation of the template synthesis framework for cosmic-ray air showers
Project description
Welcome to the SMIET software
The SMIET (Synthesis Modelling In-air Emission using Templates) - pronounced as [smi:t], with a long "i" sound in the middle - implements the template synthesis algorithm. This framework is used to synthesise the radio emission from cosmic ray air showers using semi-analytical relations extracted from a set of Monte-Carlo showers. It is described in more detail in this publication.
This repository implements the operations necessary to perform the synthesis. We have two versions, one in plain Numpy and another one wrapped in JAX with higher performance. The latter is mostly meant to be used in the context of Information Field Theory.
Citing
If you use this software in a publication, please cite this publication and refer to this Zenodo entry for the code repository.
References
- M. Desmet, S. Buitink, T. Huege, K. Watanabe, "SMIET: Fast and accurate synthesis of radio pulses from extensive air shower using simulated templates", Astropart. Phys. 175 (2026) 103182, doi:10.1016/j.astropartphys.2025.103182, arXiv:2505.10459.
- M. Desmet, S. Buitink, T. Huege, D. Butler, R. Engel, and O. Scholten, "Proof of principle for template synthesis approach for the radio emission from vertical extensive air showers", Astropart. Phys. 157 (2024) 102923, doi:10.1016/j.astropartphys.2023.102923, arXiv:2307.02939
- Proceedings of ARENA22
- Proceedings of ICRC23
- Proceedings of ARENA24
Documentation
The online documentation can be found here.
Installation
The package is written in Python, so to use it, we recommended having a virtual environment to install it in. Since v0.5.0 the package is available on PyPI, so you can install simply by
pip install smiet
This will install the Numpy version of the package together with its dependencies. To get the JAX version, you can use the following command:
pip install smiet[jax]
This will install the necessary jax dependencies.
To get more up-to-date versions of the project, you can clone the develop branch of this repository.
From within the root of the local version of the repository, where the pyproject.toml file is located,
you can install the package using pip as
pip install -e .
The "editable" flag is recommended, such that after pulling the repository again, you do not have to
reinstall the package.
To install the JAX version, you can use the optional jax keyword,
pip install -e .[jax] # zsh users need to wrap argument in quotes: -e ".[jax]"
There is also the optional tests keyword, which will install matplotlib, and dev, which installs
the Sphinx packages necessary to build the documentation.
Dependencies
The lowest Python version with which we tested the package is Python 3.8. It might also work with Python 3.7, there are no big show stoppers in terms of packages.
These are the packages on which the Numpy version relies:
radiotoolsNumpyScipyh5pytyping-extensions
For the JAX version, the following packages will also be installed:
jaxjaxlibjax-radio-tools
Usage
A dedicated example repository is now available here. Once you have installed the package, you can try out the different examples placed there.
Support and development
In case of issues, please open an issue in this repository. You are also welcome to open merge requests in order to introduce changes. Any contributions are greatly appreciated!
For other inquiries, please contact mitja.desmet@vub.be or keito.watanabe@kit.edu.
Roadmap
Currently, the code contains all the classes necessary to load in sliced shower simulations and perform the template synthesis operations. These include normalisation of the amplitude spectra with respect to the geometry, as well as the arrival time shifts applied to the phase spectra. The next steps are now to:
- Add rigorous unit tests
- Improve the way in which showers and template information are stored
- Achieve parity between the Numpy and JAX versions
Authors and acknowledgment
We appreciate all who have contributed to the project.
- Mitja Desmet, for the development of the template synthesis algorithm and the Numpy implementation
- Keito Watanabe, for implementing the JAX version
- Ruben Bekaert, for suggesting changes to the Numpy interface
- Vital De Henau, for providing the functionality for reconstructing star-shapes from the vxvxB axis
License
This repository is licensed under the GPLv3.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smiet-0.8.0.tar.gz.
File metadata
- Download URL: smiet-0.8.0.tar.gz
- Upload date:
- Size: 4.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d4e20e967e4d0182e4f6dc3fe74ab4ec7a1e0441e6434ffd80b89c80cd3eb1a
|
|
| MD5 |
4c26327f0b88a115ba72d9d3ad9e8ed4
|
|
| BLAKE2b-256 |
4aee547c178b3310f8fea777c7d23f2904661da8d63a4761b411a267ee6ca255
|
File details
Details for the file smiet-0.8.0-py3-none-any.whl.
File metadata
- Download URL: smiet-0.8.0-py3-none-any.whl
- Upload date:
- Size: 125.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
087b18c234b09a5cc2803e889d8fc726ecbb2e235c417ec3cdc9df07ca20c875
|
|
| MD5 |
cdc81193ecec27c13b60123d5118f3e4
|
|
| BLAKE2b-256 |
f5ad659dbcfba963e7ebab45df4825a5de357d39460ccb15659c64dd43c74e2e
|