Changelog

This changelog is generated automatically from GitHub Releases.

v1.2.0

2026-06-04 · GitHub

Bug fixes for DistributionRegistry and DiscreteEmpirical, and tests for DistributionRegistry.

Added

Fixed

v1.1.0

2026-04-29 · GitHub

Add support for nested dictionaries in DistributionRegistry.

Added

  • DistributionRegistry now accepts dictionaries from a nested configuration, and can return these in the nested structure if set preserve_structure=True.

v1.0.4

2026-04-25 · GitHub

Fix to NSPPThinning sampling approach.

Fixed

  • NSPPThinning.sample() fixed so that t falls into the the time interval where the candidate arrival will occur. This allows the correct acceptance probability to be used. Prior to this fix t was occuring in the current time interval.

Changed

  • NSPPThinning now pre-computes the acceptance probabilities on initialisation. This is means that there are no repeated calculations (divisions) during a simulation run and lookup via numpy rather than pandas.
  • NSPPThinning now validates the data parameter: is it a DataFrame (TypeError), does it contain the correct columns (ValueError), and is it empty/have more than 1 row (ValueEror`) .

v1.0.3

2026-01-21 · GitHub

Changed

  • Switched to trusted publishing for PyPI
  • Migrated repository from tommonks personal to sim-tools organisation
  • Updated package URLS.

v1.0.2a

2026-01-21 · GitHub

Fixed

  • Bump patch number.

v1.0.2

2026-01-21 · GitHub

Fixed

  • Publish to PyPI: Github action to publish to pypi modified to use release/v1 (prior version was sunsetted).

v1.0.1

2026-01-07 · GitHub

Fixed

  • Type Hinting and Pylance Support: Adjusted type hinting within [@register](https://github.com/register) decorator to enable display of docstrings, hover hints and argument suggestions.

v1.0.0

2025-11-04 · GitHub

v1.0.0

v1.0.0 centres on multi-metric support - confidence_interval_method and ReplicationsAlgorithm can now analyse multiple metrics at once, driving changes to syntax (explicit metrics argument), adapter formats, defaults, docs, plotting, and tests to support the new capability.

Added

Changed

  • Defaults: The default for desired_precision in confidence_interval_method is now 0.1 (was 0.05) for consistency with ReplicationsAlgorithm.
  • Protocols: Updated ReplicationsAlgorithmModelAdapter and add AlgorithmObserver to accommodate the new required format (more complex than ReplicationObserver).
  • Documentation: Updated the algorithm documentation for the new syntax (e.g. new treat-sim adapter), and moved treat-sim description to its own page to avoid repetition.
  • Docstrings: Improvements in output_analysis.py.
  • Testing: Amended to work with new syntax/logic of replications methods.
  • Linting: Linting several files.

Fixed

  • Algorithm: Now adjusts result if solution was found within initial replications.

v0.10.0

2025-08-06 · GitHub

Added

  • Add sort argument to DistributionRegistry.create_batch() for dict inputs, ensuring deterministic results if the config key order changes.
  • Add _validate_and_create() to DistributionRegistry which checks that the distribution configurations are dictionaries with only two keys: “class_name” and “params”.
  • Add tests for the new sort argument and _validate_and_create() method.

Changed

  • Some linting of _validation.py, time_dependent.py, distributions.py and trace.py.

v0.9.1

2025-08-01 · GitHub

Added

  • Add unit tests for all distributions which check it uses the base class, data types and sample size are correct, that the sample mean looks right, and that the random seed is working. Some similar tests existed, but they did not cover all distributions.
  • Add some specific tests for Lognormal and DiscreteEmpirical.
  • Add back tests for all distributions (which check that new samples are equal to those generated previously, when random seed controlled).

Changed

  • Adjusted docstrings to use a more consistent NumPy style.
  • Some linting of distributions.py.

Fixed

  • DiscreteEmpirical - now allows any type of data to be included. For example, str, as well as numeric value.

v0.9.0

2025-04-21 · GitHub

Added

  • distributions.DistributionRegistry - for batch creation of standard distributions from a dictionary or list.
  • DOCS: DistributionRegistry explanation and examples including use of JSON to store configs.
  • distributions.spawn_seeds function to support creation of PRNG streams.
  • Hyperexponential - A continuous probability distribution that is a mixture (weighted sum) of exponential distributions. It has a higher coefficient of variation than a single exponential distribution, making it useful for modeling highly variable processes or heavy-tailed phenomena.
  • RawContinuousEmpirical - A distribution that performs linear interpolation between data points according to the algorithm described in Law & Kelton’s “Simulation Modeling and Analysis”.
  • sim_tools._validation: internal module that contains common validation routines for sim_tools functions and classes. #33
  • All distribution classes updated to include validation of input parameters. #33
  • DOCS: Dedicated page for using empirical distributions.

Changed

  • Distribution changed from abstract base class to Protocol. All inheritance removed from concrete classes. #37
  • Added __repr__() to all distribution classes.
  • DOCS: improved docstrings for all distribution classes
  • BREAKING: Discrete -> DiscreteEmpirical
  • BREAKING: RawEmpirical -> RawDiscreteEmpirical
  • BREAKING: ContinuousEmpirical -> GroupedContinuousEmpirical`. To clarify the purpose of the empirical distribution
  • BREAKING: NSPPThinning: class now only requires “mean_iat” column in data. Acceptance/rejection calculated using \(iat_{min} / iat(t)\)

Fixed

  • Gamma fix of the calculation of the mean based on alpha and beta.
  • GroupedContinuousEmpirical: silent bug when u selects the first group. Interpolation did not work correctly and sampled out of range. This now been handled by logic pre-sample.
  • NSPPThinning: removed redundant outer loop from sampling.

v0.8.0

2025-03-17 · GitHub

Added

  • Add simpy and treat-sim to the environment, as these were required in the notebooks in docs/.
  • Add nbqa and pylint to the environment for linting, plus a relevant files lint.sh and .pylintrc.
  • Add tests for output_analysis functions (functional, unit and back tests).
  • Add validation of parameters in ReplicationsAlgorithm.
  • Add validation of data type in OnlineStatistics.

Changed

  • Simplified distribution value type tests to a single test where possible using pytest.mark.parametrize.
  • Linted .py and .ipynb files using pylint (most addressed, some remain unresolved).
  • Provided advice on tests, building docs and linting in the README.md.
  • 00_front_page.md now just imported README.md (reducing duplication, and keping it up-to-date).

Removed

  • Removed duplicate sw21_tutorial.ipynb.

Fixed

v0.8.0

2025-03-17 · GitHub

Added

  • Add simpy and treat-sim to the environment, as these were required in the notebooks in docs/.
  • Add nbqa and pylint to the environment for linting, plus a relevant files lint.sh and .pylintrc.
  • Add tests for output_analysis functions (functional, unit and back tests).
  • Add validation of parameters in ReplicationsAlgorithm.
  • Add validation of data type in OnlineStatistics.

Changed

  • Simplified distribution value type tests to a single test where possible using pytest.mark.parametrize.
  • Linted .py and .ipynb files using pylint (most addressed, some remain unresolved).
  • Provided advice on tests, building docs and linting in the README.md.
  • 00_front_page.md now just imported README.md (reducing duplication, and keping it up-to-date).

Removed

  • Removed duplicate sw21_tutorial.ipynb.

Fixed

v0.7.1

2025-02-10 · GitHub

Fixed

  • Patched ReplicationsAlgorithm look ahead will now correctly use _klimit() to calculate extra no. replications to run.

v0.7.0

2025-02-07 · GitHub

Added

Updated

  • sim-tools dev conda environment now pip installs local python package in editable model.

v0.6.1

2024-07-30 · GitHub

Fixed

  • BUILD: added rich library.

Removed

  • BUILD: scipy Dependency

v0.6.0

2024-07-29 · GitHub

Added

Changed

  • BREAKING: to prototype trace functionality. config name -> class breaks with v0.5.0

Fixed

  • THINNING: patched compatibility of thinning algorithm to work with numpy >= v2. np.Inf -> np.inf

v0.5.0

2024-06-21 · GitHub

Added

  • EXPERIMENTAL: added trace module with Traceable class for colour coding output from different processes and tracking individual patients.

Fixed

  • DIST: fix to NSPPThinning sampling to pre-calcualte mean IAT to ensure that correct exponential mean is used.
  • DIST: normal distribution uses minimum value instead of resampling on negative value.

v0.4.0

2024-04-17 · GitHub

Changes

  • BUILD: Dropped legacy setuptools and migrated package build to hatch
  • BUILD: Removed setup.py, requirements.txt and MANIFEST in favour of pyproject.toml

v0.3.3

2024-02-07 · GitHub

PATCH:

  • PATCH: distributions.Discrete was not returning numpy arrays.

v0.3.2

2024-02-06 · GitHub

PATCH:

  • Update Github action to publish to pypi. Use setuptools instead of build

v0.3.1

2024-02-06 · GitHub

PATCH:

  • PYPI has deprecated username and password. PYPI Publish Github action no works with API Token

v0.3.0

2024-02-06 · GitHub

Changes:

  • Distributions classes now have python type hints.
  • Added distributions and time dependent arrivals via thinning example notebooks.
  • Added datasets module and function to load example NSPP dataset.
  • Distributions added
    • Erlang (mean and stdev parameters)
    • ErlangK (k and theta parameters)
    • Poisson
    • Beta
    • Gamma
    • Weibull
    • PearsonV
    • PearsonVI
    • Discrete (values and observed frequency parameters)
    • ContinuousEmpirical (linear interpolation between groups)
    • RawEmpirical (resample with replacement from individual X’s)
    • TruncatedDistribution (arbitrary truncation of any distribution)
  • Added sim_tools.time_dependent module that contains NSPPThinning class for modelling time dependent arrival processes.
  • Updated test suite for distributions and thinning
  • Basic Jupyterbook of documentation.

v0.2.1

2023-11-23 · GitHub

Changes

Patches

  • Modified Setup tools to avoid numpy import error on build.
  • Updated github action to use up to date actions.

v0.2.0

2023-11-23 · GitHub

  • Added sim_tools.distribution module. This contains classes representing popular sampling distributions for Discrete-event simulation. All classes encapsulate a numpy.random.Generator object, a random seed, and the parameters of a sampling distribution.

  • Python has been updated, tested, and patched for 3.10 and 3.11 as well as numpy 1.20+

  • Minor linting and code formatting improvement.

v0.1.4

2021-07-05 · GitHub

v0.1.3 broke ovs.indifference_zone due to name change of function (imported but not used). This dependency has been removed.

v.0.1.3

2021-07-05 · GitHub

fix for spelling mistake in ovs.toy_models functions that create sequences of Gaussian models. guassian -> gaussian

v0.1.2

2021-03-17 · GitHub

Minor updates to SW21 tutorial sim_tools.ovs.toy_model.ManualOptimiser updated. .sigmas -> vars

v0.1.1

2021-02-21 · GitHub

Cleaned up readme.md Badge links for OVS to Google Colab. Citation information.

v0.1.0

2021-02-20 · GitHub

Initial release.