XRD with a 2D area detector
mruizoses
I am relatively new in Igor and I have to perform a data analysis of an experiment I have recently run.
During my experiment I have recorded movies (in a fixed position) of X-ray diffraction data so I can follow the crystalline growth of my specimens. My questions is:
In every frame of the movie I have a 2D image of the position and intensity of the rings. I want to present the intensity evolution of this peaks with time (and ideally width evolution of the peaks). I was thinking in trying a waterfall, but don't know even how to do this...
Any help?
Thank you!
Miguel
Would something like this help:
Execute this from the command line to make some sample data (this is modified from the above help topic)
s1 = sin((x-25) / 10) * cos((y-25) / 10)
s2 = sin((x-20) / 10) * cos((y-25) / 10)
s3 = sin((x-15) / 10) * cos((y-25) / 10)
s4 = sin((x-10) / 10) * cos((y-25) / 10)
s5 = sin((x-5) / 10) * cos((y-25) / 10)
Open the procedure window and copy this function into it
string ListOfImages // you need to pass a string which contains the names all of your images
Make/O/n=2 xTrace={0,50} ,yTrace={20,20} //Here you set where on the image the intensities get extracted
Make/D/O/N=(51, ItemsInList(ListOfImages)) Intensities //Make a 2D wave to store all the data
variable i
for(i=0; i<ItemsInList(ListOfImages); i+=1)
string next = StringFromList(i, ListOfImages)
wave w = $next
ImageLineProfile srcWave=w, xWave=xTrace, yWave=yTrace // get the profile
wave W_ImageLineProfile
Intensities[][i] = W_ImageLineProfile[p] // store profile per column
endfor
NewWaterFall Intensities
end
and finally call the function:
Finally you could build in a peak fitting function in the loop to get quantitative data from the intensities.
May 30, 2012 at 12:19 am - Permalink
1) have you got the data into Igor yet? Are they actually movies or do you have a load of individual frames?
2) When you load images into Igor they will be in pixel units so you will need an accurate way of converting from pixels into your desired abscissa, either 2theta or Q, depending on your preference. This can be done with geometric calculations or by comparing to a known calibrant.
3) The use of LineProfiles suggested by ChrLie is quick and easy, that script will get through your data nice and quickly, however, are you diffraction pictures of rings or spots? If you have rings it would make sense to perform a radial integration to average out the scattering from the whole picture rather than take a 1D line trace. This step is often referred to as data reduction. I can help out with this, it is not particularly easy but it is a lot better for your data. Additionally, if you have "oriented rings" you can perform integration over a limited sector of the image.
4) When you have reduced your 2D plots to 1D traces, it would be best to perform multipeak fitting, whereby you can fit a number of peaks in a trace and extract parameters such as the peak height (intensity), peak width and peak area. In order to find out more select "Analysis > Packages > Mulitpeak fitting > Multipeak fitting 2.0" and then click on the help button. Fitting a Gaussian (or Lorenzian or Voigt) to diffraction peaks will give you the FWHM, this can be plugged into the Scherrer Eqn to calculate your crystallite size, which may be another way of looking at it.
5) you could plot all of your traces in a stacked or waterfall plot but I tend to find this can get quite messy, I would rather just make a simple plot of intensity and/or width as a function of time. If you have a number of phases you could plot a few key traces.
Best,
Tom
May 30, 2012 at 07:34 am - Permalink
May 30, 2012 at 07:36 am - Permalink