Recent Releases of pykoop

pykoop - pykoop v2.0.1

This release removes pandas from setup.py.

Full changelog: https://github.com/decargroup/pykoop/compare/v2.0.0...v2.0.1

- Python
Published by sdahdah over 1 year ago

pykoop - pykoop v2.0.0

This release introduces two breaking changes, necessitating a new major version:

  1. The deprecated KoopmanPipeline.predict_multistep() method has been removed.
  2. They kernel_or_ift parameter of RandomFourierKernelApprox has been renamed to kernel_or_ft, and the corresponding ift_ attribute has been renamed to ft_.

Other than bug fixes, the most notable improvement is the significant reduction of import time, which is due to the removal of the pandas dependency.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.2.3...v2.0.0

New features

  • Removed pandas dependency to resolve slow imports (#166)

Bug fixes

  • Fixed incorrect argument names for kernel approximation (#175)
  • Fixed bug when using multioutput='raw_values' regression metric keyword argument when scoring (#164)
  • Fixed prediction bug when no inputs are used (#173)
  • Fixed scikit-learn method resolution order (#177)
  • Fixed default LMI strictness (#168)

- Python
Published by sdahdah over 1 year ago

pykoop - pykoop v1.2.3

This release once again fixes a problem in the Read the Docs config file.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.2.2...v1.2.3

- Python
Published by sdahdah over 2 years ago

pykoop - pykoop v1.2.2

This release fixes a typo in the Read the Docs config file.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.2.1...v1.2.2

- Python
Published by sdahdah over 2 years ago

pykoop - pykoop v1.2.1

This release adds a missing Read the Docs config file that was preventing the documentation from being built.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.2.0...v1.2.1

- Python
Published by sdahdah over 2 years ago

pykoop - pykoop v1.2.0

This release allows users to manually set a Koopman matrix computed outside of pykoop for easier interoperability with other libraries or custom regression code. The release also adds global configuration management, specifically to skip input validation. This can significantly (2x!) speed up predict_trajectory() and other methods that call lift(), retract(), etc. frequently. Finally, this release fixes some awkward scoring behaviour, making score_trajectory() work better in hyperparameter optimization setups.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.1.3...v1.2.0

New features

  • Added DataRegressor to allow KoopmanPipeline objects to be created directly from NumPy arrays (#129)
  • Added sklearn-style configuration management (set_config(skip_validation), get_config() and config_context(skip_validation) ) to allow skipping input validation in performance-critical areas (#151)
  • Added KoopmanPipeline.frequency_response() to compute the frequency response of a Koopman system without plotting the Bode plot (#143)
  • Added the plot_error parameter to plot_predicted_trajectory() to allow plotting the prediction error instead of the trajectory (#148)
  • Made DelayLiftingFn compatible with SplitPipeline (#145)

Bug fixes

  • Fixed bug where score_trajectory() could return a worse score than the error_score, or even return NaN (#132)

- Python
Published by sdahdah over 2 years ago

pykoop - pykoop v1.1.3

This release fixes a bug where diverging predictions were not scored correctly. It also adds the error_score parameter to KoopmanPipeline.make_scorer() and score_trajectory() to allow more fine-grained control over the behaviour.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.1.2...v1.1.3

Bug fixes

  • Fix incorrect scoring with NaN entries (https://github.com/decargroup/pykoop/pull/123)

- Python
Published by sdahdah about 3 years ago

pykoop - pykoop v1.1.2

This release exists because I forgot to bump the version number in the source code when releasing v1.1.1. Sorry!

Full changelog: https://github.com/decargroup/pykoop/compare/v1.1.1...v1.1.2

- Python
Published by sdahdah about 3 years ago

pykoop - pykoop v1.1.1

This release fixes two bugs in KoopmanPipeline.predict_trajectory() and lowers the setup.py minimum Python version to 3.7 for Binder. However, 3.8 is still the lowest officially supported version.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.1.0...v1.1.1

Bug fixes

  • Fixed incorrect overflow handling in predict_trajectory() when relift=False (https://github.com/decargroup/pykoop/pull/118)
  • Fixed bug where predict_trajectory() did not account for episode feature if U=None (https://github.com/decargroup/pykoop/pull/116)
  • Lowered required Python version in setup.py so Binder would work again (https://github.com/decargroup/pykoop/pull/114)

- Python
Published by sdahdah about 3 years ago

pykoop - pykoop v1.1.0

This release features two new types of lifting functions: radial basis functions, and random Fourier features. Click the links for examples, or check them out on Binder!

You can now also use almost any scikit-learn regressor as a backend for EDMD with EdmdMeta. You can find a cool example of sparse regression with the lasso here.

Finally, two quality-of-life changes are introduced in this update. You can access your lifting function feature names with KoopmanLiftingFn.get_feature_names_out(), and you can quickly plot Koopman predictions and Koopman operator properties with a bunch of plot_*() methods scattered throughout the library. See below for more details.

Note that in this release, we are dropping official Python 3.7 support, though almost all features should still work.

Full changelog: https://github.com/decargroup/pykoop/compare/v1.0.5...v1.1.0

New features

  • Added radial basis function (RBF) lifting functions in RbfLiftingFn, along with several ways to choose centers (https://github.com/decargroup/pykoop/pull/103)
  • Added random Fourier feature (RFF) lifting functions in KernelApproxLiftingFn, along with other kernel approximations (https://github.com/decargroup/pykoop/pull/110)
  • Added constant lifting function in ConstantLiftingFn (https://github.com/decargroup/pykoop/pull/85)
  • Added support for scikit-learn linear regressors in EdmdMeta (https://github.com/decargroup/pykoop/pull/92)
  • Added support for feature name tracking as strings in KoopmanLiftingFn.get_feature_names_in() and KoopmanLiftingFn.get_feature_names_out(). If you pass in a pandas.DataFrame, then pykoop can take the feature names from there (https://github.com/decargroup/pykoop/pull/75)
  • Added easy plotting helpers in
    • KoopmanLiftingFn.plot_lifted_trajectory(),
    • KoopmanRegressor.plot_bode(),
    • KoopmanRegressor.plot_eigenvalues(),
    • KoopmanRegressor.plot_koopman_matrix(),
    • KoopmanRegressor.plot_svd(),
    • KoopmanPipeline.plot_predicted_trajectory(),
    • KoopmanPipeline.plot_bode(),
    • KoopmanPipeline.plot_eigenvalues(),
    • KoopmanPipeline.plot_koopman_matrix(), and
    • KoopmanPipeline.plot_svd() (https://github.com/decargroup/pykoop/pull/83)
  • Added example_data_pendulum() and example_data_duffing().

Bug fixes

  • Fixed bug where predict_trajectory indexing was wrong when relift_state=false (https://github.com/decargroup/pykoop/pull/112)
  • Fixed Binder package versions (https://github.com/decargroup/pykoop/pull/108)

- Python
Published by sdahdah about 3 years ago

pykoop - pykoop v1.0.5

This release features two quality of life improvements: a better lifting function interface for use outside of scikit-learn, and improved trajectory prediction functionality. More importantly, the docs have been reorganized, the unit tests are no longer a mess, and some Jupyter notebook examples have been added to binder.

Full changelog: https://github.com/decarsg/pykoop/compare/v1.0.4...v1.0.5

New features

  • Added lift(), lift_state(), lift_input(), retract(), retract_state(), and retract_input() helper methods to KoopmanPipeline and all Koopman lifting functions. These functions provide a more convenient way to use a fit Koopman model outside of scikit-learn (e.g. in control applications) (https://github.com/decarsg/pykoop/pull/61)
  • Added predict_trajectory() as a replacement for predict_multistep(), which is now deprecated. This new function provides a more convenient interface for use outside of scikit-learn, and also supports global Koopman predictions, where states are not retracted and re-lifted between timesteps (https://github.com/decarsg/pykoop/pull/65).

Enhancements

  • Overhauled organization of Sphinx docs (https://github.com/decarsg/pykoop/pull/66)
  • Updated examples and added binder links to Juypter notebooks (https://github.com/decarsg/pykoop/pull/70, https://github.com/decarsg/pykoop/pull/71).
  • Refactored unit tests, and enabled remote testing and doctests in CI (https://github.com/decarsg/pykoop/pull/67).

Bug fixes

  • Fixed a serious bug in predict_multistep() where only the first episode was scored (https://github.com/decarsg/pykoop/pull/65).
  • Allowed force quitting LMI regressor using ^C twice (https://github.com/decarsg/pykoop/pull/54).
  • Stopped doctests from failing due to floating point comparisons (https://github.com/decarsg/pykoop/pull/58).

- Python
Published by sdahdah over 3 years ago

pykoop - pykoop v1.0.4

Small release to adjust LMI strictness to match cited arXiv preprint.

- Python
Published by sdahdah over 4 years ago

pykoop - pykoop v1.0.3

No actual code changes. No Zenodo archive was generated because of errors in CITATION.cff.

- Python
Published by sdahdah over 4 years ago

pykoop - pykoop v1.0.2

No actual code changes, only continuous-integration workflows and citation metadata.

- Python
Published by sdahdah over 4 years ago

pykoop - pykoop v1.0.1

v1.0.0 of pykoop was not usable because of a missing __init__.py in a sub-package. All fixed now!

- Python
Published by sdahdah over 4 years ago