Using a diffusion kernelbased algorithm, compute the distance between vertex pairs in an undirected network, with or without edge weights. This algorithm provides an alternative to the shortest.paths
and mfpt
measures of vertex pair distance.
1  GraphDiffusion(g, v=V(g), edge.attr.weight=NULL, beta=1, correct.neg=TRUE)

g 

v 

edge.attr.weight 
String, the name of the edge attribute to be used as weights along the edges. Greater weights indicate a stronger interaction between the two genes (this is the opposite to edge distances, where smaller distances indicate stronger interactions). If 
beta 
Numeric value, the probability that the diffusion process will take an edge emanating from a vertex. 
correct.neg 
Logical, if 
Diffusion across a network follows a process similar to a random walk. This provides a method of measuring the distance between vertex pairs that does not simply take into account a single path (like the shortest.paths
algorithm) but instead incorporates multiple paths. This function uses a diffusion kernelbased approach to compute distances. The algorithm implemented is detailed in the referenced paper.
The distance from vertex A to vertex A is always 0
.
Numeric matrix, containing the diffusion kernelbased vertex pair distances between each vertex in v
and every vertex in g
.
Alex J. Cornish a.cornish12@imperial.ac.uk
Kondor, R.I. and Lafferty, J. (2002). Diffusion Kernels on Graph and Other Discrete Structures. Proc. Intl. Conf. Machine Learning.
1 2 3 4  # create a network and computes the diffusion kernelderived vertex pair distance matrix
g < barabasi.game(6, directed=FALSE)
GraphDiffusion(g)
plot(g, layout=layout.fruchterman.reingold)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.