chem cryst
University of Oxford

chem cryst news

Crystals Manual

Chapter 3: The Crystals Database

3.1: General List-control Directives - \DISK
3.2: Elimination of Old Versions of LISTS - \PURGE
3.3: LISTS in Current use
3.4: Printed Summary of Data lists
3.5: Element and Atom names
3.6: Foreign Program Links
It is quite possible to use CRYSTALS so that all the data is read from text files at the start of every job (as in SHELXL). However, for interactive working, it is preferable to establsh a database of crystallographic information which can be used whenever it is needed. This database is called the CRYSTALS 'disk' file. It is usualy a permanent file on the hard disk, and usually has the extension '.DSC'.
  It is a direct-access binary file. DO NOT try to print or edit it.

The data is organised in this file as lists, corresponding to the external user-input lists. In modern terminology, these 'lists' would be called 'objects' or 'data structures'. Each list groups together related information, e.g. the cell parameters, the atoms, the reflections etc.
While in general input of a list will overwrite a previous version, for the atomic coordinate list (LIST 5, see section 6.3) a new version is added to the database. In the event that a refinement goes wrong, the user can usually recover an earlier version of the structure.

In the CRYSTALS system, most of the data required to refine a crystal structure must be input to the computer as ASCII, translated into an internal format and stored on a random access disk file. On the disk, different types of data are recorded separately, in what are called LISTS. Each list holds only one type of crystallographic information and is identified by a number called the 'list type number'.

Normally, each structure uses a separate disk file, which is preserved between different jobs and updated whenever a program generates some new data. This means that several different versions of a given list may be produced during the course of a structure analysis. In order that each list may be uniquely identified, every list has associated with it a second number, called the 'list serial number'. To specify unambiguously a list that is stored in the database, it is necessary to know both the relevant list type number and the list serial number.

In most cases, however, the version of a given list that is required is the latest list of that type to be created. Accordingly, an index called the 'current list index' is maintained, which contains an entry for the latest version of each list. When a program requires information about the current version of a list, it accesses the current list index.

As well as an index of the current version of each list, a second index is kept, called the 'file index'. For each disk file, this latter index contains the information for every list that is present in the database. This index is always checked when a list is written to the database, to ensure that its list type number and list serial number refer to only one list.

For a user, the major advantage of splitting the input data into logical units in the database is that, for any run, only those lists which need to be changed have to be re-input to the database. New versions of each list that are generated by programs are automatically output to the database so that, provided the database file is not destroyed or erased, it is probable that each run will contain only control commands. For example, during a structure factor least squares calculation a new set of Fcalcs and a new normal matrix will be generated and stored in the database ready for further calculations.

Old versions of a list may be reused, provided that they have not been overwritten or deleted, by finding the relevant entry in the file index and copying it into the current list index.

The database contains two indices which control access to it.

Current List Index

This index contains the serial numbers of each list to be used in calculations. This index is updated whenever a list is written to database.

Disk Index

This is an index of all the lists contained in the database. When a new list is added to the database, its internal address is added to this index, and also inserted into the current disk index. It is possible to copy address from this index to the current disk index, thus changing the currently active version of a list.


[Top] [Index] Manuals generated on Wednesday 8 November 2006

3.1: General List-control Directives - \DISK

The list control table can be marked and used in various ways with this command.


For example:

  \  Print the current list index
  \ Print the index containing all the lists stored
  \ on the disk
  \ Reset LIST 5 (the model parameters) to the one with serial number 4
  RESET 5 4
  \ Reset LIST 10 (Fourier peaks) to the 'current serial number - 1'
  RESET 10 0 -1
  \ Retain LIST 5 with serial number 6 when the disk
  \ is purged
  RETAIN 5 6
  \ Delete current LIST 11 (normal/inverted least squares matrix)


This is the command which initiates the routines to modify the list control table. The directives MARKERROR, DELETE, RETAIN, USAGE, and RESET all accept the parameters SERIAL and RELATIVE. The parameters SERIAL and RELATIVE should not both be changed from their default settings on the same directive.

All directives are executed immediately after they have been entered.


This directive causes one of the indexes to be printed.

       CURRENT  -  default value

If 'INDEX' is 'CURRENT', the current list index is printed (i.e. the index containing the current version of each list stored). If 'INDEX' is 'DISK', the index containing information about all the lists stored on the disk is printed. If 'INDEX' is 'SUMMARY', a summary of the usage of the disk file is printed.

       NO  -  default value

Writes a machine readable summary of whatever is selected by INDEX to the currently open PUNCH file.

       0  -  default value

By default (0) all lists are printed or punched. If you specify an alternative value for the LIST parameter, then only information about that list number is output.


This directive can either mark a specified type of list as an 'error list', or alternatively, such a mark can be removed from the list control table.

LIST=n 'n' is the list type number (there is no default value).
SERIAL=n 'n' is the list serial number. The default value is zero, which represents the serial number of the current list of this type.
RELATIVE=n 'n' is the offset applied to the serial. The default value is 0. If both SERIAL and RELATIVE are zero (the defaults) the current list of the specified type will be the one that is marked.
       YES  -  default value

If ACTION is NO , the entry in the list control table for the list type specified is altered so that it is not marked as an 'error list'. If ACTION is YES, the entry in the list control table for the list type specified is altered so that it is marked as an 'error list'. If a program attempts to use such a list, an error is reported, and the job terminated.


With this directive, certain old versions of specified lists can be retained when the disk file is PURGED (see 3.2).

LIST=n 'n' is the list type number (there is no default value).
SERIAL=n See markerror definition above (3.1).
RELATIVE= See markerror definition above (3.1).
       YES  -  default value

If 'ACTION' is 'YES', the list with the specified type and serial number will be retained when the disk file is PURGED. If 'ACTION' is 'NO' , the particular list will be deleted when the disk file is PURGEd (see section 3.2).


With this directive certain lists can be deleted from the file index.

LIST= See markerror definition above (3.1).
SERIAL= See markerror definition above (3.1).
RELATIVE= See markerror definition above (3.1).
       YES  -  default value

If 'ACTION' is 'YES', the list with the specified serial number will be marked to be deleted from the file when the file is PURGED. If ACTION is 'NO' , the specified list will not be marked as one to be deleted when the disk file is PURGEd (see section 3.2).

RESET LIST= SERIAL= RELATIVE= This directive alters the entry for the list type in the current list index.
LIST= This parameter is the list type number, for which there is no default value.
SERIAL= See markerror definition above (3.1).
RELATIVE= See markerror definition above (3.1).
USAGE LIST= SERIAL= RELATIVE= FLAG= This directive alters the list write/overwrite flag.
LIST=n 'n' is the list type number (there is no default value).
SERIAL= See markerror definition above (3.1).
RELATIVE= See markerror definition above (3.1).
       UPDATE  -  default value.

EXTEND RECORDS= FREE= TRIES= SIZE= This directive allows the user to extend the database by a specified number of records, and to control the auto-extension. On modern platforms the extension of the database is automatic by default.
RECORDS= This parameter specifies a number of records to be added to the file. The default value is zero i.e. no records are added.
FREE= This parameter specifies a number of records that must be available for use in the file. The file will be extended until there are at least 'FREE' records unused after the next free disk address.
TRIES= This is the number of times the system may try adding 'SIZE' records to the disk file to achieve enough space for the current operation. Usual default is 1.
SIZE= This is the size, in records, that the system will increase the disk by to try to accommodate the current operation. The usual default is 5. If the write still fails after TRIES x SIZE records have been added it produces an error. Setting SIZE to zero enables uncontrolled extension of the disk file. This is the default, but if the user gets carried away doing crystallography, they may fill their disk.
CHECK This directive checks the integrity of the disk file. It takes no parameters.
Errors in the DISK file. If CRYSTALS reports errors in the disk file, run this utility to get a list of those LISTS corrupted. Use \PUNCH 5, \PUNCH 12 and \PUNCH 16 to make ASCII copies of these important lists (by default output to the 'punch' file, bfile.pch - rename it after punching to e.g. 'savedlists.pch'). If the final version of a list is corrupt, use \DISK RESET (see above 3.1) to point the program to an earlier version and punch that instead. If the disk file becomes totally unusable, delete it, read in the reflections again, and then read in these 'punched' lists (\USE savedlists.pch).
If only certain lists are unusable, use the DELETE directive in \DISK to mark defective LISTS for deletion, and then use \PURGE NEW to create a new disk file (by default new.dsc). Rename new.dsc to crfilev2.dsc to make CRYSTALS open it by default when it starts in that directory.
  The following lists can always safely be deleted since CRYSTALS creates
  new ones automatically.

10 Fourier peaks (section 8.6).
11 Normal matrix (section 7.49).
20 Saved geometrical transformation matrices (section 9.6).
22 Constraints in internal format (section 7.49).
24 Least squares shift list (section 7.49).
26 Restraints in internal format (section 7.49).
33 SFLS command in internal format (section 7.42).
36 List dependency tracking (not documented).

See section 3.3 for all the list definitions.

Example 1

 Imagine that the current versions of LIST 5 (the model parameters) 
 and LIST 29 (element properties) have beome corrupt.
 We will also delete any recreatable lists.
       \  Check the index
       \  Delete current version of atomic params
       DEL 5
       \  Point index to the previous version
       RESET 5 0 -1
       \  Remove corrupt and safe-to-delete lists:
       DEL 29
       DEL 10
       DEL 11
       DEL 20
       DEL 22
       DEL 24
       DEL 26
       DEL 33
       DEL 36
       \  Open a new file save.dat on the 'PUNCH device'.
       \  Release is equivalent to CLOSE followed by OPEN.
       \  Output the important data lists:
       \PUNCH 5
       \PUNCH 12
       \PUNCH 16
       \  Write a new database called rescue.dsc with only the 
       \  current index of lists in it:
       \  Close CRYSTALS

At this point it would be useful on a stand-alone computer to run a system utility (e.g. SCANDISK on a PC) to check the integrity of the computers hard disk, since CRYSTALS rarely corrupts the disk itself.
One would then open a command prompt in the working folder and do this:

       del crfilev2.dsc
       ren rescue.dsc crfilev2.dsc

Now restart CRYSTALS in the same folder. Recover the important saved data by typing:

       \USE save.dat

[Top] [Index] Manuals generated on Wednesday 8 November 2006

3.2: Elimination of Old Versions of LISTS - \PURGE



This command deletes all but the current version of each list, and any lists explicitly marked to be deleted, except for lists marked to be retained, and then rewrites the disk file so that the space occupied by the old deleted lists is overwritten. This operation does not normally shorten the file physically (see parameter FILE below for a method of doing this) , but frees a lot of space that can be reused. The optional parameters 'FILE' and 'INITIALSIZE' (available in some implementations only), allow the user to create a new file with only the current version of each list in it. This file may be smaller than the original disk file.

       OLD - default value
       name - The root to be used form the new database - name.DSC
       DATE - The root name is generated by CRYSTALS from the date and

This parameter controls whether a new file is created. If the value specified is not OLD, a new file will be created containing only the current versions of each list, and any which are marked to be retained. The program automatically extends the file to the size required for all the lists to be retained. This new file has the extension .DSC, and may be used in future CRYSTALS tasks.


This parameter is used to specify an initial size for a new file. If a new file is not to be created, the value is ignored. The default value of zero causes the new file to have the smallest size necessary to contain all the copied lists.

       OFF - default value

If the value 'ON' is given for this parameter, the types and serial numbers of all lists deleted because they were old versions are listed. The types and serials of all lists not copied for other reasons, e.g. deleted lists, and lists which are marked as being updated, are always listed

LIST = n

'n' is the type of list to be purged from the database, all old versions of all other lists are preserved. If 'n' is 0 (the default value) lists of all types are purged.


[Top] [Index] Manuals generated on Wednesday 8 November 2006

3.3: LISTS in Current use

Lists marked * cannot be directly input by the User
List Number Type of data

1 Cell parameters (section 4.2)
2 Unit cell symmetry (section 4.8)
3 Atomic scattering factors (section 4.11)
4 Weighting parameters (section 7.28)
5 The model parameters (section 6.3)
6 Reflection data (section 5.3)
7 Reflection data not used for refinement (section 5.4)
10 Peak coordinates from Fourier (section 8.6)
11 Least squares matrix (section 7.49)
12 Refinement directives (section 7.11)
13 Crystal and collection data (section 4.13)
14 Fourier directives (section 8.2)
16 General Restraints (section 7.17)
17 Special Restraints (section 7.24)
20* Transformation matrices saved by \GEOMETRY (section 9.6)
22* Refinement directives in internal format (section 7.49)
23 Structure factor control list (section 7.7)
24* Least squares shift list (section 7.49)
25 Twin component operators (section 10.0)
26* Constraints in internal format (section 7.49)
27 Diffractometer scales (section 5.12)
28 Reflection condition/filter list (section 7.39)
29 Contents of asymmetric unit and elemental properties (section 4.15)
30 General information (section 4.17)
31 Cell parameter E.S.D.'s (section 4.5)
33* Internal - Refinement control (last SFLS command, see 7.42)
36* Tracking interdependencies of parameters, normal matrix, weights etc.
40 Bond forming/breaking directives (section 6.13)
41* Bonds between atoms (section 6.12)

[Top] [Index] Manuals generated on Wednesday 8 November 2006

3.4: Printed Summary of Data lists


For example:

    \  Detailed list of model parameters:
    \  Again, but less typing:
    \SUM L 5 HI
    \  Summary of reflection data:
    \SUM L 6


This parameter determines the extent of the data summary.


If 'LIST' is specified, a summary of a specific list whose type is given by the 'TYPE' parameter is produced. If 'EVERYTHING' is specified, a summary of all current lists for which summaries are available is produced. If 'OF = EVERYTHING' is specified, the value of 'TYPE' is ignored.


This parameter indicates the list type for which a summary is required. If a summary of this list type is not available, a warning message will be printed.


This parameter has three values which indicate the level of detail required in the data summary. The parameter is ignored unless the list type is 5 or 10.

  List      Level   Data printed
  ----      -----   ---- -------
  5 or 10  LOW     Atom names
  5 or 10  MEDIUM  Atom names and positional parameters
  5 or 10  HIGH    All atomic and overall parameters

[Top] [Index] Manuals generated on Wednesday 8 November 2006

3.5: Element and Atom names

Element Names

Elements are specified by a name, called the atom TYPE. The 'TYPE' is used to associate the refined atoms with atomic properties, such as form factors, radii, etc. The TYPE must start with a letter, and is not case sensitive. REMEMBER that 'blank' is used as a delimiter in CRYSTALS and so must not appear in an atom TYPE. Elements in the form factor list (LIST 3 - see section 4.11) and the atomic properties (LIST 29 - section 4.15) are associated by their TYPE with atoms in the parameter list (LIST 5). Numeric properties of the elements are pre-prepared in the files SCATT, SCATCU, SCATMO and PROPERTI(.dat) in the SCRIPT directory (Often CRYSTALS\SCRIPT). The 'elements' C', C", H' and H" are in these files with the properties of C and H. You can define your own element names, but may not use +,- or *.

Atom names
Individual atoms are specified by combining the TYPE with a SERIAL number. This is an integer in the range 1-9999. When combined with the TYPE, it must be enclosed in parentheses ().
    e.g.   C(2) CL(123)


Symmetry equivalent atoms

Atoms specified as above correspond exactly to those in the refinable atom list (LIST 5). If a symmetry equivalent atom is required, up to 5 additional items are included inside the parentheses. The full specification of an atom is:



S is the serial number of the symmetry operator in the stored list of space group operators. If negative, it indicates that the atom coordinates are first negated before being operated upon. The default is 1
L is the serial number of the non-centring lattice translation to be used. The default is 1.
Tx,Ty,Yz are whole cell translations parallel to the cell axes. The default is 0.

If the value of an item is its default, it may be omitted altogether, though its place must be marked by its associated comma. A series of trailing commas may also be omitted. For example:

        C(99,-1,1,0,0,0) - an atom related by inversion at the origin
                           (assuming x,y,z is the first operator).
        C(99,-1,1,,,0)   - same atom as above, omitting defaults.
        C(99,-1)         - same atom as above, omitting 
                           defaults and trailing commas.

For more detailed information, see Atomic and Structural parameters (section 6.0)

[Top] [Index] Manuals generated on Wednesday 8 November 2006

3.6: Foreign Program Links


This command provides links to 'FOREIGN' programs, that is, programs which are not part of CRYSTALS, but which provide useful functions in providing a complete system. These programs often come from other laboratories, and are only distributed with the authors permission unless they are public domain. Where practical, we make no changes to the original code. We offer little or no support in connection with these programs, though usually they are in frequent use in Oxford. The linking routine prepares data files for the foreign program, and may initiate a subprocess to execute the rogram.

       SNOOPI  - A plotting program using Tektronix 4010 devices.
       CAMERON - An interactive graohics program.
       MULTAN  - Prepares files for MULTAN 84.
       SHELXS  - Prepares files for SHELXS.
       SIRxx   - Prepares files for the SIR direct methods system


This keyword controls the mode of operation of the foreign program. It currently only applies to SHELXS and SIR.

       NORMAL      - DEFAULT, prepares a default data file with recommended
       DIFFICULT   - Prepares a file with non-default settings.
       PATTERSON   - Prepares a default Patterson calculation (SHELXS only).
       SPECIAL     - Prepares a full SHELX data file (SHELX only)

[Introduction To The System | Definitions And Conventions | The Crystals Database | Initial Data Input | Reflection Data Input | Atomic And Structural Parameters | Structure Factors And Least Squares | Fourier Routines | Analysis Of Results | Twinned Crystals | Matrix Calculations | Obsolete Commands ]

Crystals Now!  Manuals NOW!

© Copyright Chemical Crystallography Laboratory, Oxford, 2006. Comments or queries to David Watkin - Telephone +44 1865 285019. This page last changed on Wednesday 8 November 2006. The website was re-generated on Wednesday 8 November 2006. Choose your nearest mirror for faster access: [ Original | CCP14 UK Mirror | CCP14 Canadian Mirror | CCP14 USA Mirror | CCP14 Australian Mirror ]
Authorised people, edit: this file, news, tree, template, stylesheet. Rebuild website.