NetworkL brings (L)ongitudinal network analysis on your desk

NetworkL includes a set of optimized algorithms and data structures which allow to carry out network analysis of large time-varying networks on user-level workstations.

NetworkL reduces the memory load of Distance Matrix up to 50% and performs re-computation of shortest paths in centiseconds. For this reason it is particularly suitable for the analysis of (L)ongitudinal network data-sets.

NetworkL is experimental you are free to improve it and contribute on the github project page. You can also send an email or come and see us at the Startup-Network Lab in Catania, Sicily.

Example usage:

import networkx as nx
import networkl as nl
from random import randrange

N=500
G = nx.erdos_renyi_graph(N,0.1)                                #create a graph
SparseD = nl.sparse_distance_matrix(G)                         #compute the Sparse Distance Matrix
# optionally you can use the full matrix (faster but more memory expensive)
#D = nx.all_pairs_shortest_path_length(G)

new_edges = [(randrange(N),randrange(N)) for c in range(100)]
for i,j in new_edges:                                 
    print 'adding edge (%s,%s), updating Distance Matrix...'%(i,j)
    nl.update_distance_matrix(G,SparseD,i,j,mode='add')        #add edges and update Distance Matrix

print SparseD[5][12]                                           #accessing distance values

Installation:

with pip:

pip install networkl

from source code:

#from terminal
wget https://github.com/networkl/networkl/archive/master.zip
unzip master
cd networkl-master/
python setup.py install

Performance Testing:

			
Dataset Name Nodes Edges Percentage of memory used.
(full N*N matrix is 100 %)
Average single-edge
update time
p2p-Gnutella04 10,876 39,994 40.71 % < 0.1 sec.
ca-GrQc 4,158 13,428 27.23 % < 0.1 sec.
ca-HepTh 8,638 24,827 27.84 % < 0.1 sec.
Facebook Egonet 4,039 88,234 35.93 % < 0.1 sec.
wiki-Vote 7,066 100,736 49.32 % < 0.1 sec.
ca-HepPh 11,204 117,649 31.45 % < 0.1 sec.
CA-AstroPh 17,903 197,031 40.58 % < 0.1 sec.

Distribution of update times

This test has been conducted starting from a minimum spanning tree and adding all remaining edges to rebuild the entire graph. The figure below shows the distribution of update times, remarkably the average update time is below 0.1 seconds for all data sets.




NetworkL is based on:

Ramalingam, G., & Reps, T. (1996). On the computational complexity of dynamic graph problems. Theoretical Computer Science, 158(1), 233-277.

Other related references:

Kas, M., Wachs, M., Carley, K. M., & Carley, L. R. (2013). Incremental algorithm for updating betweenness centrality in dynamically growing networks. Advances in Social Networks Analysis and Mining (ASONAM), 2013 IEEE/ACM International Conference on (pp. 33-40). IEEE.

Puzis, R., Elovici, Y., Zilberman, P., Dolev, S., & Brandes, U. (2014). Topology manipulations for speeding betweenness centrality computation. Journal of Complex Networks, cnu015.