Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of boost. Click here for the latest Boost documentation.

Boost.Python

Projects using Boost.Python

Introduction

This is a partial list of projects using Boost.Python. If you are using Boost.Python as your Python/C++ binding solution, we'd be proud to list your project on this page. Just post a short description of your project and how Boost.Python helps you get the job done, and we'll add it to this page .


Data Analysis

NeuraLab
Neuralab is a data analysis environment specifically tailored for neural data from Neuralynx acquisition systems. Neuralab combines presentation quality graphics, a numerical analysis library, and the Python scripting engine in a single application. With Neuralab, Neuralynx users can perform common analysis tasks with just a few mouse clicks. More advanced users can create custom Python scripts, which can optionally be assigned to menus and mouse clicks.
TSLib - Fortress Investment Group LLC
Fortress Investment Group has contracted Boost Consulting to develop core internal financial analysis tools in C++ and to prepare Python bindings for them using Boost.Python.

Tom Barket of Fortress writes:

We have a large C++ analytical library specialized for research in finance and economics, built for speed and mission critical stability. Yet Python offers us the flexibility to test out new ideas quickly and increase the productivity of our time versus working in C++. There are several key features which make Python stand out. Its elegance, stability, and breadth of resources on the web are all valuable, but the most important is its extensibility, due to its open source transparency. Boost.Python makes Python extensibility extremely simple and straightforward, yet preserves a great deal of power and control.

Educational

Kig

KDE Interactive Geometry is a high-school level educational tool, built for the KDE desktop. It is a nice tool to let students work with geometrical constructions. It is meant to be the most intuitive, yet featureful application of its kind.

Versions after 0.6.x (will) support objects built by the user himself in the Python language. The exporting of the relevant internal API's were done using Boost.Python, which made the process very easy.

Enterprise Software

OpenWBEM
The OpenWBEM project is an effort to develop an open-source implementation of Web Based Enterprise Management suitable for commercial and non-commercial application

Dan Nuffer writes:

I'm using Boost.Python to wrap the client API of OpenWBEM.This will make it easier to do rapid prototyping, testing, and scripting when developing management solutions that use WBEM.
Metafaq
Metafaq, from Transversal, Inc., is an enterprise level online knowledge base management system.

Ben Young writes:

Boost.Python is used in an automated process to generate python bindings to our api which is exposed though multiple backends and frontends. This allows us to write quick tests and bespoke scripts to perform one off tasks without having to go through the full compilation cycle.

Games

Civilization IV
“The fourth game in the PC strategy series that has sold over five million copies, Sid Meier's Civilization IV is a bold step forward for the franchise, with spectacular new 3D graphics and all-new single and multiplayer content. Civilization IV will also set a new standard for user-modification, allowing gamers to create their own add-ons using Python and XML.

Sid Meier's Civilization IV will be released for PC in late 2005. For more information please visit http://www.firaxis.com or write kgilmore@firaxis.com

Boost.Python is used as the interface layer between the C++ game code and Python. Python is used for many purposes in the game, including map generation, interface screens, game events, tools, tutorials, etc. Most high-level game operations have been exposed to Python in order to give modders the power they need to customize the game.

-Mustafa Thamer, Civ4 Lead Programmer
Vega Strike
Vega Strike is the 3D Space Simulator that allows you to trade and bounty hunt in a vast universe. Players face dangers, decisions, piracy, and aliens.

Vega Strike has decided to base its scripting on python, using boost as the layer between the class hierarchy in python and the class hierarchy in C++. The result is a very flexible scripting system that treats units as native python classes when designing missions or writing AI's.

A large economic and planetary simulation is currently being run in the background in python and the results are returned back into C++ in the form of various factions' spaceships appearing near worlds that they are simulated to be near in python if the player is in the general neighborhood.

Graphics

OpenSceneGraph Bindings
Gideon May has created a set of bindings for OpenSceneGraph, a cross-platform C++/OpenGL library for the real-time visualization.
 
HippoDraw
HippoDraw is a data analysis environment consisting of a canvas upon which graphs such as histograms, scattter plots, etc, are prsented. It has a highly interactive GUI interface, but some things you need to do with scripts. HippoDraw can be run as Python extension module so that all the manipulation can be done from either Python or the GUI.

Before the web page came online, Paul F. Kunz wrote:

Don't have a web page for the project, but the organization's is http://www.slac.stanford.edu (the first web server site in America, I installed it).
Which was just too cool a piece of trivia to omit.
 
IPLT
Ansgar Philippsen writes:
IPLT is an image processing library and toolbox for the structural biology electron microscopy community. I would call it a budding/evolving project, since it is currently not in production stage, but rather under heavy development. Python is used as the main scripting/interaction level, but also for rapid prototyping, since the underlying C++ class library is pretty much fully exposed via boost.python (at least the high-level interface). The combined power of C++ and Python for this project turned out to be just awesome.

 
PythonMagick
PythonMagick binds the GraphicsMagick image manipulation library to Python.
 
VPython
Bruce Sherwood writes:
VPython is an extension for Python that makes it easy to create navigable 3D animations, which are generated as a side effect of computational code. VPython is used in education for various purposes, including teaching physics and programming, but it has also been used by research scientists to visualize systems or data in 3D.

 

Scientific Computing

CAMFR
CAMFR is a photonics and electromagnetics modelling tool. Python is used for computational steering.

Peter Bienstman writes:

Thanks for providing such a great tool!
cctbx - Computational Crystallography Toolbox
Computational Crystallography is concerned with the derivation of atomic models of crystal structures, given experimental X-ray diffraction data. The cctbx is an open-source library of fundamental algorithms for crystallographic computations. The core algorithms are implemented in C++ and accessed through higher-level Python interfaces.

The cctbx grew together with Boost.Python and is designed from the ground up as a hybrid Python/C++ system. With one minor exception, run-time polymorphism is completely handled by Python. C++ compile-time polymorphism is used to implement performance critical algorithms. The Python and C++ layers are seamlessly integrated using Boost.Python.

The SourceForge cctbx project is organized in modules to facilitate use in non-crystallographic applications. The scitbx module implements a general purpose array family for scientific applications and pure C++ ports of FFTPACK and the L-BFGS quasi-Newton minimizer.

EMSolve
EMSolve is a provably stable, charge conserving, and energy conserving solver for Maxwell's equations.
 
Gaudi and RootPython
Gaudi is a framework for particle physics collision data processing applications developed in the context of the LHCb and ATLAS experiments at CERN.

Pere Mato Vila writes:

We are using Boost.Python to provide scripting/interactive capability to our framework. We have a module called "GaudiPython" implemented using Boost.Python that allows the interaction with any framework service or algorithm from python. RootPython also uses Boost.Python to provide a generic "gateway" between the ROOT framework and python

Boost.Python is great. We managed very quickly to interface our framework to python, which is great language. We are trying to facilitate to our physicists (end-users) a rapid analysis application development environment based on python. For that, Boost.Python plays and essential role.

ESSS
ESSS (Engineering Simulation and Scientific Software) is a company that provides engineering solutions and acts in the brazilian and south-american market providing products and services related to Computational Fluid Dynamics and Image Analysis.

Bruno da Silva de Oliveira writes:

Recently we moved our work from working exclusively with C++ to an hybrid-language approach, using Python and C++, with Boost.Python providing the layer between the two. The results are great so far!

Two projects have been developed so far with this technology:

Simba provides 3D visualization of geological formations gattered from the simulation of the evolution of oil systems, allowing the user to analyse various aspects of the simulation, like deformation, pressure and fluids, along the time of the simulation.

Aero aims to construct a CFD with brazilian technology, which involves various companies and universities. ESSS is responsible for various of the application modules, including GUI and post-processing of results.

PolyBoRi

Michael Brickenstein writes:

The core of PolyBoRi is a C++ library, which provides high-level data types for Boolean polynomials and monomials, exponent vectors, as well as for the underlying polynomial rings and subsets of the powerset of the Boolean variables. As a unique approach, binary decision diagrams are used as internal storage type for polynomial structures. On top of this C++-library we provide a Python interface. This allows parsing of complex polynomial systems, as well as sophisticated and extendable strategies for Gröbner basis computation. Boost.Python has helped us to create this interface in a very clean way.

Rational Discovery LLC
Rational Discovery provides computational modeling, combinatorial library design and custom software development services to the pharmaceutical, biotech and chemical industries. We do a substantial amount of internal research to develop new approaches for applying machine-learning techniques to solve chemical problems. Because we're a small organization and chemistry is a large and complex field, it is essential that we be able to quickly and easily prototype and test new algorithms.

For our internal software, we implement core data structures in C and expose them to Python using Boost.Python. Algorithm development is done in Python and then translated to C if required (often it's not). This hybrid development approach not only greatly increases our productivity, but it also allows "non-developers" (people without C experience) to take part in method development. Learning C is a daunting task, but "Python fits your brain." (Thanks to Bruce Eckel for the quote.)

Systems Libraries

Fusion

Fusion is a library that supports implementing protocols in C++ for use with Twisted, allowing control over memory allocation strategies, fast method calls internally, etc.. Fusion supports TCP, UDP and multicast, and is implemented using the Boost.Python python bindings.

Fusion is licensed under the MIT license, and available for download from http://itamarst.org/software.

Tools

Jayacard
Jayacard aims at developing a secure portable open source operating system for contactless smart cards and a complete suite of high quality development tools to ease smart card OS and application development.

The core of the smart card reader management is written in C++ but all the development tools are written in the friendly Python language. Boost plays the fundamental role of binding the tools to our core smart card reader library.


Revised 29 May, 2008

© Copyright Dave Abrahams 2002-2008.