Bioperl: Structure object
Wed, 23 Dec 1998 17:11:07 +0100 (CET)

Dear Eser, Steve and Steven,

I am the moment working on something that is very similar to what you are
planning to do. I am also using an interpreted, dynamically typed language
to encode a flexible object that deals with a protein structure. While you
have choosen perl, I have choosen a language called Python, which (in my
opinion) lends itself better to writing large programs than perl. I am
writing this object to use it in a 3D crystallographic modeling program a
la "O" (and it's going fast thanks to python). Anyway, here are my 5 cents. 

Strictly decouple parsing the data file from the object that will
represent the protein. I use an object that parses a data file (PDB format,
MMCIF, etc.) and makes a simple list of atoms. This list is then fed to the
actual Crystal object which organises the atoms in the following hierarchical 
structure, based on the values of certain attributes that each Atom object
needs to have:


This also makes it easy to export parsing of a PDB file to C or C++. 

You should also implement an easy way to extract atoms associated with each
level of the representation, e,g. all atoms belonging to a certain chain in
a simple list.  But you should also make it possible to extract all residues 
in a chain. In my aproach e.g. I use the following to extract the atoms
from Crystal C, Model 0, Chain A and Residue 7:


Residue 7 itself is extracted like this:


Similarly, for all atoms of Chain A:


And chain A itself:


The most important choice you have to make is whether your object will
be used for visualization and analysis only, or also for changing and
building a protein (e.g. changing an Ala to Asp). Each choice leads to its
own special difficulties. Maybe this is an idea for a lightweight and
heavyweight version?


Thomas Hamelryck 
Laboratorium voor Ultrastructuur
Vlaams Interuniversitair Instituut voor Biotechnologie
Vrije Universiteit Brussel
Paardenstraat 65
B-1640 St-Genesius-Rode
Tel: 32-2-3590209
Fax: 32-2-3590289

=========== Bioperl Project Mailing List Message Footer =======
Project URL:
For info about how to (un)subscribe, where messages are archived, etc: