R: Align communities from two or more networks

community.aln {bio3d} | R Documentation

## Align communities from two or more networks

### Description

Find equivalent communities from two or more networks and re-assign colors to them in a consistent way across networks. A ‘new.membership’ vector is also generated for each network, which maps nodes to community IDs that are renumbered according to the community equivalency.

### Usage

    community.aln(x, ..., aln = NULL)

### Arguments

`x, ...` | two or more objects of class `cna` (if the numbers of nodes are different, an alignment ‘fasta’ object is required for the `aln` argument; See below) as obtained from function `cna`. Alternatively, a list of `cna` objects can be given to `x`.
`aln` | alignment for comparing networks with different numbers of nodes.

### 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 the colors of communities in the output of `plot.cna` and `vmd.cna`) can be inconsistent across networks, i.e. equivalent communities may display different colors, impeding network comparison. 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. The color attribute of communities is then re-assigned according to the clusters through all networks. In addition, a ‘new.membership’ vector is generated for each network, which mapps nodes to new community IDs that are numbered consistently across networks.

### Value

Returns a list of updated `cna` objects.

### See Also

`cna`, `plot.cna`, `vmd.cna`

### Examples

      # 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)

        }
      }

[Package bio3d version 2.4-0 Index]