HOLMES stands for Higher-Order dependencies with a Log-linear Model Estimation Strategy. It is a collection of Python modules that are used for inferring higher-order dependencies or interactions from presence/absence data. HOLMES is also used for randomly generating synthetic presence/absence data from known higher-order structures.
The codes are based on the methods developed in Ref. 1. These methods rely on log-linear models, which are classical statistical tools for discrete multivariate analysis (Ref. 2). The higher-order interactions (Ref. 3) are encoded into mathematical structures that generalize the concept of graph, namely simplicial complexes and hypergraphs.
Note that in its current state, HOLMES can only uncover dependencies of order lower than 4. To go further, one has to implement the iterative procedure for the sub-saturated model with the desired amount of variables. The recipe for order can be found in Ref 2. Once implemented, the script has to be adjusted in order to find the appropriate cliques and run the tests on the possible candidates.
python3
numpy
numba
$ git clone https://github.com/pdesrosiers/HOLMES
$ cd HOLMES
$ python setup.py install
- Some examples are provided in the folder
doc
- �The script
example1.py
explaines how to analyze existing presence/absence data with the asymptotic method. - The script
example2.py
generates synthetic presence/absence data from a list a facets defing a simplicial complex.
- Xavier Roy-Pomerleau (2020). Inférence d'interactions d'ordre supérieur et de complexes simpliciaux à partir de données de présence/absence. Master's thesis. Université Laval. PDF available here
- Yvonne M. Bishop, Stephen E. Fienberg, and Paul W. Holland (2007). Discrete Multivariate Analysis: Theory and Practice. Springer.
- Federico Battiston, Giulia Cencetti, Iacopo Iacopini, Vito Latora, Maxime Lucas, Alice Patania, Jean-Gabriel Young, Giovanni Petri (2020). Networks beyond pairwise interactions: structure and dynamics. Physics Reports 874, 25, 1-92.