Deformation energies after ensemble NMA

Issue #99 resolved
Former user created an issue

Dear All, I would like to calculate deformation energies for each of the input structures after performing ensemble NMA. Can someone please help me with this. Any assistance would be highly appreciated. Amin.

Comments (6)

  1. Lars Skjærven

    Hi Amin, Use argument defa=TRUE to the nma.pdbs() function:

    modes <- nma.pdbs(pdbs, ncore=4, defa=TRUE)
    

    Note that the calculation of the deformation energies can be time consuming. Also, this functionality should be considered experimental at the moment. e.g. the user can not adjust for which modes the deformation energies should be calculated. The resulting deformation energies are also just an average over the first 5 modes. A better alternative is probably to do something like this:

    modes <- nma.pdbs(pdbs, ncore=4, full=TRUE)
    
    # calc def for the first mode object:
    def <- deformation.nma(all.modes$full.nma[[1]])
    
    # or for all mode objects in modes$full.nma:
    def <- lapply(all.modes$full.nma, deformation.nma)
    

    You might want try first with only a few structures as this might be quite memory intensive. e.g.

    small.pdbs <- pdbs.filter(pdbs, row.inds=1:10)
    

    Hope it helps!

  2. George Tzotzos

    Tried to follow the above suggestions.

    modes2 <- nma.pdbs(pdbs, ncore=4, defa=TRUE) gives:

    Details of Scheduled Calculation:
    ... 20 input structures
    ... storing 270 eigenvectors for each structure
    ... dimension of x$U.subspace: ( 276x270x20 ) etc.

    Then

    modes2$full.nma
    NULL

    Then

    def <- deformation.nma(modes2$full.nma) OR def <- deformation.nma(modes2$full.nma, deformation.nma)
    Error in deformation.nma(modes2$full.nma) :
    provide input of class 'nma' as obtained from function 'nma'

    My objective is to write into a file and then plot the deformation energies of the 20 input structures.

    Many thanks in advance for any suggestions/help regarding the above

  3. Lars Skjærven

    that function only takes single structure nma object. you therefore have to slice it:

    deformation.nma(modes$full.nma[[1]])

  4. George Tzotzos

    Thank you for the prompt answer. I obtained the deformation energies of each structure using deformation.nma(modes$full.nma[[x]]), as per your suggestion. For each structure, I obtained the sum of deformation energies for the lowest frequency modes using defsums <- rowSums(def2$ei[,1:3]) (sum of the first 3 non-trivial modes). However, to compare the deformation energies of all structures in the dataset, one would have to normalise the deformation energies of each structure. According to the HInsen paper (1998) “a meaningful combined deformation measure for several normal mode vectors can be obtained by averaging the values for each individual mode”.

    So, my last question is whether it is necessary to construct a matrix with the defsums of each structure and then normalise the values of the matrix.

  5. Log in to comment