Skip to main content

Python library for ODE integration via Taylor's method and LLVM

Project description

heyoka.py

Build Status Build Status

Anaconda-Server Badge PyPI


Logo

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heyoka-7.9.2.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

heyoka-7.9.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (102.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

heyoka-7.9.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (99.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

heyoka-7.9.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (102.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

heyoka-7.9.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (99.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

heyoka-7.9.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (102.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

heyoka-7.9.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (99.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

heyoka-7.9.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (102.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

heyoka-7.9.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (99.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

heyoka-7.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (102.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

heyoka-7.9.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (99.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file heyoka-7.9.2.tar.gz.

File metadata

  • Download URL: heyoka-7.9.2.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2.tar.gz
Algorithm Hash digest
SHA256 2e781e8e25d5327d6df7adae85bfbb28e9254a893a77d4e47dd74180f6fcf89c
MD5 a60cee5efb4d55e6fa39d0deadf9c1c0
BLAKE2b-256 d7f8743abc53406a99f69697c1bb915c3def08c726aa4078f896d099266447e7

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 102.4 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0539a72d4275a21e4e39da4cb454d839cf21da26c9529ff5c644fea130b83253
MD5 f815091e6a4439f1cc9ec95d4978d4b3
BLAKE2b-256 31da436f1741d38ce4823842be0d7b51e5e881ccce63f4de9630d97fdd964040

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 99.5 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5832eef376323548ee5f8eb87f5e14a5f7cf98404d5eb1ed2c621866a32b3496
MD5 f20cad9427c334ebcf8688f8a2a46e24
BLAKE2b-256 3b4ee12f63e3a360d8b64ba291e71f8a1cb882a3db01c2de110d95aad6b5f2ba

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 102.4 MB
  • Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a1c80d3ca2db37321d8bc3ca5b1c02213b1062957a8e90e5cdabfea0e90e103
MD5 0fa070d25723229bdadc7f4488a7afc2
BLAKE2b-256 971e30c87607eb74785a0037fcda73f32edd9bd93f640f5eb91385842191912c

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 99.5 MB
  • Tags: CPython 3.14, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5714afe8bfa614df5f620abcab7e8e7d36e769238cc8a97ab7dd12a1c097b6f2
MD5 27f3c9c9895056da97157cde6953770b
BLAKE2b-256 268855917ce7dc601de616dae3980fc956923885de927c916e9b2b57dea61d53

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 102.4 MB
  • Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c06d9a2b817a9a87869e1371844b291c879f7778ce8bc9a1ebef3a2a391589d0
MD5 a1c07f9822465730f1178c8136bf7383
BLAKE2b-256 826d212591e20818dbff33f204e78b688b0936270d76369c684d46e2cc21e9ae

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 99.5 MB
  • Tags: CPython 3.13, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6efff4b1a92f0faf83f9d9f54b535cb41696338c840bc1847814151fe5e7ee23
MD5 e7f7f3b8493d89d6e9126ac45c4bffe7
BLAKE2b-256 e8f3cb5f6584c94df2402c7baa4d9b8cb83755e280e542af1e316336ed49ed35

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 102.4 MB
  • Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 332d8246f40d721ce9fc71f66e47205381da089fdce8f0f72e635cf0a3709f71
MD5 e2bb0efe0f549a31b2f8b2db3f13dd53
BLAKE2b-256 6c1060df485bd913134f03bd10d389b694e5a0a686f80d80d141eebcacaeaf16

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 99.5 MB
  • Tags: CPython 3.12, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e1cd3c417a0f274bb715cb49f45ad44d20c0f3a8fa4b923b5548c934fba25aa5
MD5 4b131953213681a78a3e474ee51f4f44
BLAKE2b-256 819aa147b711bbd3dbb5f20399a4d1a4ea08512c1ddd559e8273f707f78c6195

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 102.4 MB
  • Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa53c5e1db2a3596cceaf3f45a8b6338577a7961cb9c5349704a6162873e418f
MD5 0cd2d05a9f4b4dd8c95e4c332ea2e4fd
BLAKE2b-256 6e876ad8d9ace8ba7f8b433fac6e5f996d6cd78dfeef67acd6751922c66b44c8

See more details on using hashes here.

File details

Details for the file heyoka-7.9.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.9.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 99.4 MB
  • Tags: CPython 3.11, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","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}

File hashes

Hashes for heyoka-7.9.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 24a7ba765bad70dc7d80dbb67d01fb07c5006de40c56c614190ea10cd078c6c3
MD5 6269a1869b234d22ba1e8e9db44810fe
BLAKE2b-256 f8ff4a15a9d06bf3171ab3cfded04e410069f518196d0ff7dee03230d9e54171

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page