Skip to main content

No project description provided

Project description

tornadox

Lightweight, probabilistic ODE solvers. Fast like the wind. 🌪️ Powered by JAX.

Installation

Install tornadox via

pip install tornadox

Or get the most recent version from source:

pip install git+https://github.com/pnkraemer/tornadox.git

Usage

Use tornadox as follows.

import jax.numpy as jnp
from tornadox import ek0, ek1, init, step, ivp

# Create a solver. Any of the following work. 
# The signatures of all solvers coincide.
solver1 = ek0.KroneckerEK0()
solver2 = ek0.ReferenceEK0(num_derivatives=6)
solver3 = ek1.ReferenceEK1(initialization=init.TaylorMode())
solver4 = ek1.DiagonalEK1(initialization=init.RungeKutta())
solver5 = ek1.ReferenceEK1(num_derivatives=5, steprule=step.AdaptiveSteps())

# Solve an IVP
vdp = ivp.vanderpol(t0=0., tmax=1., stiffness_constant=1.0)

for solver in [solver1, solver2, solver3, solver4, solver5]:
    
    # Full solve
    print(solver)
    solver.solve(vdp)
    solver.solve(vdp, stop_at=jnp.array([1.2, 1.3]))
    
    # Only solve for the final state
    solver.simulate_final_state(vdp)
    
    # Or go straight to the generator
    for state, info in solver.solution_generator(vdp):
        pass
    print(info)
    
    print()

Citation

The efficient implementation of ODE filters is explained in the paper (link)


@InProceedings{pmlr-v162-kramer22b,
  title = 	 {Probabilistic {ODE} Solutions in Millions of Dimensions},
  author =       {Kr{\"a}mer, Nicholas and Bosch, Nathanael and Schmidt, Jonathan and Hennig, Philipp},
  booktitle = 	 {Proceedings of the 39th International Conference on Machine Learning},
  pages = 	 {11634--11649},
  year = 	 {2022},
  editor = 	 {Chaudhuri, Kamalika and Jegelka, Stefanie and Song, Le and Szepesvari, Csaba and Niu, Gang and Sabato, Sivan},
  volume = 	 {162},
  series = 	 {Proceedings of Machine Learning Research},
  month = 	 {17--23 Jul},
  publisher =    {PMLR},
  pdf = 	 {https://proceedings.mlr.press/v162/kramer22b/kramer22b.pdf},
  url = 	 {https://proceedings.mlr.press/v162/kramer22b.html}
}

Please consider citing it if you use this repository for your research.

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 Distribution

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

tornadox-0.0.2-py3-none-any.whl (53.6 kB view details)

Uploaded Python 3

File details

Details for the file tornadox-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: tornadox-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 53.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for tornadox-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 532acf4f3a1718499ac3dd8a3fb4fa7a6b93d855a3d9e4cda7ddac0f9833eef5
MD5 8638ca2b970eadf39b6d734c23d0e19c
BLAKE2b-256 37ba794f3067c6fb8a67928772a7bb3437b618d2c3cbcc65747a4414c3b9a8a2

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