====== Evaluate your indexing performance ====== ===== Issue with performance evaluation ===== GrainSpotter provides information on indexing statistics in its log file. Things can become tricky, however, if you ran series of GrainSpotter indexings as described in the [[processing:advanced_indexing_with_grainspotter|Advanced GrainSpotter indexing]] section. If you merged the results of your indexings in a single log file, the number of experimental g-vectors assigned to your grains is the number of g-vectors listed in the log file. The number of g-vectors that could have been assigned depends on * the number of g-vectors measured in the experiment, * the η, ω, and 2θ ranges defined in the GrainSpotter init file, * the 2θ, η, and ω tolerances as well as nσ in the GrainSpotter init file. GrainSpotter does write this number out to the screen, but it depends on the init file. As your indexing loop starts, you have strict tolerances and ranges, hence, this number is lower than with looser tolerances. Later, once you use looser tolerances in GrainSpotter, already assigned g-vectors should have been removed from the original list. It is hence difficult to evaluate indexing performances. ===== Solution ===== The script ''timelessGSIndexingStatistics'', part of the [[software:timelesstools|TIMEleSS tools]] is meant to help. You have to provide * The original g-vectors file, * The GrainSpotter init file with the loosest tolerances (typically, the last you used), * The merged grain file obtained with [[processing:grainspotter-merge|timelessGrainSpotterMerge]], for instance, * The wavelength. It will read the g-vectors file, remove g-vectors * that do not fall within the defined η, ω, and 2θ ranges, * that can not be from your sample, based on the list of theoretical g-vectors in the gve file as well as the 2θ tolerance and nσ in the GrainSpotter init file, and calculate indexing statistics. An example of output is shown below timelessGSIndexingStatistics -i index-80.ini -l merge-grains.log -g experimental.gve -w 0.3738 Parsed merge-grains.log, found 2960 grains Parsed list of peaks from gve file experimental.gve, found 231612 peaks Parsed grain spotter input file from index-80.ini GrainSpotter results 2960 grains indexed 92842 peaks indexed 31.4 peaks per grain in average Peaks 231612 g-vectors in GVE file 134006 g-vectors within eta, omega, and 2theta ranges 121293 g-vectors assigned to sample within these ranges Indexing performance Out of 121293 possible g-vectors, 92842 have been assigned to 2960 grains 28451 remaining g-vectors 76.5 percents of g-vectors indexed ===== Usage ===== Here is the full help for ''timelessGSIndexingStatistics'' timelessGSIndexingStatistics -h Using AVX codes usage: timelessGSIndexingStatistics -i gsinput -l logfilestem.log -g gve.gve -w wavelength Reads a GrainSpotter input file, indexing log file, experimental g-vectors from a GVE file, and pulls out indexing statistics. This is part of the TIMEleSS project http://timeless.texture.rocks optional arguments: -h, --help show this help message and exit -i INPUTFILE, --inputfile INPUTFILE Input file name for GrainSpotter. Use the file with the looser conditions if you ran multiple steps of GrainSpotter indexings. (required) -l LOGFILE, --logfile LOGFILE File name of the indexing log file (required) -g GVE, --gve GVE File name of the experimental g-vector file (required) -w WAVELENGTH, --wavelength WAVELENGTH wavelength, in anstroms (required)