mirror of
https://github.com/aportelli/LatAnalyze.git
synced 2024-11-12 17:35:35 +00:00
Readme update
This commit is contained in:
parent
a0c654003d
commit
f5b3e33fc8
64
Readme.md
64
Readme.md
@ -3,19 +3,19 @@
|
|||||||
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![DOI](https://zenodo.org/badge/10201777.svg)](https://zenodo.org/badge/latestdoi/10201777) [![Build Ubuntu](https://github.com/aportelli/LatAnalyze/actions/workflows/build-ubuntu.yml/badge.svg)](https://github.com/aportelli/LatAnalyze/actions/workflows/build-ubuntu.yml) [![Build macOS](https://github.com/aportelli/LatAnalyze/actions/workflows/build-macos.yml/badge.svg)](https://github.com/aportelli/LatAnalyze/actions/workflows/build-macos.yml)
|
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![DOI](https://zenodo.org/badge/10201777.svg)](https://zenodo.org/badge/latestdoi/10201777) [![Build Ubuntu](https://github.com/aportelli/LatAnalyze/actions/workflows/build-ubuntu.yml/badge.svg)](https://github.com/aportelli/LatAnalyze/actions/workflows/build-ubuntu.yml) [![Build macOS](https://github.com/aportelli/LatAnalyze/actions/workflows/build-macos.yml/badge.svg)](https://github.com/aportelli/LatAnalyze/actions/workflows/build-macos.yml)
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
LatAnalyze is a C++11 library for statistical data analysis based on bootstrap
|
LatAnalyze is a C++14 library for statistical data analysis based on bootstrap
|
||||||
resampling. It has been written with lattice QCD data analysis in mind (hence
|
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.
|
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.
|
Sadly a proper documentation was never written, but some comprehensive examples covering several key features can be found in the `examples` directory.
|
||||||
|
|
||||||
The main features are the following:
|
The main features are the following:
|
||||||
|
|
||||||
* Array and matrix types with fast arithmetic operations based on [Eigen](http://eigen.tuxfamily.org).
|
* Array and matrix types with fast arithmetic operations based on [Eigen](http://eigen.tuxfamily.org).
|
||||||
* High-level types for bootstrap sample manipulation (including various statistical estimators and histogramming).
|
* High-level types for bootstrap sample manipulation (including various statistical estimators and histogramming).
|
||||||
* Mathematical expression parser for runtime defined functions.
|
* Mathematical expression parser for runtime defined functions.
|
||||||
* Data I/O in ASCII and HDF5 (optional).
|
* Data I/O in ASCII, XML, and HDF5.
|
||||||
* High-level wrappers to minimisation routines from the [GSL](http://www.gnu.org/software/gsl/), [Minuit](http://seal.web.cern.ch/seal/snapshot/work-packages/mathlibs/minuit/) (optional) and [NLopt](http://ab-initio.mit.edu/wiki/index.php/NLopt).
|
* High-level wrappers to minimisation routines from the [GSL](http://www.gnu.org/software/gsl/), [Minuit 2](https://github.com/root-project/root/tree/master/math/minuit2) (optional) and [NLopt](http://ab-initio.mit.edu/wiki/index.php/NLopt).
|
||||||
* Non-linear regression with error on independent variables (through total least squares).
|
* 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](http://www.gnu.org/software/gsl/).
|
* High-level wrappers to numerical integrator and non-linear solver from the [GSL](http://www.gnu.org/software/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 functional types for function of model. General functions can be defined from C pointers, C++ objects, strings of mathematical expressions or tabulated data.
|
||||||
@ -24,14 +24,14 @@ The main features are the following:
|
|||||||
## Installation
|
## Installation
|
||||||
The head of the `master` branch always points to the latest stable release. The `develop` branch is the main unstable branch of LatAnalyze.
|
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).
|
LatAnalyze is written in C++14. It has been successfully built on various Unix platform using reasonably recent versions of Clang or GCC.
|
||||||
The only strict dependencies is the [GSL](http://www.gnu.org/software/gsl/).
|
The only strict dependencies are the [GSL](http://www.gnu.org/software/gsl/) and [HDF5](https://www.hdfgroup.org/HDF5/) (built with C++ support).
|
||||||
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.
|
Additionally, cmake (from 3.11), 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](https://www.hdfgroup.org/HDF5/) (built with C++ support), [Minuit](http://seal.web.cern.ch/seal/snapshot/work-packages/mathlibs/minuit/) and [NLopt](http://ab-initio.mit.edu/wiki/index.php/NLopt).
|
Optional dependencies are [Minuit 2](https://github.com/root-project/root/tree/master/math/minuit2) and [NLopt](http://ab-initio.mit.edu/wiki/index.php/NLopt).
|
||||||
|
|
||||||
Below are instructions for a quick installation. 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`.
|
LatAnalyze is built through CMake. Below are example instructions for compiling and installing LatAnalyze.
|
||||||
|
|
||||||
### General quick installation
|
### Portable quick installation
|
||||||
For a quick installation with all possible extensions execute:
|
For a quick installation with all possible extensions execute:
|
||||||
```
|
```
|
||||||
./install-latan.sh <prefix>
|
./install-latan.sh <prefix>
|
||||||
@ -43,19 +43,53 @@ All the dependencies of LatAnalyze can be installed through the [Homebrew](https
|
|||||||
```
|
```
|
||||||
brew install automake autoconf libtool bison flex gsl minuit2 nlopt hdf5
|
brew install automake autoconf libtool bison flex gsl minuit2 nlopt hdf5
|
||||||
```
|
```
|
||||||
Then generate the build system in LatAnalyze main directory by running the `./bootstrap.sh` script. Finally, build the library
|
Then build the library with `cmake`
|
||||||
```
|
```
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
../configure --prefix=<prefix> --with-minuit=/usr/local --with-nlopt=/usr/local \
|
cmake -DCMAKE_INSTALL_PREFIX=<prefix> -DCMAKE_BUILD_TYPE=Release ..
|
||||||
--with-hdf5=/usr/local --with-gsl=/usr/local \
|
|
||||||
CXXFLAGS='-g -O3 -march=native -mtune=native'
|
|
||||||
make -j <n>
|
make -j <n>
|
||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
where `<prefix>` should be replaced by the desired prefix for LatAnalyze installation, and `<n>` is the number of parallel build processes (typically twice your number of cores).
|
where `<prefix>` should be replaced by the desired prefix for LatAnalyze installation, and `<n>` is the number of parallel build processes.
|
||||||
|
|
||||||
|
### Dependencies through Homebrew/Linuxbrew
|
||||||
|
If you use Homebrew/Linuxbrew to manage packages, the following command can install all the dependencies of LatAnalyze (including optional ones)
|
||||||
|
|
||||||
|
## Using LatAnalyze in CMake projects
|
||||||
|
When LatAnalyze is installed, the necessary CMake module configuration files to link against the library are available in the installation prefix.
|
||||||
|
|
||||||
|
To link against LatAnalyze in a downstream CMake project, simply use
|
||||||
|
```cmake
|
||||||
|
find_package(LatAnalyze)
|
||||||
|
target_link_libraries(<my_app> LatAnalyze::LatAnalyze)
|
||||||
|
```
|
||||||
|
where `<my_app>` is a CMake target. If LatAnalyze was installed in a non-standard prefix, you might have to set `CMAKE_PREFIX_PATH` accordingly for `find_package` to be successful.
|
||||||
|
|
||||||
|
You can additionally modify the `find_package` to ensure specific components are supported
|
||||||
|
```cmake
|
||||||
|
find_package(LatAnalyze REQUIRED COMPONENTS <...>)
|
||||||
|
```
|
||||||
|
where `<...>` is a space separated list of components. Currently available components are
|
||||||
|
- `MINUIT2`: Minuit 2 minimisers
|
||||||
|
- `NLOPT`: NLopt minimisers
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
#### v3.6
|
||||||
|
Build system:
|
||||||
|
* automake build discontinued, now using CMake
|
||||||
|
* CI through GitHub Actions
|
||||||
|
|
||||||
|
Additions:
|
||||||
|
* Discrete wavelet transform
|
||||||
|
* Thread pools
|
||||||
|
* Correlation dynamic range (CDR) calculation
|
||||||
|
* Data filtering and CDR optimisation
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
* Significant optimisation of covariance matrix calculation
|
||||||
|
* Covariance matrix available for any `StatArray` (not only resampled arrays)
|
||||||
|
|
||||||
#### v3.5.1
|
#### v3.5.1
|
||||||
Various fixes and cleaning of outdated code.
|
Various fixes and cleaning of outdated code.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user