# Compute Communicability between Nodes in an HBM

### Description

`communicability`

computes the scale communicability between nodes (rows) in a hierarchical block matrix `hm`

, generated with `hbm`

.

### Usage

1 | ```
communicability(hm)
``` |

### Arguments

`hm` |
a hierarchical block matrix computed with |

### Details

The communicability of an adjacency matrix `A`

can be expressed as *e^A* (Estrada et al., 2012), so that the i,j-th entry is a weighted sum of all paths from i to j, where shortest paths are assigned with larger weights. For a hierarchical block matrix, computed with `hbm`

, each scale `s`

defines its own adjacency matrix, where all entries with values larger than s are set to 0. The scale-communicability between 2 nodes i and j in this matrix is defined here as the mean communicability across scales (excluding the largest scale).

### Value

`communicability`

returns a matrix of the same dimensions as `hm`

, where the (i,j)-th entry gives the scale-communicability between i and j in `hm`

.

### Author(s)

Yoli Shavit

### References

Estrada, E., Hatano, N. and Benzi, M. The physics of communicability in complex networks. Physics Reports 514, 89-119 (2012).

hbm's website: http://www.cl.cam.ac.uk/~ys388/hbm/

### See Also

`hbm`

to learn how to build hierarchical block matrices

`hbm`

's tutorials at http://www.cl.cam.ac.uk/~ys388/hbm/

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ```
set.seed(2)
n = 100 # chain size
conf = generate.random.conf(n, scale = FALSE)
# compute the HBM
hm.control = hbm(exp(-1*as.matrix(dist(conf))), 2)$hm
# compute scale communicability
comm = communicability(hm.control)
# explore for position 50
plot(1:n, comm[50,], xlab = "Position", ylab = "Communicability",
main = "Communicability for Position 50", pch=16)
# plot in original configuration
cols = rep("black", n)
cols[which(comm[50,] > 100)] = "blue"
plot(conf, xlab = "X", ylab = "Y", type = "n")
text(conf, labels = 1:n, col = cols)
``` |