How to deal with the missing residuals for torsion calculation?

Issue #427 resolved
Feng Tian created an issue

Actually in the pdb file there are some residuals were missed for position information. Such as "1BKS"

pdb <- read.pdb( "1BKS")
xxx <- atom.select(pdb,"backbone",elety=c("N", "CA", "C"),chain = "B")
yyy <- trim.pdb(pdb = pdb,xxx)
zzz <- torsion.pdb(yyy)

head(yyy$atom)
     type eleno elety  alt resid chain resno insert      x      y      z o     b segid elesy charge
1936 ATOM  1937     N <NA>   THR     B     3   <NA> 56.339  0.537 16.113 1 30.35  <NA>     N   <NA>
1937 ATOM  1938    CA <NA>   THR     B     3   <NA> 57.605  0.471 15.380 1 28.60  <NA>     C   <NA>
1938 ATOM  1939     C <NA>   THR     B     3   <NA> 58.131 -0.953 15.420 1 30.33  <NA>     C   <NA>
1943 ATOM  1944     N <NA>   LEU     B     4   <NA> 58.902 -1.285 14.410 1 30.44  <NA>     N   <NA>
1944 ATOM  1945    CA <NA>   LEU     B     4   <NA> 59.513 -2.619 14.283 1 29.04  <NA>     C   <NA>
1945 ATOM  1946     C <NA>   LEU     B     4   <NA> 60.675 -2.759 15.259 1 28.93  <NA>     C   <NA>

The "resno" didn't begin with 1 because they are missed in the pdf file, so the following torsion will not calculate for the first 2 residuals. How can I automatically treated the information of missed residuals as NA in pdb object in R? So that the following result will be the same length of the actual chain.

Comments (3)

  1. Xinqiu Yao

    Hi Feng,

    Sorry for the long waiting. It is an interesting idea to have indications of missing residues explicitly in the 'pdb' object. Bio3D reads a pdb file as is and so adding NAs for non-existing residues could cause some inconsistency. You could first make an alignment between the PDB sequence and the full sequence from e.g. swissprot, find the positions of missing residues, and add NAs in your calculated vectors manually. Let me know if it could help.

  2. Log in to comment