Clipper

This document provides a thematic index to some of the Clipper documentation. It should provide a starting point to help you to find out how to tackle a particular task using Clipper.
It is divided into two main sections, the first indexing information be theme, and the second providing useful links for performing specific tasks.
This section describes the documentation which might help when addressing a particular type of problem.
Some information is common to all tasks in Clipper. Most fundamental are the coordinate types. There are described in the following essay: Coordinates and related types. The most commonly used classes are clipper::Coord_orth, clipper::Coord_frac, clipper::Coord_grid and clipper::HKL.
All crystallographic tasks depend upon the spacegroup and cell classes, so read their documentation. The cell class is clipper::Cell, and the spacegroup class is clipper::Spacegroup. You may want to look at their parent classes, Cell_descr, and clipper::Spgr_descr, which are used to initialise the classes if the information is not coming from a file.
If you are going to need to perform operations on coordinates, then you may want to look at the clipper::RTop_orth documentation. Its counterpart, clipper::RTop_frac is the base class of the symmetry operator clipper::Symop.
Often, the parent classes of a class also contain useful methods. For example, the coordinate classes are all derived from clipper::Vec3<T>, and the operators are derived from clipper::RTop<T>.
The clipper::Util class may contain some helpful utility functions. The clipper::String class is a trivial extension of the STL std::string. You can use either interchangeably.
First, look at the essay Developing using Reflection Data, which describes how Clipper handles reciprocal space data.
The fundamental types which hold lists of HKL's and lists of associated reflection data (e.g. F's, phases, etc.) are clipper::HKL_info and clipper::HKL_data<T>.
clipper::HKL_data<T> is a template class which can be used to hold any kind of data. A range of common datatypes are provided which you can store in this object: Look at the derived classes of clipper::Datatype_base for a list. Alternatively, you can add your own.
Most common reflection data conversions have built in methods. Look at the clipper::HKL_data<T>::compute() method. For operators to use with it, look at the class listing for classes labelled clipper::datatypes::Compute_*.
Scaling of data is also built in. See clipper::ResolutionFn and the examples on that page, and the derived classes of clipper::BasisFn_base and clipper::TargetFn_base.
First, look at the essay Developing using Crystallographic Maps, which describes how Clipper handles real space map data.
Crystallographic maps are handled by the clipper::Xmap<T> class. Calculation of FFT's to and from reciprocal space is build in to this class, as are interpolation methods. The clipper::Map_stats class provides tools for calculating map statistics.
Calculation of maps and masks from atomic coordinates is handled in the contrib package by the EDcalc and MASKcalc classes. Filtering of maps and calculation of masks is aided by the MapFilter classes in the contrib package.
Noncrystallographic maps (i.e. maps with no symmetry or cell repeat) are handled by the clipper::NXmap<T> class. Noncrystallographic maps may be referred into a crystallographic frame using the clipper::NXoperator class.
First, look at the essay Developing using Atomic Models, which describes how Clipper handles atomic models.
The clipper::Atom and clipper::Atom_list classes provide basic support for atoms and lists of atoms, or you can use the more advanced MMDB or MiniMol packages.
To calculate structure factors, maps, or masks from a coordinate model, look at the SFcalc, EDcalc, and MASKcalc classes in the contrib package.
This section describes the documentation which might help when addressing a particular crystallographic task.
Rotations are handled in a generic form as Quaternions by the clipper::Rotation class. These may be converted to and from Polar angles, Euler angles (24 conventions), and matrix representations. See the clipper::Polar_ccp4, clipper::Euler_ccp4, clipper::Euler<T>, and clipper::Mat33<T> classes.
Rotationtranslation operators are handled by the derived classes of clipper::RTop<T>, i.e. clipper::RTop_orth and clipper::RTop_frac.
Filtering of maps and calculation of masks is aided by the MapFilter classes in the contrib package.
Data scaling and sigmaa estimation can be performed using the clipper::ResolutionFn class and its related classes.
Agarwal coefficients for calculation of refinement residual gradients may be generated using the clipper::AtomShapeFn class.
Data scaling and sigmaa estimation can be performed using the clipper::ResolutionFn class and its related classes.
FFFearstyle translation functions may be calculated using the FFFear classes in the contrib package.