1
0
mirror of https://github.com/aportelli/LatAnalyze.git synced 2024-09-19 21:25:36 +01:00
Go to file
2019-02-06 14:38:32 +00:00
ci-scripts More HDF5 CI fix 2017-11-16 17:04:37 +00:00
examples minor portability fixes 2018-04-23 11:34:36 +01:00
lib latan-config utility and HDF5 is now mandatory 2018-08-26 02:55:53 +03:00
physics 2-pt fit: linear perturbation model 2019-01-07 11:55:00 +00:00
utils latan-config utility and HDF5 is now mandatory 2018-08-26 02:55:53 +03:00
.gitignore gitignore update 2017-11-16 18:13:46 +00:00
.travis.yml Travis update 2019-02-06 11:27:23 +00:00
acinclude.m4 first implementation of HDF5 format 2015-10-01 00:13:34 +01:00
bootstrap.sh LatCore compatibility 2015-02-24 16:57:15 +00:00
build.sh code cleaning 2015-06-11 14:03:41 +01:00
configure.ac latan-config utility and HDF5 is now mandatory 2018-08-26 02:55:53 +03:00
latan-config.in forgotten latan-config.in file 2019-02-06 14:38:32 +00:00
Makefile.am latan-config utility and HDF5 is now mandatory 2018-08-26 02:55:53 +03:00
Readme.md ready for release 2017-11-16 19:12:14 +00:00

LatAnalyze

Contributors: Antonin Portelli, Matt Spraggs

License: GNU General Public License v3

Last stable release
Development branch

Description

LatAnalyze is a C++11 library for statistical data analysis based on bootstrap resampling. It has been written with lattice QCD data analysis in mind (hence the name), but its features are not lattice specific and can be used more general statistical context.

Sadly a proper documentation was never written, but some comprehensive examples covering most features can be found in the examples directory.

The main features are the following:

  • Array and matrix types with fast arithmetic operations based on Eigen.
  • High-level types for bootstrap sample manipulation (including various statistical estimators and histogramming).
  • Mathematical expression parser for runtime defined functions.
  • Data I/O in ASCII and HDF5 (optional).
  • High-level wrappers to minimisation routines from the GSL, Minuit (optional) and NLopt.
  • Non-linear regression with error on independent variables (through total least squares).
  • High-level wrappers to numerical integrator and non-linear solver from the GSL.
  • High-level functional types for function of model. General functions can be defined from C pointers, C++ objects, strings of mathematical expressions or tabulated data.
  • High-level plotting functions based on gnuplot, with the possibility of generating and saving plot scripts.

Installation

The head of the master branch always points to the latest stable release. The develop branch is the main unstable branch of LatAnalyze.

LatAnalyze is written in C++11 and requires a rather recent C++ compiler to be built. It has been successfully built on various Linux and OS X platforms using clang (from 3.7), GCC (from 4.9) and the Intel C++ compiler (2016). The strict dependencies are the GSL and LatCore. Additionally, autoconf, automake (from 1.11), libtool, bison (from 3.0) and flex are necessary to build the library. Unless you use a very exotic system, these tools are standard on any Unix platform and should be already present or easy to install through a package manager. Optional dependencies are HDF5 (built with C++ support), Minuit and NLopt.

For a quick installation with all possible extensions execute:

./install-latan.sh <prefix> {osx|linux}

in the ci-scripts directory where <prefix> is where you want LatAnalyze (and its dependencies) to be installed and {osx|linux} should be the name of your OS. This script will automatically download, build and install LatCore, HDF5, Minuit and NLopt. It is assumed that the GSL can be found in a standard location (e.g. it has been installed through a package manager for Linux and is present in /usr/local for OS X).

For a more customised installation, one first needs to generate the build system by running ./bootstrap.sh in the root directory. Then the library can be built and installed through the usual GNU mantra ./configure <options> && make && make install. Use ./configure --help to obtain a list of possible options for ./configure. Because Eigen expressions rely a lot on inlining and compiler optimisations it is strongly recommended to set the CXXFLAGS variable to -O3 -march=native -mtune=native.

History

v3.3

Additions:

  • Sample plot CL utility.
  • Infinity as a math constant.
  • Option to dump bootstrap sequence while resampling.
  • FFT through the GSL.

Changes:

  • GSL integrator accepts infinite bounds.
  • latan-sample-combine accepts mixes of DSample and DMatSample.
  • More general latan-sample-element command.

v3.2.2

Additions:

  • The math interpreter supports inf for infinity.

Changes:

  • Vector version of setUnidimData.

Fixes:

  • Variance matrix computation fix.

v3.2.1

Fix:

  • Wrong argument number check in latan-resample

v3.2 (needs LatCore 1.1)

Additions:

  • 2-pt function fitter latan-2pt-fit
  • Tool to extract one element of a matrix sample latan-sample-element
  • Band plotting

Changes:

  • Sample utilities renamed latan-sample-*
  • Resample utility renamed latan-resample

v3.1.2

Fixes:

  • HDF5 archive URL update in build scripts

v3.1.1 (needs LatCore 1.0)

Fixes:

  • Minuit precision fixed
  • Minor fit interface fixes

v3.1

Additions:

  • Wrappers to NLopt and GSL minimisers.
  • Command-line tool to plot the correlation heatmap of a boostrap sample file.
  • I/O functions for DSample type.

Changes:

  • Internal random generator removed (obsolete because of C++11 pseudo-random generators).
  • Fit interface and XY*Data classes rewritten from scratch for improved flexibility and performance.

Fixes:

v3.0

Commit 7b4f2884a5e99bbfab4d4bd7623f609a55403c39.
First 'stable' version of LatAnalyze in C++. The v2.0 refers to the C version and v1.0 to an old undistributed version.
This version compiles fine on OS X with clang but does have many portability issues to other platforms/compilers, v3.1 is the first real release.