Skip to content

Releases: quaquel/EMAworkbench

2.5.2

24 May 13:42
b37e652
Compare
Choose a tag to compare

2.5.2 is a small patch release that makes the EMAworkbench compatible with NumPy 2.0 and improves the MPIEvaluator tutorial.

What's Changed

🐛 Bugs fixed

  • Replace deprecated np.NaN with np.nan by @EwoutH in #361

📜 Documentation improvements

Full Changelog: 2.5.1...2.5.2

2.5.1

17 Apr 08:22
643acdd
Compare
Choose a tag to compare

The 2.5.1 release is a small patch release with two bugfixes.

  • The first PR (#346) corrects a dependency issue where the finalizer in futures_util.py incorrectly assumed the presence of experiment_runner in its module namespace, leading to failures in futures models like multiprocessing and mpi. This is resolved by adjusting the finalizer function to expect experiment_runner as an argument.
  • The second PR (#349) addresses a redundancy problem in the MPI evaluator, where the pool was inadvertently created twice.

What's Changed

🐛 Bugs fixed

Full Changelog: 2.5.0...2.5.1

2.5.0

20 Dec 12:52
1508b2a
Compare
Choose a tag to compare

Highlights

In the 2.5.0 release of the EMAworkbench we introduce a new experimental MPIevaluator to run on multi-node (HPC) systems (#299, #328). We would love feedback on it in #311.

Furthermore, the pair plots for scenario discovery now allow contour plots and bivariate histograms (#288). When doing Prim you can inspect multiple boxes and display them in a single figure (#317).

Breaking changes

From 3.0 onwards, the names of parameters, constants, constraints, and outcomes must be valid python identifiers. From this version onwards, a DeprecationWarning is raised if the name is not a valid Python identifier.

What's Changed

🎉 New features added

  • Improved pair plots for scenario discovery by @steipatr in #288
  • Introducing MPIEvaluator: Run on multi-node HPC systems using mpi4py by @EwoutH in #299
  • inspect multiple boxes and display them in a single figure by @quaquel in #317

🛠 Enhancements made

  • Enhancement for #271: raise exception by @quaquel in #282
  • em_framework/points: Add string representation to Experiment class by @EwoutH in #297
  • Speed up of plot_discrete_cdfs by 2 orders of magnitude by @quaquel in #306
  • em_framework: Improve log messages, warning and errors by @EwoutH in #300
  • analysis: Improve log messages, warning and errors by @EwoutH in #313
  • change to log message and log level in feature scoring by @quaquel in #318
  • [WIP] MPI update by @quaquel in #328

🐛 Bugs fixed

  • Fix search in Readthedocs configuration with workaround by @EwoutH in #264
  • bugfix introduced by #241 in general-introduction from docs by @quaquel in #265
  • prim: Replace deprecated Altair function by @EwoutH in #270
  • bugfix to rebuild_platypus_population by @quaquel in #276
  • bugfix for #277 : load_results properly handles experiments dtypes by @quaquel in #280
  • fixes a bug where binomtest fails because of floating point math by @quaquel in #315
  • make workbench compatible with latest version of pysd by @quaquel in #336
  • bugfixes for string vs bytestring by @quaquel in #339

📜 Documentation improvements

  • Drop Python 3.8 support, require 3.9+ by @EwoutH in #259
  • readthedocs: Add search ranking and use latest Python version by @EwoutH in #242
  • docs/examples: Always use n_processes=-1 in MultiprocessingEvaluator by @EwoutH in #278
  • Docs: Add MPIEvaluator tutorial for multi-node HPC systems, including DelftBlue by @EwoutH in #308
  • Add Mesa example by @steipatr in #335
  • Fix htmltheme of docs by @quaquel in #342

🔧 Maintenance

  • CI: Switch default jobs to Python 3.12 by @EwoutH in #314
  • Reorganization of evaluator code and renaming of modules by @quaquel in #320
  • Replace deprecated zmq.eventloop.ioloop with Tornado's ioloop by @EwoutH in #334

Other changes

  • examples: Speedup the lake_problem function by ~30x by @EwoutH in #301
  • Create an GitHub issue chooser by @EwoutH in #331
  • Depracation warning for parameter names not being valid python identifiers by @quaquel in #337

Full Changelog: 2.4.0...2.5.0

2.4.1

18 Jun 19:05
e79f9b9
Compare
Choose a tag to compare

Highlights

2.4.1 is a small patch release of the EMAworkbench, primarily resolving issues #276 and #277 in the workbench itself, and a bug introduced by #241 in the docs. The EMAworkbench now also raise exception when sampling scenarios or policies while no uncertainties or levers are defined (#282).

What's Changed

🛠 Enhancements made

🐛 Bugs fixed

  • bugfix to rebuild_platypus_population by @quaquel in #276
  • Fixed dtype handling in load_results function. The dtype metadata is now correctly applied, resolving issue #277.
  • Fixed the documentation bug introduced by #241 in the general introduction section, which now accurately reflects the handling of categorical uncertainties in the experiment dataframe.

📜 Documentation improvements

  • readthedocs: Add search ranking and use latest Python version by @EwoutH in #242
  • docs/examples: Always use n_processes=-1 in MultiprocessingEvaluator by @EwoutH in #278

Full Changelog: 2.4.0...2.4.1

2.4.0

19 Apr 12:00
f62717f
Compare
Choose a tag to compare

Highlights

The latest release of the EMAworkbench introduces significant performance improvements and quality of life updates. The performance of _store_outcomes has been enhanced by approximately 35x in pull request #232, while the combine function has seen a 8x speedup in pull request #233. This results in the overhead of the EMAworkbench being reduced by over 70%. In a benchmark, a very simple Python model now performs approximately 40.000 iterations per second, compared to 15.000 in 2.3.0.

In addition to these performance upgrades, the examples have been added to the ReadTheDocs documentation, more documentation improvements have been made and many bugs and deprecations have been fixed.

The 2.4.x release series requires Python 3.8 and is tested on 3.8 to 3.11. It can be installed as usual via PyPI, with:

pip install --upgrade ema-workbench

What's Changed

🎉 New features added

  • optional preallocation in callback based on outcome shape and type by @quaquel in #229

🛠 Enhancements made

  • util: Speed up combine by ~8x by @EwoutH in #233
  • callbacks: Improve performance of _store_outcomes by ~35x by @EwoutH in #232

🐛 Bugs fixed

  • fixes broken link to installation instructions by @quaquel in #224
  • Docs: Fix developer installation commands by removing a space by @EwoutH in #220
  • fixes a bug where Prim modifies the experiments array by @quaquel in #228
  • bugfix for warning on number of processes and max_processes by @quaquel in #234
  • Fix deprecation warning and dtype issue in flu_example.py by @quaquel in #235
  • test for get_results and categorical fix by @quaquel in #241
  • Fix pynetlogo imports by decapitalizing pyNetLogo by @quaquel in #248
  • change default value of um_p to be consistent with Borg documentation by @irene-sophia in #250
  • Fix pretty print for RealParameter and IntegerParameter by @quaquel in #255
  • Fix bug in AutoadaptiveOutputSpaceExploration with wrong default probabilities by @quaquel in #252

📜 Documentation improvements

🔧 Maintenance

  • clusterer: Update AgglomerativeClustering keyword to fix deprecation by @EwoutH in #218
  • Fix Matplotlib and SciPy deprecations by @EwoutH in #227
  • CI: Add job that runs tests with pre-release dependencies by @EwoutH in #217
  • Fix for stalling tests by @quaquel in #247

Other changes

New Contributors

Full Changelog: 2.3.0...2.4.0

2.3.0

07 Nov 16:25
063be2a
Compare
Choose a tag to compare

2.3.0

Highlights

This release adds a new algorithm for output space exploration. The way in which convergence tracking for optimization is supported has been overhauled completely, see the updated directed search user guide for full details. The documentation has moreover been expanded with a comparison to Rhodium.

With this new release, the installation process has been improved by reducing the number of required dependencies. Recommended packages and connectors can now be installed as extras using pip, for example pip install -U ema-workbench[recommended,netlogo]. See the updated installation instructions for all options and details.

The 2.3.x release series supports Python 3.8 to 3.11. It can be installed as usual via PyPI, with:

pip install --upgrade ema-workbench

What's Changed

🎉 New features added

🛠 Enhancements made

  • Switch to using format string in prim logging by @quaquel in #161
  • Replace setup.py with pyproject.toml and implement optional dependencies by @EwoutH in #166

🐛 Bugs fixed

  • use masked arrays for storing outcomes by @quaquel in #176
  • Fix error for negative n_processes input in MultiprocessingEvaluator by @EwoutH in #189
  • optimization.py: Fix "epsilons" keyword argument in _optimize() by @EwoutH in #150

📜 Documentation improvements

  • Create initial CONTRIBUTING.md documentation by @EwoutH in #162
  • Create Read the Docs yaml configuration by @EwoutH in #173
  • update to outcomes documentation by @quaquel in #183
  • Improved directed search tutorial by @quaquel in #194
  • Update Contributing.md with instructions how to merge PRs by @EwoutH in #200
  • Update Readme with an introduction and documentation, installation and contribution sections by @EwoutH in #199
  • Rhodium docs by @quaquel in #184
  • Fix spelling mistakes by @EwoutH in #195

🔧 Maintenance

  • Replace depreciated shade keyword in Seaborn kdeplot with fill by @EwoutH in #169
  • CI: Add pip depencency caching, don't run on doc changes, update setup-python to v4 by @EwoutH in #174
  • Formatting: Format with Black, increase max line length to 100, combine multi-line blocks by @EwoutH in #178
  • Add pre-commit configuration and auto update CI by @EwoutH in #181
  • Fix Matplotlib, ipyparallel and dict deprecation warnings by @EwoutH in #202
  • CI: Start testing on Python 3.11 by @EwoutH in #156
  • Replace deprecated saltelli with sobol SALib 1.4.6+. by @quaquel in #211

Other changes

Full Changelog: 2.2.0...2.3.0

2.2.1

06 Oct 07:52
dd175e1
Compare
Choose a tag to compare

The 2.2.1 release is a small patch release to address 3 bugs in the EMAworkbench 2.2.0 (#155, #168 and #188). Thanks @vioSpark and @steipatr for reporting those!

This new version can be installed as usual via PyPI, with:

pip install --upgrade ema-workbench

🐛 Bugs fixed

  • Fix n-dimensional output bug in Netlogo connector by @quaquel in b25f9bd
  • switch to using format string in prim logging by @quaquel in #161
  • Fix error for negative n_processes input in MultiprocessingEvaluator by @EwoutH in #189

📜 Documentation improvements

Full Changelog: 2.2.0...2.2.1

2.2.0

31 Aug 19:48
Compare
Choose a tag to compare

Highlights

With the 2.2 release, the EMAworkbench can now connect to Vadere models on pedestrian dynamics. When inspecting a Prim Box peeling trajectory, multiple points on the peeling trajectory can be inspected simultaneously by inputting a list of integers into PrimBox.inspect().

When running experiments with multiprocessing using the MultiprocessingEvaluator, the number of processes can now be controlled using a negative integer as input for n_processes (for example, -2 on a 12-thread CPU results in 10 threads used). Also, it will now default to max. 61 processes on windows machines due to limitations inherent in Windows in dealing with higher processer counts. Code quality, CI, and error reporting also have been improved. And finally, generating these release notes is now automated.

This new version can be installed as usual via PyPI, with:

pip install --upgrade ema-workbench

What's Changed

🎉 New features added

🛠 Enhancements made

  • Improve code quality with static analysis by @EwoutH in #119
  • prim.py: Make PrimBox.peeling_trajectory["id"] int instead of float by @EwoutH in #121
  • analysis: Allow optional annotation of plot_tradeoff graphs by @EwoutH in #123
  • evaluators.py: Allow MultiprocessingEvaluator to initialize with cpu_count minus N processes by @EwoutH in #140
  • PrimBox.inspect() now can also take a list of integers (aside from a single int) to inspect multiple points at once by @quaquel in 6d83a6c (see also issue #124)

🐛 Bugs fixed

📜 Documentation improvements

  • Docs: Installation.rst: Add how to install master or custom branch by @EwoutH in #122
  • Docs: Replace all http links with secure https URLs by @EwoutH in #134
  • Maintain release notes at CHANGELOG.md and include them in Readthedocs by @quaquel in ebdbc9f
  • Fix badge links in readme by @quaquel in 28569bd

🔧 Maintenance

  • feature_scoring: fix Regressor criterion depreciation by @EwoutH in #125
  • feature_scoring.py: Change max_features in get_rf_feature_scores to "sqrt" by @EwoutH in #129
  • CI: Use Pytest instead of Nose, update default build to Python 3.10 by @EwoutH in #131
  • Release CI: Only upload packages if on main repo by @EwoutH in #132
  • CI: Split off flake8 linting in a separate job by @EwoutH in #133
  • CI: Add weekly scheduled jobs and manual trigger by @EwoutH in #137
  • setup.py: Add project_urls for documentation and issue tracker links by @EwoutH in #142
  • set scikit-learn requirement >= 1.0.0 by @rhysits in #144
  • Create release.yml file for automatic release notes generation by @EwoutH in #152
  • instantiating an Evaluator without one or more AbstractModel instances now raises a type error by @quaquel in a83533a
  • removes depreciated DataFrame.append by replacing it with DataFrame.concat (see the conversation on issue #126):
  • removes NumPy datatypes deprecated in 1.20 by @quaquel in e8fbf6f
  • replace deprecated scipy.stats.kde with scipy.stats by @quaquel in b5a9ca9

New Contributors

Full Changelog: 2.1.2...2.2.0

2.0

25 Apr 08:40
Compare
Choose a tag to compare
2.0

2.0 version of the workbench.

Main changes:

  • requires python 3.6 or newer!
  • move from numpy recarray to pandas dataframe for experiments
  • consistent API in analysis package with x for experiments, and y for the outcome of interest you want to analyse
  • many bug fixes, improved documentation, and more extensive testing

0.6

20 Aug 19:22
Compare
Choose a tag to compare
0.6 Pre-release
Pre-release

Stable version of the workbench

  • support for clusters via ipython parallel
  • massive update to documentation
  • reworked structure of packages
  • pep8 related changes to api