[Bioperl-l] distances from one atom to another in biological structures

Alex Gutteridge alexg at ebi.ac.uk
Wed Apr 14 05:31:22 EDT 2004


Hi,

This can be done with the BioPerl structure modules. You don't say what 
your 'protein sites' actually are (residues, patches, co-ordinates, 
etc..?), but assuming you know the serial number of your active site 
atom and the xyz co-ordinates of your 'site' the following (untested) 
script would work. Just give it the PDB file as fist argument, active 
site atom serial as the second, and the x,y,z co-ords as the remaining 
arguments. Let me know if you need anymore help.

use strict;
use Bio::Structure::IO;

my $file = shift;
my $active_site_serial = shift;
my ($other_site_x, $other_site_y, $other_site_z) = @_;

my $structure = Bio::Structure::IO->new(-file => shift,
                                         -format => 
'pdb')->next_structure;

my ($x,$y,$z) = 
$structure->get_atom_by_serial($active_site_serial)->xyz;

print distance($other_site_x,$other_site_y,$other_site_z,
                $x,$y,$z);

sub distance {

   my ($x1,$y1,$z1,$x2,$y2,$z2) = @_;

   my $distance = sqrt((($x1 - $x2) * ($x1 - $x2)) +
                       (($y1 - $y2) * ($y1 - $y2)) +
                       (($z1 - $z2) * ($z1 - $z2)));

   return $distance;

}

Alex Gutteridge
European Bioinformatics Institute
Cambridge CB10 1SD
UK

Tel: 01223 492550
Email: alexg at ebi.ac.uk



More information about the Bioperl-l mailing list