User Tools

Site Tools


processing:complex-multi-phase

This is an old revision of the document!


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.

Trick 1: Plot intensity vs. 2theta from peak histogram in ImageD11

 from ImageD11 import columnfile 
 c = columnfile.columnfile('peaks_t100.flt') % if 'expection: problem interpreting your colfile' check the extention of your file. Should be .flt 
 c.titles % to see what variables you have in your columnfile
 c.parameters.loadparameters("CeO2_parameters.prm")
 c.titles
 c.updateGeometry()
  import pylab
  pylab.figure()
  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 a python console

 python
 import matplotlib
 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

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 assign the peaks to certain phases. Especially your phase of interest has only a few peaks of low intensity.

The idea behind the following procedure is this: Remove all peaks that belong to KCl and Maj so the only peaks left must be the St peaks.

Let's start. First, you have to perform the "normal" data analysis up to the point where you search for peaks. We call this PeakSearch result the “Start-peaks”.

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 phases and multiple peaks in the paragraph above. But just do the best you can. The information you need for the following steps is the cell parameters of every phase (KCl, Maj and St).

Now, calculate the G-vectors with ImageD11 for every phase and save them. Save also the parameters of each phase.

Before dealing with GrainSpotter let's get rid of some peaks. Since KCl is the most abundant phase (e.g. the one with the most intense peaks), we remove the KCl peaks first. Run ringselect and ringselect_reverse to separate the KCl peaks from the other peaks. Check the peaks carefully in ImageD11 to avoid removing more peaks than necessary and adjust your theta tolerance respectively. We call the file which contains only the KCl peaks “KCl-only” and the other file “KCl-removed”.

Now, take the “KCl-removed” file (without the KCl peaks) and load it to ImageD11. Again, you can calculate the G-vectors (this time only for Maj and St). Save them, as well as the respective parameters.

You can also load the “KCl-only” peaks, calculate their G-vectors (only for KCl) and save the respective parameters.

Run ringselect and ringselect_reverse again to separate the “KCl-removed” peaks into Maj and St peaks. We call the created file “KCl-removed_Maj-only” and “KCl-removed_Maj-removed”. Load them again in ImageD11, save the parameters and G-vectors.

At the end, you should have a bunch of sets of parameter files (.prm) and G-vector files (.gve):

  • two sets for KCl (one from “Start-peaks” and one from “KCl-only”)
  • three sets for Maj (one from “Start-peaks”, one from “KCl-removed” and one from “KCl-removed_Maj-only”)
  • three sets for St ((one from “Start-peaks”, one from “KCl-removed” and one from “KCl-removed_Maj-removed”)

Now, create .ini files for all sets (eight in this example) and run GrainSpotter (or a GrainSpotter loop). Depending on the uncertainties, Euler step etc. in the .ini files this may take a while.

After GrainSpotter did its job 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.1564662859.txt.gz · Last modified: 2019/08/01 12:34 by matthias