All notable changes to this project will be documented in this file.
- #1527 Added a
ComposedBoundaries
class that lets you compose multipleBoundaries
classes into a higher dimensional one. - #1500 Added a
CensoredGaussianLogLikelihood
class that calculates the censored Gaussian log-likelihood. - #1505 Added notes to
ErrorMeasure
andLogPDF
to say parameters must be real and continuous. - #1499 Added a log-uniform prior class.
- #1503 Stopped showing time units in controller logs, because the units change depending on the output type (see #1467).
- #1517 Fixed a major bug in the covariance matrix update for xNES.
- #1505 Fixed issues with toy problems that accept invalid inputs.
- #1484 Added a
GaussianIntegratedLogUniformLogLikelihood
class that calculates the log-likelihood with its Gaussian noise integrated out with an uninformative prior in log-space. - #1466 Added a
TransformedRectangularBoundaries
class that preserves theRectangularBoundaries
methods after transformation. - #1462 The
OptimisationController
now has a stopping criterionmax_evaluations
. - #1460 #1468 Added the
Adam
local optimiser. - #1459 #1465 Added the
iRprop-
local optimiser. - #1456 Added an optional
translation
toScalingTransform
and added aUnitCubeTransformation
class. - #1432 Added 2 new stochastic models: production and degradation model, Schlogl's system of chemical reactions. Moved the stochastic logistic model into
pints.stochastic
to take advantage of theMarkovJumpModel
. - #1420 The
Optimiser
class now distinguishes between a best-visited point (x_best
, with scoref_best
) and a best-guessed point (x_guessed
, with approximate scoref_guessed
). For most optimisers, the two values are equivalent. TheOptimisationController
still tracksx_best
andf_best
by default, but this can be modified using the methodsset_f_guessed_tracking
andf_guessed_tracking
. - #1417 Added a module
toy.stochastic
for stochastic models. In particular,toy.stochastic.MarkovJumpModel
implements Gillespie's algorithm for easier future implementation of stochastic models. - #1413 Added classes
pints.ABCController
andpints.ABCSampler
for Approximate Bayesian computation (ABC) samplers. Addedpints.RejectionABC
which implements a simple rejection ABC sampling algorithm. - #1378 Added a class
pints.LogNormalLogLikelihood
.
- #1485 PINTS is no longer tested on Ubuntu 18.04 LTS, but on 20.04 LTS and 22.04 LTS.
- #1479 PINTS is no longer tested on Python 3.6. Testing for Python 3.11 has been added.
- #1479 The
asyncio.coroutine
decorators have been removed from all of NUTS's coroutines in order to be compatible with Python 3.11. - #1466
Transformation.convert_boundaries
will now return aTransformedRectangularBoundaries
object if the transformation is element-wise and the given boundaries extendRectangularBoundaries
. - #1458 The
GradientDescent
optimiser now sets its default learning rate asmin(sigma0)
(it can still be changed afterwards withset_learning_rate()
). - #1445 Allowed multiple LogPDFs to be supplied to the MCMCController (one for each MCMC chain), and added an evaluator which evaluates each position on a separate callable.
- #1439, #1433 PINTS is no longer tested on Python 3.5. Testing for Python 3.10 has been added.
- #1435 The optional Stan interface now uses (and requires) pystan 3 or newer. The
update_data
method has been remove (model compilation is now cached so that there is no performance benefit to using this method). - #1424 Fixed a bug in PSO that caused it to use more particles than advertised.
- #1424 xNES, SNES, PSO, and BareCMAES no longer use a
TriangleWaveTransform
to handle rectangular boundaries (this was found to lead to optimisers diverging in some cases).
- #1424 Removed the
TriangleWaveTransform
class previously used in some optimisers.
- #1497 Fixed deprecation warning of
np.product
globally in pints. - #1457 Fixed typo in deprecation warning for
UnknownNoiseLikelihood
. - #1455 The
s
andinv_s
properties ofScalingTransformation
have been replaced with private properties_s
and_inv_s
. - #1450 Made
TransformedBoundaries
consistent withBoundaries
by removingrange()
and addingsample()
. - #1449 Fixed a bug in
MarkovJumpModel.interpolate_mol_counts
. - #1399 Fixed a bug in
DramACMC
, and fixed the number of proposal kernels to 2.
- #1409 The
OptimisationController
now accepts a callback function that will be called at every iteration; this can be used for easier customisation or visualisation of the optimiser trajectory. - #1383 Added a method
toy.TwistedGaussianDistribution.untwist
that turns samples from this distribution into samples from a multivariate Gaussian. - #1322 Added a method
sample_initial_points
that allows users to generate random points with finite metrics (either log-probabilities or error measures) to use as starting points for sampling or optimisation. - #1243 Added testing for Python 3.9.
- #1213, #1216 Added the truncated Gaussian distribution as a log prior,
TruncatedGaussianLogPrior
. - #1212 Added the
PooledLogPDF
class to allow for pooling parameters across log-pdfs. - #1204 This CHANGELOG file to show the changes introduced in each release.
- #1190 A new
ConstantAndMultiplicativeGaussianLogLikelihood
was added. - #1183 Three new methods were added for diagnosing autocorrelated or time-varying noise:
plot_residuals_binned_autocorrelation
,plot_residuals_binned_std
, andplot_residuals_distance
. - #1175 Added notebooks showing how to interface with the
statsmodels
Python package which allows fitting ARIMAX and state space models in PINTS. - #1165 A new
Transformation
abstract class was added, along withComposedTransformation
,IdentityTransformation
,LogitTransformation
,LogTransformation
,RectangularBoundariesTransformation
,ScalingTransformation
subclasses to achieve more effective and efficient optimisation and sampling. - #1165 A new optional argument
transform
was added to bothOptimisationController
andMCMCController
to transform parameters during optimisation and sampling. - #1112 A new
NoUTurnMCMC
sampler (NUTS) was added, along with aDualAveragingAdaption
class to adaptively tune related Hamiltonian Monte Carlo methods. - #1025 Added a stochastic logistic growth problem for use with ABC.
- #1420 The
OptimisationController
now logs a best and a current score. - #1375 Changed all arguments called
transform
totransformation
for consistency. - #1365 Dropped support for Python 2.7. PINTS now requires Python 3.5 or higher.
- #1360 The
ParallelEvaluator
will now set a different (pre-determined) random seed for each task, ensuring tasks can use randomness, but results can be reproduced from run to run. - #1357 Parallel evaluations using multiprocessing now restrict the number of threads used by Numpy and others to 1 (by default).
- #1355 When called with
parallel=True
the methodpints.evaluate()
will now limit the number of workers it uses to the number of tasks it needs to process. - #1250 The returned values from
SingleChainMCMC.tell()
andMultiChainMCMC.tell()
have been extended from current positionx
tox, fx, accepted
, wherefx
is the current log likelihood andaccepted
is a bool indicating whether tell performed an acceptance step in this call. - #1195 The installation instructions have been updated to reflect that PINTS in now pip-installable.
- #1191 Warnings are now emitted using
warnings.warn
rather thanlogging.getLogger(..).warning
. This makes them show up like other warnings, and allows them to be suppressed with filterwarnings. - #1112 The
pints.Logger
can now deal withNone
being logged in place of a proper value.
- #1420 The methods
pints.Optimisation.xbest()
andfbest()
are deprecated in favour ofx_best()
andf_best()
. - #1201 The method
pints.rhat_all_params
was accidentally removed in 0.3.0, but is now back in deprecated form.
- #1250 The methods
SingleChainMCMC.current_log_pdf()
andMultiChainMCMC.current_log_pdf()
have been removed.
- #1350 Fixed bugs in the Relativistic MCMC sampler.
- #1264 Fixed a bug relating to how NUTS handles nans when values outside the range of the priors are proposed.
- #1257 Fixed a bug in
GaussianLogPrior
, which meant the distribution could be instantiated with a non-positive standard deviation. - #1246 Fixed a long-standing bug in
PopulationMCMC
, which caused it to sample incorrectly. - #1196 The output of the method
pints.HalfCauchyLogPrior.sample
had the wrong shape.
- This is the first pip installable release. The changelog documents all changes since this release.