Suppose, we have a protein (16PK).

We are considering a 5-residue segment/window.

If we assume ASN10 to be the ith residue, how can I calculate the following distances in Python?

  1. from [i+2] to [i-2]
  2. from [i+1] to [i-2]
  3. from [i+2] to [i-1]

Next major question is, what would be the distances like if my segment/window is 7 or 9 residues long?


1 Answer 1


Your $[i,j,k]$ coordinates in the PDB file are coordinates. You can readily compute Euclidean distances between any pair of coordinates as described in the wiki page:

$d(p,q)=\sqrt{(p_1-q_1)^2 + (p_2-q_2)^2 + (p_3-q_3)^2}. $

This resource suggests one such approach (code reproduced below in case that site stops existing):

import Bio.PDB
import numpy

def calc_residue_dist(residue_one, residue_two) :
    """Returns the C-alpha distance between two residues"""
    diff_vector  = residue_one["CA"].coord - residue_two["CA"].coord
    return numpy.sqrt(numpy.sum(diff_vector * diff_vector))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.