abcpp is a lightweight embeddable C++ library for Approximate Bayesian
Computation, with R and Python wrappers. The C++ library is the only algorithm
implementation; R and Python are thin frontends.
abcpp can be embedded in another CMake project in the same style as small algorithm libraries such as NLopt, using FetchContent_Declare to call abcpp as the algorithm backend:
include(FetchContent)
FetchContent_Declare(
abcpp
GIT_REPOSITORY https://github.com/yuki-961004/abcpp.git
GIT_TAG main
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(abcpp)
target_link_libraries(my_target PRIVATE abcpp::abcpp)The primary C++ API is NLopt-like:
#include <abcpp/abcpp.hpp>
abcpp::opt opt;
abcpp::result fit = opt
.set_target(target)
.set_params(params)
.set_sumstats(sumstats)
.set_method(abcpp::method::neuralnet)
.set_tol(0.01)
.set_nnet_sizenet(8)
.run();Install from CRAN:
install.packages("abcpp")The R interface uses four inputs: target, params, sumstats, and
control.
library(abcpp)
result <- abcpp::abc(
target = <target_summary_vector_or_matrix>,
params = <parameter_vector_or_matrix>,
sumstats = <simulated_summary_vector_or_matrix>,
control = list(
method = "rejection",
tol = <tolerance_between_0_and_1>
)
)
summary(result)Install from PyPI:
pip install abcppThe Python interface mirrors the R interface:
import abcpp
result = abcpp.abc(
target=<target_summary_vector_or_matrix>,
params=<parameter_vector_or_matrix>,
sumstats=<simulated_summary_vector_or_matrix>,
control={
"method": "rejection",
"tol": <tolerance_between_0_and_1>,
},
)
abcpp.summary(result)