ESBTL, a PDB parser and data structure for the structural and geometric analysis of biological macromolecules

Authors: Julie Bernauer, Frédéric Cazals and Sébastien Loriot

This is the reference documentation for ESBTL. This page describes quickly the overall architecture of the library. For other information (installation, FAQ,...) please have a look at the ESBTL website:


A system provides access to the hierarchical data structure.
It may contain one or several models. Each model is made of chains. Chains are then made of residues, and residues are made of atoms.
ESBTL provides a default instantiation for this data model when including the header <ESBTL/default.h>. The types ESBTL::Default_system, ESBTL::Default_system::Model, ESBTL::Default_system::Chain, ESBTL::Default_system::Residue and ESBTL::Default_system::Atom provide access to all hierarchy levels.

Reading a file

Reading a PDB file is performed in four stages:


  #include <ESBTL/default.h>
  //Create one system with all atoms.
  ESBTL::PDB_line_selector sel;
  std::vector systems;
  //Build the system from the PDB file.
  ESBTL::All_atom_system_builder builder(systems,sel.max_nb_systems());


Once a system has been built, iterators are provided to access the hierarchy information from any higher level. For 'father' standing for either system, model, chain or residue, and 'son' standing for either model, chain, residue or atom, the following iterators Father::Sons_const_iterator and Father::Sons_iterator, and the following functions Father::sons_begin, Father::sons_end are provided. Note that if 'father' is system, 'son' can only be model as the hierarchy must be respected.
See Iterators for a list of a list of iteration facilities provided by ESBTL.

Associating properties to an object

The class ESBTL::Generic_classifier provides the association of a property to an object (for example a radius to an atom). See Atom selection for the property concept and properties provided by ESBTL.

Making a selection of atoms.

Selections can be done at two different stages. Either while reading a file thanks to a line selector (each selection will be stored within a different system), or after having built the systems.
A selection at the parsing stage is made using a line selector: see Line selectors for details on the object concept and line selectors provided by ESBTL.
The class ESBTL::Selected_atom_iterator defines an iterator type over a subset of atoms of a model. The subset is defined using a function object. See Atom selection for details on the object concept and atom selection function objects provided by ESBTL.