micro-diffraction Analysis (1.0)

3D μ-diffraction Analysis Process (1.0)

by Jon Tischler (1 May 2020)

Types of Data Collection
Types of Data Analysis
C Programs
Supervising python Program

Types of Data Collection

There are five basic types of data collection
1 A single measurement at one location
Put the focused x-ray spot (either white or mono) on a sample and measure diffraction and/or fluorescence. This is usually the first step in an experiment, it gives the user an idea of what is happening. But sometimes this is all that is needed.

2 A raster scan of the spot over an area of the sample, again measuring diffraction and/or fluorescence.
This produces 2D data, you have images over a 2D grid on the surface of the sample. But no depth resolution. This is useful for thin samples where there is depth to resolve, and some thick samples too.

3 Wire Scan.
A wire scan where the x-ray spot (either white or mono) is fixed, and the wire is scanned across the face of the sample. This produces a set of diffraction images at different wire positions that can be reconstructed to a new set of diffraction images corresponding to different depths. These new images are generally indexed to give crystal orientation.

4 Raster scan of type 3
A raster scan of type 3 producing either an internal 2D sheet of data or an actual 3D volume. Again these images are generally indexed to give crystal orientation.

5 Energy Scan
Any of the previous 4 types of data collection can be combined with an Energy scan to add full k-space information.
Note, when doing an energy scan, usually only one small region of the detector is used, not the whole detector.
When using an Energy scan, you do not index the results with the indexing program.


Types of Data Analysis

There are three basic types of data analysis: index white beam Laue pattern, reconstruct a wire scan, and scan energy. They can be chained in multiple ways.
(A) peaksearch and index a white beam image
Take an image (often one depth from a wire scan), find all the peaks and index the peaks to get the crystal orientation. This is done with data collection types 1-4 above. This is not done with Energy scans.
This produces the orientation of an indexed Laue pattern.

(B) Depth reconstruction
Take the set of images measured during one wire scan, and convert to a new set of images, where each new image corresponds to the scattering you would get from a single depth. For this, the user needs to specify the desired depth range and the depth interval. Always used with wire scans.
Used where you need depth resolution.

(C) Create q-space histogram
Take Energy scanned images, and produce either a 1D or 3D histogram of intensity in q-space. This is done with data collection types 1-3. This is rarely done with types 4 or 5 since the acquisition time can become excessive. And per the note on 5, one only uses a small ROI of the detector, otherwise the range of the energy scan becomes excessive. This cannot be done with white beam.
The actual histogramming from images into q-space is done on a separate work station, not the cluster.
Although in the future, this might be done on the cluster


C Programs

C programs used to process image Data on the cluster.
peaksearch
Takes an HDF image and produces an ASCII file containing the peak position (in pixels) and information about each peak fit. The output file is usually named something like "generic_XY.txt", and contains the following information about each fitted peak. pixel position x & y, amplitude of fitted peak, integral of fitted peak, HWHM X of peak, , HWHM Y of peak, tilt, chisq The tilt is needed since the 2D fitted peak can be elliptical with the axis of the ellipse rotated arbitrarily.

pixels2qs
Take 3 files as input: the generic_XY.txt from peaksearch, geometry file, xtal file. The geometry file describes the detector size, position, and orientation. The xtal file describes the expected crystal structure and lattice constants. This output of this program is a file often named "generic_Peaks.txt". It contains generic data about the peak searching, name of the geometry and xtal files, other meta data, and most importantly the normalized q vectors for each of the fitted peaks {Qx,Qy,Qz}, and Intensity. The generic_Peaks.txt file is suitable for input to indexing program.

combinePeaks (OPTIONAL)
This program takes multiple generic_Peaks.txt files (obviously with different names), and concatenates the lists of Q vectors. This is NOT used when you only have one detector, but needed with multiple detectors. It allows indexing using spots from multiple detectors. The indexing step only needs the Q^ vectors for the spots, it does not need to know which detector each spot came from. This provides a simple way to index using information from multiple detectors.

euler
Takes output of pixels2qs (or combinePeaks), and produces another ASCII files something like "generic_Index.txt" This propagates some of the meta data from inputs, and has a table describing each indexed pattern that was found. For each pattern this includes, the oriented reciprocal lattice, rms error, goodness, and for each indexed spot:
determined Q-hat, (hkl), intensity, calculated energy, spot errorĀ°.
There can be multiple patterns found, they are presented in order of decreasing goodness. Note, goodness is an somewhat arbitrarily defined parameter used to sort the patterns. The first indexed pattern in the file is probably the best.

reconstruct**
Takes all the images from a single wire scan and produces a new depth resolved set of images. The user must supply the desired starting depth, final depth, and depth resolution.

The various names of this program are (oldest first, newest last):
reconstructB → process only flyscan where all raw images in one hdf file, B is for BIG
reconstructN → process only flyscan where all raw images are separate, N is for new, (now old)
reconstructBGPU → same as reconstructB, but uses GPU
reconstructNGPU → same as reconstructN, but uses GPU
reconstructBP → same as reconstructB, much more efficient in its use of cluster, P is for Parallel
reconstructNP → same as reconstructN, much more efficient in its use of cluster, P is for Parallel

Supervising python Program

To perform all of these analyses on a large set of data, and then assemble the output into a convenient form, a python client/server employing SimpleXMLRPCServer is used. It consists of two parts, the client named "server.py", and the stand alone client application named "ORNLclient".
The most recent version of the server is located on hpcs34.xray.aps.anl.gov in /data34/JZT/server336
The current binaries used by the cluster are in the sub-folder /data34/JZT/server336/bin
To see how the client is used, see its help file Server Help.

Top