Learn R Programming

bio3d (version 2.3-4)

community.aln: Align communities from two or more networks

Description

Find equivalent communities from two or more networks and renumber them in a consistent way across networks.

Usage

community.aln(x, ...)

Arguments

x, ...

two or more objects of class cna (with equal number of nodes) as obtained from function cna. Alternatively, a list of cna objects can be given to x, the element of which will be used for pairwise comparison.

Value

Returns a list of updated cna objects.

Details

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.

See Also

cna, plot.cna

Examples

Run this code
# NOT RUN {
  # 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)     

    }
  }
# }

Run the code above in your browser using DataLab