This C++ version of BAT is still being maintained, but addition of new features is unlikely. Check out our new incarnation, BAT.jl, the Bayesian analysis toolkit in Julia. In addition to Metropolis-Hastings sampling, BAT.jl supports Hamiltonian Monte Carlo (HMC) with automatic differentiation, automatic prior-based parameter space transformations, and much more. See the BAT.jl documentation.

Downloads

Our releases are hosted at our github page. This page is maintained to provide access to older files.

Version:   0.9 (pre 1.0)

Urgency:  medium

Release date: 17.05.2012

Source code: BAT-0.9.tar.gz (804 kB)

reference guide | installation instructions | changelog | performance testing


Release notes

This version is intended as a pre-release for the stable BAT version 1.0. It contains many improvements and a few bugfixes. The most important changes are summarized below.

CHANGE OF THE USER INTERFACE

Multi-Template Fitter

Code updates

Compilation

Documentation

Examples

For detailed list of changes see the ChangeLog.


HOW TO UPDATE PRE-0.9 BAT MODEL TO THE NEW INTERFACE

The user interface for the models has changed in BAT version 0.9 as compared to BAT 0.4.3. In a number of methods of various BAT classes the argument containing the vector of parameter values in double precision was passed by value, i.e. as

      std::vector<double> parameters

In BAT 0.9 the vector of parameters is passed as constant reference to vector, i.e. as

      const std::vector<double> & parameters

This reduces the CPU time spent on copying and thus increases the overal performance. This is especially significant for models with a large number of parameters.

In order to adapt a user defined model that was working with BAT versions prior to 0.9 to the new interface, the argument parameters has to be changed as described above in all model source files. Generally, the change only affects the method declarations in the model header file and the method definition line in the model source file. The body of the method should not be affected.

In most cases this means that the following lines have to be adjusted in both .h and .cxx files for the user model

      double LogLikelihood(std::vector<double> params)
         -->  double LogLikelihood(const std::vector<double> & params)

      double LogAPrioriProbability(std::vector<double> params)
         -->  double LogAPrioriProbability(const std::vector<double> & params

Further affected methods potentially overloaded in the user model class are:

      double               BCIntegrate::FitFunction(const std::vector<double> & x, const std::vector<double> & par)
      double               BCEngineMCMC::LogEval(const std::vector<double> & parameters)
      std::vector<double>  BCIntegrate::GetProposalPointSACustom(const std::vector<double> & x, int t)
      double               BCModel::SamplingFunction(const std::vector<double> & parameters)

If you need help with adjusting your existing model to the new version of BAT, do not hesitate to contact us.


Older versions:

0.9.4.1 (bugfix)
0.9.4 (pre 1.0)
0.9.3 (pre 1.0)
0.9.2 (pre 1.0)
0.9.1 (pre 1.0)
0.9 (pre 1.0)
0.4.3 (dev)
0.4.2 (dev)
0.4.1 (dev)
0.4 (dev)
0.3.2 (dev)
0.3.1 (dev)
0.3 (dev)
0.2.1 (dev)
0.2 (dev)
0.1 (initial release)