I am looking for a program that can process a large number of protein stuctures (PDB-format) and search the coordinates for a given criterion, or better, a combination of such criteria. A possible query would be: “return all instances where a lysine epsilon amino group makes a contact <3.5A) to a glutamate carboxy group”, or something like that.
I don’t know of a program that does exactly what you want, and would be surprised if it existed.
It would not be very difficult to write a python script to do this using BioPython. Once you read in all the atoms, it is simply a matter of going through all atoms that interest you and making a loop that calculates geometric distances between them.
where x1, y1, z1 and x2, y2, z2 are the coordinates of the two atoms. I wrote a program a long time ago that does just that and outputs atoms and distances (see below), but it is written in Free Pascal and not suitable for sharing.
PS You probably want to exclude N+1 (and possibly N+2) residues, because many of them may have sidechains that are close but are not really interacting.
N MET 1 OD2 ASP 28 4.23 CA-CA 5.89 CB-CB 4.91 CA-CB 4.57 CB-CA 6.33
N MET 1 N PHE 266 4.36 CA-CA 5.25 CB-CB 4.97 CA-CB 5.19 CB-CA 5.45
N MET 1 C PHE 266 3.88 CA-CA 5.25 CB-CB 4.97 CA-CB 5.19 CB-CA 5.45
N MET 1 O PHE 266 2.71 CA-CA 5.25 CB-CB 4.97 CA-CB 5.19 CB-CA 5.45
CA MET 1 CG ASP 28 4.09 CA-CA 5.89 CB-CB 4.91 CA-CB 4.57 CB-CA 6.33
CA MET 1 OD2 ASP 28 3.34 CA-CA 5.89 CB-CB 4.91 CA-CB 4.57 CB-CA 6.33
CA MET 1 O PHE 266 3.84 CA-CA 5.25 CB-CB 4.97 CA-CB 5.19 CB-CA 5.45