The most common interaction between atomic models and structure factors or maps is through electron density or mask calculation. For this purpose, only a subset of atomic properties are required: element, coordinate, occupancy and temperature factor (U-value). Clipper therefore provides a simple class, clipper::Atom, which contains this information. It has a template constructor which allows it to be initialised from any Atom-like object.
Electron density and mask calculations require a list of atoms, therefore a simple class for holding a list of atoms, clipper::Atom_list is provided. This is a trivial extension of std::vector<clipper::Atom>, and provides a template constructor to build an atom list from any vector-like object of atom-like objects. Atom lists can also be constructed using the standard vector methods, e.g. push_back(), insert().
Clipper methods requiring an atom list, e.g. a structure factor calculation may be given a Clipper::Atom_list, any class derived from that class, or a std::vector<clipper::Atom> as an argument.
Other classes are provided which may optionally be used to access information in the MMDB hierarchy in the form of Clipper objects. These are trivial extensions of MMDB objects. The MMDB objects may therefore be cast to the Clipper types to access the additional conversion methods.
The minimum necessary information is stored for each object in the hierarchy, however additional information of any type may be added to any object through use of the clipper::PropertyManager.
Basic searching and selection tools are provided, and logical 'and' and 'or' operators may be used to combine models, polymers, and monomers.
MiniMol provides an MMDBfile class which may be used to extract models from and store models back into an MMDB, or a file.
MiniMol will do simple tasks much more easily than MMDB, but it won't do hard tasks at all. If MiniMol does everything you will need (or can easily be extended to do so), then it is probably a good choice, otherwise use MMDB.