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.2
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.2.tar.gz | 1.7 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| heyoka-7.13.2-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.2-cp314-cp314t-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.2-cp314-cp314-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.2-cp314-cp314-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.2-cp313-cp313-manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.2-cp313-cp313-manylinux_2_28_aarch64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.2-cp312-cp312-manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.2-cp312-cp312-manylinux_2_28_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ ARM64 | Details |
| heyoka-7.13.2-cp311-cp311-manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64 | Details |
| heyoka-7.13.2-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.2.tar.gz
| Download URL | heyoka-7.13.2.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
90700ffb2ac9a801d61cd8d73076e2eb69c91097154a1e80a52084fba7405de6
|
|
BLAKE2b-256 checksum How to use checksums |
32013fb5769e90246ea12ee83ec8f1ce72a4771210ae89201233771589982b41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp314-cp314t-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.2-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 |
1be991180549b50770ed60dc6cb2e8332b7ffc250fef4a688f19b791733ceff1
|
|
BLAKE2b-256 checksum How to use checksums |
1545ad0dee64171cdb1ceadf727a0739147452a04363035abb5340056be7ccd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp314-cp314t-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.2-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 |
ba3df6ca67156a57a47cb418047da3e06e84a0054ae71b34d2bdd81ebb6c6fe8
|
|
BLAKE2b-256 checksum How to use checksums |
e58d9ef5430a404c104d1c2cbee2b3a87a7c6b9987aeaa604a52c4d6472e7561
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.2-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 |
03a924d88c6e7cc2b42e59691177c06499bb0dffb57059c16a1462ee764a3c10
|
|
BLAKE2b-256 checksum How to use checksums |
a52e9b627f69cf311ce244f3297529b0b8d6d70781d1a92340e55d21c566fcbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.2-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 |
ff23e457fd00bf8a0693864073043f0df8e0118c3e055182ca84e28f6b000983
|
|
BLAKE2b-256 checksum How to use checksums |
aaeca23b3448c014b9da5005a5f9964b8eae755ddbeca114a7d5f0b92eb3a05a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.2-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 |
b8cdc7f99100f1dc020137e290083e69708fdf74fe924283c8a8aa645712dcf6
|
|
BLAKE2b-256 checksum How to use checksums |
f929fbf6d2c545d785e89c0c28038cfa5893b7b25b1e4ef8b127dbf463a621b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.2-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 |
1ba5b9494fec938b8322329eddc3cd6ff9a6b477e1951594b765bfff32852d72
|
|
BLAKE2b-256 checksum How to use checksums |
3955fb5ab7bbba55f2ef80eaa495fc9e79c7a171e0af2a0aede798d370f947ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.2-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 |
c2b537f6d1768b74fdc1a2c19d39f8620248ba64f9f0923faeea5791ccd2732e
|
|
BLAKE2b-256 checksum How to use checksums |
7e8a4859829f55af43bf596694a8f1b460b8ef5333e57e217ae3893550a35e88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.2-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 |
08a0c4e5c577bfb069763043a832002304ca59388e49af22121c528b9fdb4307
|
|
BLAKE2b-256 checksum How to use checksums |
6294f6f4037fac7e2a2a2a455eacebd078fe9d5572ba570ac45ac48e6200c47a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | heyoka-7.13.2-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 |
d8ebf379ef17f6cdba2ba8c57716866dd4ac59c4c6ec9d79a3d647d22dce22c4
|
|
BLAKE2b-256 checksum How to use checksums |
fcd6941fa3e3a544d43768902c222f1619dc59b63016faba3500a8991e6d7312
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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.2-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | heyoka-7.13.2-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 |
b2d3d0936a7bd8d6a8edf77bd14caf445bb88de29b53e91f457d8cee846c073e
|
|
BLAKE2b-256 checksum How to use checksums |
2e2b20ed3987fcde30c1d1c23f348af8115d8269fd68214b1daf49302549c6e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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}
|