You may redistribute this program under the terms of the GPL. Alternatively you may redistribute the functions and subroutines of this program as an API under the terms of the LGPL.

Some of the software and documents included within this software package are the intellectual property of various parties, and placement in this package does not in anyway imply that any such rights have in any way been waived or diminished. With respect to any software or documents for which a copyright exists, ALL RIGHTS ARE RESERVED TO THE OWNERS OF SUCH COPYRIGHT. Even though the authors of the various documents and software found here have made a good faith effort to ensure that the documents are correct and that the software performs according to its documentation, and we would greatly appreciate hearing of any problems you may encounter, the programs and documents any files created by the programs are provided **AS IS** without any warrantee as to correctness, merchantability or fitness for any particular or general use. THE RESPONSIBILITY FOR ANY ADVERSE CONSEQUENCES FROM THE USE OF PROGRAMS OR DOCUMENTS OR ANY FILE OR FILES CREATED BY USE OF THE PROGRAMS OR DOCUMENTS LIES SOLELY WITH THE USERS OF THE PROGRAMS OR DOCUMENTS OR FILE OR FILES AND NOT WITH AUTHORS OF THE PROGRAMS OR DOCUMENTS. 
This program and related scripts are available as a tarball or a zip file
BGAOL is an updated version of the program ITERATE that finds cells that are "close" to the cell given, in order to help find the Bravais lattice of highest symmetry consistent with the submitted cell. A central problem in the solution of every crystal structure is to determine the correct Bravais lattice of the crystal. Many methods have been described for finding the correct Bravais lattice. ITERATE is based on the G^{6} space approach of Andrews and Bernstein [1] An important alternative is Zimmermann and Burzlaff's DELOS [3] based on Delaunay reduction. DELOS has no explicit distance metric. BGAOL is a major revision to ITERATE informed by the analysis of the 15 5dimensional boundary polytopes of the Niggli reduced cell cone and the associated transformation matrices and projectors [2].
Bravais General Analysis of Lattices (BGAOL) is a program written in Fortran that starts with a given experimentally determined cell and finds cells of all possible symmetries that are close enough to the starting cell to be worth considering as alternative. For each of the alternative, the International Tables Niggli Lattice Character is given as well as the Bravais lattice type. BGAOL replaces the existing program ITERATE, making use of a better understanding of the geometry of the space of Nigglireduced cells [1].
Correct identification of the Bravais lattice of a crystal is an important early step in structure solution. Niggli reduction is a commonly used technique. In [2] we investigated the boundary polytopes of the Nigglireduced cone in the sixdimensional space G^{6} by organized random probing of regions near 1, 2, 3, 4, 5, 6, 7 and 8fold boundary polytope intersections. We limited our consideration of valid boundary polytopes to those avoiding the mathematically interesting but crystallographically impossible cases of zero length cell edges. Combinations of boundary polytopes without a valid intersection or with an intersection that would force a cell edge to zero or without neighboring probe points are eliminated. 216 boundary polytopes are found. There are 15 5D boundary polytopes of the full G^{6} Niggli cone, 53 4D boundary polytopes resulting from intersections of pairs of the 15 5D boundary polytopes, 79 3D boundary polytopes resulting from 2fold, 3fold and 4fold intersections of the 15 5D boundary polytopes, 55 2D boundary polytopes resulting from 2fold, 3fold, 4fold and higher intersections of the 15 5D boundary polytopes, 14 1D boundary polytopes resulting from 3fold and higher intersections of the 15 5D boundary polytopes. The classification of the boundary polytopes into 5, 4, 3, 2 and 1dimensional boundary polytopes corresponds well to the Niggli classification and suggests other possible symmetries.
Class  Boundary  Condition  SpecialPosition Subspace  

Equal cell edges  1  all  $g_1 = g_2$  $g_4 = g_5$ 
2  all  $g_2 = g_3$  $g_5 = g_6$  
Ninety degrees  3  all  $g_4 = 0$  $g_5 = g_6 = 0$ 
4  all  $g_5 = 0$  $g_4 = g_6 = 0$  
5  all  $ g_6 = 0$  $g_4 = g_5 = 0$  
Face diagonal  6  + + +  $g_2 = g_4 $ and $ g_5 \html'≥' g_6$  (none) 
7  + + +  $g_2 = g_4 $ and $ g_5 < g_6$  $g_5 = g_6/2$  
8      $g_2 = g_4$  (none)  
9  + + +  $g_1 = g_5 $ and $ g_4 \html'≥' g_6$  (none)  
A  + + +  $g_1 = g_5 $ and $ g_4 < g_6$  $g_4 = g_6/2$  
B      $g_1 = g_5$  (none)  
C  + + +  $g_1 = g_6 $ and $ g_4 \html'≥' g_5$  (none)  
D  + + +  $g_1 = g_6 $ and $ g_4 < g_5$  $g_4 = g_5/2$  
E      $g_1 =  g_6$  (none)  
Body diagonal  F      $g_1+g_2+g_3+g_4+g_5+ g_6 = g_3$  $g_1g_2g_4+g_5=0$ 
Roof/ Niggli Symbol 
IT Lattice Char 
Bravais Lattice Type 
G^{6} Subspace 
G^{6} Boundary Polytope 
Roof/ Niggli Symbol 
IT Lattice Char 
Bravais Lattice Type 
G^{6} Subspace 
G^{6} Boundary Polytope 


44A  3  $cP$  $(r,r,r,0,0,0)$  $12345 = 12{3↖\text'^'} = 12{4↖\text'^'} = 12{5↖\text'^'}$  51A  16  $oF$  $(r,r,s,t,t,2r+2t)$  $1F1' = {1↖\text'^'}F$  
44C  1  $cF$  $(r,r,r,r,r,r)$  12679ACD  51B  26  $oF$  $(r,s,t,r/2,r,r)$  $ADA' = {A↖\text'^'}D$  
44B  5  $cI$  $(r,r,r,2r/3,2r/3,2r/3)$  $12F2'F' = 1{2↖\text'^'}{F↖\text'^'}$  52A  8  $oI$  $(r,r,r,s,t,2r+s+t)$  12F  
45A  11  $tP$  $(r,r,s,0,0,0)$  $1345 = 1{3↖\text'^'} = 1{4↖\text'^'} = 1{5↖\text'^'}$  52B  19  $oI$  $(r,s,s,t,r,r)$  29C = 2AD  
45B  21  $tP$  $(r,s,s,0,0,0)$  $2345 = 2{3↖\text'^'} = 2{4↖\text'^'} = 2{5↖\text'^'}$  52C  42  $oI$  $(r,s,t,s,r,0)$  58BF  
45D  6  $tI$  $(r,r,r,r+s,r+s,2s)$  $12FF' = 12{F↖\text'^'}$  53A  33  $mP$  $(r,s,t,0,u,0)$  35  
45D  7  $tI$  $(r,r,r,2s,r+s,r+s)$  $12F2' = 1{2↖\text'^'}F$  53B  35  $mP$  $(r,s,t,u,0,0)$  45  
45C  15  $tI$  $(r,r,s,r,r,0)$  158BF  53C  34  $mP$  $(r,s,t,0,0,u)$  34  
45E  18  $tI$  $(r,s,s,r/2,r,r)$  $2ADA' = 2{{A↖\text'^'}}D$  57B  17  $mI$  $(r,r,s,t,u,2r+t+u)$  1F  
48A  12  $hP$  $(r,r,s,0,0,r)$  134E  57C  27  $mI$  $(r,s,t,u,r,r)$  9C = AD  
48B  22  $hP$  $(r,s,s,s,0,0)$  2458  57A  43  $mI$  $(r,s,t,s+u,r+u,2u)$  $FF' = {F↖\text'^'}$  
49C  2  $hR$  $(r,r,r,s,s,s)$  $121'2' = {1↖\text'^'}{2↖\text'^'}$  55A  10  $mC$  $(r,r,s,t,t,u)$  $11' = {1↖\text'^'}$  
49D  4  $hR$  $(r,r,r,s,s,s)$  $121'2' = {1↖\text'^'}{2↖\text'^'}$  55A  14  $mC$  $(r,r,s,t,t,u)$  $11' = {1↖\text'^'}$  
49B  9  $hR$  $(r,r,s,r,r,r)$  1679ACD  55B  20  $mC$  $(r,s,s,t,u,u)$  $22' = {2↖\text'^'}$  
49E  24  $hR$  $(r,s,s,s+r/3,2r/3,2r/3)$  $2F2'F' = {2↖\text'^'}{F↖\text'^'}$  55B  25  $mC$  $(r,s,s,t,u,u)$  $22' = {2↖\text'^'}$  
50C  32  $oP$  $(r,s,t,0,0,0)$  $345 = {3↖\text'^'} = {4↖\text'^'} = {5↖\text'^'}$  56A  28  $mC$  $(r,s,t,u,r,2u)$  $AA' = {A↖\text'^'}$  
50D  13  $oC$  $(r,r,s,0,0,t)$  134  56C  29  $mC$  $(r,s,t,u,2u,r)$  $DD' = {D↖\text'^'}$  
50E  23  $oC$  $(r,s,s,t,0,0)$  245  56B  30  $mC$  $(r,s,t,s,u,2u)$  $77' = {7↖\text'^'}$  
50A  36  $oC$  $(r,s,t,0,r,0)$  35B  54C  37  $mC$  $(r,s,t,u,r,0)$  5B  
50B  38  $oC$  $(r,s,t,0,0,r)$  34E  54A  39  $mC$  $(r,s,t,u,0,r)$  4E  
50F  40  $oC$  $(r,s,t,s,0,0)$  458  54B  41  $mC$  $(r,s,t,s,u,0)$  58 
BGAOL starts with a probe cell $g$ in G^{6} and projects it onto each of the 15 boundaries, keeping the projected images that lie within the error bounding box around the probe and within the Niggli cone. In this case, 2 boundaries are shown, which we call $\text'Ω'$ and $\text'Θ'$. The higher symmetry boundary $\text'ΩΘ'$ formed by the intersection of $\text'Ω'$ and $\text'Θ'$ happens to lie outside of the error bounding box. However for each of the cell projections it finds that are within the error bounding box, BGAOL applies the transformation associated with the boundary, in this case $M_{\text'Ω'}$, and keeps the resulting cell $M_{\text'Ω'}(P_{\text'Ω'}(g))$ if it is nearly reduced. Nonduplicate cells are added to the list until no more are found, and then each cell is tested by projection for its distance from each Niggli lattice character. The distance is computed as if working within the Niggli cone embedded in a higher dimensional space, so that the distance from, say, $P_{\text'Ω'}(g)$ to $M_{\text'Ω'}(P_{\text'Ω'}(g))$ is treated as zero. Thus, in the example shown, even though $\text'ΩΘ'$ is outside the error bounding box, using the embedding distance, it is sufficiently close to $M_{\text'Ω'}(P_{\text'Ω'}(g))$ for it to be accepted as a candidate.
The program on this Web page implements a search in G^{6} for the various Bravais lattices that the user's cell may fit. For each lattice type, the best metric match is reported. If the higher symmetry type is actually correct, then that is likely to be the best cell from which to start further refinement. However, the possibility exists that one of the rejected cells (which did not match as well) was actually the correct one to use. The reason for this ambiguity is experimental error and its propagation in the transformations of the lattices in the program. Fortunately, the rejected cells are usually quite similar to the accepted one.
A note on standard deviations: First, even in the best of circumstances, standard deviations of unit cell dimensions from 4circle diffractometer data are always underestimated (by at least a factor of 2). In addition, the points chosen for the determination are often not well distributed (for example all in the first octant of orthorhombic lattices). These less than optimal choices cause substantial systematic error. The experimental errors are amplified in the mathematical conversions between various lattices that any lattice search program must perform. It is not a rare occurrence for angles to be incorrect by 0.5 degrees in initial unit cell determinations.
Note: Even in most well determined unit cells, the actual errors in the edge lengths is 0.2 to 0.5 parts per thousand. (Note that reproducibility of the measurements is substantially better, leading to the illusion that diffractometers produce excellent unit cell parameters). Use of standard deviations that are too small is a common reason for failure of Bravais lattice searches. For small molecules, 0.1 Angstroms is a reasonable error for the edge lengths, for proteins, 0.4 to 0.5 (or even more for preliminary measurements). Accurate unit cell parameters must by determined by a number of more complex methods and must include extrapolation to remove systematic effects. For an excellent summary, see "Xray Structure Determination", G.H.Stout and L.H.Jensen, Wiley, 1989.
[1] L. C. Andrews and H. J. Bernstein. Lattices and reduced cells as points in
6space and selection of Bravais lattice type by projections. Acta Crystallogr., A44:10091018, 1988.
[2] L. C. Andrews and H. J. Bernstein. The Geometry of Niggli Reduction. arXiv,
1203.5146v1 [mathph], 2012. arxiv.org/abs/1203.5146.
[3] H. Zimmermann and H. Burzlaff. DELOS A computer program for the
determination of a unique conventional cell. Zeitschrift fu r Kristallographie, 170:241 246, 1985.