Computational Crystallography Toolbox
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
boost Remove boost_adaptbx from PYTHONPATH. Closes #149 Apr 5, 2018
boost_adaptbx Building the Boost filesystem library for Phaser on behalf of Airlie … Jun 12, 2018
cbflib_adaptbx 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
cctbx Overload to refine only diagonal elements of magnification matrix. Ma… Sep 21, 2018
chiltbx clang 3.8 is smart enough to spot typo in a header guard Apr 7, 2016
clipper_adaptbx Reduce dependencies on libtbx.pythonpath.stdlib Aug 22, 2017
cma_es Remove Python2.3 optimizations and re-enable deprecation warning from… Apr 5, 2018
cootbx Unicode support: more base changes Aug 23, 2016
crys3d Model Viewer: updates for atom selection Feb 22, 2018
cudatbx Enforce to not just contain from __future__ imports. This… Jan 24, 2017
dox.sphinx Retire pythonpath. Jan 10, 2018
dox Updated paths for Doxygen Sep 28, 2017
dxtbx Eiger2 different size Sep 14, 2018
fable 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
fftw3tbx python3 compatibility fixes for Jan 16, 2018
gltbx Fix for setting GL_DEPTH_SIZE proposed by @ndevenish for #220 - since… Jul 11, 2018
iota 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
iotbx Simple python 3 syntax changes Sep 21, 2018
libtbx placate buildbot Sep 21, 2018
mmtbx Model: save libraries on select() because they may contain ligand inf… Sep 21, 2018
msvc9.0_include VS 2008: unify usage of headers in msvc9.0_include Jun 14, 2018
omptbx 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
prime 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
rstbx 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
scitbx Python 3 syntax changes: partially revert f5d6afe Sep 21, 2018
simtbx Bugfix unlocks OpenMP performance bottleneck. Sep 21, 2018
smtbx smtbx: Fix Python 3 syntax incompatible tests Sep 21, 2018
sphinx Hyperlink DOIs against preferred resolver Jun 30, 2018
spotfinder 2to3 compatibility, cctbx.xfel, xrange. Sep 18, 2018
tbxx Windows support for tbxx::time_accu Jan 26, 2016
ucif Hyperlink DOIs against preferred resolver Jun 30, 2018
wxtbx GUI tables and plot: apply shift on click Sep 1, 2018
xfel clean clutter. Sep 19, 2018
.gitattributes remove attributes from files that don't exist anymore Jan 24, 2018
.gitignore Enable Python3 monster for dxtbx. Mar 12, 2018
COPYRIGHT.txt Move legal notices to top-level directory Aug 29, 2018
LICENSE.txt Move legal notices to top-level directory Aug 29, 2018 Another Python3 migration help Oct 20, 2017

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 also provides some of the key component of the Olex 2 software. Olex 2 is dedicated to the workflow of small molecule crystallographic studies. It features a powerful and flexible refinement engine, olex2.refine, which is developed as part of the cctbx, in the smtbx top-module.

To maximize reusability and, maybe even more importantly, to give individual developers a notion of privacy, the cctbx is organized as a set of smaller modules. This is very much like a village (the cctbx project) with individual houses (modules) for each family (groups of developers, of any size including one).

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 GitHub. 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 easiest way to set up a development environment from scratch is to:

  1. Download in the directory where the cctbx and its dependencies shall be installed

The installation will take a long while but the script will verbosely describe what it does.