The gpp4 library
1.0.4
This distribution is a special version of the CCP4 library, released under the Lesser GNU Public License version 2.1.
The last version of the CCP4 library covered by a free license was version 5.0.2. This version was patched by Ralf Grosse-Kunstleve to address some of the more serious deficiencies of the older libraries.
It is the patched version of the CCP4 library that forms the basis for this distribution, which includes a GNU autotools build environment developed by Paul Emsley and Morten Kjeldgaard.
The reason for creating this public fork of the CCP4 libraries is that several third party software distributions depend on the CCP4 libraries.
However, you cannot create a derived work containing both CCP4 6.* licensed code and GPL'd code, and distribute the resulting program, since the GPL demands that the derived work be distributed without additional restrictions. The CCP4 6.* license imposes additional restrictions on redistribution - in particular (but not limited to) an indemnity clause.
The goal of this project -- named gpp4 to distinguish it from CCP4 -- is to provide a drop-in replacement for the non-free CCP4 libraries, that as carefully as possible will implement the current CCP4 library interface.
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.
Since 2002, there has been a major effort to re-write much of the CCP4 library into C/C++. The aims are:
-
To implement a better representation of the underlying data model. For example, Eugene Krissinel's MMDB library acts on a data structure which represents the various levels of structure of a protein model. The new MTZ library encapsulates the crystal/dataset hierarchy that is increasingly being used by programs.
-
To maintain support for existing programs. In particular, the existing Fortran APIs will be maintained, although they will now often be only wrappers to functions in the new library. It is hoped that many existing programs will be migrated to using the new library directly.
-
To provide support for scripting. It is possible to generate APIs for Python, Tcl and Perl automatically from the core C code. Thus, much of the standard CCP4 functionality wil be available to scripts used e.g. in ccp4i or the molecular graphics project.
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.
This documentation is generated automatically by
Doxygen from comment sections in the code. It is therefore detailed and extensive. The library divides roughly into the following sections:
- CMTZ library
- See the CMTZ library page for C/C++ programmers, and the cmtz_f_page page for Fortran programmers.
- CMAP library
- See the CMAP library page for C/C++ programmers, and the cmap_f_page page for Fortran programmers.
- MMDB library
- See Eugene's documentation.
- CSYM library
- See the CSYM library page for C/C++ programmers, and the Software Library for handling symmetry operations page for Fortran programmers.
- CCP4 utility library
- See the CCP4 Library Utilities page for C/C++ programmers.
- CCP4 Parser library
- See the CParser library page for details on how to use the CCP4 parser routines from C/C++ programs.
- CCP4 resizable arrays
- See the CCP4 resizable array implementation page for information on Kevin Cowtan's resizable array implementation.
- Low level disk i/o
- See the diskio_f_page page for Fortran programmers.