Change log#
Show code cell source
# We import the changelog to avoid keeping duplicate copies in the project root
# and in the docs/ folder for the JupyterBook.
# JupyterBook doesn't support including .md files from the docs/ parent, so it
# is instead imported within an .ipynb file.
from IPython.display import Markdown, display
# Import the changelog
with open("../CHANGES.md") as f:
lines = f.readlines()
# Skip the first line (the title)
content = ''.join(lines[1:]).lstrip()
# Display the rest of the changelog
display(Markdown(content))
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. Dates formatted as YYYY-MM-DD as per ISO standard.
Consistent identifier (represents all versions, resolves to latest):
Unreleased
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
andDiscreteEmpirical
.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
.
v0.9.0 
Added
distributions.DistributionRegistry
- for batch creation of standard distributions from a dictionary or list.DOCS:
DistributionRegistry
explaination 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 forsim_tools
functions and classes.All distribution classes updated to include valudation of input parameters.
DOCS: Dedicated page for using empirical distributions.
Changed
Distribution
changed from abstract base class toProtocol
. All inheritance removed from concrete classes.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 emprical distributionBREAKING:
NSPPThinning
: class now only requires “mean_iat” column indata
. Acceptance/rejection calcualted using $iat_{min} / iat_(t)$
Fixed
Gamma
fix of the calculation of the mean based on alpha and beta.GroupedContinuousEmpirical
: silent bug whenu
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 
Added
Add
simpy
andtreat-sim
to the environment, as these were required in the notebooks indocs/
.Add
nbqa
andpylint
to the environment for linting, plus a relevant fileslint.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 usingpylint
(most addressed, some remain unresolved).Provided advice on tests, building docs and linting in the
README.md
.00_front_page.md
now just importedREADME.md
(reducing duplication, and keping it up-to-date).
Removed
Removed duplicate
sw21_tutorial.ipynb
.
Fixed
Within
confidence_interval_method
, convert data provided toOnlineStatistics
tonp.array
so that it is actually used to update the class (when before, it was not, as it was a list).
v0.7.1 
Fixed
Patched
ReplicationsAlgorithm
look ahead will now correctly use_klimit()
to calculate extra no. replications to run.
v0.7.0 
Added
output_analysis
module - focussed at the moment on selecting the number of replicationsReplicationsAlgorithm
that implements the automated approach to selecting the number of replications for a single performance measures.ReplicationsAlgorithmModelAdapter
- aProtocol
to adapt any model to work with withReplicationsAlgorithm
confidence_interval_method
- select the number of replication using the classical confidence interval methodplotly_confidence_interval_method
- visualise the confidence interval method using plotly.ReplicationObserver
aProtocol
for observering the replications algorithmReplicationTabulizer
record replications algorithm in a pandas dataframe.Documentation for
ReplicationsAlgorithm
Updated
sim-tools
dev conda environment now pip installs local python package in editable model.
v0.6.1 
Fixed
BUILD: added rich library.
Removed
Scipy Dependency
v0.6.0 
Added
Added
nspp_plot
andnspp_simulation
functions totime_dependent
module.DOCS: added
nspp_plot
andnspp_simulation
examples to time dependent notebookDOCS: simple trace notebook
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 
Added
EXPERIMENTAL: added
trace
module withTraceable
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 allows minimum value and truncates automaticalled instead of resampling.
v0.4.0 
Changed
BUILD: Dropped legacy
setuptools
and migrated package build tohatch
BUILD: Removed
setup.py
,requirements.txt
andMANIFEST
in favour ofpyproject.toml
v0.3.3 
Fixed
PATCH:
distributions.Discrete
was not returning numpy arrays.
v0.3.2 
Changed
Update Github action to publish to pypi. Use setuptools instead of build
v0.3.1 
Fixed
PYPI has deprecated username and password. PYPI Publish Github action no works with API Token
v0.3.0 
Added
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 
Fixed
Modified Setup tools to avoid numpy import error on build.
Updated github action to use up to date actions.
v0.2.0 
Added
Added
sim_tools.distribution
module. This contains classes representing popular sampling distributions for Discrete-event simulation. All classes encapsulate anumpy.random.Generator
object, a random seed, and the parameters of a sampling distribution.
Changed
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.