User Tools

Site Tools


examples:gs_loop_olivine

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
examples:gs_loop_olivine [2019/12/05 10:35]
smerkel
examples:gs_loop_olivine [2023/12/09 22:21] (current)
smerkel ↷ Page moved from restricted:gs_loop_olivine to examples:gs_loop_olivine
Line 60: Line 60:
 ===== Getting some idea on indexing capabilities ===== ===== Getting some idea on indexing capabilities =====
  
 +There is now a dedicated TIMEleSS tool to [[evaluation:​evaluate_indexing_statistics|evaluate your indexing performance]].
  
 +===== The loop =====
  
 +You wanted it?! Here is the source code for the loop above
 +
 +<code bash gsLoop.sh>​
 +#!/bin/bash
 +
 +# Starting GVE file
 +startGVE=../​LTC_05_01_s26_t50_ol-seb-edit.gve
 +# Starting GVE file
 +crystalSymmetryCode=3
 +# Number of indexings
 +nLoops=3
 +
 +# Update parameters above as well as in 
 +#    - create_GS_init
 +#    - fine details in indexing_loop
 +
 +# Location of executables
 +GrainSpotter=/​usr/​local/​bin/​GrainSpotter.0.90
 +clearGVE=/​usr/​bin/​timelessClearGVEGrains
 +mergeGrains=/​usr/​bin/​timelessGrainSpotterMerge
 +extractEuler=timelessExtractEulerAngles
 +
 +# Global parameter. Used to pass list of files between functions
 +grainlist=""​
 +
 +#​-----------------------------------------------------------------------------------------------
 +#
 +# Call to create GrainSpotter input
 +# 3 parameters
 +# - first: name of GrainSpotter output file
 +# - second: name gve file
 +# - third: name of grain output file
 +# - forth : min_measurments
 +# - fifth : min_completeness
 +# - sixth : sigma_tth
 +# - seventh : sigma_eta
 +# - eighth : sigma_omega
 +#
 +#​-----------------------------------------------------------------------------------------------
 +create_GS_init () {
 +cat > $1 <<- EOM
 +spacegroup 62                ! spacegroup [space group nr]
 +! dsrange 0 0.34                         ! dsrange [min max], d-spacing range, multiple ranges can be specified
 +tthrange 2 10.2                          ! tthrange [min max], multiple ranges can be specified
 +! tthrange 2 8.8                          ! tthrange [min max], multiple ranges can be specified
 +! tthrange 9 10.2                          ! tthrange [min max], multiple ranges can be specified
 +tthrange 10.5 14.4                          ! tthrange [min max], multiple ranges can be specified
 +! tthrange 14.6 17                          ! tthrange [min max], multiple ranges can be specifie
 +etarange 0 360                ! etarange [min max], multiple ranges can be specified
 +domega 0.5                        ! domega [stepsize] in omega, degrees ​
 +omegarange -21 13 ! omegarange [min max] degrees, multiple ranges can be specified
 +filespecs $2 $3 ! filespecs [gvecsfile grainsfile] ​
 +cuts $4 $5 0.5                ! cuts [min_measuments min_completeness min_uniqueness]
 +eulerstep 5                ! eulerstep [stepsize] : angle step size in Euler space
 +uncertainties $6 $7 $8    ! 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
 +EOM
 +}
 +
 +
 +#​-----------------------------------------------------------------------------------------------
 +#
 +# Actual indexing loop
 +# Runs tens of GrainSpotter iterations with decreasing tolerances
 +# Runs in the current folder
 +#
 +#​-----------------------------------------------------------------------------------------------
 +
 +indexing_loop () {
 +
 +echo "#"​
 +echo "#"​
 +echo "# Running first GS iteration. Starting from $startGVE, GS parameters in index-0.ini,​ grains saved in grains0.log"​
 +echo "#"​
 +echo "#"​
 +create_GS_init index-0.ini $startGVE grains-0.log 20 0.5 0.06 1 1
 +$GrainSpotter index-0.ini
 +echo "#"​
 +echo "#"​
 +echo "# Done with iteration 0. New list of GVE will be peaks_after_step-0.gve"​
 +echo "#"​
 +echo "#"​
 +$clearGVE grains-0.log $startGVE peaks_after_step-0.gve ​
 +grainlist="​grains-0.log"​
 +
 +for i in {1..5}
 +do
 + j="​$((i - 1))"
 + echo "#"​
 + echo "#"​
 + echo "# Running GS iteration $i. Starting from peaks_after_step-$j.gve,​ GS parameters in index$i.ini,​ grains saved in grains-$i.log"​
 + echo "#"​
 + echo "#"​
 + # Use from previous step and create grains$i.log
 + create_GS_init index-$i.ini peaks_after_step-$j.gve grains-$i.log 20 0.5 0.06 1 1
 + $GrainSpotter index-$i.ini ​
 + echo "#"​
 + echo "#"​
 + echo "# Done with iteration $i. New list of GVE will be peaks_after_step-$i.gve"​
 + echo "#"​
 + echo "#"​
 + $clearGVE grains-$i.log peaks_after_step-$j.gve peaks_after_step-$i.gve
 + grainlist="​$grainlist grains-$i.log"​
 +done
 +
 +for i in {6..10}
 +do
 + j="​$((i - 1))"
 + echo "#"​
 + echo "#"​
 + echo "# Running GS iteration $i. Starting from peaks_after_step-$j.gve,​ GS parameters in index$i.ini,​ grains saved in grain-$i.log"​
 + echo "#"​
 + echo "#"​
 + create_GS_init index-$i.ini peaks_after_step-$j.gve grains-$i.log 20 0.5 0.06 2 2
 + $GrainSpotter index-$i.ini ​
 + echo "#"​
 + echo "#"​
 + echo "# Done with iteration $i. New list of GVE will be peaks_after_step-$i.gve"​
 + echo "#"​
 + echo "#"​
 + # Remove peaks that have been indexed
 + $clearGVE grains-$i.log peaks_after_step-$j.gve peaks_after_step-$i.gve
 + grainlist="​$grainlist grains-$i.log"​
 +done
 +
 +for i in {11..15}
 +do
 + j="​$((i - 1))"
 + echo "#"​
 + echo "#"​
 + echo "# Running GS iteration $i. Starting from peaks_after_step-$j.gve,​ GS parameters in index$i.ini,​ grains saved in grains-$i.log"​
 + echo "#"​
 + echo "#"​
 + create_GS_init index-$i.ini peaks_after_step-$j.gve grains-$i.log 20 0.3 0.06 2 2
 + $GrainSpotter index-$i.ini ​
 + echo "#"​
 + echo "#"​
 + echo "# Done with iteration $i. New list of GVE will be peaks_after_step-$i.gve"​
 + echo "#"​
 + echo "#"​
 + # Remove peaks that have been indexed
 + $clearGVE grains-$i.log peaks_after_step-$j.gve peaks_after_step-$i.gve
 + grainlist="​$grainlist grains-$i.log"​
 +done
 +
 +
 +for i in {16..20}
 +do
 + j="​$((i - 1))"
 + echo "#"​
 + echo "#"​
 + echo "# Running GS iteration $i. Starting from peaks_after_step-$j.gve,​ GS parameters in index$i.ini,​ grains saved in grains-$i.log"​
 + echo "#"​
 + echo "#"​
 + # Use from previous step and create grains$i.log
 + create_GS_init index-$i.ini peaks_after_step-$j.gve grains-$i.log 20 0.3 0.06 3 3
 + $GrainSpotter index-$i.ini ​
 + # Remove peaks that have been indexed
 + echo "#"​
 + echo "#"​
 + echo "# Done with iteration $i. New list of GVE will be peaks_after_step-$i.gve"​
 + echo "#"​
 + echo "#"​
 + $clearGVE grains-$i.log peaks_after_step-$j.gve peaks_after_step-$i.gve
 + grainlist="​$grainlist grains-$i.log"​
 +done
 +
 +for i in {21..25}
 +do
 + j="​$((i - 1))"
 + echo "#"​
 + echo "#"​
 + echo "# Running GS iteration $i. Starting from peaks_after_step-$j.gve,​ GS parameters in index$i.ini,​ grains saved in grains-$i.log"​
 + echo "#"​
 + echo "#"​
 + # Use from previous step and create grains$i.log
 + create_GS_init index-$i.ini peaks_after_step-$j.gve grains-$i.log 20 0.3 0.1 3 3
 + $GrainSpotter index-$i.ini ​
 + # Remove peaks that have been indexed
 + echo "#"​
 + echo "#"​
 + echo "# Done with iteration $i. New list of GVE will be peaks_after_step-$i.gve"​
 + echo "#"​
 + echo "#"​
 + $clearGVE grains-$i.log peaks_after_step-$j.gve peaks_after_step-$i.gve
 + grainlist="​$grainlist grains-$i.log"​
 +done
 +
 +}
 +
 +#​-----------------------------------------------------------------------------------------------
 +#
 +# Indexing loop, runs tens of GrainSpotter iterations with decreasing tolerances
 +# Runs in the current folder
 +#
 +#​-----------------------------------------------------------------------------------------------
 +
 +for (( loop=1; loop<​=$nLoops;​ loop++ ))
 +do
 + echo "#​----------------------------------------------------------------------------------------"​
 + echo "#"​
 + echo "# Full indexing loop number $loop"
 + echo "# Data saved in folder: Indexing-$loop"​
 + echo "#"​
 + echo "#​----------------------------------------------------------------------------------------"​
 + echo ""​
 + folder="​Indexing-$loop"​
 + \rm -rf $folder
 + mkdir $folder
 +
 + grainlist=""​
 + indexing_loop
 + $mergeGrains -c $crystalSymmetryCode -o merge $grainlist
 + $extractEuler -o merge-grains-euler.txt merge-grains.log
 + mv grains-* $folder
 + mv peaks_after_step* $folder
 + mv merge-* ​ $folder
 + mv index-*.ini ​ $folder
 +
 + echo ""​
 + echo ""​
 + echo "#​----------------------------------------------------------------------------------------"​
 + echo "#"​
 + echo "# Done with indexing loop number $loop"
 + echo "# Data saved in folder: Indexing-$loop"​
 + echo "#"​
 + echo "#​----------------------------------------------------------------------------------------"​
 + echo ""​
 + echo ""​
 +done
 +
 +exit
 +</​code>​
examples/gs_loop_olivine.1575542132.txt.gz · Last modified: 2019/12/05 10:35 by smerkel