Dynamic community detection in temporal networks using the flow stability framework described in
Alexandre Bovet, Jean-Charles Delvenne & Renaud Lambiotte, Flow stability for dynamic community detection, Sci. Adv., 8 (19), eabj3063. DOI: 10.1126/sciadv.abj3063
- Python3 (>=3.6)
- pandas
- scipy
- numpy
- Cython (optional but highly recommended)
- sparse_dot_mkl (optional, allows to perform multithreaded sparse matrix multiplication)
git clone git@github.com:alexbovet/flow_stability.git
cd flow_stability
python setup.py build_ext --inplace
to compile the cython functions.
The main classes are:
ContTempNetwork
in the moduleTemporalNetwork
which is used to store and save temporal networks and to compute inter-event transition matrices.FlowIntegralClustering
in the moduleFlowStability
which is used to computed the flow stability (integral of covariance) and to find the best forward and backward partition using the Louvain algorithm.
Additional interesting classes and functions are:
Clustering
andSparseClustering
inFlowStability
can be used to directly cluster covariances or intergrals of covariances.static_clustering
inFlowStability
is an helper function to cluster static networks using Markov Stability.run_multi_louvain
inFlowStability
helper function to run the Louvain multiple times on the same covariance in order to check the robustness of the partition.avg_norm_var_information
inFlowStability
computes the average Normalized Variation of Information of list of cluster lists obtained withrun_multi_louvain
.compute_parallel_clustering
inparallel_clustering
, same thanrun_multi_louvain
but in parallel.- the
parallel_expm
module contains functions to compute the matrix exponential of very large matrices using different strategies.
A jupyter notebook reproducing the example from Fig. 2 of the paper is available in asymmetric_example.ipynb
.