Releases: bat/bat
Version 1.0
BAT - Bayesian Analysis Toolkit
Release notes for version: 1.0.0
Release date: 2018-05-18
Urgency: high
SHA256: 620e8069d85f18f8504137823621cbb578fa5b159e3074f0f2379ac295dd1482
Overview
This release is the result of a major clean up of the code and build
system. This allowed us to implement important new features but
implied that we had to break compatibility with previous releases. We
removed many inconsistencies in the interface and intend to not do any
such changes in future versions 1.X of BAT. To ease the maintenance
burden, we also removed some parts of the code that felt were untested
and not easy to keep up to date.
Documentation
The documentation has been modernized and rewritten. It is now hosted at github (also as a PDF) along with the reference guide
New code features and improvements
proposal function
We now have a multivariate proposal function that learns its
covariance during the prerun. It's the new default. It provides a
massive speed-up compared to the factorized proposal for problems with
more than a few parameters. Both factorized and multivariate proposal
are of the Gaussian or Student's [default] type. For Student's, the
degree of freedom is adjustable and defaults to 1; that is a
Cauchy. The mixing of chains via R values has been synchronized with an
update to the original paper by Gelman and Rubin.
Continuation of marginalization
- Continuation of a main run, for example in interactive sessions, to collect more samples
- Continuation of a main run loaded in from file. This feature has been requested by many users.
Further features
- Laplace integration for evidence calculation
- Refactored
BCEngineMCMC: the state of a chain (mean, variances, etc.) is now summarized in aBCChainState - The number of attempts to find a valid initial point to start the Markov chain can be defined with
BCEngineMCMC::SetInitialPositionAttemptLimit. - The log prefix like
Summary:can be turned off withBCLog::SetPrefix(false) - Drawing styles have been defaulted to those of ROOT
- update CUBA default settings
Build system changes
INSTALL.mdgives explicit advice on how to install BAT in the
current Ubuntu and Debian releases./configure --with-cuba=downloaddownloads and builds the latest
version of CUBA 4.2 and sets everything up so BAT can use it without
any further setup required from the usermakebuilds the library and all examples- unit tests expanded
make checkruns the unit tests and all examples, without requiring
to install BAT- out-of-source builds now work; e.g., in a subdirectory of the source
files, one can build BAT such that the source directory remains
clean from build artefacts make distcheckdoes the above and more and now passes- the performance test suite is overhauled
- Update minimum root version to 5.34/19
- we test every pull request to the master branch on travis with ROOT 5 and ROOT 6 to pass the unit tests and successfully run all examples
- we now use
rpathon Mac OS X because dynamic loading viaLD_LIBRARY_PATHdoesn't work with security integrity protection.LD_LIBRARY_PATHstill used on Linux. - BAT is easier to use as a git submodule
Bug fixes
An excerpt from the detailed list
- All examples outputs are checked to look reasonable. This required many fixes because ROOT changed the behavior of several plot commands and options
- The text output was polished to remove several inconsistencies
- Many ROOT plot objects were leaked. This is fixed now by putting them into a
BCTrashthat is cleaned when theBCModelinstance is destroyed. We avoid letting ROOT take over control of namedTObjectinstances. - User models have default copy constructors and assignment operators that work and don't leak or produce segmentation faults
BCHistogramFitterhad issues with non-unit bin widths- File opening, tree and histogram writing and reading is now more robust
- The smallest intervals in marginal histograms were off by one in some cases
GetBestFitParametersdoes not report observables any more- Samples in parallel mode could be incorrect due to a race condition. The frequency of occurrence depended strongly on the number of chains and threads and the speed of the posterior evaluation. It could happen not at all or just every 10000 or even every 100 iterations. Stricter unit tests ensure that serial and parallel evaluation give byte-identical results but on travis we do not have many threads available.
MCMCUserInitializeis now also called in advance of optimization techniques to allow the user to initialize any structures needed for the calling of the likelihood.BC*Fitterclasses are now thread safe- the output precision is now adaptively calculated
- GetCurrentChain() now returns robust results with multiple threads
- LogApproxBinomial returns -inf when needed
- return -inf instead inf in
BCConstantPrior
Known problems
BCRooInterfaceandBATCalculatorare not thread safe; both
classes have been updated to compile and run but we can offer no
guarantee that they work correctly because the original author is
not available anymore. In contrast to all other BAT classes,
BATCalculatorcan not be used in interactive ROOT 6 sessions.BCTH1Prior::swapdoesn't work correctly with root older than 5.34/25- The ROOT macros in
example/advancedmay not work on the Mac under ROOT6.
Interface changes
./configure --enable-parallelization->./configure --enable-parallel- many methods now accept or return
std::stringreferences instead
ofconst char* - rename many getters and setters in
BCEngineMCMCstriving for
consistency and simplicity; for example,MCMCSetNIterationsRun->
SetNIterationsRun - All members related to p values corrected for their degrees of freedom have been removed. There are too many assumptions going into those calculations that we feel that the result shouldn't be blindly used. The user can easily compute the correction manually with
BCMath::CorrectPValue(). - For explicit control, we now return a
TMinuitMinimizerinstead ofTMinuitbefore - File output within simulated annealing has been removed completely
- marginalized histograms now stored to disk by name of variables instead of indices
- With the new
BCChainState, we droppedBCEngineMCMC::Getxbut access to invidual chains viaGetx(unsigned c)still works BCObservablecannot share data with each other any more. This improves consistency and avoid seg faults and leaks- several functions that previously returned
boolto indicate success of action now return nothing, butthrowif an error is encountered.
v1.0.0-RC2
BAT - Bayesian Analysis Toolkit
Release notes for version: 1.0.0-RC2
Release date: 2018-04-24
Urgency: high
Overview
This release candidate is expected to be very close to the actual release of 1.0.
Since the last release candidate, we fixed 75 issues and merged 52 pull requests. Numerous small problems were fixed so everyone is encouraged to update to this version.
New code features and improvements
- Continue the main run, for example in interactive sessions, to collect more samples
- Laplace integration for evidence calculation
- Refactored
BCEngineMCMC: the state of a chain (mean, variances, etc.) is now summarized in aBCChainState - The number of attempts to find a valid initial point to start the Markov chain can be defined with
BCEngineMCMC::SetInitialPositionAttemptLimit. - The log prefix like
Summary:can be turned off withBCLog::SetPrefix(false)
Build system changes
- Update minimum root version to 5.34/19 and at least autoconf 2.69
- we test every pull request to the master branch on travis with ROOT 5 and ROOT 6 to pass the unit tests and successfully run all examples
- we now use
rpathon Mac OS X because dynamic loading viaLD_LIBRARY_PATHdoesn't work with security integrity protection.LD_LIBRARY_PATHstill used on Linux. - BAT is easier to use as a git submodule
Bug fixes
An excerpt from the detailed list
- All examples outputs are checked to look reasonable. This required many fixes because ROOT changed the behavior of several plot commands and options
- The text output was polished to remove several inconsistencies
- Many ROOT plot objects were leaked. This is fixed now by putting them into a
BCTrashthat is cleaned when theBCModelinstance is destroyed. We avoid letting ROOT take over control of namedTObjectinstances. - User models have default copy constructors and assignment operators that work and don't leak or produce segmentation faults
BCHistogramFitterhad issues with non-unit bin widths- File opening, tree and histogram writing and reading is now more robust
- The smallest intervals in marginal histograms were off by one in some cases
GetBestFitParametersdoes not report observables any more- Samples in parallel mode could be incorrect due to a race condition. The frequency of occurrence depended strongly on the number of chains and threads and the speed of the posterior evaluation. It could happen not at all or just every 10000 or even every 100 iterations. Stricter unit tests ensure that serial and parallel evaluation give byte-identical results but on travis we do not have many threads available.
Known problems
- the manual is not ready yet but the current version is now hosted on github (also as a PDF) along with the reference guide
- continuing the Markov chain from the results in a file is still work in progress
Interface changes
- All members related to p values corrected for their degrees of freedom have been removed. There are too many assumptions going into those calculations that we feel that the result shouldn't be blindly used. The user can easily compute the correction manually with
BCMath::CorrectPValue(). - For explicit control, we now return a
TMinuitMinimizerinstead ofTMinuitbefore - File output within simulated annealing has been removed completely
- marginalized histograms now stored to disk by name of variables instead of indices
- With the new
BCChainState, we droppedBCEngineMCMC::Getxbut access to invidual chains viaGetx(unsigned c)still works BCObservablecannot share data with each other any more. This improves consistency and avoid seg faults and leaks
v1.0.0-RC1
BAT - Bayesian Analysis Toolkit
Release notes for version: 1.0
Release date: 2015-12-11
Urgency: high
Overview
This release is the result of a major clean up of the code and build
system. This allowed us to implement important new features but
implied that we had to break compatibility with previous releases. We
removed many inconsistencies in the interface and intend to not do any
such changes in future versions 1.X of BAT. To ease the maintenance
burden, we also removed some parts of the code that felt were untested
and not easy to keep up to date.
New features and improvements
proposal function
We now have a multivariate proposal function that learns its
covariance during the prerun, it's the new default. It provides a
massive speed-up compared to the factorized proposal for problems with
more than a few parameters. Both factorized and multivariate proposal
are of the Gaussian or Student's [default] type. For Student's, the
degree of freedom is adjustable and defaults to 1; that is a
Cauchy. The mixing of chains via R values has been synced with an
update to the original paper by Gelman and Rubin.
Miscellaneous
- update CUBA default settings
- use exceptions instead of an error message when there is no way to
proceed
testing and building
INSTALL.mdgives explicit advice on how to install BAT in the
current Ubuntu and Debian releases- we now run tests for every change to the master branch with root 5
and 6 on Ubuntu and Mac to ensure compatibility with all supported
platforms ./configure --with-cuba=downloaddownloads and builds the latest
version of CUBA 4.2 and sets everything up so BAT can use it without
any further setup required from the usermakebuilds the library and all examples- unit tests expanded
make checkruns the unit tests and all examples, without requiring
to install BAT- out-of-source builds now work; e.g., in a subdirectory of the source
files, one can build BAT such that the source directory remains
clean from build artefacts make distcheckdoes the above and more and now passes- the performance test suite is overhauled
Bug fixes
BC*Fitterclasses are now thread safe- the output precision is now adaptively calculated
- GetCurrentChain() now returns robust results with multiple threads
- MCMCInitialize() called at the appropriate time
- LogApproxBinomial returns -inf when needed
- outputs are polished
- return -inf instead inf in
BCConstantPrior
Known problems
- ROOT 6.05/02 has a bug in the TF1 copy constructor slowing down the
fast fitter and leading to segfaults with multiple threads; see
issues #74 and #81 - with ROOT 5.34 and CUBA,
BCIntegrate.TESTproduces errors on the
shell but the program passes all checks. This does not occur with
ROOT 6. BCRooInterfaceandBATCalculatorare not thread safe; both
classes have been updated to compile and run but we can offer no
guarantee that they work correctly because the original author is
not available anymore. In contrast to all other BAT classes,
BATCalculatorcan not be used in interactive ROOT 6 sessions.BCTH1Prior::swapdoesn't work correctly with root older than 5.34/25
Interface changes
./configure --enable-parallelization->./configure --enable-parallel- many methods now accept or return
std::stringreferences instead
ofconst char* - rename many getters and setters in
BCEngineMCMCstriving for
consistency and simplicity; for example,MCMCSetNIterationsRun->
SetNIterationsRun
BAT bugfix release, version 0.9.4.1
BAT - Bayesian Analysis Toolkit
Release notes for version: 0.9.4.1
Release date: 2015-01-19
Urgency: low
Bug fixes
- fix installation on Mac OS X with root6 and a version of
sedthat
is incompatible with GNUsedto avoid errors when usingsed -i.
BAT release, version 0.9.4
BAT - Bayesian Analysis Toolkit
Release notes for version: 0.9.4
Release date: 2014-11-20
Urgency: medium
New features
- support ROOT6 (requires compiler that implements C++ 11)
- support cuba 4.0
Improvements
CreateProject.shbecomesbat-project, loses a lot of clutter, and is installed to thebindirectory- every subclass of BCEngineMCMC provides access to the parameters via
GetParameters
Interface changes (for users of previous BAT versions):
- cuba 3.2 had bugs and is not supported anymore
- configure option
--with-roostatsbecame--enable-roostats
Bug fixes
- fix off-by-one error in BCH1D::Draw
- include all 1D/2D marginals in pdf if there is more than 1 plot per page
- all examples that use the ROOT interpreter work
- bat libraries have the proper dependency on other bat libraries and external libraries encoded
Improvements of the build system
- important flags from ROOT are now passed on
- fix and update installation instructions, display how-to-setup-bat steps at the end of
make install - support VPATH builds: you can now create a subdirectory, run
configurefrom there, and keep all build products in the subdirectory - unit tests and the latex sources now part of the distribution
make distcheckpasses- dependencies properly included in the libraries
- transform INSTALL to markdown format, fix csh instructions
- add a
bat-configscript that is installed to$PREFIX/bin/. It
can be queried to return libraries, compiler flags, version etc. The
variable$BATINSTALLDIRis no longer used in the examples and
bat-project - support
pkgconfig - no longer required ROOT's
libmathmoreto build the bat libraries
BAT release candidate, version 0.9.4-RC3
BAT - Bayesian Analysis Toolkit
Release notes for version: 0.9.4
Release date: 2014-11-XX
Urgency: medium
New features
- support ROOT6 (requires compiler that implements C++ 11)
- support cuba 4.0
Improvements
CreateProject.shbecomesbat-project, loses a lot of clutter, and is installed to thebindirectory- every subclass of BCEngineMCMC provides access to the parameters via
GetParameters
Interface changes (for users of previous BAT versions):
- cuba 3.2 had bugs and is not supported anymore
- configure option
--with-roostatsbecame--enable-roostats
Bug fixes
- fix off-by-one error in BCH1D::Draw
- include all 1D/2D marginals in pdf if there is more than 1 plot per page
- all examples that use the ROOT interpreter work
- bat libraries have the proper dependency on other bat libraries and external libraries encoded
Improvements of the build system
- important flags from ROOT are now passed on
- fix and update installation instructions, display how-to-setup-bat steps at the end of
make install - support VPATH builds: you can now create a subdirectory, run
configurefrom there, and keep all build products in the subdirectory - unit tests and the latex sources now part of the distribution
make distcheckpasses- dependencies properly included in the libraries
- transform INSTALL to markdown format, fix csh instructions
- add a
bat-configscript that is installed to$PREFIX/bin/. It
can be queried to return libraries, compiler flags, version etc. The
variable$BATINSTALLDIRis no longer used in the examples and
bat-project - support
pkgconfig - no longer required ROOT's
libmathmoreto build the bat libraries
BAT release candidate, version 0.9.4-RC2
BAT - Bayesian Analysis Toolkit
Release notes for version: 0.9.4
Release date: 2014-11-XX
Urgency: medium
New features
- support ROOT6 (requires compiler that implements C++ 11)
- support cuba 4.0
Improvements
CreateProject.shbecomesbat-project, loses a lot of clutter, and is installed to thebindirectory- every subclass of BCEngineMCMC provides access to the parameters via
GetParameters
Interface changes (for users of previous BAT versions):
- cuba 3.2 had bugs and is not supported anymore
- configure option
--with-roostatsbecame--enable-roostats
Bug fixes
- fix off-by-one error in BCH1D::Draw
- all examples that use the ROOT interpreter work
- bat libraries have the proper dependency on other bat libraries and external libraries encoded
Improvements of the build system
- important flags from ROOT are now passed on
- fix and update installation instructions, display how-to-setup-bat steps at the end of
make install - support VPATH builds: you can now create a subdirectory, run
configurefrom there, and keep all build products in the subdirectory - unit tests and the latex sources now part of the distribution
make distcheckpasses- dependencies properly included in the libraries
- transform INSTALL to markdown format, fix csh instructions
- add a
bat-configscript that is installed to$PREFIX/bin/. It
can be queried to return libraries, compiler flags, version etc. The
variable$BATINSTALLDIRis no longer used in the examples and
bat-project - support
pkgconfig - no longer required ROOT's
libmathmoreto build the bat libraries
BAT release candidate, version 0.9.4-RC1
v0.9.4-RC1 BAT release candidate, version 0.9.4-RC1
BAT release, version 0.9.3
v0.9.3 BAT release, version 0.9.3