User Tools

Site Tools


processing:complex-multi-phase

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
processing:complex-multi-phase [2019/06/07 08:02]
matthias
processing:complex-multi-phase [2023/12/10 11:11] (current)
smerkel
Line 1: Line 1:
 +
 ====== ​ In the works: indexing a complex dataset with many phases ====== ====== ​ In the works: indexing a complex dataset with many phases ======
  
-If your dataset ​is complex, here is a list of tricks ​to get it indexed. This page is being improved over time.+When you have sample with multiple phases, ​your list of extracted experimental g-gvectors (the bottom section of your [[fileformat:​gveexample|GVE file]], see example at the link) includes vectors that could originate from all phases in your sample. 
 + 
 +Here is how we proceed: 
 +  * First work on our list of g-vectors to identify our phases and peaks, 
 +  * Generate custom GVE files for each phase we will work on, 
 +  * Run series of indexings, one phase after another, and multiple times. 
 + 
 +===== Identify phases and peaks ===== 
 + 
 + 
 +{{ :​processing:​indexing:​gay2023_bridgmanite_2dplot.png?​direct&​200|}} 
 + 
 +One of the most critical tasks of this work is to know what you are looking for. In our case, we typically have 
 +  * 2 or more sample phases, often with complex ​structures and many peaks, 
 +  * a pressure medium, often a simple cubic phase, with one peak. 
 + 
 +To do so, it is much better to work on an [[processing:​phase_identification| 2θ-histogram of the experimental g-vectors]]. 
 + 
 +The figure on the right shows an example from Gay //et al//, published in //Earth and Planetary Science Letters// in 2023 [doi: [[https://​doi.org/​10.1016/​j.epsl.2023.118015| 10.1016/​j.epsl.2023.118015]]]. The sample holds 4 sample phases and a pressure medium (KCl). Top image is an ω-stack for all experimental g-vectors, potted as a function of ds and η. The bottom image is what you get if you try to index an average diffraction image directly. The middle panel is what is extracted from a 2θ-histogram of the experimental g-vectors. 
 + 
 +The histogram is less affected by very large grains (the pressure medium in our case). In addition, experimental peak broadening, due to the instrument or the sample properties such as grain size or microstrains,​ have been removed since we only consider the center of mass of eack peak. 
 + 
 +You can then use your favorite powder diffraction software, such as [[https://​github.com/​seto77/​PDIndexer|PDIndexer]] or [[https://​luttero.github.io/​maud/​ | MAUD]] to identify sample phases and their unit cell parameters. Just keep in mind that peak intensities in the histograms are not true intensities,​ but a number of experimental g-vectors. 
 + 
 +===== Custom GVE files for each phase ===== 
 + 
 +We will need a custom GVE file for each phase we want to index. In those files (see [[fileformat:​gveexample|detailed file format ​here]]): 
 +  * the first line needs to be altered with the unit cell parameters and lattice centering (one of P,​A,​B,​C,​I,​F),​ 
 +  * the section on computed theoretical g-vectors for the unit cell needs to be updated, 
 +  * The actual scattering vectors (g-vectors) extracted from the experimental data below is identical for all phases, since we do not know how they are assigned. 
 + 
 +Use tool like [[processing:​list-peaks-from-cif|timelessPeaksFromCIF]],​ for each of the phases you wish to consider, and create a custom GVE file with the proper unit cell parameters, lattice centering, and computed theoretical g-vectors. 
 + 
 +In our case, we do not index peaks from the pressure medium, but simply ignore the corresponding 2θ in the indexing. This can be easily done by specifying custom 2θ ranges in the GrainSpotter input file.
  
-===== Trick 1: Plot intensity vs. 2theta from peak histogram in ImageD11 ​=====+===== Indexing loop =====
  
-   from ImageD11 import columnfile  +Let's say your sample consist of 3 phases, phaseA, phaseB, phaseC, with the 3 corresponding experimental GVE files, phaseA.gve, phaseB.gve, phaseC.gveThe indexing process will go as follows 
-   c = columnfile.columnfile('​peaks_t100.flt'​) % if 'expection: problem interpreting ​your colfile'​ check the extention of your fileShould be .flt  +  * index grains for phaseA, with a strict set of tolerances, 
-   c.titles % to see what variables you have in your columnfile +  remove the assigned experimental g-vectors ​from all 3 phaseA.gve, phaseB.gve, and phaseC.gve, 
-   c.parameters.loadparameters("​CeO2_parameters.prm"​) +  * index grains for phaseBwith a strict set of tolerances
-   c.titles +  * remove the assigned experimental g-vectors from all 3 phaseA.gve, phaseB.gveand phaseC.gve
-   c.updateGeometry() +  * index grains for phaseCwith a strict set of tolerances, 
-    import pylab +  * remove the assigned experimental g-vectors from all 3 phaseA.gvephaseB.gveand phaseC.gve, 
-    pylab.figure() +  * and repeat ​the process as many times as necessary, with the same tolerances, and then increasing tolerances to catch most sample grains, merging all the indexed grains into one master file.
-    pylab.show() +
-    import matplotlib +
-    matplotlib.use("​GTK3Agg"​) +
-   from pylab import ​* +
-   ​show() +
-   from ImageD11.columnfile import * +
-    c = columnfile("​peaks_t100.flt"​) +
-    c.parameters.loadparameters("​CeO2_parameters.prm"​) +
-    ​c.updateGeometry() +
-    tth=arange(0,15,.01) +
-   plot(np.histogram(c.tth,bins=tth)[0],"​-"​) +
-    ​show() +
-    plot(tth[1:​],np.histogram(c.tth,bins=tth)[0],"​-"​) ​ % give a better peaks separation +
-    show() +
-   ​plot(tth[1:​],np.histogram(c.tth,bins=tth,​weights=c.sum_intensity)[0],"​-"​) ​ % take in account ​the intensity of the peaks+
  
-Open python console +You can either run this by hand, your use fancy loop with a bash script. We actually spent some time working on such a loop, and you can find an [[examples:​gs_loop_multiphase|example of a multiphase indexing loop here]].
-   ​python+
  
-   ​import matplotlib +===== Preparing figures =====
-   ​matplotlib.use("​GTK3Agg"​) +
-   from pylab import * +
-   from ImageD11.columnfile import * +
-   ​c ​columnfile('​peaks_t100.flt'​) +
-   ​c.parameters.loadparameters("​CeO2_parameters.prm"​) +
-   ​c.updateGeometry() +
-   ​tth ​arange(0,​15,​.01) +
-   ​plot(tth[1:​],​np.histogram(c.tth,​bins=tth)[0],"​-"​) +
-   ​show()+
  
-===== Trick 2: Work with large grain first =====+This will be written later. We are still waiting for some publications to be accepted.
  
processing/complex-multi-phase.1559894560.txt.gz · Last modified: 2019/06/07 08:02 by matthias