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.11.1.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.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl (104.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

heyoka-7.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl (101.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

heyoka-7.11.1-cp314-cp314-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

heyoka-7.11.1-cp314-cp314-manylinux_2_28_aarch64.whl (101.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

heyoka-7.11.1-cp313-cp313-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

heyoka-7.11.1-cp313-cp313-manylinux_2_28_aarch64.whl (101.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

heyoka-7.11.1-cp312-cp312-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

heyoka-7.11.1-cp312-cp312-manylinux_2_28_aarch64.whl (101.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

heyoka-7.11.1-cp311-cp311-manylinux_2_28_x86_64.whl (104.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

heyoka-7.11.1-cp311-cp311-manylinux_2_28_aarch64.whl (100.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

File details

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

File metadata

  • Download URL: heyoka-7.11.1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1.tar.gz
Algorithm Hash digest
SHA256 55803ad36b174657c68ddc70efa96f17d7ac26ff5b8e6f58e7fe4f9a986c61c0
MD5 7b8e69de6ede6f98947cb1f1589598c8
BLAKE2b-256 f9add617c29ad0cfae08b5f76a7f207fe3a8c62fe0d1d82f078c4c2aa3f8bd09

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.1 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 70241394e87787fac3e5d934a06cdb4252514ef9c8cb3bbfd9c1dc4858fa15f1
MD5 e606fd79c24f9549adffefb03fbe9602
BLAKE2b-256 bedaf7dc6f22b5452aa1cd25224ecb4f9dbfba45d5cffae45e327497a00c5368

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 101.0 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b4e070b53f5d66cadd82e2f4096ff5d9b6567acc21ada185437b51bf8cc475d1
MD5 4c0a9f55300359c372f1f3de87ea6438
BLAKE2b-256 aa9711e83e880ad1167698fd0cb8c8be4e6ad8cf0fec6cb3fb14bd40ff5b68a1

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp314-cp314-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 28a2a55111e274d5d4425be30a2904e5ebf3a27546bf614f1c107badb9966239
MD5 8af7fcd595e3942dd70f04d6c869d3bf
BLAKE2b-256 5089867c15df30bb10f1066622f560a937e47b3c8057c45f5ba9434799b7e82c

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp314-cp314-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 101.0 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6a9156629fc49553c10836292df626725ef7517a930d82a8644c7e07ed500c64
MD5 4543cccbc5a755f15cdfbe73f303e383
BLAKE2b-256 e3938a2c42ddd82e41c1ad14ec4345664a6cd989b3e2b51dc9b9eca55587e9a0

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4310bb86852f5b718f395e2d779d2ccd67046434b8551c61d64e68b8bea69e02
MD5 00d3b0b5f96c2770cdf9860bb2864770
BLAKE2b-256 bc57f8be2a47fe3b614bc738eedeb7469dd12d6c75590073777161a3a03e5b8c

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp313-cp313-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 101.0 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c3103e03c7403f3f610b377be2342ec0b83953f3bc650584e29e08183925b19f
MD5 af5da0b975080799fbc57d130d4d41d5
BLAKE2b-256 e7288c14fea8127269973acdc4d54948a459aafa42aad2e3ff27578c005a70a3

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d2c5271520cf73e89d2dd880780525570681131bcbf1d66da925817e0e98946f
MD5 b76254c92f0e107474c145258ce22309
BLAKE2b-256 0195706c0ceb3a4f6ef6ce547740e0e412454721ab994a17a68145342519a1b6

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp312-cp312-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 101.0 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6eb6bfc024eb5b386aa6631c50f22a12f1bbaf856b8a24ad09faa0c18074c96
MD5 91dcd700fc08178a6d91724fa9d457e9
BLAKE2b-256 5876c2eec425f0f76bf5426f0d2b28bc220e4fd675a0db93846c4e244333aed9

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 104.0 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6ce196c6ae39a1c0e52895c6607313f2b62dfce641924ce93e3fc27f22224736
MD5 b9cd5b3603b5bc1b1022a286d79ab404
BLAKE2b-256 af695951e4a2a53a438edf1441b0c08ac9cf16c66578e1cad8b661e05a21a0b2

See more details on using hashes here.

File details

Details for the file heyoka-7.11.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: heyoka-7.11.1-cp311-cp311-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 100.9 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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.11.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ded6122cfc38dffe71f0529cec6af4049947e4c469ad03c7710b661a05b787bb
MD5 6a5abb8deb7561b6fc27a9d7bcd0113f
BLAKE2b-256 a2fb2f75b020869715af15f0ae8c7f6ad259c4c49c74a3c5a4d6618aafa6a80a

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