Releases: pnkraemer/probdiffeq
v0.5.1
What's Changed
- Add the citation information for solve_and_save_at by @pnkraemer in #783
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
- Condense the directory structure of
probdiffeq.impl
by @pnkraemer in #764 - Move the
Conditional
type fromutil.cond_util
toimpl._conditional
by @pnkraemer in #765 - Delete the changelog because it hasn't been used by @pnkraemer in #766
- Move content of
impl.variable
toimpl.stats
by @pnkraemer in #767 - Move the content of
util.ibm_util
toimpl.ssm_util
because it is only used there (and not public API) by @pnkraemer in #768 - Move
probdiffeq.impl
methods around to improve independence by @pnkraemer in #769 - Replace
tests.setup
with a pytest fixture by @pnkraemer in #770 - Implement a custom JVP for triangularisation for qr(..., mode="r") to remove a hacky conditional by @pnkraemer in #771
- Remove the *.t property from the adaptive state because it contains two time-points, not one by @pnkraemer in #772
- Rename
*_right_corner
tointerpolate/extract_at_t1
to clarify that it implements a special case of extract/interpolate by @pnkraemer in #773 - Make the InterpRes into a dataclass and rename the fields to improve clarity by @pnkraemer in #774
- Delete an unused function by @pnkraemer in #775
- Internals: Make the constructors in ivpsolvers.py more functional by @pnkraemer in #776
- Internals: Stop accessing solver.strategy.extrapolation.num_derivatives inside ivpsolve.py by @pnkraemer in #777
- Internals: stop registering controllers as Pytrees since controllers are parameter-free by @pnkraemer in #778
- Internals: Implement the uncalibrated solver via the calibrated solver with empty calibration by @pnkraemer in #779
- Internal: Delete unused code by @pnkraemer in #780
- Make clip/no-clip an argument to the controllers to reduce code duplication by @pnkraemer in #781
- Clarify methods' namespaces in ivpsolve.py by @pnkraemer in #782
Full Changelog: v0.4.1...v0.5.0
v0.4.1
This release contains a small bug fix regarding probdiffeq's dependencies. See #762 for context.
What's Changed
- Use local imports in backend.ode to avoid diffeqzoo & diffrax dependencies by @pnkraemer in #763
Full Changelog: v0.4.0...v0.4.1
v0.4.0
This release is a slightly bigger deal than the previous ones because it regroups probdiffeq's API and significantly reduces the number of required imports. This should lead to a much more pleasant user experience. This release breaks existing code.
What has changed?
TL;DR: closely related modules have been merged, and some functions have a new name (required by these merges); consult the API docs (https://pnkraemer.github.io/probdiffeq/). See #747 for context. All renamings and reorderings improve the clarity of the code.
Probdiffeq's content/functionality remains the same as before the change, so after updating the imports, all code should run as before. If not, reach out!
What's Changed
- Make the doc-build strict to undo an accidental change from an earlier commit by @pnkraemer in #743
- Move all content of
probdiffeq.control
toprobdiffeq.adaptive
by @pnkraemer in #745 - Move the content of
probdiffeq.timestep
toprobdiffeq.ivpsolve
because they are always used together by @pnkraemer in #746 - Delete the timestep.py module because it should have been deleted in a previous PR by @pnkraemer in #749
- Move discrete filters to
util
to separate them from the ODE solver strategies by @pnkraemer in #748 - Regroup
solvers.uncalibrated
andsolvers.calibrated
insolvers.solvers
because they share a lot of code by @pnkraemer in #750 - Move strategies from package to module since they share most code by @pnkraemer in #751
- Remove the kwargs from jnp.reshape for compatibility with older JAX versions by @pnkraemer in #752
- Move solver-components from package to a single module because we always need one of each by @pnkraemer in #753
- Correct the quickstart-link in the readme by @pnkraemer in #754
- Combine
solvers.markov
andsolvers.solution
because they are closely related by @pnkraemer in #755 - Move strategies to components to clarify the solver-construction by @pnkraemer in #756
- Move the content of adaptive to ivpsolve because they are always used together by @pnkraemer in #757
- Combine solvers and components to clarify how to build an ODE solver by @pnkraemer in #758
- Hide markov_rescale_cholesky because it is only used inside calibrate() and should not be user-facing by @pnkraemer in #759
- Add citation information to the readme by @pnkraemer in #761
- Regroup the content of the taylor-subpackage in a taylor-module by @pnkraemer in #760
Full Changelog: v0.3.4...v0.4.0
v0.3.4
This release fixes some issues that arised because dependencies had API changes.
The only user-facing difference is that deprecation warnings have been removed. See the changelog below for information.
What's Changed
- Update the jax.config usage to adhere to the new API and fix the doc-build by @pnkraemer in #741
- Rename the input to jnp.reshape to adhere to the new API by @pnkraemer in #740
- Update the pre-commit hook (and fix deprecations) to modernise the CI by @pnkraemer in #742
Full Changelog: v0.3.3...v0.3.4
v0.3.3
This release mostly affects Probdiffeq's internals. The only user-facing change is that now, the choice of while-loop in the solution routines can be temporarily overwritten. One application is constructing reverse-mode differentiable yet adaptive IVP solvers. Consult the tutorials for an example.
What's Changed
- Merge IVP-solution modules by @pnkraemer in #679
- Remove *.ipynb files from version control by @pnkraemer in #680
- Merge linting and formatting behaviour by @pnkraemer in #681
- Unify the names of benchmark-related commands in the makefile by @pnkraemer in #682
- Include example CI in doc CI by @pnkraemer in #683
- Automate readme and index equality by @pnkraemer in #684
- Implement backend.control_flow.scan by @pnkraemer in #685
- Implement backend.functools.vmap by @pnkraemer in #686
- Implement backend.control_flow.cond by @pnkraemer in #687
- Implement backend.functools.jit by @pnkraemer in #688
- Implement backend.linalg.qr_r by @pnkraemer in #689
- Implement backend.random by @pnkraemer in #690
- Implement backend.linalg.cholesky_lower by @pnkraemer in #691
- Implement backend.numpy factorial by @pnkraemer in #692
- Implement backend.functools.jet by @pnkraemer in #694
- Implement backend.numpy.arange by @pnkraemer in #695
- Implement backend.linalg.{vector, matrix}_norm by @pnkraemer in #693
- Implement backend.numpy.ndim by @pnkraemer in #696
- Implement backend.tree_util by @pnkraemer in #697
- Remove an 'Iterator' type hint by @pnkraemer in #698
- Replace a reference to jax.tree_map with tree_util.tree_map by @pnkraemer in #700
- Implement backend.numpy.{minimum, maximum} by @pnkraemer in #699
- Implement backend.numpy.{where, abs} by @pnkraemer in #701
- Implement backend.linalg.solve_triangular by @pnkraemer in #702
- Implement backend.numpy.{finfo_eps, diff} by @pnkraemer in #703
- Implement backend.numpy.{asarray, squeeze, squeeze_along_axis} by @pnkraemer in #704
- Implement backend.linalg.cholesky_solve and rename cholesky_lower to cholesky_factor by @pnkraemer in #705
- Implement backend.numpy.{atleast_1d, concatenate} by @pnkraemer in #706
- Implement backend.numpy.{ones_like, inf, sqrt} by @pnkraemer in #708
- Implement backend.typing.Array by @pnkraemer in #707
- Implement backend.numpy.{zeros_like, eye} by @pnkraemer in #709
- Replace all remaining jnp.* calls with backend.numpy.* calls by @pnkraemer in #710
- Remove unused imports from probdiffeq.taylor subpackage by @pnkraemer in #711
- Implement backend.functools.linearize by @pnkraemer in #712
- Implement backend numpy block diag by @pnkraemer in #713
- Implement backend.functools.jvp by @pnkraemer in #714
- Implement backend.containers.dataclass by @pnkraemer in #715
- Implement backend.abc by @pnkraemer in #716
- Implement backend.itertools by @pnkraemer in #717
- Implement remaining types in backend.typing by @pnkraemer in #718
- Implement backend.warnings by @pnkraemer in #720
- Implement backend.special by @pnkraemer in #719
- Implement backend.ode by @pnkraemer in #721
- Rename ode.odeint to ode.odeint_and_save_at by @pnkraemer in #722
- Implement backend.stats and backend.functools.jacrev by @pnkraemer in #723
- Change signature of ode.odeint_and_save_at to be consistent with the rest of probdiffeq by @pnkraemer in #724
- Change 'from jax.config import config' to 'import jax.config' by @pnkraemer in #725
- Remove remaining 'import jax's by @pnkraemer in #727
- Implement backend.ode.odeint_dense by @pnkraemer in #726
- Implement backend.warnings.filterwarnings by @pnkraemer in #729
- Implement backend.ode.ivp_{logistic, lotka_volterra, ...} by @pnkraemer in #728
- Implement backend.config by @pnkraemer in #730
- Reorder the quickstart-section of the docs by @pnkraemer in #731
- Change tutorial format from .md to .py by @pnkraemer in #732
- Delete 'smoothing' example notebook by @pnkraemer in #735
- Implement backend.control_flow.context_overwrite_{while_loop, scan} and create a tutorial for using it by @pnkraemer in #736
- Remove yield-values from overwrite-loop contexts by @pnkraemer in #737
- Warn about the experimental nature of Probdiffeq in its readme, and explain versioning by @pnkraemer in #738
Full Changelog: v0.3.2...v0.3.3
v0.3.2
What's Changed
- Include IVP solution in HIRES benchmark-plot by @pnkraemer in #670
- Update other plots in benchmarks to be consistent with Hires by @pnkraemer in #671
- Split notebook utilities in "style" and "size"-type functions by @pnkraemer in #672
- Revise the linter toolchain by @pnkraemer in #673
- Switch updating time stamp to update with time stamp after predicting by @lahramon in #678
New Contributors
Full Changelog: v0.3.1...v0.3.2
v0.3.1
What's Changed
- Fix Cholesky-utility-gradients for zero covariances by @pnkraemer in #669
Full Changelog: v0.3.0...v0.3.1
v0.3.0
What's Changed
- Fix links in readme by @pnkraemer in #659
- Bundled all packaging in pyproject.toml by @pnkraemer in #661
- Taylor mode distinction by @pnkraemer in #663
- Fix a typo by @pnkraemer in #664
- Taylor-series benchmark on a neural ODE by @pnkraemer in #665
- Rename taylor_mode() to taylor_mode_scan() and move to toplevel by @pnkraemer in #666
Full Changelog: v0.2.2...v0.3.0
v0.2.2
The last PyPi-publishing workflow failed unexpectedly, so let's try it again.
What's Changed
- Removed deprecated key from setup.cfg by @pnkraemer in #658
Full Changelog: v0.2.1...v0.2.2