Installing CCTBX on OS X
From OS X Scientific Computing
Contents |
What is it?
Computational Crystallography Toolbox
The Computational Crystallography Toolbox (cctbx) is being developed as the open source component of the PHENIX system. The goal of the PHENIX project is to advance automation of macromolecular structure determination. PHENIX depends on the cctbx, but not vice versa. This hierarchical approach enforces a clean design as a reusable library. The cctbx is therefore also useful for small-molecule crystallography and even general scientific applications.
The cctbx code base is available without restrictions and free of charge to all interested developers, both academic and commercial. The entire community is invited to actively participate in the development of the code base. A sophisticated technical infrastructure that enables community based software development is provided by SourceForge. This service is also free of charge and open to the entire world.
The cctbx is designed with an open and flexible architecture to promote extendability and easy incorporation into other software environments. The package is organized as a set of ISO C++ classes with Python bindings. This organization combines the computational efficiency of a strongly typed compiled language with the convenience and flexibility of a dynamically typed scripting language in a strikingly uniform and very maintainable way.
Use of the Python interfaces is highly recommended, but optional. The cctbx can also be used purely as a C++ class library. The SourceForge cctbx project currently contains these modules:
- libtbx: The build system common to all other modules. This is a very thin wrapper around the SCons software construction tool.
- boost_adaptbx: A very small adaptor toolbox with platform-independent instructions for building the Boost.Python library.
- scitbx: Libraries for general scientific computing (i.e. libraries that are not specific to crystallographic applications): a family of high-level C++ array types, a fast Fourier transform library, and a C++ port of the popular LBFGS conjugate gradient minimizer, all including Python bindings. These libraries are separated from the crystallographic code base to make them easily accessible for non-crystallographic application developers.
- cctbx: Libraries for general crystallographic applications, useful for both small-molecule and macro-molecular crystallography. The libraries in the cctbx module cover everything from algorithms for the handling of unit cells to high-level building blocks for refinement algorithms. Note the distinction between the cctbx project and the cctbx module. In retrospect we should have chosen a different name for the project, but the current naming reflects how the modules have evolved and it would be too disruptive to start a grand renaming.
- iotbx: The youngest member in the family: evolving libraries for reading and writing established file formats.
Install with Fink
You can install the CCTBX fink package just by issuing the command
fink install cctbx
I split this off from the fink ccp4 package, which compiles just enough of this to make phaser, so you need to install this separately if you want it.
Install Manually
If you don't have (or don't want to use) fink to install this, you can do so instead manually very easily. Here are two options:
Install their pre-compiled binaries
You can install this with a self-extracting binary distribution available on the home page.
Compile it yourself
Download it
Check for the latest version. Last time I checked it was this:
curl -O http://cci.lbl.gov/cctbx_build/results/2006_11_08_2311/cctbx_python_25_bundle.tar.gz
Compile it
sudo zsh
mkdir -p /usr/local/xtal
mv cctbx_python_25_bundle.tar.gz /usr/local/xtal/.
cd /usr/local/xtal
mkdir cctbx_build
cd cctbx_build
# requires a Framwork python build
/System/Library/Frameworks/Python.framework/Versions/Current/bin/python \
../cctbx_sources/libtbx/configure.py mmtbx
# The last command initializes the cctbx_build directory and creates
# a file setpaths.csh (among others). This file must be used to initialize
# a new shell or process with the cctbx settings:
source setpaths.sh
# Find the number of cpus:
num_cpu=$( sysctl hw.logicalcpu | awk '{print $NF}' )
# On a machine with multiple CPUs enter:
libtbx.scons -j $num_cpu .
If you move it, do this:
sudo /System/Library/Frameworks/Python.framework/Versions/Current/bin/python ../cctbx_sources/libtbx/configure.py mmtbx
To run it
You need to source the appropriate startup file:
source /usr/local/xtal/cctbx/cctbx_build/setpaths.sh
for Bourne-like shells, or
source /usr/local/xtal/cctbx/cctbx_build/setpaths.csh
for tcsh.

