Bulk water residues from pdb files
2
2
Entering edit mode
9.8 years ago
Ann ▴ 20

Hi,

I need to find the residue numbers of all water and other atoms (like metal atoms) inside the protein structure. and their immediate neighbours in terms of residue number. I use perl. But I don't know how to proceed, I don't need help in scripting but about the way to solve the problem.

I request help form experts in this field.Thanks in advance.

protein pdb water structure-biology • 3.7k views
ADD COMMENT
0
Entering edit mode

What do you mean by "immediate neighbours in terms of residue number"?

I answered this below assuming that you mean the neighboring protein atoms, but if you mean any neighboring atoms, or only other water/metal atoms, then you would just change the inner loop.

ADD REPLY
0
Entering edit mode

Immediate neighbour means the residues surrounding the water molecules in the 3 dimensional structure of protein. It can be any other residue including other water molecules. I just had a look at perlmol it seems helpful. But I wish to know how theoretically we can find them. It is by finding the centre of the protein structure and then surface, radius etc?

ADD REPLY
0
Entering edit mode

As I noted in my answer below, you can find neighbors based on distance between atom centers by simply calculating the euclidean distance: sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2) and calculating whether that distance is less than some threshold.

However, I see you are now using the word "surface" and "radius", and I now notice the phrase "inside the protein structure" in your original question. So you are trying to identify water/metals that are within some molecular surface? You will need to define what that surface is (SAS, SES, VDW). Here are two resources with some examples and theory related to surfaces: https://web.archive.org/web/20120830152415/http://www.netsci.org/Science/Compchem/feature14e.html and http://www.cgl.ucsf.edu/chimera/data/surface-oct2013/surface.html

ADD REPLY
1
Entering edit mode
9.8 years ago

If you use something like perlmol to identify your HETATMs and protein atoms, I would do something like this (pseudocode):

for each hetatm:
  for each protein_atom:
    if (protein_atom within <threshold> angstroms of HETATM)
      append hetatm.atom_id " - " protein_atom.residue_id

The above "within" is shorthand for calculating the euclidean distance. I haven't used perlmol personally, but there are convenient methods that will calculate this distance in other packages like biopython and software like VMD, so I'm assuming you won't need to code your own in perlmol.

ADD COMMENT
0
Entering edit mode
9.8 years ago

You can consider R and package Bio3D. The attached script will provide you with a list containing the residue names closer than a cutoff of the respective water molecule. For-loop is for iterating over all water molecules found in the PDB.

pdb <- read.pdb("1hel")

prot <- trim.pdb(pdb, "protein")
wats <- trim(pdb, "water")`

out <- list()

for(i in 1:nrow(wats$atom)) {
  eleno <- wats$atom$eleno[i]
  wat <- trim.pdb(pdb, eleno=eleno)

  bs <- binding.site(prot, wat, cutoff=5)

  if(length(bs$resno)>0)
    out[[eleno]] <- bs$resnames
}
ADD COMMENT

Login before adding your answer.

Traffic: 1496 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6