Uncovering the Temporal Dynamics of Diffusion Networks

Observing a diffusion process often reduces to noting when nodes (people, blogs, etc.) reproduce a piece of information, get infected by a virus, or buy a product. We observe where and when but not how or why information (be it in the form of a virus, a meme, or a decision) propagates through a population of individuals. The mechanism underlying diffusion is hidden. However, the mechanism is of outstanding interest since understanding diffusion is necessary for stopping infections, predicting meme propagation, or maximizing sales of a product.

NETRATE infers the connectivity and temporal dynamics underlying a diffusion network (who-copies-from-whom, who-infects-whom, who-influences-whom) based on the temporal traces of diffusion.

Below, you can find some extra information:


NETRATE models diffusion processes as discrete networks of continuous temporal processes occurring at different rates. Given temporal traces of diffusion (observed infection times of nodes), it infers efficiently the edges of the global diffusion network and estimate the transmission rates of each edge that best explain the observed data. It naturally imposes sparse solutions, requires no parameter tuning and infers temporally heterogeneous interactions within a network, as found in real-world examples.

For more details read our paper:

M. Gomez-Rodriguez, D. Balduzzi, B. Schölkopf. Uncovering the Temporal Dynamics of Diffusion Networks.The 28th International Conference on Machine Learning (ICML), 2011.

We have also develop a highly efficient stochastic version of NETRATE, called INFOPATH, which allows to uncover the structure and temporal dynamics of static and time-varying networks. You may like to check it out here!

There have been previous attempts to infer the edges of global diffusion networks and prior probabilities of infection, but not transmission rates. You may like to check out NETINF and CONNIE!

Download the code

We provide a simple implementation of NETRATE in a comprehensive package for MATLAB. You will need to install the convex solver CVX, available for both Windows and Unix architectures. If you have suggestions, comments, or problems with the code, please contact manuelgr[at]stanford.edu.

Cascade Input format: The input file to NETRATE, with information about the cascades, should have two blocks separated by a blank line. Each line in the first block contains the id and name of a site:


Each line in the second block contains information about one cascade:


Example of a valid input file:

0,0 1,1 2,2 3,3 4,4 0,0,1,1,2,2,3,3 4,0,3,1 1,0,3,1,2,4 0,0,1,10,2,20,3,11 0,0,1,10,2,11

Within the package, you can find additional information in ReadMe.txt. We also provide some sample input data as a toy.


To learn more about NETRATE, you can download our paper:

Moreover, NETRATE builds on previous work:

Methods based on NETRATE

Imprint / Data Protection