Juliacon 2024

MaxEntropyGraphs.jl: Random Graphs with JuliaGraphs
07-10, 11:30–12:00 (Europe/Amsterdam), Method (1.5)

MaxEntropyGraphs.jl introduces robust graph randomization to Julia using maximum entropy models. It enables the generation of unbiased null models from real networks for hypothesis testing. The package is completely integrated with JuliaGraphs ecosystem and enables researchers to generate random graphs that preserve specific properties, facilitates hypothesis testing and the exploration of network metrics, making it a valuable tool for network scientists.


Network analysis is a powerful tool for understanding the structure and function of complex systems, such as social networks, ecological networks, and biological networks. By examining the connections and interactions between nodes in a network, researchers can gain insights into the underlying processes and patterns that govern these systems. These real-world systems or networks can be represented by the mathematical object that is a graph.

Graph randomization is a method commonly used in network analysis to establish null hypotheses and compare an observed graph against random expectations within an ensemble of graphs. For example, graph randomization can be used to investigate whether a particular network exhibits a higher level of clustering than expected by chance, which can provide insights into the presence of community structures within the network. There are many ways to do graph randomization, but maximum entropy null models are specifically useful due to their unbiased parameter estimation, incorporation of constraints, flexibility, statistical robustness, and mathematical simplicity.

The MaxEntropyGraphs.jl package can be used to compute the likelihood-maximizing parameters for different null models for a variety of graphs (directed, undirected, bipartite, weighted etc.). It enables users to sample graphs from the ensemble and to compute the expected value of a graph metric directly from the ensemble.

The package uses the JuliaGraphs ecosystems for everything graph related, makes us of well-established Julia optimization tools (Optimization.jl) and numerical solvers (NLsolve.jl) to obtain the graph’s likelihood maximizing parameters; leverages the JuliaDiff ecosystem for automatic differentiation and groups the different null models in a single framework.

Currently, there are no existing Julia packages offering this functionality. In Python, there are some packages that provide similar functionality (NEMtropy, BiCM, etc.), but these do not always integrate directly with an established Python ecosystem for graphs, use a custom implementation for the numerical solver(s), and do not offer the possibility of using automatic differentiation. Performance testing has shown that the Julia implementation is typically faster than the equivalent Python packages for networks of different sizes and densities. The way forward for this package is to include additional null models that might be relevant for more advanced concepts such as higher-order or multilayer graphs.

Bart DE CLERCK has a background in engineering and works as a teaching assistant within the SMAC (Simulation Modelling and Analysis of Complex systems) unit of the Department of Mathematics at the Royal Military Academy (RMA). He’s also pursuing a joint PhD between the RMA and Ghent University (Complex Systems Institute). His main research areas are network science and AI applications for intelligence.