Volume 36 Received 21 May 2002 | Indexing of powder diffraction patterns by iterative use of singular value decompositionaBruker AXS GmbH, Östliche Rheinbrückenstraße 49, D-76187 Karlsruhe, Germany A fast method for indexing powder diffraction patterns has been developed for large and small lattices of all symmetries. The method is relatively insensitive to impurity peaks and missing high d-spacings: on simulated data, little effect in terms of successful indexing has been observed when one in three d-spacings are randomly removed. Comparison with three of the most popular indexing programs, namely ITO, DICVOL91 and TREOR90, has shown that the present method as implemented in the program TOPAS is more successful at indexing simulated data. Also significant is that the present method performs well on typically noisy data with large diffractometer zero errors. Critical to its success, the present method uses singular value decomposition in an iterative manner for solving linear equations relating hkl values to d-spacings. |
The dichotomy method (Louër & Louër, 1972
) is one of the most widely used methods for indexing of powder diffraction patterns. It consists of an exhaustive search of lattice-parameter space by varying lattice parameters in discrete steps and then isolating volumes that contain possible solutions. Theoretically, the search is exhaustive and analysis on simulated data has shown this to be true for monoclinic lattices using the program DICVOL91 (Boultif & Louër, 1991
). However, as shown below, DICVOL91 is 84% successful for simulated triclinic data sets. Also widely used is the zone-finding algorithm (Wolff, 1957
; Runge, 1917
), implemented in the program ITO, which attempts to find two zones in reciprocal space. For the case in which these zones intersect, the angle between the zones is calculated and the reciprocal-space lattice is found. ITO has also not been able to index many simulated sets of triclinic and monoclinic d-spacings.
At the core of the SVD-Index algorithm, presented here, is iterative use of singular value decomposition (SVD) (Nash, 1990
) for solving the reciprocal-lattice relationship:
Solving equation (1)
for the Xnn parameters is similar to the method of Werner (Werner, 1964
, 1976
; Werner et al., 1985
) as implemented in the program TREOR90 (Werner et al., 1985
). TREOR90, however, only includes up to six equations (for triclinic lattices) and it too has been unable to index many simulated sets of monoclinic d-spacings.
SVD-Index on the other hand includes all equations, one for each observed d-spacing, and most significantly it repeats the process with a new set of Xnn values calculated from the previous iteration. This iterative process makes use of the successively determined Xnn parameters to determine new hkl assignments. Of importance is a weighting function applied to equation (1)
in order to facilitate the search of parameter space. The inclusion of a zero error in equation (1)
has enabled successful indexing for zero errors of up to 0.05° (2
).
Built on top of the SVD process is a Monte Carlo approach to searching parameter space and thus it is not an exhaustive method. There is therefore no proof that it will find the correct solution 100% of the time. It has, however, found correct solutions for a number of real data examples and additionally for thousands of sets of simulated d-spacings from large triclinic, monoclinic and higher symmetry lattices with a randomly generated zero error and 2
errors corresponding to that typically obtained from peak fitting.
An important difference between SVD-Index and DICVOL91 is that it does not require errors in the input d-spacings as input. SVD-Index simply returns the best solution as determined by the SVD least-squares process. The dichotomy method on the other hand requires and uses errors in order to determine solutions and also uses them as a criterion for limiting the level in the dichotomy process. Thus the dichotomy method fails if the user-supplied d-spacing intervals do not encompass the true solution or when the d-spacings comprise impurity lines. Note that larger than expected d-spacing errors are a result of incorrect peak assignments due to peak overlap when extracting d-spacings.
Equation (1)
can be written in matrix form as
H contains N rows and n columns, D is a column vector of N elements containing the observed 1/do 2 values and X is a column vector of length n containing the unknown Xnn parameters. Equation (2)
is solved using singular value decomposition. SVD is recommended for cases in which there are more equations than variables, as described in Numerical Recipes in Fortran (Press et al., 1995
) and by Nash (1990
). The following describes SVD-Index as applied to the most general case of the triclinic lattice, n = 6.
The primary difficulty associated with solving equation (1)
is one of assigning the correct hkl values to the observed d-spacings do. In the present work this is accomplished using SVD in an iterative process as shown in Table 1
. Xnn parameters determined in a particular iteration are used in the next iteration to determine new dc,hkl 2 values; these are then used to reassign hkl values in step (iii) (Table 1
). Steps (i) to (v) are executed continuously until two consecutive iterations result in the same hkl assignments, or when the number of iterations exceeds the maximum allowed value of NT1 = 20.
|
The hkl assignment of step (iii) allows for un-indexed lines, which is the key factor in determining impurity lines. The de Wolff figure of merit MN (de Wolff, 1968
) is used as a figure of merit. It is further scaled by 1/(Nimpurity + 1) where Nimpurity corresponds to un-indexed lines. Step (ii) terminates the process of Table 1
if the number of calculated d-spacings Nc is either too large or too small. This condition may cause failure if more than 75% of the observed d-spacings are missing or if more than 33% of the observed d-spacings are impurity lines.
Table 1
is the key process and its use defines the rest of the SVD-Index algorithm. Techniques constructed such that solutions to test input lattices are effectively found 100% of the time have resulted in the iterative process of Table 2
. Step (i) (Table 2
) performs a general randomization of the Xnn parameters and its purpose is to get close to the true Xnn parameters. This randomization includes a scaling of the Xnn parameters such that the corresponding real-space volume corresponds to V1. Except for randomization limits, there are no upper limits placed on lattice parameters or angles. The scaling of the volume described in step (i) allows for lattice-parameter lengths that are greater than twice the largest observed d-spacing. Step (ii) in Table 2
uses Xnn values that gave the best MN from the previous N1 executions of Table 1
and then executes Table 1
a further N1 times with slight modifications to the Xnn values. Part (b) of step (iv) gradually increases the volume V1 according to
and at each volume steps (i) to (iii) are performed once. There is no hard limit placed on the upper unit-cell volume; instead the limiting volume is controlled by the number of calculated lines, Nc, within the reciprocal-space sphere as described in step (iv) part (a). Table 2
iterates continuously until the condition described in step (iv) part (c) is met. Default values for the control parameters v1, N1, N2 are shown in Table 3
and they have been investigated to the extent that they have found correct solutions and without fail for thousands of randomly chosen test lattices for the case of 20 input d-spacings for ratios of the largest to the smallest lattice-parameter length of up to 11. The smaller N1 and N2 values for higher symmetries reflect their simpler nature. The Monte Carlo nature of Table 2
implies different results every time SVD-Index is run; this means that SVD-Index can be continuously run in order to search more of the parameter space; alternatively the N2 control parameter can be increased in order to search more of the parameter space.
|
| ||||||||||||||||||||||||||||||||||
The SVD-Index algorithm copes with a moderate amount of random absences. With regard to systematic absences, it is sufficient to apply SVD-Index consecutively with hkl values corresponding to minimum-symmetry Bravais lattices from each crystal system and in decreasing order of symmetry. Monoclinic lattices are treated differently: a search is performed using the six unique sets of hkl values corresponding to the space groups P2, P21, Pc, P21/c, C2 and Cc, and not just the Bravais lattices. On a 600 MHz personal computer, SVD-Index searches all crystal systems down to triclinic in approximately 3 min.
It has been assumed that high d-spacings are more likely to be assigned correct hkl values than low d-spacings; the reason is that there are fewer lower order hkl values than higher order hkl values. It has also been assumed that large differences
2
hkl between the observed d-spacing and the d-spacing assigned in step (iii) of Table 1
should be weighted more than small
2
hkl differences. With these considerations in mind, the weighting function
has been formulated and applied to both sides of equation (1)
. Io corresponds to the integrated intensity under the Bragg peaks and its use assists in the determination of impurity lines. An optimum setting for m occurs around m = 4; however, as will be demonstrated below, randomizing m between 0 and 4 produces better results. Proof of this is difficult to obtain; at present it can only be speculated that a degree of randomness introduced into the weighting helps the SVD process search more parameter space.
For a zero error Ze in 2
°, the following relation in terms of the radiation wavelength
can be written:
Using small-angle approximations and ignoring second-order terms, equation (5)
can be approximated without significant loss as
Since the 1/d 2 in equation (6)
represents the left-hand side of equation (1)
, we can substitute for the 1/d 2 in equation (5)
to obtain
Equation (7)
is therefore used when a zero error is included, but not in an immediate sense. When solving the equations represented by equation (7)
, the absolute value of Ze as returned by SVD [step (iv) of Table 1
] is often too large (>0.1° 2
). This is due to grossly incorrect hkl assignments in step (iii) of Table 1
occurring in the early iterations of Table 1
. To avoid this situation, the process of Table 1
is first performed without a zero error and then a second time with a zero error. With this strategy, the finding of the correct solution is not hindered with zero errors of up to ±0.05° (2
).
Apart from a zero error, d-spacings obtained from powder diffraction data by means of non-linear least-squares fitting of peaks include an error term often in the range of ±0.0025° (2
) for well resolved peaks to ±0.03° (2
) for overlapping peaks. Errors of this magnitude do not significantly hinder the SVD-Index algorithm, except for a bias towards fitting high d-spacings introduced by the weighting function of equation (4)
. A more probable estimate of the lattice parameters is obtained when the equations (7)
are all given the same weighting by setting Whkl = do 2. Immediate assignment of this weighting, however, reduces the chances of getting close to the correct solution, and thus, similar to the zero-error procedure, the process of Table 1
is first executed with the weighting shown in equation (4)
and then a second time with the weighting of do 2.
The final SVD-Index algorithm for the case of a zero error and errors in the d-spacings executes the process of Table 1
three times for each randomly chosen set of Xnn parameters. The first call is made with the weighting function of equation (4)
and no zero error, the second is made with the weighting function of equation (4)
and a zero error included, and the third is made with a zero error included but with the weighting function Whkl = do 2. The first execution of Table 1
executes step (iv) approximately five times on average before convergence; the second and third executions of Table 1
execute step (iv) approximately once. During the third execution of Table 1
, observed d-spacings that have closest calculated d-spacings that are more than 0.05 2
° away are ignored and thus un-indexed. This reduces the possibility of impurity lines being included in the SVD process.
Test input lattices were generated by randomly varying the lattice-parameter lengths between 3 and 35 Å and the lattice angles between 90 and 130°. Corresponding Xnn parameters were further scaled to match randomly chosen volumes between 100 and 4000 Å3; lattices with lattice parameters that lie outside the generated limits after this scaling were rejected. d-spacings were generated from the test input lattices and a selection of the d-spacings was made starting from the largest and working towards smaller values (increasing 2
). In an attempt to simulate real data, d-spacings that differed from the previous d-spacing by less than 0.05° (2
) were rejected. The first two high d-spacings were kept (an analysis without this restriction is described below). An additional one third of the d-spacings were randomly removed by removing one in three of the remaining d-spacings; this regime is summarized in Table 4
. For example, for triclinic lattices and for 20 input d-spacings, the number of lines removed is
35% of the total which lie within the reciprocal-space volume.
| ||||||||||
Unless stated otherwise, the following analysis includes 20 d-spacings as input. Approximately 1% of these sets of 20 are either not solvable or do not have a unique solution; these are not included in the analysis. Unsolvable sets of d-spacings include those that contain all zeros in any column of the H matrix of equation (2)
. Sets of d-spacings that do not have a unique solution include those where the number of Xnn parameters is less than or equal to the number of equations that those parameters are a function of.
In the following analysis, test input d-spacings for monoclinic and orthorhombic lattices were generated from randomly chosen space groups. For orthorhombic test input lattices, hkl values used by SVD-Index to solve the test input lattices correspond to hkl values from the correct Bravais lattice. For the monoclinic case, hkl values used correspond to the correct monoclinic space-group grouping.
Because many different unit cells can all describe the same lattice, the following analysis for the case of no errors in the d-spacings determines a correct solution when |do - dc,hkl| < 10-4 Å for all do values and when the volume after indexing is identical to the volume of the input lattice.
and the weighting function WhklFor 1000 triclinic input test lattices, sets of 15 input d-spacings were generated and corresponding Xnn values from these Xnn,true were varied according to the formulation Xnn,start = Xnn,true(1 +
R), where R is a uniform deviate random number between -1 and 1. For each of the test input lattices, the corresponding Xnn,start values were used in the process of Table 1
. Fig. 1
shows the results for the cases with and without the weighting function of equation (4)
where it is seen that the weighting function significantly increases the chances of finding the correct solution. Also shown is that the SVD process of Table 1
determines the correct Xnn values 16.5% of the time for deviations of ±10% (
= 0.1) of the input Xnn values; this is a significant success rate considering that the process of Table 1
was executed only once. With the weighting function of equation (4)
, similar tests on primitive monoclinic and orthorhombic lattices of lowest symmetry produced success rates of 75.1 and 57.3%, respectively, for
= 0.3; this contrasts with the triclinic case of 4.4%. Using hkl values from the lower-symmetry Bravais types, but introducing more symmetry into the test input lattices using the space groups P21/c and P212121 for the monoclinic and orthorhombic cases, respectively, produced success rates of 69.8 and 54.5% for
= 0.3. Thus the systematic absences reduced the percentage success rates, but not by much. However, because there are only six unique sets of monoclinic hkl values, SVD-Index uses these when searching for monoclinic solutions.
| Figure 1 For 1000 input test triclinic lattices, the number of times the correct solution is found expressed as a percentage after executing the process of Table 1 versus random changes in the true Xnn values of the input test lattices as determined by . R corresponds to a uniform deviate random number between -1 and 1. The test lattices were generated with randomly chosen volumes between 100 and 4000 Å3. |
Setting Whkl of equation (4)
to do m, m was varied from 0 to 10 and at each value the process defined in Table 2
was executed 10000 times with differing sets of d-spacings corresponding to different test input lattice parameters. N1 and N2 of Table 2
were set to 1 and the process of Table 2
terminated when V1 > 4000 Å3; a single pass of Table 2
. Fig. 2
shows percentage results indicating the number of times the correct solution was found. The process of Table 1
was least effective at finding the correct solution at m = 0; at m
4 the chances are significantly improved. Instead of constant m values, the m values were randomly varied between 0 and 6, producing a significant increase of the percentage success rate to 8.4%. Using Whkl as defined in equation (4)
and executing the process of Table 1
a further 10000 times with different sets of d-spacings, resulted in a percentage success rate of 11.8%. This shows that the inclusion of an appropriate term that considers the differences between the calculated and input 2
positions increases the chances of finding the correct solution. Further investigation into weighting schemes may well yield even better success rates.
| Figure 2 For triclinic lattices, percentage success rate of finding the correct input test lattices after performing the process of Table 2 10000 times as a function of m of the weighting function Whkl of equation (4) . N1 and N2 of Table 2 were both set to 1. |
![[link]](../../../../../../logos/links/purparr.gif)
Table 5
shows statistics obtained from solving test input lattices comprising 10 and 20 input d-spacings. Here it is seen that the average number of calls to Table 1
is relatively small for the three crystal systems listed and that the maximum number of calls to Table 1
before the correct solution is found is approximately an order of magnitude greater than the average. Also seen is that the case of 20 input d-spacings requires fewer calls to Table 1
.
|
The data of Table 5
are the result of a general randomization of lattice parameters and do not highlight difficulties encountered when one or two of the lattice-parameter lengths are small. This is illustrated in Figs. 3
(a)-3
(c), which show the average number of calls to Table 1
before finding the correct test input lattice versus the ratio of the largest lattice-parameter length on the smallest lattice-parameter length. Lines labeled `1 Short' correspond to test input lattices generated with one short lattice-parameter length and one long lattice-parameter length with the third lattice-parameter length being half of the long and the short. Uniform deviate random variations in the subsequent lattice-parameter lengths from -0.5 to 0.5 Å were introduced and 20 test input d-spacings were generated according to the removal scheme of Table 4
. The lines labeled `2 Short' are similar except that two of the test input lattice-parameter lengths are short. The absence of data for ratios > 6 for triclinic lattices is due to the fact that for 20 input d-spacings it is difficult to generate the test input lattices as approximately 90% are unsolvable and therefore rejected. For the `1 Short' lattice-parameter case, the maximum ratio possible for a triclinic lattice is also around 6 as larger ratios result in volumes greater than 4000 Å3.
| Figure 3 Using the strategy of Table 2 , plots (a) to (c) show the average number of calls to Table 1 before finding the correct test input lattice versus the ratio of the largest lattice-parameter length to the smallest lattice-parameter length. Each data point corresponds to results obtained from 400 test input lattices. |
Figs. 3
(a)-3
(c) show that the average number of calls to Table 1
required in order to find the correct input lattice increases as a function of the ratio of the largest to the smallest lattice-parameter length. This is expected as the larger ratios have hkl values that are dependent on the small lattice-parameter lengths only, and these are intermixed with hkl values that are dependent on the larger lattice-parameter length. The smooth nature of the plots of Figs. 3
(a)-3
(c) demonstrates the predictable nature of SVD-Index and thus larger ratios should be possible for cases in which more input d-spacings are available or when larger volumes are being searched.
Instead of keeping the two highest d-spacings from test input lattices, as defined in Table 4
, a further analysis was performed with the removal of the highest d-spacing and with a further one in three of the rest randomly removed. For 400 sets of triclinic d-spacings, SVD-Index found the correct solution 100% of the time with the average number of calls to the process of Table 1
being 404. Removing the second-highest d-spacing and keeping the first yielded 156 as the average number of calls to the process of Table 1
. In both analyses, up to three d-spacings are removed from the first six d-spacings. Removing the third-highest d-spacing and keeping the first two as described in Table 4
yields 105 as the average number of calls to the process of Table 1
. Thus, the trend seen in the three sets of analyses shows that as higher d-spacings are removed, SVD-Index requires more computational effort in order to index the test input lattices successfully. Even though the present analyses produced a 100% success rate, the control parameters of Table 3
were chosen with the d-spacing removal scheme of Table 4
in mind.
For the case of Cu K
radiation, 200 test input sets of d-spacings were used as input for ITO and TREOR90 for each of four different volume ranges. d-spacing errors and a zero error were not included. In the following analysis, a d-spacing less than 0.05° (2
) from the previously accepted larger d-spacing was removed; no other d-spacings were removed.
ITO (Ito, 1949
), last updated in 1998 and written by Visser, a description of the method being given in the paper by Visser (1969
), was first tested against triclinic lattices. ITO considers calculated d-spacings to be equal if they differ by an amount corresponding to less than 0.005° (2
). The chances of ITO finding a solution were increased by executing ITO six times for each test input lattice with various sets of control parameters. These include NQ1 and NQ2 for the numbers of lines used in combinations for finding zones. For the default values of NQ1 = 3 and NQ2 = 6, two separate runs were performed with tolerances for matching calculated and observed 2
values set to 0.001 and 0.006° (2
). Two further sets of NQ1 and NQ2 values were used, with NQ1 = 4 and NQ2 = 8, and NQ1 = 2 and NQ2 = 9, with the two previously stated 2
tolerances used in each case. Because ITO considers d-spacings to be equal if they differ by an amount corresponding to less than 0.005° (2
), it has difficulty, regardless of 2
errors, with large volumes where many calculated 2
values differ by small amounts (Werner, 1976
). In these cases, ITO outputs a message and stops processing. The present analysis detects this condition, resulting in two sets of results: one with these lattices included in the comparison and one where they are excluded. Fig. 4
line (a) shows percentage success rates of ITO finding the volume of the test input triclinic lattices to within ±1 Å for the case of all test input lattices included; as expected, the success rate decreases markedly at high volumes. Excluding the cases where the equivalence of d-spacings that differ by less than 0.005° (2
) causes problems, produced the results shown as line (b); here it is seen that ITO has an approximate 90% success rate below 2000 Å3 and decreases to 75% for volumes up to 4000 Å3. The downward trend seen in the ITO results of line (b) is probably due to the fact that as the volume increases the probability of a short axis relative to the others is greater. This difficulty in dealing with extreme geometries in also witnessed in Fig. 3
for SVD-Index. ITO yielded a 77% success rate for test input monoclinic lattice with volumes between 1000 and 2000 Å3.
| Figure 4 Percentage success rates for finding the volume of test input lattices for (a) ITO with of all test triclinic input lattices included, (b) excluding the cases where the equivalence of dc,hkl is encountered and for (c) TREOR90 in solving monoclinic test input lattices. |
TREOR90 was tested against monoclinic lattices to within 1% of the test input volumes; the space groups for the monoclinic lattices were randomly chosen. Triclinic lattices were not considered because of long calculation times. Test input d-spacings that had hkl values larger than the maximum default values set for the monoclinic base lines were rejected. This in fact removes difficult test input lattices where one lattice parameter is relatively short. Increasing the maximum hkl values for the monoclinic base lines significantly increases calculation times and thus was not attempted. The TREOR90 commands `MONOSET = 7' and `SHORT = 1' were used (see TREOR90 manual for details) in order to enhance the chances of finding the correct solution. If the correct solution was not found, then the two commands `D1 = 0.0003' and `D2 = 0.0005' were included and TREOR was again run. In some cases TREOR90 indexed the test input lattices as primitive with volumes that were smaller that the test input lattice. Similarly, volumes were sometimes integral multiples of the test input lattices. Both of these cases were identified as a correct solution. Fig. 4
line (c) shows the TREOR90 percentage success rates of finding the correct solution.
The comparison performed with DICVOL91 on test triclinic lattices was limited in scope because of long calculation times. Limiting the volume range of the test input lattices to 1000 Å3, and similarly setting the volume range searched by DICVOL91 to this value, 50 sets of 20 d-spacings without random d-spacing errors or a zero error were given to DICVOL91 to solve, with a resulting success rate of 84%.
A further test using monoclinic lattices proved DICVOL91 to be 100% successful. DICVOL91 was also 100% successful with d-spacing errors of
2
= 0.01° (2
); of course the DICVOL 2
errors were set to 0.01° (2
). Setting the DICVOL91 2
errors to values less that the introduced errors resulted in failure.
The test input d-spacings given to the ITO, TREOR90 and DICVOL1 programs were all successfully solved by SVD-Index.
The success of the SVD-Index algorithm is best gauged by its performance on d-spacing data comprising errors with magnitudes typical of those observed when extracting 2
positions from powder diffraction data. Introducing uniform deviate random noise of ±
2
into test input d-spacings means that the solution may contain a maximum difference between an observed and calculated 2
position of ±
2
. However, in the context of testing the SVD-Index algorithm it is best to gauge the maximum difference by first calling the SVD algorithm with the errors introduced into the do values and with the correct and known H matrix; the resulting Xnn parameters represent the best possible solution and thus they are used to determine the maximum difference between the true and calculated 2
positions as well as the difference between the true and calculated volume. Thus a solution is deemed correct if the resulting differences in both 2
and volumes are within these limits. It is worth noting that the definition of a solution becomes blurred for large errors in the d-spacings. For example, atypically large errors of
2
= ±0.5° (2
) still contain solutions but with large uncertainties in the lattice parameters. At
2
= 0.5° (2
) and for triclinic lattices, the average percentage difference between the true volume and the volume returned by the SVD algorithm with the errors introduced is
2.8%; for
2
= 0.1° (2
) the percentage difference becomes 0.4%. Thus, even with very large errors in the d-spacings, a particular solution can be found with a volume that is relatively close to the true volume. However, large errors also result in many other solutions and not just a particular solution; this is demonstrated below.
In the following analysis monoclinic and orthorhombic lattices were generated with systematic absences by randomly choosing a space group from these crystal systems. As before, hkl values used by SVD-Index to solve the test input lattices corresponded to hkl values from the correct Bravais lattice, except for the monoclinic case, where hkl values used correspond to the correct monoclinic space-group grouping.
For uniform deviate random errors of
2
= ±0.005, ±0.01 and ±0.03° (2
) and with a zero error of 0.03° (2
), and with the d-spacing removal scheme of Table 4
, sets of test input d-spacings were generated for triclinic, monoclinic and orthorhombic lattices, with corresponding errors included, and were given to the SVD-Index algorithm of Table 2
to solve. A 100% success rate in finding the correct solution was observed for 1000 sets of d-spacings for each of the crystal systems for all cases of
2
. The average number of times Table 1
was called before the correct solution was found increased with increasing
2
; in the triclinic case, the average increased from 125 at
2
= ±0.01 to 211 at
2
= ±0.03. Increasing
2
to the very large value of ±0.5° (2
) for 300 triclinic test input lattices produced a success rate of 92% with the average number of times of calling Table 1
being 1070. The other 8% (24 test input lattices), if at all solvable, require a larger N1 value. Even though the success rate at
2
= ±0.5° is still high, the difficulty with such bad data becomes one of choosing which solution out of many is the correct solution. It is worth noting that careful peak fitting using the fundamental-parameters approach to X-ray line profile analysis (Cheary & Coelho, 1992
) on moderately good data typically results in d-spacing errors in the range ±0.0025 to ±0.005° (2
); misplaced peaks due to peak overlap, however, can lead to larger errors.
The average number of times of calling Table 1
for the case of
2
= ±0.005° was, for the triclinic case, 125, which is not much different from the no-zero-error and no-noise case (average 105 calls to Table 1
). This indicates that, in the absence of d-spacing errors, a zero error of the magnitude of 0.03° (2
) does not significantly increase the computational effort nor hinder SVD-Index in finding the correct solution. In the absence of a zero error and with d-spacing errors of
2
= ±0.03°, the average number of times of calling Table 1
before finding the correct solution becomes 255. Thus d-spacing errors at this level are the dominant factor when solving the test input lattices with a zero error of 0.03° (2
).
For a typical zero error and typical errors in d-spacings, the SVD-Index algorithm has shown that it is capable of finding a particular solution, namely the one matching the test input lattice with allowances made for d-spacing errors. Because of this the SVD-Index algorithm should in principle be capable of finding all solutions within the boundary of an upper limiting volume. This limiting volume is implicit in the constraint of step (iv) part (c) of Table 2
.
Fig. 5
shows M15 values obtained during the execution of the SVD-Index algorithm as a function of volume at the calculated M15 values for three randomly chosen triclinic lattices with volumes as indicated. The lattice of Fig. 5
(a) has random errors in the d-spacings of magnitude
2
= ±0.003° (2
) and, as can be seen, the solution is well defined at the input volume of 2000 Å3. Fig. 5
(b) contains random errors in the d-spacings of magnitude
2
= ±0.03° (2
) and, even though the input test lattice has the same volume as for Fig. 5
(b), it is seen that there are other solutions with better M15 values at volumes around 2200 Å3. These plots show the importance of obtaining precise d-spacings.
| Figure 5 SVD-Index M15 results versus volume for an arbitrarily chosen test input triclinic lattice for random d-spacing errors of (a) 2 = ±0.003° (2 ) and (b) 2 = ±0.03° (2 ). |
A more systematic investigation into the number of solutions possible versus d-spacing errors was performed on randomly chosen triclinic lattices with volumes ranging from 3000 to 4000 Å3. For
2
= ±0.03° (2
) the solution with the best M15 value was similar to the input test lattice
94% of the time; this is particularly high considering the limited number of input lines. A corresponding success rate for
2
= ±0.1° (2
) was
45%. Thus, the conclusion reached is similar to that reported by Visser (1969
) in that d-spacing errors need to be less than 0.03° (2
).
1000 test input lattices were generated for each of the tetragonal, trigonal/hexagonal and cubic crystal systems with space groups randomly selected from their respective crystal systems. Ten d-spacings were generated from these test input lattices and d-spacing errors of
2
= ±0.03° and a zero error of 0.03° were incorporated; the d-spacing removal scheme of Table 4
was applied. Corresponding Bravais lattices of minimum symmetry were then used by SVD-Index to solve for the sets of d-spacings, resulting in a 100% success rate. In the process, the average number of times that Table 1
was called before finding the correct test input lattice was 26.1, 8.3 and 1.3 for the tetragonal, trigonal/hexagonal and cubic crystal systems, respectively. The maximum number of calls to Table 1
was 447, 169 and 15, respectively. This analysis highlights the far simpler nature of these crystal systems.
Impurity lines were randomly added to test input triclinic, monoclinic and orthorhombic lattices; d-spacing were generated for each test input lattice with a random error of ±0.005° (2
) and a zero error of 0.01° (2
); the d-spacing removal scheme of Table 4
was employed. d-spacings of the impurity lines were randomly chosen between the smallest d-spacing and 1.5 times the largest. This allows for impurity lines that are at lower 2
angles than the lines of the test input lattice. Io of equation (4)
for the test input d-spacings were set to 1; Io for the impurity lines were set to 0.2, hence simulating impurity peaks at 20% intensity. Table 6
shows SVD-Index success rates in solving the test input lattices as a function of the number of impurity lines included, Nimpurity. High success rates are seen for three impurity lines for the three crystal systems. Also seen is the expected lower success rate for the triclinic system. These results demonstrate the ability of SVD-Index to deal with moderate amounts of impurity peaks.
| ||||||||||||||||||||||
SVD-Index successfully indexed the examples shown in Table 7
; data and lattice parameters for these examples are available as supplementary material.1 The correct solutions were all ranked as the best. Removing a number of highest d-spacings, NR of Table 7
, and rerunning SVD-Index also produced the correct solutions ranked as the best. In the running of SVD-Index, no limits were entered for the lattice-parameter lengths or cell volume.
+Distributed with DICVOL91. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example (7) contains six non-trivial impurity peaks; two of them situated at the third- and sixth-highest d-spacing; the highest d-spacing of the main phase also has an intensity near zero and is therefore not observed. In spite of these difficulties, SVD-Index was successful in indexing; this included the case in which the first four peaks were removed. It is worth noting that the existence of impurity phases and their corresponding peak positions are often known. However, for the sake of testing SVD-Index, all observed peaks have been included in the analysis.
Example (10) remained solvable if the highest d-spacing only was removed. Inspection reveals three impurity lines with non-trivial intensities, situated at the third-, fifth- and seventeenth-highest d-spacings.
Example (12) is the most difficult. On removal of the highest d-spacing, NR = 1, SVD-Index only found the correct solution after running the program three times. The ratio of the largest to the smallest lattice parameter, R, is high and this results in a dominant zone with the highest 30 calculated d-spacings being of type hk0; correspondingly the highest 14 extracted d-spacings are of type hk0. The first peak (010) is also not present in the diffraction pattern and the number of calculated peaks within the reciprocal sphere containing the first 25 observed lines is 51. On inspection of the calculated and observed diffraction patterns it is possible to discern a further three peaks but they are of small intensity and would not normally be included. The M25 versus volume plot of Fig. 6
(a) highlights the fact that the solution is not well defined. Visual inspection of the diffraction pattern shows well resolved peaks up to the 40th observed peak. With this number of peaks SVD-Index produces the results shown in Fig. 6
(b); here the correct solution is better resolved than in the M25 case.
| Figure 6 (a) SVD-Index M25 and (b) M40 results versus volume for example (13). |
It has been shown that the present SVD-Index indexing algorithm successfully indexes difficult real data examples, including two cases containing impurity lines. The algorithm has also successfully indexed thousands of simulated sets of d-spacings for all crystal systems and in situations where approximately 35% of the d-spacings were randomly removed. It has been demonstrated that the inclusion of d-spacing errors of up to ±0.03° (2
) and a zero error of 0.03° (2
) do not significantly affect performance. In the analysis it was identified that the computational effort of SVD-Index increases as a function of the ratio of the largest to the smallest lattice-parameter length. Subsequently, the present set of control parameters have been set such that correct indexing solutions are effectively found 100% of the time for ratios of the largest to the smallest lattice-parameter length of up to 11. It is significant that the maximum lattice-parameter lengths or cell volumes are dynamically determined. SVD-Index has shown that it is capable of finding a particular solution; however, in observed real data the particular solution is unknown and thus all solutions found by SVD-Index are made available.
The author would like to thank Bruker AXS GmbH, Östliche Rheinbrückenstrasse 50, D-76181 Karlsruhe, Federal Republic of Germany, for use of the software package TOPAS to carry out this work.
Boultif, A. & Louër, D. (1991). J. Appl. Cryst. 24, 987-993.
![[details]](../../../../../../j/graphics/details.gif)
Cheary, R. W. & Coelho, A. A. (1992). J. Appl. Cryst. 25, 109-121.
![[details]](../../../../../../j/graphics/details.gif)
Dinnebier, R. E., Bernatowicz, P., Helluy, X., Sebald, A., Wunschel, M., Fitch, A. & van Smaalen, S. (2002). Acta Cryst. B58, 52-61.
![[details]](../../../../../../b/graphics/details.gif)
Ito, T. (1949). Nature (London), 164, 755-756.
![[ChemPort]](../../../../../../logos/chemportborder.gif)
Langevelde, A. van, Peschar, R. & Schenk, H. (2001). Acta Cryst. B57, 372-377.
![[details]](../../../../../../b/graphics/details.gif)
Louër, D. & Louër, M. (1972). J. Appl. Cryst. 5, 271-275.
![[details]](../../../../../../j/graphics/details.gif)
Morris, M. C., McMurdie, H. F., Evans, E. H., Paretzkin, B., deGroot, J. H., Hubbard, C. R. & Carmel, S. J. (1979). Natl Bur. Stand. (US) Monogr. No. 25, §16, p. 92.
Morris, M. C., McMurdie, H. F., Evans, E. H., Paretzkin, B., Hubbard, C. R. & Carmel, S. J. (1980). Natl Bur. Stand. (US) Monogr. No. 25, §17.
Nash, J. C. (1990). Compact Numerical Methods for Computers. Bristol: Adam Hilger.
Press, W. H., Teukolsky, S. A., Vetterling, W. T., Flannery, B. P. & Metcalf, M. (1995). Numerical Recipes in Fortran. The Art of Scientific Computing. Cambridge University Press.
Runge, C. (1917). Z. Physik. 18, 509.
Swanson, H. E., Morris, M. C., Stinchfield, R. P. & Evans, E. H. (1963). Natl Bur. Stand. (US) Monogr. No. 25, §2, p. 9.
Toraya, H. & Yamazaki, S. (2002). Acta Cryst. B58, 613-621.
![[details]](../../../../../../b/graphics/details.gif)
Visser, J. W. (1969). J. Appl. Cryst. 2, 89-95.
![[details]](../../../../../../j/graphics/details.gif)
Von Dreele, R. B., Stephens, P. W., Smith, G. D. & Blessing, R. H. (2000). Acta Cryst. D56, 1549-1553.
![[details]](../../../../../../d/graphics/details.gif)
Werner, P. E. (1964). Z. Kristallogr. 120, 375-387. ![[ChemPort]](../../../../../../logos/chemportborder.gif)
Werner, P. E. (1976). J. Appl. Cryst. 9, 216-219.
![[details]](../../../../../../j/graphics/details.gif)
Werner, P. E., Eriksson, L. & Westdahl, M. (1985). J. Appl. Cryst. 18, 367-370.
![[details]](../../../../../../j/graphics/details.gif)
Wolff, P. M. de (1957). Acta Cryst. 10, 590-595.
![[details]](../../../../../../q/graphics/details.gif)
Wolff, P. M. de (1968). J. Appl. Cryst. 1, 108-113.
![[details]](../../../../../../j/graphics/details.gif)