Change log#
[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.