Issue with community network calculations

Issue #348 resolved
Former user created an issue

My system has 4 chains and each chain contains same no. of residues. so if i call resno "200", four residues(200-chainA, 200-chainB, 200-chainC, 200-chainD) returns. in my system, there are four active sites which i want to focus and the sites hold the residues not only from one chain. we can think a kind of that each active site is situated at the corners of three chains so it shares residues from three chains. now i have selected some resno which are compromising each active site. my wish is to carry on the cna analysis arround these 4 acitve sites. my commands are as follows

pdb <- read.pdb("sys5.pdb")
dcd <- read.dcd("sys5_stride20.dcd")
inds1 <- atom.select(pdb, resno=c(119,145,156,333,117,142,137,150,149,218,164,206,233,207,120,311,319,374,375 ), elety="CA")   #it selects total 19*4=76 resno(for 4 chains)
trj1 <- fit.xyz(fixed = pdb$xyz, mobile = dcd, fixed.inds = inds1$xyz, mobile.inds = inds1$xyz)
cij1 <- dccm(trj1[, inds1$xyz])
net1 <- cna(cij1)
summary(net1)
view.cna(net1, pdb, launch = TRUE)

Now what i am observing here is that, 1. All the communities are confined to a single active site.(i wish i could find communities for all four active sits). 2. All the members of the communities are not the resno that i have selected.(you can see in net1_members. txt file) 3. if i want to decrease the number of communities according to the edge-width(i.e. want to keep communities which has a minimum cut off edge-width between them) how can i do that??

i am attaching some files for some assistance.

looking forward your response,

kp

Comments (3)

  1. Xinqiu Yao

    Hi,

    How communities are partitioned is a calculation result that reflects the properties of your network. If the result is not what you expected, the best practice is going back to the correlation matrix and see if the calculated community partitioning is reasonable or not. For example, using the function pymol.dccm() you can inspect individual correlations mapped onto the structure. Are the four active sites indeed "decoupled" from other communities? (Here "decoupled" means the number of connections between active site and other parts is apparently fewer than that within each active site or other community.)

    However, there are indeed parameters that can help you to control the output the the community analysis. The primary one is the cutoff to the cij values (see the cutoff.cij argument in cna()). Try different cutoff values and see how the results change. The other parameter is the 'modularity' of the partitioning. This can be inspected by the functions community.tree() and network.amendment(). By default, cna() returns the partitioning with the 'maximal' modularity. With smaller but close to the maximal modularity value 'coarser' or 'finer' community partitioning can be obtained. For example,

    # Get the community tree 
    remodel <- community.tree(net, rescale=TRUE)
    
    # Plot modularity along with the number of communities
    plot(remodel$num.of.comms, remodel$modularity, typ="p")
    
    # Suppose the number of communities with the maximal modularity is N
    
    # Get the "coarser" partitioning
    ind <- which(remodel$num.of.comms == N-1)
    net.c <- network.amendment(net, remodel$tree[ind, ])
    
    # Get the "finer" partitioning
    ind <- which(remodel$num.of.comms == N+1)
    net.f <- network.amendment(net, remodel$tree[ind, ])
    

    About your second question, you need to map the NODE ID that is shown in the 'cna' object to pdb resno. I have answered this in your previous question and please go to this issue for a reference!

    For the Q3, you will find prune.cna() is your friend.

    Good luck!

  2. Log in to comment