Skip to content

Releases: decargroup/pykoop

pykoop v2.0.1

26 Sep 20:12
8283eb9
Compare
Choose a tag to compare

This release removes pandas from setup.py.

Full changelog: v2.0.0...v2.0.1

pykoop v2.0.0

26 Sep 19:29
503ea1c
Compare
Choose a tag to compare

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: 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)

pykoop v1.2.3

03 Oct 13:15
039dfe0
Compare
Choose a tag to compare

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

Full changelog: v1.2.2...v1.2.3

pykoop v1.2.2

03 Oct 02:21
e706ea1
Compare
Choose a tag to compare

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

Full changelog: v1.2.1...v1.2.2

pykoop v1.2.1

03 Oct 01:56
a1ff657
Compare
Choose a tag to compare

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

Full changelog: v1.2.0...v1.2.1

pykoop v1.2.0

02 Oct 18:01
555c77e
Compare
Choose a tag to compare

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: 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)

pykoop v1.1.3

20 Dec 17:20
e7fe384
Compare
Choose a tag to compare

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: v1.1.2...v1.1.3

Bug fixes

  • Fix incorrect scoring with NaN entries (#123)

pykoop v1.1.2

17 Dec 01:28
6536e22
Compare
Choose a tag to compare

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

Full changelog: v1.1.1...v1.1.2

pykoop v1.1.1

17 Dec 00:54
4f5e291
Compare
Choose a tag to compare

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: v1.1.0...v1.1.1

Bug fixes

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

pykoop v1.1.0

15 Dec 18:18
82df7c4
Compare
Choose a tag to compare

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: v1.0.5...v1.1.0

New features

  • Added radial basis function (RBF) lifting functions in RbfLiftingFn, along with several ways to choose centers (#103)
  • Added random Fourier feature (RFF) lifting functions in KernelApproxLiftingFn, along with other kernel approximations (#110)
  • Added constant lifting function in ConstantLiftingFn (#85)
  • Added support for scikit-learn linear regressors in EdmdMeta (#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 (#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() (#83)
  • Added example_data_pendulum() and example_data_duffing().

Bug fixes

  • Fixed bug where predict_trajectory indexing was wrong when relift_state=false (#112)
  • Fixed Binder package versions (#108)