Section: New Software and Platforms

The Structural Bioinformatics Library

Web site:


The SBL : Overview

The SBL is a generic C++/python library providing algorithms and applications to solve complex problems in computational structural biology (CSB).

For Biologists, the key advantages are:

  • comprehensive in silico environment providing applications,

  • answering complex bio-physical problems,

  • in a robust, fast and reproducible way.

For Developers, the striking facts are:

  • broad C++/python toolbox,

  • with modular design and careful specifications,

  • fostering the development of complex applications.

The SBL : Rationale and Design

Software development generally faces a dichotomy, with on the one hand generic libraries providing methods of ubiquitous interest, and on the other hand application driven libraries targeting specific application areas. Libraries in the former category typically provide state-of-the art low level algorithms carefully specified, at the detriment of high level applications. Libraries in the latter category are generally high level and user-friendly, but the lack of formalism often makes it difficult to couple them to low level algorithms with formal specifications. The SBL ambitions to reconcile both software development philosophies, based on an advanced design suited for all classes of users and developers.

In terms of high-level operations, the SBL provides various applications revolving around the problem of understanding the relationship between the structure and the function of macro-molecules and their complexes (see below). In terms of low-level operations, the design of the SBL is meant to accommodate both the variety of models coding the physical and chemical properties of macro-molecular systems (models based on unions of balls such as van der Walls models or solvent accessible models, or models based on conformations and conformational ensembles), as well as the variety of operations (geometric, topological, and combinatorial) undertaken on these models.

More precisely, the SBL consists of the following software components, detailed below:

  • SBL-APPLICATIONS: high level applications solving specific applied problems.

  • SBL-CORE: low-level generic C++ classes templated by traits classes specifying C++ concepts (The design has been guided by that used in the Computational Geometry Algorithm Library (CGAL), see http://www.cgal.org . In a nutshell, concepts are a type system for types, and models are specific classes following this system.).

  • SBL-MODELS: C++ models matching the C++ concepts required to instantiate classes from SBL-CORE .

  • SBL-MODULES: C++ classes instantiating classes from the SBL-CORE with specific biophysical models from SBL-MODELS . A module may be seen as a black box transforming an input into an output. With modules, an application workflow consists of interconnected modules.


End users will find in the SBL portable applications running on all platforms (Linux, MacOS, Windows). These applications split into the following categories:

  • Space Filling Models: applications dealing with molecular models defined by unions of balls.

  • Conformational Analysis: applications dealing with molecular flexibility.

  • Large assemblies: applications dealing with macro-molecular assemblies involving from tens to hundreds of macro-molecules.

  • Data Analysis: applications providing novel data analysis - statistical analysis tools.

  • Data Management: applications to handle input data and results, using standard tools revolving around the XML file format (in particular the XPath query language). These tools allow automating data storage, parsing and retrieval, so that upon running calculations with applications, statistical analysis and plots are a handful of python lines away.


The SBL makes it easy to develop novel high-level applications, by providing high level ready to use C++ classes instantiating various biophysical models.

In particular, modules allow the development of applications without the burden of instantiating low level classes. In fact, once modules are available, designing an application merely consists of connecting modules.

SBL-CORE : the SBL for Low-level Developers and Contributors

Low level developments may use classes from / contribute classes to SBL-CORE and SBL-MODELS . In fact, such developments are equivalent to those based upon C++ libraries such as CGAL (http://www.cgal.org/ ) or boost C++ libraries (http://www.boost.org/ ). It should be noticed that the SBL heavily relies on these libraries. The SBL-CORE is organized into into four sub-sections:

  • CADS : Combinatorial Algorithms and Data Structures.

  • GT : Computational Geometry and Computational Topology.

  • CSB : Computational Structural Biology.

  • IO : Input / Output.

It should also be stressed that these packages implement algorithms not available elsewhere, or available in a non-generic guise. Due to the modular structure of the library, should valuable implementations be made available outside the SBL (e.g. in CGAL or boost), a substitution may occur.


The SBL is interoperable with existing molecular modeling systems, at several levels:

  • At the library level, our state-of-the-art algorithms (e.g. the computation of molecular surfaces and volumes) can be integrated within existing software (e.g. molecular dynamics software), by instantiating the required classes from SBL-CORE , or using the adequate modules.

  • At the application level, our applications can easily be integrated within processing pipelines, since the format used for input and output are standard ones. (For input, the PDB format can always be used. For output, our applications generate XML files.)

  • Finally, for visualization purposes, our applications generate outputs for the two reference molecular modeling environments, namely Visual Molecular Dynamics (http://www.ks.uiuc.edu/Research/vmd/ ) and Pymol (http://www.pymol.org/ ).

Releases, Distribution, and License

The SBL is released under a proprietary open source license, see http://sbl.inria.fr/license/ .

The source code is distributed from http://sbl.inria.fr , using tarballs and a git repository. Bugzilla is used to handle user's feedback and bug tracking.