processing:complex-multi-phase
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| processing:complex-multi-phase [2019/08/01 11:59] – [Trick 2: Work with large grain first] matthias | processing:complex-multi-phase [2023/12/10 12:11] (current) – smerkel | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | |||
| ====== | ====== | ||
| - | 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: |
| - | ===== Trick 1: Plot intensity vs. 2theta from peak histogram in ImageD11 ===== | + | 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. | ||
| - | from ImageD11 import columnfile | + | ===== Identify phases and peaks ===== |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | import pylab | + | |
| - | pylab.figure() | + | |
| - | pylab.show() | + | |
| - | import matplotlib | + | |
| - | matplotlib.use(" | + | |
| - | from pylab import * | + | |
| - | | + | |
| - | from ImageD11.columnfile import * | + | |
| - | c = columnfile(" | + | |
| - | c.parameters.loadparameters(" | + | |
| - | c.updateGeometry() | + | |
| - | tth=arange(0, | + | |
| - | | + | |
| - | show() | + | |
| - | plot(tth[1: | + | |
| - | show() | + | |
| - | | + | |
| - | Open a python console | ||
| - | | ||
| - | | + | {{ :processing: |
| - | | + | |
| - | from pylab import * | + | |
| - | from ImageD11.columnfile import * | + | |
| - | c = columnfile(' | + | |
| - | | + | |
| - | | + | |
| - | tth = arange(0, | + | |
| - | | + | |
| - | | + | |
| - | ===== Trick 2: Work with large grain first ===== | + | 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. | ||
| - | Example: You have a phase assemblage consisting of a pressure medium (KCl), majoritic garnet (Maj) and stishovite (St). The phase you are mainly interested in is St. But St is also the least abundant phase. In your 2D diffraction pattern you have difficulties | + | To do so, it is much better |
| - | The idea behind | + | The figure on the right shows an example from Gay //et al//, published in //Earth and Planetary Science Letters// in 2023 [doi: [[https:// |
| - | Let's start. First, you have to [[processing: | + | 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, |
| - | Now comes the trickiest part: You have to do a good (!) Rietveld refinement. This is not easy since we already mentioned the issues of low intensity | + | You can then use your favorite powder diffraction software, such as [[https:// |
| - | Now, calculate the G-vectors with ImageD11 | + | ===== Custom GVE files for each phase ===== |
| - | After that, you can create .ini files for every phase and run GrainSpotter | + | We will need a custom GVE file for each phase we want to index. In those files (see [[fileformat: |
| + | * the first line needs to be altered with the unit cell parameters | ||
| + | * the section on computed theoretical g-vectors | ||
| + | * The actual scattering vectors (g-vectors) extracted from the experimental data below is identical | ||
| - | Now it's time to get rid of some peaks. Since KCl is the most abundant phase (e.g. the one with the most intense peaks), we remove | + | Use a tool like [[processing: |
| - | Now, take the " | + | In our case, we do not index peaks from the pressure medium, but simply ignore |
| - | You can also load the " | + | ===== Indexing loop ===== |
| - | Now, create .ini files for Maj and St again and run GrainSpotter (or a GrainSpotter loop) again. The amount | + | Let's say your sample consist of 3 phases, phaseA, phaseB, phaseC, with the 3 corresponding experimental GVE files, phaseA.gve, phaseB.gve, phaseC.gve. The indexing process will go as follows |
| + | * index grains | ||
| + | * remove the assigned experimental g-vectors from all 3 phaseA.gve, phaseB.gve, | ||
| + | * index grains for phaseB, with a strict set of tolerances, | ||
| + | * remove the assigned experimental g-vectors from all 3 phaseA.gve, phaseB.gve, and phaseC.gve, | ||
| + | * index grains for phaseC, with a strict set of tolerances, | ||
| + | * remove the assigned experimental g-vectors from all 3 phaseA.gve, phaseB.gve, and phaseC.gve, | ||
| + | * 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. | ||
| - | Run ringselect and ringselect_reverse again to separate Maj and St peaks. We call the created file " | + | You can either run this by hand, your use a fancy loop with a bash script. We actually spent some time working on such a loop, and you can find an [[examples: |
| - | For a last time, create .ini files and run GrainSpotter for the " | + | ===== Preparing figures ===== |
| - | At the end, you should have | + | This will be written later. We are still waiting |
| - | * two log-files | + | |
| - | * three log-files for Maj (one from " | + | |
| - | * three log-files for St ((one from " | + | |
| - | You can now run timelessGrainComparison to see which of those results is meaningful and if the whole procedure was worth it. | ||
processing/complex-multi-phase.1564653580.txt.gz · Last modified: by matthias
