A non-exhaustive list of some software I have developed over the past few years. See also my github page and the websites of my collaborators.


stan model to infer the network structure that best explains observational data of plant-pollinator interactions. Model described in this preprint.


Sequential Monte-Carlo sampler for the distribution over past states of a statically observed network. The method is described in this paper. See also this github page where George Cantwell implements an exact solution in the special case of trees (method described in this preprint).

MCMC sampling of the Simplicial Configuration Model (SCM)

The Simplicial Configuration Model is a random null model for simplicial complexes, mathematical objects that can be seen as high-order generalizations of simple graphs (they incorporate multi-node interactions). This C++ program (and library) is the reference implementation for the Markov chain Monte Carlo (MCMC) sampler discussed in this paper.

MCMC sampling of the Stochastic Block Model (SBM)

Basic sampling tool for the canonical SBM. Implements the Metropolis Hasting algorithm, both for sampling from the posterior distribution of the model and for maximizing its likelihood (through simulated annealing). The algorithm is not as efficient as Belief Propagation, but it works on dense graphs. See the Supplemental Material of this paper for more information.

Structural Preferential Attachment (SPA+)

SPA is a stochastic growth process that generates realistic networks with a modular structure. The first version of the model, SPA, is described in two papers by L. Hébert-Dufresne et al. , and the generalization implemented here is described in this publication.

Hierarchical Preferential Attachment (HPA)

The Hierarchical Preferential Attachment model (HPA) is a direct extension of SPA, and contains the latter as a special case. It is described in this Physical Review E paper. The repository does not contain a full implementation of the model, but provides useful analytical tools to play around with the mean-field equations.


This repository contains a python implementation of the cascading detection meta-algorithm. It is a wrapper around other existing community detection algorithms. It keeps track of nodes’ identity through multiple passes of these algorithms and produces extensive logs containing: time spent on each pass, edge list, and the clusters detected at each pass. The wrapper currently handles CFinder (Palla et al.), link clustering (Ahn et al.) and GCE (Lee at al.).


I sometimes write small and self-contained examples to teach myself new languages and features. I gather the most successful outcomes of these experiments on my github gist page.