Dynamic Community Detection

A simple demo of usage can be found here.

Dynamic community detection is the problem of discovering snapshot_communities in dynamic networks.

There are two types of methods implemented: those that are written in pure python and those who require an external tool.

Those in pure python are part of the tnetwork.DCD module while others are in tnetwork.DCD.external.

Below is a list of implemented methods, with the type of dynamic networks they are designed to manage. Note that this type of network is unrelated with the tnetwork representation: a snapshot representation can be used to encode a snapshot graph, a link stream or an interval graph. The possible types of dynamic networks are:

  • snapshot: The graph is well defined at any $t$, changes tend to occur synchronously
  • interval gaph: The graph is well defined at any $t$, but graph changes are not synchrone, changes appear edge by edge
  • link stream: graphs at any time $t$ are poorly defined, graphs can be studied only by studying a $Delta$ period of aggregation
Types of dynamic networks expected by each method
Method Type of dynamic network
iterative_match snapshots
smoothed_graph snapshots
label_smoothing snapshots
smoothed_louvain snapshots
rollingCPM snapshots
MSSCD link stream
muchaOriginal snapshots
dynamo interval graph

Some external algorithms require matlab, and the matlab-python engine, ensuring the connection between both. How to explain it is explained on the matlab website, currenty there: https://fr.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

Internal algorithms

These algorithms are implemented in python.

iterative_match(dynNetSN[, CDalgo, …]) Community Detection by iterative detection and matching
label_smoothing(dynNetSN[, CDalgo, …]) Community detection by label smoothing
smoothed_louvain(dynNetSN[, match_function, …]) Community Detection using smoothed louvain
rollingCPM(dynNetSN[, k, elapsed_time]) This method is based on Palla et al[1].
smoothed_graph(dynNetSN[, alpha, …]) Smoothed graph approach
MSSCD(dyn_graph[, t_granularity, …]) Multi Scale Stable Community Detection

External algorithms

These algorithms call external code provided by authors, and thus might require installing additional softwares (java, matlab).

dynamo(dyn_graph[, elapsed_time, timeout]) DynaMo algorithm
transversal_network_mucha_original(dyn_graph) Multiplex community detection, Mucha et al.
transversal_network_leidenalg(dyn_graph[, …]) Multiplex community detection reimplemented in leidenalg
estrangement_confinement(dyn_graph[, …]) Estrangement confinement