Skip to content

Releases: pnkraemer/probdiffeq

v0.8.2

14 Nov 11:02
c7fb713

Choose a tag to compare

What's Changed

Other Changes

Full Changelog: v0.8.1...v0.8.2

v0.8.1

14 Nov 10:44
9895165

Choose a tag to compare

What's Changed

Improvements to the documentation

Internals

Full Changelog: v0.8.0...v0.8.1

v0.8.0

11 Sep 14:29
75b69d9

Choose a tag to compare

This is a relatively big release, because it adds a range of new features and breaks some old APIs.

Highlights:

  • Pytrees: ODEs can be defined over arbitrary pytrees now. This enables, for example, simulating discretised PDEs as matrix-valued ODEs (avoiding flattening and unflattening arrays at each stage)
  • New solvers: Probdiffeq offers blockdiagonal and isotropic TS1 solvers. They behave like the TS0 solvers, but yield more visually pleasing uncertainties. These solvers are partly experimental, so feedback is appreciated. (There is little reason to use TS0 now btw).
  • PDE demo: To demo the above two changes, probdiffeq's docs now contain a PDE solver tutorial. This tutorial replicates Figure 1 in https://arxiv.org/abs/2110.11812.
  • IWPs: The integrated Wiener process is no longer called "ibm" but now it's a "prior_wiener_integrated".
  • Numerical stability: all tests and examples are run in single precision

Beyond this, some internals have been simplified. Existing code should be really easy to update -- consult the quickstart or any of the examples for details.
For more details on the changes, consult the changelog below.

What's Changed

Breaking changes

  • Move clipping from the controller to the adaptive solver by @pnkraemer in #825
  • Rename prior_ibm to prior_wiener_integrated and simplify the initial state by @pnkraemer in #827
  • Move vector field from solution routines to corrections by @pnkraemer in #829

New features

Internals

Other Changes

Full Changelog: v0.7.2...v0.8.0

v0.7.2

05 Sep 07:38
9c2a6b8

Choose a tag to compare

What's Changed

New features

Improvements to the documentation

Full Changelog: v0.7.1...v0.7.2

v0.7.1

01 Sep 06:27
0b46bad

Choose a tag to compare

What's Changed

New features

  • Improve some documentation and make minor usability adjustments by @pnkraemer in #816

Full Changelog: v0.7.0...v0.7.1

v0.7.0

28 Aug 13:21
635669f

Choose a tag to compare

What's Changed

Breaking changes

  • Bump python versions to match JAX's requirements by @pnkraemer in #815

Improvements to the documentation

  • Update the citation info for solve_adaptive_save_at by @pnkraemer in #814

Full Changelog: v0.6.3...v0.7.0

v0.6.3

04 Apr 14:46
bda853d

Choose a tag to compare

What's Changed

Bugfixes

Other Changes

New Contributors

Full Changelog: v0.6.2...v0.6.3

v0.6.2

27 Mar 12:28
3f6d189

Choose a tag to compare

This release contains a fix to a dependency-related problem (#810) in the previous release.

What's Changed

  • Include typing-related extensions as dependencies by @pnkraemer in #812

Full Changelog: v0.6.1...v0.6.2

v0.6.1

06 Mar 06:25
d6688bd

Choose a tag to compare

This PR mainly contains a bugfix (#808): previously, solution.u_std was incorrect (as visible through its wrong shape). Now, it's corrected (and tested).

What's Changed

New features

  • Ensure that solution.u_std and solution.u have the same shapes to fix an error by @pnkraemer in #808
  • Document the solution object and make it public by @pnkraemer in #809

Improvements to the documentation

  • Update the CI explanation in the docs (it's been a while) by @pnkraemer in #807

Full Changelog: v0.6.0...v0.6.1

v0.6.0

05 Mar 07:16
4aa70ce

Choose a tag to compare

This release improves Probdiffeq's API considerably. Hard-to-access quantities, such as standard deviations of the solution estimate, are now accessible. Global states have been removed, making the library more predictable and "hackable." Some of these changes are not backwards-compatible, but they should be easy to fix (see below).

Key updates:

  • Improved access to derivatives, standard deviations, and samples (#786)
  • More robust initialisation: ode_shape and num_derivatives are now determined automatically. Simply compute the Taylor coefficients and use them to initialise the SSM (#786).
  • Simplified API: The solution object is no longer iterable (#800).
  • Cleaner solver instantiation: Instead of solver(strategy(prior, correction)), use solver(strategy, prior, correction).
  • Updated Python support: Now compatible with Python 3.12+ (dropped support for 3.9 to align with JAX's policy).

Refer to the PR descriptions below or check the updated documentation for guidance on resolving breaking changes. Most issues should be easy to fix, but feel free to reach out if needed.

What's Changed

Breaking changes

  • Turn tcoeffs into arguments to prior_ibm to reduce error potential by @pnkraemer in #785
  • Remove the need for declaring ode_shape and num_derivatives before simulating by @pnkraemer in #786
  • Separate strategies from priors and corrections by @pnkraemer in #797
  • Move ivpsolve.adaptive and ivpsolve.control* to ivpsolvers because they are solver components by @pnkraemer in #798
  • Remove iterability from the Solution object because it is mathematically ill-defined by @pnkraemer in #800

New features

  • Increase python versions to include 3.12 and 3.13, and to match JAX's minimum requirement by @pnkraemer in #804

Improvements to the documentation

  • Add release.yaml to custom-format release notes by @pnkraemer in #803
  • Add 'general troubleshooting' and 'Pleiades-NaNs' to the troubleshooting site by @pnkraemer in #805

Internals

  • Replace probdiffeq.util.linop_util with jax.Arrays to improve hackability by @pnkraemer in #787
  • Use vulture to detect dead code and remove what the command found by @pnkraemer in #788
  • Flatten the directory structure in the tests to mirror the module structure in the source by @pnkraemer in #789
  • Remove the pytest-coverage setup because we don't use it (and haven't for a while) by @pnkraemer in #790
  • Internal: Simplify the implementation of extrapolations by @pnkraemer in #791
  • Internal: Reduce unnecessary complexity in correction code by @pnkraemer in #792
  • Internal: Condense strategies into a single class to simplify the source-code by @pnkraemer in #793
  • Internal: Simplify the probabilistic-solver implementation by @pnkraemer in #794
  • Internal: Move error-scaling (by the error contraction rate) outside of the controller implementations by @pnkraemer in #795
  • Internal: Improve function order in ivpsolvers.py and remove residual pytest-cov references by @pnkraemer in #796
  • Internal: Remove private select-style functions because we have easier ways of accessing derivatives now by @pnkraemer in #799

Other Changes

Full Changelog: v0.5.1...v0.6.0