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

The heyókȟa [...] is a kind of sacred clown in the culture of the Sioux (Lakota and Dakota people) of the Great Plains of North America. The heyoka is a contrarian, jester, and satirist, who speaks, moves and reacts in an opposite fashion to the people around them.

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 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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

heyoka-6.1.2-cp313-cp313-manylinux_2_28_x86_64.whl (101.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.28+ x86-64

heyoka-6.1.2-cp312-cp312-manylinux_2_28_x86_64.whl (101.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

heyoka-6.1.2-cp311-cp311-manylinux_2_28_x86_64.whl (101.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

heyoka-6.1.2-cp310-cp310-manylinux_2_28_x86_64.whl (101.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

heyoka-6.1.2-cp39-cp39-manylinux_2_28_x86_64.whl (101.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

heyoka-6.1.2-cp38-cp38-manylinux_2_28_x86_64.whl (101.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for heyoka-6.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a2f1646b2f08bdf0248b82f73c4d4c2c0ddd92e5b3b6deb5c036891250dd237
MD5 e4150495dc3520a3756b9c58304777ba
BLAKE2b-256 81d6ebf0124520ba518620c88e20cc781f08a3f28c98f2336230eadb806cdded

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for heyoka-6.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7493f27add1194202a0b1cecd629511e7062f2774b539891d8a7def37506aca4
MD5 77c44b3e770eb416226423e754bd699b
BLAKE2b-256 18f5cf2c766bd4a1938174820371f06f3dae7d2fed83823f39ce3d1e7ae31b45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for heyoka-6.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c90d26ab490e31dfe38febbda9118c32cb1705807da4e2c6af46c73261a7e72e
MD5 78ba6d69f3ebe977e7ec0a00b54cfc27
BLAKE2b-256 40d1672e07ff3596fb8f85f3630575b691659e81794f4f4eafe0a4000bd68a60

See more details on using hashes here.

File details

Details for the file heyoka-6.1.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for heyoka-6.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 642aca03e1dc5ae7c0f9bb61990e1497b9a8bc7055f19a80501cd883903c2614
MD5 35ab94d73d152def760ee4564910f313
BLAKE2b-256 e1ffb4f3aae78c403ece4d3c55ea2cee37daec32c5edc944896bd95041ace0fb

See more details on using hashes here.

File details

Details for the file heyoka-6.1.2-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for heyoka-6.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 951787f2b63d24d4b03111b95f33c06798d37c110d69fba03636f541b9ee824c
MD5 4be68a2ca9e64baf2b98d5bab2b8d060
BLAKE2b-256 ab5e8c397346e6396dd61da29622cbc05fd2d5245a9f5a7894121b7997fb3243

See more details on using hashes here.

File details

Details for the file heyoka-6.1.2-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for heyoka-6.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 721313b5e25634bb8ae315e8d6e9b4d57bd01dd8f6165e5ff489396089afcc88
MD5 78b19cfaa0cf81725204f12a0bca4c70
BLAKE2b-256 63214c296259655fdd060a013f8bb4714bce14b500862324aa30372451ed5d62

See more details on using hashes here.

Supported by

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