[Bioperl-l] pdb files/structure system

Jurgen Pletinckx jurgen.pletinckx at vt4.net
Wed Jul 28 18:15:49 EDT 2004

| Can anyone point me towards a tutorial dealing with using Bioperl's
| Structure system?  I'm able to read in a PDB file and print out a
| sequence, but I cannot figure out how to extract atoms or coordinates
| from the one line examples given here:
| http://bioperl.org/Core/Latest/
| bptutorial.html#iii.9.1_using_3d_structure_objects_and_reading_pdb_files
| _(structurei,_structure::io)
| Using that example, I've tried setting $res to a number of things (1,
| MET1, MET-1, MET, etc.), but I think it's look for something more
| sophisticated (i.e. input from another system module)?

Yes. That example is pretty unenlightening. $res is a
object in that line. Here's one way to get at these objects:

#!/usr/bin/perl -w
use Bio::Structure::IO;
use strict;

my $structio = Bio::Structure::IO->new(-file => "/PDB/ca/pdb1cam.ent");
my $struc = $structio->next_structure;

for my $chain ($struc->get_chains)
        my $chainid = $chain->id;
        # one-letter chaincode if present, 'default' otherwise

        for my $res ($struc->get_residues($chain))
                my $resid = $res->id;
                # format is 3-lettercode - dash - residue number, e.g.

                my $atoms = $struc->get_atoms($res);
                # actually a list of atom objects, used here to get a count

                print join "\t", $chainid,$resid,$atoms,"\n";

That kind of loop over all objects is often sufficient for me. When I do
need direct access, I first construct an index:

my %resindex;
my %atindex;

for my $chain ($struc->get_chains)
        for my $res ($struc->get_residues($chain))
                $resindex{$chain->id}{$res->id} = $res;
                for my $atom ($struc->get_atoms($res))
                        $atindex{$chain->id}{$res->id}{$atom->id} = $atom;


print join "\t", $atindex{'default'}{'PHE-20'}{'CA'}->xyz,"\n";

and then use that for lookups. Yet another tool I would like to include into
the Bio::Structure modules. (as get_res_by_name?)

| Is there a HOWTO under development (or in the near future) for the
| Structure system?

There wasn't, actually. Perhaps there should be. I find myself rather
to enshrine the current sad state of affairs by describing the workarounds

Jurgen Pletinckx	AlgoNomics NV
jurgen.pletinckx at algonomics.com

More information about the Bioperl-l mailing list