heyoka.py
Modern Taylor's method via just-in-time compilation
Explore the docs »
Report bug
·
Request feature
·
Discuss
heyoka.py is a Python library for the integration of ordinary differential equations (ODEs) via Taylor's method, based on automatic differentiation techniques and aggressive just-in-time compilation via LLVM. Notable features include:
- support for single-precision, double-precision, extended-precision (80-bit and 128-bit), and arbitrary-precision floating-point types,
- high-precision zero-cost dense output,
- accurate and reliable event detection,
- builtin support for analytical mechanics - bring your own Lagrangians/Hamiltonians and let heyoka.py formulate and solve the equations of motion,
- builtin support for operational Earth-orbiting spacecraft analysis, including frame transformations, high-fidelity geopotential models, Earth Orientation Parameters (EOP), atmospheric models, space weather effects, ephemeris-based third-body perturbations,
- builtin support for high-order variational equations - compute not only the solution, but also its partial derivatives,
- builtin support for machine learning applications via neural network models,
- the ability to maintain machine precision accuracy over tens of billions of timesteps,
- batch mode integration to harness the power of modern SIMD instruction sets (including AVX/AVX2/AVX-512/Neon/VSX),
- ensemble simulations and automatic parallelisation,
- interoperability with SymPy.
heyoka.py is based on the heyoka C++ library.
If you are using heyoka.py as part of your research, teaching, or other activities, we would be grateful if you could star the repository and/or cite our work. For citation purposes, you can use the following BibTex entry, which refers to the heyoka.py paper (arXiv preprint):
@article{10.1093/mnras/stab1032,
author = {Biscani, Francesco and Izzo, Dario},
title = "{Revisiting high-order Taylor methods for astrodynamics and celestial mechanics}",
journal = {Monthly Notices of the Royal Astronomical Society},
volume = {504},
number = {2},
pages = {2614-2628},
year = {2021},
month = {04},
issn = {0035-8711},
doi = {10.1093/mnras/stab1032},
url = {https://doi.org/10.1093/mnras/stab1032},
eprint = {https://academic.oup.com/mnras/article-pdf/504/2/2614/37750349/stab1032.pdf}
}
heyoka.py's novel event detection system is described in the following paper (arXiv preprint):
@article{10.1093/mnras/stac1092,
author = {Biscani, Francesco and Izzo, Dario},
title = "{Reliable event detection for Taylor methods in astrodynamics}",
journal = {Monthly Notices of the Royal Astronomical Society},
volume = {513},
number = {4},
pages = {4833-4844},
year = {2022},
month = {04},
issn = {0035-8711},
doi = {10.1093/mnras/stac1092},
url = {https://doi.org/10.1093/mnras/stac1092},
eprint = {https://academic.oup.com/mnras/article-pdf/513/4/4833/43796551/stac1092.pdf}
}
Installation
Via pip:
$ pip install heyoka
Via conda + conda-forge:
$ conda install heyoka.py
Documentation
The full documentation can be found here.
Authors
- Francesco Biscani (European Space Agency)
- Dario Izzo (European Space Agency)
License
heyoka.py is released under the MPL-2.0 license.
Release files for heyoka 7.13.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| heyoka-7.13.1.tar.gz | 1.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| heyoka-7.13.1-cp314-cp314t-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.1-cp314-cp314t-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.1-cp314-cp314-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.1-cp314-cp314-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.1-cp313-cp313-manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.1-cp313-cp313-manylinux_2_28_aarch64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.1-cp312-cp312-manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.1-cp312-cp312-manylinux_2_28_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.1-cp311-cp311-manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.1-cp311-cp311-manylinux_2_28_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ ARM64 | Details |
Total release size: 1.0 GB
Release files / heyoka-7.13.1.tar.gz
| Download URL | heyoka-7.13.1.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c18f5d0f385b00b779e7b5e12efdda535330d0028dce74f7040cfb34ed459cb
|
|
BLAKE2b-256 checksum How to use checksums |
a1cebc2324edef332a7eb434d1ab9d277efc9c797b595ada886bda782477bc3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp314-cp314t-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.1-cp314-cp314t-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 104.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d4ccc96331c6690107c65a4a422c7a46e09c118e5f194dc3116d20dc50e0c1ff
|
|
BLAKE2b-256 checksum How to use checksums |
b0a614e11bd8a385187c2defe89a7aa4e1a1b6a74c98ed3796cab40381ed4b94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp314-cp314t-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.1-cp314-cp314t-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 100.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
218210559bc708e1e498223f62d569e248036cb9ef77d22f01764b3b424c25e2
|
|
BLAKE2b-256 checksum How to use checksums |
055425740fde309abe170a04e94f11e5418d92142d652cd8b3b9b513e5035945
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.1-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 103.9 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5c927f27e1fe29ed38c0d9927008c822debce7366d3bb451dafe00718f5d71a7
|
|
BLAKE2b-256 checksum How to use checksums |
d589950a86d6e8dea497176f440e8d134cf1f4393982fc24515566a35d082484
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.1-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 100.1 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
9a9de1d86789f849614625a8eab54996e4f75f7f4e49b24e5429e8a790f93698
|
|
BLAKE2b-256 checksum How to use checksums |
a61798825dcb547d4ec741e93fdf90c48865533b1680df3a3ba3a9e9ed06a06d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.1-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 103.9 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
60bf3d03a8cdbef5a5dac148db649231b6a3e811f9cdbe811bcea3bc54fff750
|
|
BLAKE2b-256 checksum How to use checksums |
4623ad6a0c4e775755b1e6c2e182f0010455398195503ac56b9b5c45cde7de4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.1-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 100.1 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
21c716f604b8cfc60c289a99042434c641338fbfe3b516966e779474c39a7bbe
|
|
BLAKE2b-256 checksum How to use checksums |
3d96d3312169dae03ad7c1c3176b78dadf0824868fcfd1cc79b0cacaa0379f4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.1-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 103.9 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a7fe57a0bf1122595ff19ff6a1013737f055db79f3bfb55b9bee16596729ffd7
|
|
BLAKE2b-256 checksum How to use checksums |
e9e9cbfdc24c30a721a9ab9e05c7d0855b84b876b030fa9678ffe7517ff59a02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.1-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 100.1 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d7faf9909c15526a5210584afbd012e2ed7687a04c3645bdfc7973112e9472b9
|
|
BLAKE2b-256 checksum How to use checksums |
797ebf42993d3357f8f9864c2b716d54c38e2aa4eedd8e574d293a8c877efa92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.1-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 103.9 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
72b54be68fec21abf903dfed26eaa52fe43a74e371f28def6c1264b3f18900ca
|
|
BLAKE2b-256 checksum How to use checksums |
b148bda8064a460f3d81aba0af901ea48773a6ae727df80835d541bc25fc1574
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / heyoka-7.13.1-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.1-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 100.0 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
cd3dcaa420a7fb69c15f95dbcefb63ec9cf30ce3247766a7d44a19799eb3686d
|
|
BLAKE2b-256 checksum How to use checksums |
4e291a6db38f7121c5e8cb4be8fc1b94b15db8c879e4e7852c17962adc051233
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|