Skip to content

barry: your go-to motif accountant

barry logo

This repository contains a C++ template library that essentially counts sufficient statistics on binary arrays. Its primary goal is to provide a general framework for building discrete exponential-family models. A particular example is Exponential Random Graph Models (ERGMs), but we can use barry to deal with non-square arrays.

Among the key features included in barry, we have:

  • Sparse arrays.
  • User-defined count statistics.
  • User-defined constrain of the support set.
  • Powerset generation of binary arrays.
  • Discrete Exponential Family Models module (DEFMs).
  • Pooled DEFMs.

To use barry, you can either download the entire repository or, since it is header-only, the single header version barry.hpp.

This library was created and maintained by Dr. George G. Vega Yon as part of his doctoral dissertation "Essays on Bioinformatics and Social Network Analysis: Statistical and Computational Methods for Complex Systems."

Where to go next

  • Getting Started: examples of counting statistics, and how to build and run the tests.
  • Implementation: how barry represents supports and computes exact likelihoods.
  • API Reference: classes, namespaces, and files, generated from the Doxygen comments in the headers.
  • barryr: the barry headers packaged for use in R packages (LinkingTo: barry).
  • defm: R package for Discrete Exponential-Family Models built on barry.
  • ergmito: exact-likelihood ERGMs for small networks.