Changelog
v1.4.2 (12.06.2024)
Feature
Added documentation about how to execute PyExperimenter on distributed machines.
Improved the usage and documentation of ssh tunnel to be more flexible and user friendly.
Added add_experiment_and_execute method to PyExperimenter to add and execute an experiment in one step.
Added functionality to attach multiple processes to the same experiment, all being able to write to the database tables of the same experiment.
v1.4.1 (11.03.2024)
Feature
Added logging whenever a sql statement is executed.
Update CI such that the tests are run on Python 3.9 and 3.10, additionally removed the paper draft action.
Added logging when initializing database to contain resultfields and logfields.
Fix
Booleans have been added as strings to the database table in SQLite. This has been fixed by adding a converting the values accordingly before writing them to the database.
Bugfix, where the same experiment has been pulled multiple times when using n_jobs > 1.
Bugfix where the ssh passphrase was not correctly addressed in the documentation, and not been used correctly in the code.
Fix in the documentation, where logfields were indented incorrectly.
v1.4.0 (20.02.2024)
Feature
Add functionality to pause and later continue experiments.
Change the supported database configuration file type to YAML.
Change the supported credentials file type to YAML.
Add support for ssh jump hosts in the database connection.
Fix
Fix a problem when executing fill_table that caused some entries to occur twice.
Temporary CodeCarbon files are automatically removed at termination.
v1.3.2 (23.01.2024)
Feature
Add random_order parameter to PyExperimenter.execute() to allow for random order of experiments.
Add pause functionality to PyExperimenter to allow for pausing the execution of experiments, which can be continued later on.
Fix
Hotfix cluster execution where multiple runners could pull the same experiment.
Update logger documentation to reflect the changes of the improved logging.
v1.3.1 (24.07.2023)
Feature
Removed the need for resultfields to be defined in the experiment configuration file. Therefore, they are now optional, which might help if one is only interested in the information from logtables.
Improved error messages to provide better feedback about why a configuration file is not valid and why processing information to the database did not work.
Logging has been implemented for PyExperimenter. The name, log level and log file of the logger can be customized. Furthermore, a fixed formatter has been added, as well as different (file) handlers to ensure the messages occur both in the console as well as in the (given) log file.
Examples
Updated example notebooks to reflect the changes of the improved logging.
Fix
PyExperimenter no longer overwrites the basicConfig of the logging framework.
v1.3.0 (23.06.2023)
Feature
Added
CodeCarbon
to automatically measure carbon emissions of experiments.Improved issue template.
Added template for pull requests.
Extended documentation for development / how to contribute to
PyExperimenter
Examples
Updated examples to utilize
CodeCarbon
functionality.
Changed
Replaced
mysql-connector-python
dependency to usepymysql
instead.
Fix
Bugfix escaping of values in sql statements.
v1.2.1 (21/04/2023)
Feature
Improve performance addding new experiments to database table
Create issue template
Update documentation to include JOSS publication
v1.2.0 (04/04/2023)
Feature
Added logtables functionality, allowing to incrementally log information during the execution of an experiment, which is described in detail in the documentation.
Documentation of the usage of
PyExperimenter
has been reworked in large parts.
Examples
An additional logtable example has been added.
An issue of the example notebook has been fixed causing them to fail due to missing directories.
Improved general example to cover extended functionality of
PyExperimenter.reset_experiments()
.
Fix
Start date is now set when pulling an experiment.
Supported Python version is now >= 3.9.
Changed row identification in ResultProcessor to experiment ID instead of checking keyfields.
Stack traces are now correctly logged into the mysql database, as the used mysql connector implementation has been changed to C.
Changed multiprocessing to joblib due to issues with the example notebooks.
The
random_order
parameter is not needed anymore for the execution, therefore it has been removed.Documentation of
PyExperimenter.reset_experiments()
has been updated to reflect the changes in the functionality.
Tests
Tests covering the new functionality of logtables have been added.
v1.1.0 (21/11/2022)
Feature
- Improve Documentation
Added documentation using Sphinx, therefore a workflow was created to build and push the website.
The build documentation will be pushed to a separate branch
gh-pages
.The API of the class PyExperimenter has been updated to be accessible via documentation.
Updated README to refer to the documentation.
- Converted project to pyproject.toml using Poetry
Created pyproject.toml via Poetry.
Added all dependencies for PyExperimenter itself as well as for the development.
- Updated Experiment Handling
The experiment configuration field
cpu.max
was renamed ton_jobs
.PyExperimenter.execute()
now spawns as many workers as defined byn_jobs
.The open experiment will not be pulled once in advance, but within each call of the
PyExperimenter._execution_wrapper()
. This is completely handled by theSELECT
call, including therandomize
(if given), and limits the results to1
. In the same transaction of pulling an open experiment, its status is set torunning
.An open experiment is only pulled if
max_experiments
has not been reached (except for-1
).
File holding all exceptions was renamed to
exceptions.py
.- Modified functionality to reset experiments
Added Enum
ExperimentStatus
.- Modified
experimenter.reset_experiments()
to be able to get single
ExperimentStatus
list of
ExperimentStatus
"all"
to reset allExperimentStatus
- Modified
Added method
experimenter.delete_table()
.
Finalized paper draft
Examples
Updated due to latest changes and renamings
Referenced documentation within examples
Fix
Bugfix of wrong column order when writing to DB
Unfavorable pulling experiments has been changed (see above)
Tests
- Add workflow to automatically check tests
Adds a simple test runner using GitHub Actions.
Uses poetry to install the package and locked dependencies.
Caching the virtual environment. This prevents having to install it every time and cuts down on CI roundtrip times.
It tests a matrix of various python versions (3.7, 3.8, 3.9) and OS versions (Ubuntu, MacOS, Windows). Python 3.10 is excluded for now, since installing some of the dependencies takes a very long time.
v1.0.0 (04/09/2022)
Feature
- Restructured the experiment configuration file.
Added shortcut for a longer list of integers as keyfields.
Added the option to have a timestep column for each resultfield.
Added option to give a name to the
PyExperimenter
instance to improve support of parallel HPC cluster usage.Added multiple options to fill tables.
Improved column order of the database table when it is created.
Added method to reset parts of the database table based on their status.
Added method to obtain the current state of the database table as
pandas.Dataframe
, which can be used to easily export result tables, e.g. to LaTeX.Improved robustness of database creation and experiment execution.
Improved error handling.
Updated and extended the README file according to all changes.
Examples
Added a Jupyter notebook explaining the general usage of the
PyExperimenter
.Added a Jupyter notebook explaining how to fill the database table with a conditional experiment grid.
Fix
Added checked when resetting a table, that only missing rows are added and no duplicated rows are created.
Fixed writing of string containing quotation marks to the database table.
Tests
Added tests for all key components of
PyExperimenter
.
v0.0.6 (01/03/2022)
No summary available.
v0.0.5 (17/01/2022)
No summary available.
v0.0.4 (02/11/2021)
No summary available.
v0.0.3 (20/10/2021)
No summary available.
v0.0.2 (20/10/2021)
No summary available.
v0.0.1 (14/10/2021)
First release of
PyExperimenter
No summary available.