I have no idea why this took so long, but I finally have the code to import and output various graphs of the reciprocal space maps (RLM or Q-space) taken using the Xpert Xray diffraction system. One of the difficulties in outputting the older data has been solved by our new line-scan detector system. The data is now taken in the more simple Omega-2Theta space instead of Omega-Omega2Theta space. With the help of Mauro Sardela, the fantastic research scientist who runs the XRD lab at the Materials Research Laboratory (FS-MRL), I’ve properly translated the data into Q-space using the same equations the Xpert Epitaxy software uses.
Read More
Matlab
Finally- Qspace mapping success!
More on XRD Q-space mapping.
After some new scans, it appears the XRDMLread.m function I talked about is doing a pretty good job of getting the 2-axis scans into MATLAB. I was able to alter the code to accept the standard Epitaxy software’s translation to Q-space. (In Epitaxy the default is R = 0.5 I believe.) So, the following image was imported with XRDMLread.m the plotted with the standard 2-d example from the author’s website. The code was altered to output 10000xRLU units the same as Epitaxy (Panalytical). I haven’t checked all the numbers, but it’s looking ok so far. Unfortunately the color-scale looses it’s meaning as far as intensity is concerned, it appears at first glance.
Working a bit with my old q-space map code, I’m able to accomplish the following:
Note the strange love-handles the data gains. I suspect this might be due to the Gridfit function (see MATLAB files repository) I used for regridding the data. Gridfit.m uses an extrapolant method. My suspicion is it is trying to fill out the square of the data matrix and is accomplishing relatively correct values for near-by-data that is outside the scanned range. I’ll try it again with regrid or something similar in the future when I have time.
If anyone knows where the current site for XRDMLread.m is, I’d love to link to it. It appears the site may be down (graduated student I suspect). You can obtain the wonderful XRDMLread.m function and examples on the XRDMLread.m website. For now, I have to wait until I hear from the authors before I can share the file. I also don’t yet trust my icky 3D code, so I prefer not to release that until I have things hashed out. Sorry!
I’m extremely happy that Panalytical has published their XRDML file format and that the makers of XRDML.m have released their .m files for MATLAB. In the past, when Philips had the Xpert systems, the data was stuck for the most part in proprietary data formats. [You could slice the data and output in ascii- but making that work was a pain- which is why I never released that previous code.] I’m much closer to the 3d plotting now, and hope to finish it up before the thesis (my primary work which is not this plotting) is published.
Wishing you luck in you research!
Matlab doesn’t open two windows? – Here’s a fix.
After finally installing Leopard (10.5) osX on my Powerbook G4 (Thesis writing computer), I noticed a strange behavior with MATLAB. MATLAB could no longer open more than one instance of itself. As well, it could no longer open a window once it had opened once in any login session. Strange behavior indeed.
Well, here’s the fix… it turns out that Leopard uses launchd to set the display. So, the old method of launching MATLAB was to set the display to 0.0, but this will fail after the first instance, hence the bug. What you can do is simply remove this line from the startup script in matlab (located within the startup application contents).
The line that was:
$SHELL -c 'bin/'$ARCH'/setsid bin/matlab -desktop -display :0.0 &'
should now be:
$SHELL -c 'bin/'$ARCH'/setsid bin/matlab -desktop &'
Once I changed that, everything started up fine!
ps- you will know you have this problem if you look at your console log immediately after launching MATLAB and it says something like:
6/29/10 9:03:34 AM [0x0-0x78078].StartMATLAB[23469] Warning: Unable to open display :0.0, MATLAB is starting without a display.
MATLAB and reciprocal space mapping – small update.
Well, I’m one of those guys who believes a picture is usually worth a ton of words. I’ve got a few images to share here on the matlab code I’ve been working on for reciprocal space mapping in MATLAB. I’m still not 100% on my code right now, so I’m not sharing it for the time-being. In particular, I use an import function for .x00 slices for two-axis scans in the Panalytical/Philips XPert system. If you are using XRDML, skip the files for .x00 import that I have in other posts on this blog. In anycase, without much explanation here are the images…
Software For Scientists: Engauge Digitizer
In the time I’ve been doing my research work at the Univ. of IL, I’ve come across a number of graphs from various past researchers, older papers, stuck on the side of machines (calibration curves), and even hand-drawn or chart-recorder graphs in my numerous projects. The only major problem with those graphs I’ve found is that they aren’t in a digital form for further use with other data (instrument response functions) or to include in your own work as a reference. So, what to do?
Well, there’s an easy solution. It’s not the perfect solution, as it’s a bit slow, I’ll get to that in a second, but it’s a great solution to the problem, and has worked for me a number of times now. To top it off, it’s open-source, donation-ware, and cross-platform: Engauge Digitizer (see post at LifeHacker.com). Don’t let the website and lack of recent updates deter you. Tools that can do what Engauge does are few and far between. So, it is definitely worth a try. Here’s an example of how I’ve used it just the other day (prompting this post- I’ve used it for years now, but the recent use reminded me I should share it with others). [click "More" to see an example use and learn more]
Part III: Matlab Function for Xpert XRD Reciprocal Space Mapping
A series of MATLAB functions will follow. Some of these “.m” files call each other, so ensure you have all of them before you start.
The purpose of this file is to load in all the .x00 files in a directory of Omega-Omega-2-Theta slices for reciprocal space mapping of a sample. “OmegAxis” determines the scale for the Omega axis (y) for reciprocal space mapping. [again, this is not yet in Q-space, that will come at a later date]
The first function loads data into your workspace for a directory of .x00 files that have a common base filename. The user needs to supply the first index number and last index number for loading the files. The program then attempts to load “filenameIndex.x00″ in a linear fashion for all .x00 files of that filename indexed in the cd’d directory. [Change directory to the working directory needed before starting this function.]
Part II: Matlab XRD- reciprocal space maps from XPert XRD files (.x00)
A series of MATLAB functions will follow. Some of these “.m” files call each other, so ensure you have all of them before you start.
The purpose of this file is to load in all the .x00 files in a directory of Omega-Omega-2-Theta slices for reciprocal space mapping of a sample. Please note that as of this writing, the data has not yet been converted to Q-space.
The first function loads data into your workspace for a directory of .x00 files that have a common base filename. The user needs to supply the first index number and last index number for loading the files. The program then attempts to load “filenameIndex.x00″ in a linear fashion for all .x00 files of that filename indexed in the cd’d directory. [Change directory to the working directory needed before starting this function.]
Intro to Multipart Post: Reciprocal Space Mapping (XRD) for XPert in MATLAB
There will be a number of posts following this one that will attempt to recreate reciprocal space mapping in MATLAB. The functions that will be posted in the coming days read in .x00 files from the Philips XPert XRD system and try to recreate the slices of Omega Omega-2Theta scans produced for reciprocal space mapping.
Currently I haven’t changed the data into Q-space, so they will be reported in Omega -v- Omega2Theta space.
An example call to the function is:
DisplayQSpace1('',9,184);
Example output of the function(s):
Part I: MATLAB Functions for Philips XPert XRD Files
I decided here and there to publish various MATLAB functions I’ve written for my own work. There’s just one caveat- each one of these is a serious work in progress. In fact, they may not progress much more than what is disclosed here since they get the job done for me.
But, I felt that this likely would help a few people who are trying to do the same type of thing, and I’d rather ease those who come after me, and give them a slight step ahead if possible.
For those of you with old version of the Philips XPert XRD software (specifically those who can’t output in XRDML files), I offer a crude import function for simple scans.