At this point, you should have a computed all experimental G-vectors. You are now ready for indexing grains. This page shows you the indexing procedure with GrainSpotter. For an alternative way of indexing, check out Indexing with ImageD11.
GrainSpotter first generates a number of random grain orientations and, for each, calculates the corresponding theoretical G-vectors. For each grain orientation, GrainSpotter looks for a possible match between the theoretical G-vectors and those found in the experiment. If the convergence criteria are met (see details below), the grain is assigned.
For the indexation, uncertainties in 2θ, η and ω will be critical for assigning the experimental G-vectors to a grain. You can use Fabian to estimate uncertainties on ω and η and ImageD11 to estimate uncertainties in 2θ.
In Fabian, load your peaks from the peaksearch and overlap them with the diffraction data (CrystTools
> Peaks
> read
). In ImageD11, display your peaks as 2θ/η plot. You can then evaluate the maximum δ2θ, δη, and δω ranges you can use to avoid mixing up peaks.
ImageD11 is not a good tool for evaluating δη and δω as all peaks extracted for all ω are stacked on the same plot. It is appropriate, however, to evaluate δ2θ.
You are now ready to start indexing your g-vectors with GrainSpotter.
GrainSpotter works with an input file, typically ending with a .ini extension in which you should define
Changing the 2θ range allow you to exclude some domains where the peaks are not well defined.
You should play on the cut and uncertainties to optimize the parameters that will lead to the best results.
When your input file is ready, type either
GrainSpotter.0.90 index.ini
or
GrainSpotter index.ini
or
grainspotter index.ini
Below is a sample GrainSpotter input file that we actually used:
!
are commented out and will not be used,peaks-I-Want-To-Index.gve
,grains-I-found.log
spacegroup 62 ! spacegroup [space group nr] ! dsrange 0 0.34 ! dsrange [min max], d-spacing range, multiple ranges can be specified tthrange 3.0 7.15 ! tthrange [min max], multiple ranges can be specified tthrange 7.35 10.2 ! tthrange [min max], multiple ranges can be specified tthrange 10.3 12.5 ! tthrange [min max], multiple ranges can be specified tthrange 12.65 14.5 ! tthrange [min max], multiple ranges can be specified etarange 0 360 ! etarange [min max], multiple ranges can be specified domega 0.5 ! domega [stepsize] in omega, degrees omegarange -28 28 ! omegarange [min max] degrees, multiple ranges can be specified filespecs peaks-I-Want-To-Index.gve grains-I-found.log ! filespecs [gvecsfile grainsfile] cuts 15 0.3 0.5 ! cuts [min_measuments min_completeness min_uniqueness] eulerstep 5 ! eulerstep [stepsize] : angle step size in Euler space uncertainties 0.02 1 2 ! uncertainties [sigma_tth sigma_eta sigma_omega] in degrees nsigmas 2 ! nsigmas [Nsig] : maximal deviation in sigmas ! minfracg 1 ! stop search when minfracg (0..1) of the gvectors have been assigned to grains ! Nhkls_in_indexing 15 ! Nhkls_in_indexing [Nfamilies] : use first Nfamilies in indexing random 100000 ! use randomly chosen orientation seeds #trials ! positionfit ! fit the position of the grain ! genhkl ! generate list of hkl's based on space group and cell parameters in gve file
It can be efficients to run multiple loops of grainspotter indexings. The underlying concept is as follow
There are several TIMEleSS tools to help you with this process
An example of a GrainSpotter loop is provided in a dedicated page.