NMA with non-standard residue name

Issue #537 resolved
m.mohan@northeastern.edu created an issue

Dear bio3d team,

I am trying to calculate Normal Modes for protein which is labelled at two places.

For Normal Modes Hessian should be mass-weighted so when I code call as:

modes <- nma(pdb, inds=sele,mass=TRUE)

Error in aa2mass(pdb = c("MET", "ASN", "ILE", "PHE", "GLU", "MET", "LEU", : Unknown amino acid identifier: CYR

call fails

when I code call as:

modes <- nma(pdb, inds=sele, mass=FALSE) Building Hessian... Done in 0.026 seconds. Diagonalizing Hessian... Done in 0.073 seconds.

dim(modes$U) [1] 492 492 print(modes)

It works.

If I understand hessian should be mass-weighted.

Is there a way to address this.

Thank you.

Mamta

Comments (5)

  1. Lars Skjærven

    Yes- the mass of residue CYR is unknown. You can either add CYR to the aa.table data frame and then run nma() or you can the argument mass.custom:

    # pass argument mass.custom with CYR mass
    cyr.mass <- list("CYR"=190)
    nma(pdb, mass.custom=cyr.mass)
    
    # or add mass to aa.table
    aa.table = rbind(aa.table, CYR=c("CYR", "C", 190, NA, NA))
    nma(pdb)
    

    Hope it helps. L

  2. m.mohan@northeastern.edu reporter

    Dear Lars,

    I am reopening this issue.

    I tried both methods as you suggested. But I still have trouble getting the results.

    Please take a look at this:

    cyr1.mass <- list("CYR1"=264) cyr1.mass $CYR1 [1] 264

    nma(pdb, inds=sele, mass.custom=cyr1.mass) Error in aa2mass(pdb = c("MET", "ASN", "ILE", "PHE", "GLU", "MET", "LEU", : must supply 'pdb' object or vector of amino acid residue names aa.table = rbind(aa.table, CYR1=c("CYR1", "C", 264, NA, NA))

    Since it was not counting labelled C-alpha so I extracted index as

    sele <- atom.select(pdb, elety="CA")

    sele

    Call: atom.select.pdb(pdb = pdb, elety = "CA")

    Atom Indices#: 164 ($atom) XYZ Indices#: 492 ($xyz)

    And tried to run nma call. This is what I get.

    nma(pdb, inds=sele, mass.custom=cyr1.mass) Error in aa2mass(pdb = c("MET", "ASN", "ILE", "PHE", "GLU", "MET", "LEU", : must supply 'pdb' object or vector of amino acid residue names

    After adding mass to aa.table table if I run nma call, it works but it skips CYR1 at both the sites and.

    nma(pdb) Building Hessian... Done in 0.044 seconds. Diagonalizing Hessian... Done in 0.061 seconds.

    Call: nma.pdb(pdb = pdb)

    Class: VibrationalModes (nma)

    Number of modes: 486 (6 trivial)

    Frequencies: Mode 7: 0.013 Mode 8: 0.013 Mode 9: 0.015 Mode 10: 0.021 Mode 11: 0.024 Mode 12: 0.027

    • attr: modes, frequencies, force.constants, fluctuations, U, L, xyz, mass, temp, triv.modes, natoms, call Warning message: In nma.pdb(pdb) : Possible multi-chain structure or missing in-structure residue(s) present Fluctuations at neighboring positions may be affected.

    I would appreciate your help.

    Mamta

  3. Log in to comment