International
Tables for
Crystallography
Volume G
Definition and exchange of crystallographic data
Edited by J. R. Hester and B. McMahon

International Tables for Crystallography (2026). Vol. G. Early view chapter

Section 1.1.4.1. Refinement or data processing packages

James R. Hestera and Brian McMahonb

aAustralian Nuclear Science and Technology Organisation, Locked Bag 2001, Kirrawee DC, NSW 2232, Australia, and bInternational Union of Crystallography, 5 Abbey Square, Chester CH1 2HU, UK.

1.1.4.1. Refinement or data processing packages

| top | pdf |

Many developers of crystallographic software are focused on data processing and analysis problems, and are interested in CIF only as an input/output channel for passing data to and from an application. They may find that one of the standard libraries discussed in Chapter 5.3[link] will provide all the support needed for this purpose. Otherwise, they may find it helpful to read the description of the CIF application programming interface (Chapter 5.2[link] ), either to use directly the reference implementation (although this is not optimized for performance), or to design their own API on similar principles.

Writing native code to output CIF data is relatively straightforward, since the programmer may choose the order in which data may be written, and has few layout constraints. Attention to the details of the format specification should ensure that syntactically correct CIFs are formed. The programmer must of course take care to ensure that the correct data names are used, and that their associated values conform to the restrictions detailed in the relevant dictionary. The dictionary listings in Part 4 should provide enough information for this, though the matching commentary chapter in Part 3 should also be read to ensure correct usage. If the programmer wishes to reduce the burden of conformance to dic­tionary attribute constraints, it is possible to write routines to validate directly against the dictionaries. In this case, an understanding of the DDL in which the relevant dictionary is written can be gained from Chapter 2.4[link] . To implement any dictionary methods written in the dictionary relational language (dREL), one should also read Chapter 2.5[link] .

If it is wished to archive in a CIF file some data that are not characterized by existing dictionary definitions, new data names may be created, provided they are differentiated from the existing definitions by use of a [local] or otherwise registered prefix, as discussed in Section 2.1.4.2[link] .

Handling input CIF data is more complex, because of the free-form layout and ordering of data in an input file. If a suitable library is not used, the programmer may wish to use a filter program to preprocess the input into a normalized presentation that is easier to write native code to handle. Some programs to do this are discussed in Chapter 5.4[link] .








































to end of page
to top of page