Employing consistent communities in network analsis for direct comparison between systems

Issue #518 resolved
Daniel Moore created an issue

Hello,

This is a Q&A with reference to the networks/methods in "Dynamic Coupling and Allosteric Networks in the a-Subunit of Heterotrimeric G proteins".

I have noticed that the networks for each of the three systems mentioned in this paper have (visually) identical communities (Figure 3C). The comparison between communities is then made by comparing differences in community coupling or edge width. It is my understanding that the communities were 'largely consistent', however is there a specific way to force identical communities between systems in bio3d and was this employed in this paper? I have made an attempt below, however am still unsure if there is much sense to be made from such networks as you are creating artificial communities, that said I appreciate the simplicity in simply comparing community coupling only.

Say we have two unique MD trajectories loaded and aligned accordingly, each system with a differing ligand in the Active Site (noted by trjA & trjB);

cijA    <-  dccm(trjA])
netA  <- cna(cijA, cutoff.cij=0.6)

cijB    <-  dccm(trjB)
netB  <- cna(cijB, cutoff.cij=0.6)

treeA <- community.tree(netA, rescale=TRUE)

memb.k10 <- treeA$tree[ treeA$num.of.comms == 10, ]
netA.10       <- network.amendment(netA, memb.k10)

memb.k10 <- treeA$tree[ treeA$num.of.comms == 10, ]
netB.10       <- network.amendment(netB, memb.k10)

We can then plot the networks which will have identical number and make-up of communities. Am I correct in saying that the network.amendment() command will recalculate the coupling between these forced communities?

Whats more, the paper notes the following: "Consensus communities to facilitate further comparisons were derived from partitioning these regions at the boundaries of their known conserved motifs" This suggests a manual influence of the community make-up, is there a specific way to more an individual residue into one community or another?

Thank you in advance for any help you can offer.

Best, Daniel Moore.

Comments (5)

  1. Xinqiu Yao

    Hi Daniel,

    You are right, the communities in the paper were "forced" to be identical across states. The consensus partitioning was largely based on the original output of the 'Girvan-Newman' betweenness method, but also included prior knowledge about the system, such as the switch regions known to undergo structural changes upon nucleotide binding. To my understanding, community is just a "coarse-grained" representation of the cross-correlation matrix. Making identical communities enables a focus on the dynamical changes between communities across states; otherwise, both community definition and inter-community coupling would change, making it more difficult to understand what is going on in the process. Although it sounds a little bit "artificial", but once you understand what you are looking at, and don't over interpret it, it should be fine.

    Technically, we used a script to "hack" the network object generated by cna() to make new definition of communities and re-calculate inter-community couplings. The script is not included in the official Bio3D package, but you can find it at 'new_funs/remodel.cna.R' at this repository. Unfortunately, the function is not well documented (I am working on it and hopefully can incorporate it into the package soon). I have an example to demonstrate how to use it. Just send a request email to xinqiu.yao@gmail.com, and then I can provide you with the example and some detailed instructions.

    The network.amendment() only adjusts the number of communities but doesn't change the tree defining the communities. In other words, you can't get identical communities for different networks using this function. For that purpose, you need the remodel.cna().

  2. Aiswarya Pawar

    Hi,

    Am continuing on the same ticket cause i have similar doubt. I want to define the residues in the communities for example the switch regions SWI and SWII need to defined as separate communities and then define the tree. for now i have tried using network.amendment. I tried the network.amendment similar to the code mentioned for two systems above in this post.

    I couldnt figure out how to use the remodel.cna function, can you give an pseudo code or any leads that would help me chose the communities better.

    Also, while building an network i do get atleast one of the community not been connected, does that have any relevance? should i reconsider.?

  3. Log in to comment