| community.aln {bio3d} | R Documentation |
Find equivalent communities from two or more networks and renumber them in a consistent way across networks.
community.aln(x, ...)
x, ... |
two or more objects of class |
This function facilitates the inspection on the variance of the community
partition in a group of similar networks. The original community numbering
(and so coloring in plot.cna) can be inconsistent across networks,
i.e. equivalent communities may have different numbering in different
networks. The function calculates the dissimilarity between all communities
and clusters communities with ‘hclust’ funciton. In each cluster, 0 or
1 community per network is included. Communities are then renumbered
according to the clusters through all networks. Note that the
‘membership’ in $communities is not updated because some basic
‘igraph’ functions such as length assume the ‘membership’
a consecutive integer vector. Instead, a ‘renumbered’ membership
vector is added as an extra component in the returned ‘cna’ object.
Returns a list of updated cna objects.
# Needs MUSCLE installed - testing excluded
if(check.utility("muscle")) {
if (!requireNamespace("igraph", quietly = TRUE)) {
message('Need igraph installed to run this example')
} else {
## Fetch PDB files and split to chain A only PDB files
ids <- c("1tnd_A", "1tag_A")
files <- get.pdb(ids, split = TRUE, path = tempdir())
## Sequence Alignement
pdbs <- pdbaln(files, outfile = tempfile())
## Normal mode analysis on aligned data
modes <- nma(pdbs, rm.gaps=TRUE)
## Dynamic Cross Correlation Matrix
cijs <- dccm(modes)$all.dccm
## Correlation Network
nets <- cna(cijs, cutoff.cij=0.3)
## Align network communities
nets.aln <- community.aln(nets)
## plot all-residue and coarse-grained (community) networks
pdb <- pdbs2pdb(pdbs, inds=1, rm.gaps=TRUE)[[1]]
op <- par(no.readonly=TRUE)
# before alignment
par(mar=c(0.1, 0.1, 0.1, 0.1), mfrow=c(2,2))
invisible( lapply(nets, function(x)
plot(x, layout=layout.cna(x, pdb=pdb, k=3, full=TRUE)[, 1:2],
full=TRUE)) )
invisible( lapply(nets, function(x)
plot(x, layout=layout.cna(x, pdb=pdb, k=3)[, 1:2])) )
# after alignment
par(mar=c(0.1, 0.1, 0.1, 0.1), mfrow=c(2,2))
invisible( lapply(nets.aln, function(x)
plot(x, layout=layout.cna(x, pdb=pdb, k=3, full=TRUE)[, 1:2],
full=TRUE)) )
invisible( lapply(nets.aln, function(x)
plot(x, layout=layout.cna(x, pdb=pdb, k=3)[, 1:2])) )
par(op)
}
}