Development of the CCP4 software library

Martyn Winn, Charles Ballard, Peter Briggs and Eugene Krissinel


This development effort is now over, and the new C/C++ libraries are integrated into the CCP4 suite. This document is largely historical!


The CCP4 software suite is based around a library of routines which cover common tasks, such as file opening, parsing keyworded input, reading and writing of standard data formats, applying symmetry operations, etc. Programs in the suite call these routines which, as well as saving the programmer some effort, ensure that the varied programs in the suite have a similar look-and-feel.

Around the period 2001-2003, there was a major effort to re-write much of the CCP4 library. The aims were:

This incremental approach, maintaining the existing suite while improving the underlying code, puts constraints on what is possible, but is considered more appropriate for a collaborative project like CCP4.

Major components

For a lengthier description, see the article in Issue 40 of the CCP4 Newsletter.

Here are some useful links:

Data Model

A data model for high-throughput protein structure determination is being developed by staff at the EBI. Most effort has so far gone into protein production and crystallisation. But X-ray data collection and structure solution are now being considered. Look at these examples: The new library will aim to be consistent with this data model.

See Also


cmtzlib was originally based on Jan-Pieter Abrahams' functions in the program solomon. These have been substantially altered and added to, and so all problems are my creations, but I am grateful for the excellent starting point.

The formulation of this library has benefited from many discussions with Kevin Cowtan (who also provided some core functions), Eugene Krissinel, Airlie McCoy, and all members of the Daresbury team (Alun Ashton, Peter Briggs, Charles Ballard).