Crysfire2020 aids indexing powder diffraction peak data

Version 1.0.3, April 2020
Ron Ghosh, Epsom,

Obtaining structures from powder diffraction data requires matching measured intensities against model structures. This requires correct identification of the unit cell dimensions and indexing the reflections. A pedagogic presentation by J.K. Cockcroft of indexing methods which relate to the programs in this suite may be found at

These notes are intended as a supplement to Robin Shirley's original tutorial notes for Crysfire which can be found at

The suite of indexing programs by a number of authors is provided with a uniform access method allowing a "scatter-gun" (Shirley/Cranswick) approach to finding appropriate solutions to specific problems.

The original Crysfire suite due to the late Robin Shirley (d 2005) offered a uniform user interface to eight well respected indexing programs. Being written in a mixure of Pascal, MSDOS batch files and MSDOS Fortran programs it has become increasingly difficult to run on modern Windows systems, without emulators. The indexing programs have been updated and recompiled using gfortran. Rewriting the interface using Tcl/tk allows the suite to be used on Windows, Mac-OSX, or Linux systems with identical source codes. Unfortunately not all the program sources in the 2004 distribution are extant. Comparison of results from the present programs and the 2004 versions show close resemblances.

The same functional approach is used here; a single file of peak data is the prime input source for the eight programs. Additional control parameters are taken from a text file which has defaults for all programs, which may be edited. Certain parameters, for example zero angles and titles too may be modified and shared.

After downloading file

The Windows version has been tested on Windows-XP and Windows-10. The file cr2020_102.msi is available and should allow an installation using the Windows Installer. NOTE administrator privileges are required. Double-Clicking on the downloaded file cr2020_xxx.msi will typically uncompress the file into C:\"Program Files"\cr2020 C:\"Program Files(x86)\cr2020. The name Crysfire is added to the list of prograams in the Start button. Clicking on this brings up the icon for Crysfire, and the program starts directly. Alternatively the icon may be dragged onto the Desktop where a copy will be made. Clicking on this will start the program. (examining the properties of the icon will show the actual command line used - this is created on installation, which includes a working copy of the wish interpreter..

Linux and Macintoash (OS X) systems
For Macintosh OS X there is a zipfile; the directory crosx containing programs, configuration files and test data includes the Fortran run time library. For Linux the programs have been linked as static and do not depend on system libraries.. This zipfile contains the crlin directory.

The wish interpreter is a standard feature of these systems. After downloading the zip file, unzip it - the program directory will be (pathname)/crxxx/....
Typically the pathname will be like /Users/myname/myprogs/crlin Macintosh (crosx) and linux (crlin) versions find the program file location from the initiating command :

% wish /Users/myname/myprogs/crxxx/cr2020.tcl

Some users might wish to make a local shortcut e.g. on OSX Mojave using a newer
wish v8.6:
[UPro:~] me% which wish
# create command file
[UPro:~] me% cat >crysexec
/opt/local/bin/wish /Users/me/crosx/cr2020.tcl 
# make executable
[UPro:~] me% chmod a+x crysexec
# run Crysfire (the procedure will find the last used directory)
[UPro:~] me% ./crysexec

NOTE - Windows - Linux - Macintosh
The procedure can be started from any current directory. It will switch to either the last project being used, or default to requesting the creation of a new project.

The next step...
When the main page of Crysfire is shown click on File/new to create a new project. This will create a project directory and an edit window to fill with peak data

All indexing programs called within CRYSFIRE produce output and summary files. The files are identified by an extension with a two letter identifier and a third character; S for summary file or O for more complete output file, sometimes additional files. The primary name is the project name created on preparing the peak data file ( project.PPP). When the button of the indexing program is pressed a new indexing run starts, and the result display buttons are disabled until the program terminates. If present, the output and summary display buttons are activated allowing the results to be viewed.

The summary files can be assembled and sorted in the final phase, and the Le Page analysis and reduced lattices calculated. Sorting is into descending order of I20 and Merit. The minimum levels for inclusion vary for different indexing programs, but are typically I20 above 15 and Merit above approx. 7 to 9, where I20 is the number of "indexed" lines in the first 20 observed lines, and Merit is based on De Wolff’s M20 but calculated for "indexed" lines only (as interpreted variously by each indexing program).

Test Data
A test data file TUTEST.PPP can also be found with the programs, typically in c:\Program Files\cr2020\TUTEST.PPP or crxxx/TUTEST.PPP The above file may be copied from the browser window, or the file from the program file may be dropped onto Notepad/TextEdit/gedit etc. and the contents can be used via copy and paste as an input when a new project is created.

The installed version of Crysfire-2020 is shown in the "Help/About" menu.

Indexing Programs Supported by CRYSFIRE-2020

The following indexing programs are supported in the current CRYSFIRE distribution

ID  Crysfire-2020   (Crysfire-2004) Author
DV  dicvol91        DICVOL91        Daniel Louer (1993)
FJ  fjzn621         FJZN622A        J. Visser & R. Shirley (1999)
IT  ito13           ITO12           Jan Visser (1994)
KL  kohl620         KOHL701B        Franz Kohlbeck (1975)
LS  losh62          LOSH62B         Jan Visser & R. Shirley (1999)
LZ  lzon623         LZON623         D. Louer & R. Shirley (1999)
TP  taup32          TAUP33          Daniel Taupin (1974)
TR  treor90         TREOR90         Per-Eric Werner (1995)

CL  clepag14        CLEPAG15        Global sort and summary 
                                    and Le Page cell reduction


Specific Indexing Programs

Visser, J. W. (1969), A Fully Automatic Program for Finding the Unit Cell from Powder Data, J. Appl. Cryst., 2, 89-95.

Boultif, A. & Louër, D. (1991), Indexing of powder diffraction patterns for low-symmetry lattices by the successive dichotomy method, J. Appl. Cryst., 24, 987-993.

Louër, D. & Vargas, R. (1982), Indexation Automatique des Diagrammes de Poudre par Dichotomies Successives, J. Appl. Cryst., 15, 542-545.

Werner, P.-E., Eriksson, L. & Westdahl, M. (1985), TREOR, a Semi-Exhaustive Trial-and-Error Powder Indexing Program for All Symmetries, J. Appl. Cryst., 18, 367-370.

Taupin, D. (1973), A Powder-Diagram Automatic-Indexing Routine, J. Appl. Cryst., 6, 380-385.

(A later paper exists, but it does not refer to the base version used in the CRYSFIRE system.)

Kohlbeck, F. & Hörl, E. M. (1976), Indexing Program for Powder Patterns Especially Suitable for Triclinic, Monoclinic and Orthorhombic Lattices, J. Appl. Cryst., 9, 28-33.

Kohlbeck, F. & Hörl, E. M. (1978), Trial and error indexing program for powder patterns of monoclinic substances, J. Appl. Cryst., 11, 60-61.

Shirley, R. (1999), A modified version of Visser’s ITO zone-indexing program, using the Ishida & Watanabe PM criterion for zone evaluation, (not yet published). See also Visser (1969) for the ITO6 base version, and Ishida & Watanabe (1982) for the PM criterion.

Shirley, R. & Louër, D. (1978), New powder indexing programs for any symmetry which combine grid-search with successive dichotomy, Acta Cryst., A34, S382.

PM Criterion (used in FJZN6 and LZON)
Ishida, T & Watanabe, Y. (1982), A criterion method for indexing unknown powder diffraction patterns, Z. Krist., 160, 19-32.

General Powder Indexing (a brief selection, concentrating on material relevant to CRYSFIRE users)

Calvert, L. D., Flippen-Anderson, J. L., Hubbard, C. R., Johnson, Q. C., Lenhert, P. G., Nichols, M. C., Parrish, W., Smith, D. K., Smith, G. S., Snyder, R. L. & Young, R. A. (1980), Standards for the publication of powder patterns: the American Crystallographic Association Subcommittee's final report, in Accuracy in Powder Diffraction, ed. Block, S. & Hubbard, C. R., NBS Spec. Publ. 567, 513-535.

Ito, T. (1949), A General Powder X-Ray Photography, Nature, 164, 755-756.

Ito, T. (1950), X-ray Studies on Polymorphism, Maruzen, Tokyo, 187-228.

Louër, D. (1998), Advances in powder diffraction analysis, Acta Cryst. A, 54, 922-933.

Mighell, A. D. & Santoro, A. (1975), Geometrical Ambiguities in the Indexing of Powder Patterns, J. Appl. Cryst., 8, 372-374.

Mighell, A. D. (1976), The Reduced Cell: Its Use in the Identification of Crystalline Materials, J. Appl. Cryst., 9, 491-498.

Mighell, A. D. & Stalick, J. K. (1980), The reliability of powder indexing procedures, in Accuracy in Powder Diffraction, ed. Block, S. & Hubbard, C. R., NBS Spec. Publ. 567, 393-403.

Shirley, R. (1975), Recent advances in determining unknown unit cells from powder diffraction data, Acta Cryst., A31, S197.

Shirley, R. (1978), Indexing powder diagrams, in Crystallographic Computing, ed. Schenk, H., Olthof-Hazekamp, R., van Koningsveld, H. & Bassi, G. C., Delft University Press, Holland, 221-234.

Shirley, R. (1980), Data accuracy for powder indexing, in Accuracy in Powder Diffraction, ed. Block, S. & Hubbard, C. R., NBS Spec. Publ. 567, 361-382.

Shirley, R. (1984), Measurement and Analysis of Powder Data from Single Solid Phases, in Methods and applications in crystallographic computing, Hall, S. R. & Ashida, T., Clarendon Press, Oxford, 411-437.

Smith, G. S. & Snyder, R. L. (1979), FN: A Criterion for Rating Powder Diffraction Patterns and Evaluating the Reliability of Powder-Pattern Indexing, J. Appl. Cryst., 12, 60-65.

Snyder, R. L., Johnson, A. C., Kahara, E., Smith, G. S. & Nichols, M. C. (1978), An analysis of the powder diffraction file, Lawrence Livermore Laboratory, University of California, Report UCRL-52505.

Werner, P.-E. (1976), On the Determination of Unit-Cell Dimensions from Inaccurate Powder Diffraction Data, J. Appl. Cryst., 9, 216-219.

Wolff, P. M. de (1963), Indexing of Powder Diffraction Patterns, Adv. X-Ray Anal., 6, 1-17.

Wolff, P. M. de (1968), A Simplified Criterion for the Reliability of a Powder Pattern Indexing, J. Appl. Cryst., 1, 108-113.

Wolff, P. M. de (1972), The definition of the indexing figure of merit M20, J. Appl. Cryst., 5, 243.

** ITO ** Jan Visser

Deductive search in index space by zone-indexing

ITO12 performs best when given 30-40 accurately measured powder lines. It is relatively little affected by impurity lines unless they are among the first 5 lines (hardly at all if outside the first 20). It is optimised for the lower symmetry systems from orthorhombic downwards – consequently high-symmetry lattices may well get reported in an orthorhombic setting, perhaps with a note that a higher symmetry setting may exist. The Bravais lattice is inferred, and Bravais lattice absences taken into account when calculating M20. (See also FJZN6 for a variant that will sometimes succeed where ITO12 fails.)

** DICVOL ** Daniel Louër

Exhaustive search in parameter space by successive dichotomy

Being an exhaustive program, DICVOL91 can demonstrate the non-existence as well as the existence of solutions in particular crystal systems, and is well suited for searches of the higher symmetry crystal systems down to orthorhombic, and also (but slower) to monoclinic. It usually performs best with around 20 well-measured lines, which must be from a single solid phase since it does not tolerate impurity lines.

DICVOL91 searches outwards in 400A3 shells of increasing cell volume, which means that low-volume solutions may be found quickly but searches to high volumes in low symmetry may become very lengthy.

Although an explicit hexagonal search is made, any hexagonal solution will usually be picked up in its equivalent V/2 orthorhombic setting during the preceding volume shell, upon which the search terminates and the hexagonal setting never gets reported. So, if an orthorhombic solution is reported and a hexagonal one suspected, this can be tested by making a further run (with RUNDV), manually setting DICVOL91’s VOLMIN parameter in line 3 to the upper bound of the volume shell in which the orthorhombic cell was reported. This forces the next shell to be searched, and hence any hexagonal solution within it to be reported.

Although DICVOL uses the optimal exhaustive algorithm in parameter space (a form of binary search), like all exhaustive indexing programs it can become very time-consuming in low symmetry. Thus it's usually more effective to seek triclinic solutions with ITO12, TREOR90, KOHL and LZON before running a triclinic scan with DICVOL. usage Q2DV {datafile}

If triclinic searches have been enabled, DICVOL91 will continue into lengthy low-symmetry (monoclinic and triclinic) searches, although a possible solution may already have been found in higher symmetry. These can be halted by Ctrl-Break if necessary, and the output checked to see whether the low-symmetry searches are really needed (see notes on Q2DV above).

** TREOR ** Per-Eric Werner

Semi-exhaustive, heuristic search methods in index space

TREOR90 performs fast and efficient searches down to triclinic symmetry. It prefers high standards of data measurement, but is rather more forgiving over impurity lines. About 25 well-measured observed lines are recommended. A very thorough manual is provided, with many examples.

Defaults VOL: 6000 MERIT: 9 (i.e. halt on finding a solution with M20>9)

** TAUP ** Daniel Taupin

Exhaustive, index-permutation search in index space

Like DICVOL, Taupin’s program uses an exhaustive approach and so can show that solutions do not exist within particular systems. The downside to this is that its searches become dramatically longer as the symmetry decreases, so that searches below orthorhombic can be impractical. It is, however, useful for screening for high symmetry solutions, since searches down to orthorhombic are quite fast. By default it does not allow for impurity lines, though this can be changed using its NBMAX (NSPURI) parameter (see below).

TAUP originally used its own figure of merit, based on squares of differences. This original line-by-line version is still output but now labelled "T-Merit". A conventional M20 value is now also reported for each proposed solution. The acceptance test for reporting solutions is still based on a minimum level of T-Merit - by default 5, though this can be changed in the TAUP data file, using line 2 parameter 7 (FWMINI).

Thus, being exhaustive, TAUP is very useful down to orthorhombic, but in general it is much more efficient to try other programs such as ITO12, TREOR90, KOHL and LZON before considering low-symmetry searches with TAUP. By default under CRYSFIRE, TAUP halts after orthorhombic.

Defaults Flags: DFG CTHO (i.e. d-spacings, brief output, crystal systems down to orthorhombic) VOL: 6000 T-MERIT: 5 (as defined by TAUP – see above - perhaps equivalent to M20 = 7) NSPURI=0 (2nd parameter on line 2 - can be edited then re-run with RUNTP) ±2Theta limits: 0.03 degrees

** KOHL ** Franz Kohlbeck

Heuristic search in index space

KOHL is based on Kohlbeck’s 1975 TMO program, altered and adapted for PC use, and with an FZRF refinement and evaluation stage appended (adapted from Visser’s ITO6). KOHL works rapidly and efficiently in index space, carrying out orthorhombic, monoclinic and triclinic searches in broadly independent stages.

KOHL does not make any special provision for detecting higher-symmetry solutions, so these will be reported in orthorhombic or monoclinic settings. The FZRF postscript brings additional cell refinement, the detection of a probable Bravais lattice, level-by-level listings and other niceties, including an alert when a higher symmetry is suspected.

KOHL is particularly useful because (when it works) it is fast, searches down to triclinic and is relatively tolerant of both random errors and impurity lines. 2Theta error bounds are not required.

Defaults All searches enabled (orthorhombic, monoclinic and triclinic)

** FJZN6 ** Jan Visser & Robin Shirley

Deductive search in index space by zone indexing,

(using Ishida & Watanabe’s PM criterion for zone evaluation)

This is a modified variant of Visser’s ITO program, resembling ITO12 but based on the earlier v6 version. Because of this, its lacks some of the finesse of ITO12, but its strength is that it replaces the weakest aspect of ITO – the CRITER criterion used in the zone-evaluation stage – with the more robust PM criterion of Ishida & Watanabe (1982). This means that is less likely to discard correct zones because they finish too far down the rank order, and so it may well succeed in flushing out a solution where ITO12 fails.

Like ITO12, it performs best when given 30-40 accurately measured powder lines, and is relatively little affected by impurity lines unless they are among the first 5 lines (hardly at all if outside the first 20). It is optimised for the lower symmetry systems from orthorhombic downwards – hence high-symmetry lattices may well get reported in an orthorhombic setting, perhaps with a note that a higher symmetry setting may exist. The Bravais lattice is inferred, and Bravais lattice absences taken into account when calculating M20.

(See ITO12 for a later, improved version of the ITO6 base program).

Defaults Tries combinations of the first 6 zones with the first 6 (NZ1 & NZ2)

Acceptance criterion TOLG for lattice refinement = 3

Defaults	NZ1: 8 (use top 8 zones as basis zones)

NZ2: 0 (don't rerun any basis zones with basis line as 002 [unless the zone is

rectangular or centred])

WAVEL: 1.5406 (CuKa 1 wavelength in Angstroms)

D2THDF: ±2Theta limits on observed lines: 0.03 (CRYSFIRE) 0.06 (LZON)

ALPMIN: 30 (minimum alpha* in degrees)

BETMIN: 30 (minimum beta* in degrees)

ICRIT: 0 (zone evaluation by Ishida & Watanabe’s PM)

VOLMAX: 1500+ (estimated automatically from the first 3 observed lines)

FOMMIN: 7 (minimum figure of merit for a refined solution to be accepted)

NSPURI: 0 (i.e. no unindexed lines permitted)

TOLG: 6 if NSPURI=0, else 3 (acceptance limit in QU for lattice refinement)

NRLOSH: 20 (use only the first NRLOSH lines in dichotomy scans [all lines are used for
zone-finding and for refining and evaluating the solutions])

** LOSHFZRF ** Daniel Louër & Robin Shirley

Exhaustive search of alpha* & beta* in parameter spac by successive dichotomy, for specified basis sets

LOSH is the original user-directed program for which LZON is the automated version. "FZRF" indicates that, as with KOHL, an FZRF refinement and evaluation stage has been appended (adapted from Visser’s ITO6).

Like LZON, LOSHFZRF is semi-exhaustive, searching exhaustively through a selected region of solution space. However, LOSHFZRF searches only a single specified plane in solution space where by default LZON searches eight.

The plane that is to be searched must be specified by the user, in the form of a "basis set". This consists of a single powder zone – the "basis zone" – specified as Q(A), Q(B) and Q(F), plus the first well-measured line not indexed by the zone, which by the Shirley/Ishida&Watanabe heuristic is taken as Q(C). The resulting four powder constants Q(A,B,C,F) form the basis set for the search, which now only need cover the 2-dimensional plane in solution space defined by Q(D) and Q(E) – i.e. alpha* and beta*. Such a 2-dimensional search is very fast – typically under a minute for the default settings with NSPURI=0 (no impurity lines expected). ,p> This process can most easily be understood by studying the main output file from LZON, where it is set out for each of the basis sets used. A basis zone for LOSHFZRF will usually be obtained by examining the detailed zones listings in the main output files of ITO12, FJZN6 or LZON, seeking a promising prospect that the original program missed. This will typically be one with relatively large reciprocal area (hence small direct-cell constants) and large coverage (few unobserved lines within the zone). It helps to have experience and training when spotting good powder zones, but the judicious human selector can often succeed where the zone-evaluating program failed.

As with LZON, all solutions begin as triclinic and are only examined and renormalised for higher symmetry by the evaluative FZRF postscript, which also refines the cell and infers its Bravais lattice type. Solutions are accepted for logging if I20>15 and M20>7.

It is recommended to use the first 20 well-measured lines, but LOSHFZRF is prepared to search with less, although the FZRF stage may not like this and in such cases it may be necessary to renormalise and evaluate the solutions by hand (with the aid of CRYS).


Defaults	NSPURI: 0 (i.e. no unindexed lines permitted)

ALPMIN,BETMIN: 30 (minimum alpha* & beta* in degrees)

D2THDF ("2Theta limits on observed lines, for CuKa 1 radiation), defaults differ as follows:

0.03 (Crysfire)  degrees typically

Short note on control files for Crysfire2020

Wish interprets both / and \ similarly. Mostly used here is /.

When Crysfire2020 starts, the location of the programs is determined from the command line:
For Windows the command is contained in the launch icon; this includes the path to the wish interpreter program.

For Macintosh OS X or Linux again this is from a commandline command like

% wish /Users/me/crosx/cr2020.tcl
In Windows the owner's top directory HOME is %HOMEDRIVE%\%HOMEPATH%
For Linux/Macintosh/unix HOME is $HOME

The starting directory for Crysfire2020 is in written in file HOME/.CRroot
This contains only the path to the Crysfire working directory ..../cr2020 this defaults to HOME

The "File" menu option will create directories in cr2020 for new projects, and write the name of the current project into ..../cr2020/.CRproj file

Inside /Users/me/cr2020 one finds each project folder e.g. new, new1, new2..

/Users/me/cr2020/new2  etc
and file
When starting anew the .CRroot and the actual initial path name proposed is HOME/ and the working directory cr2020 is normally placed there. Any alternative placement directory for the working directory (e.g. on a secondary disk) must already exist.

When a project is created a copy of the default parameters cr2020.dfp is placed therein, copied from the program directory. The user is then prompted for the peak file comprising the title and list of peaks. These will be copied to the project as a file project.PPP The contents may be written/edited using copy and paste actions. A cr2020.dfx file is also created with default values which are shown on the main panel.

The default parameter file cr2020.dfp in the current project file may be edited (see "settings" menu. It contains information on each program as well as two copies of the default parameters. (The first encountered after the tag "ID>" is used; the remainder of the line is printed out and this may be used as a comment in the full output.

Other View menu options allow project data, result files and log file to be viewed.

In the settings menu there is the possibility to modify parameters such as zero angle, 2theta_deviation (acceptable mismatch between measured and calculated peaks), zero angle, and title. If changed these are used for all subsequent calculations (it is hence useful to modify the title after changes). If no solutions are found the accptable 2theta_deviation can be increased up to 0.06 degrees or more. These parameters are stored in the file cr2020.dfx. It is also possible to display the peak file project.PPP, and copy the contents to a clipboard. Then a new project may be selected ("Files") and the data pasted in to the new project with all the additional revisions. This enables results from fresh calculations to be compared with those in the initial project. Again noting modifications in the title offers a simple method of following such changes.

Provided copies of the files cr2020.dfp and cr2020.dfx are in the same directory as the peak data peakdata.PPP, each indexing program may be run independently of the GUI with the command line:

[program_path_name]program_name peakdata
If problems arise please send a zipped copy of the project files to reghosh (at) with a description of the problem actions, and giving the program version.

The program version in use is shown in the menu item Help/About