GraphDiffusion: Compute diffusion kernel-based distance matrix

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/GraphDiffusion.R

Description

Using a diffusion kernel-based 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.

Usage

1
GraphDiffusion(g, v=V(g), edge.attr.weight=NULL, beta=1, correct.neg=TRUE)

Arguments

g

igraph object, the network to work on.

v

igraph object or numeric vector, the vertices from which each distance is calculated.

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 NULL, then each edge is assumed to have a weight of 1.

beta

Numeric value, the probability that the diffusion process will take an edge emanating from a vertex.

correct.neg

Logical, if TRUE then negative edge distances are set to 0.

Details

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 kernel-based approach to compute distances. The algorithm implemented is detailed in the referenced paper.

The distance from vertex A to vertex A is always 0.

Value

Numeric matrix, containing the diffusion kernel-based vertex pair distances between each vertex in v and every vertex in g.

Author(s)

Alex J. Cornish a.cornish12@imperial.ac.uk

References

Kondor, R.I. and Lafferty, J. (2002). Diffusion Kernels on Graph and Other Discrete Structures. Proc. Intl. Conf. Machine Learning.

See Also

GraphMFPT, shortest.paths

Examples

1
2
3
4
# create a network and computes the diffusion kernel-derived vertex pair distance matrix
g <- barabasi.game(6, directed=FALSE)
GraphDiffusion(g)
plot(g, layout=layout.fruchterman.reingold)

Example output

Loading required package: igraph

Attaching package: 'igraph'

The following objects are masked from 'package:stats':

    decompose, spectrum

The following object is masked from 'package:base':

    union

          [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
[1,] 0.0000000 0.4404859 0.4421952 0.7680472 0.7581080 0.7680472
[2,] 0.4404859 0.0000000 0.6518802 0.8782897 0.4934081 0.8782897
[3,] 0.4421952 0.6518802 0.0000000 0.5100285 0.8407141 0.5100285
[4,] 0.7680472 0.8782897 0.5100285 0.0000000 1.0011557 0.8577639
[5,] 0.7581080 0.4934081 0.8407141 1.0011557 0.0000000 1.0011557
[6,] 0.7680472 0.8782897 0.5100285 0.8577639 1.0011557 0.0000000

SANTA documentation built on Oct. 31, 2019, 3:21 a.m.

Related to GraphDiffusion in SANTA...