I would be willing to test any new code out. We have been working with this for diffraction patterns over the summer and we have not been happy with the spline fit or a Bezier alternative. Jeff Terry and Steve Wasserman's Mathematica code uses an algorithm which sets bins in energy space using the desired k-space resolution, say delta-k=0.05 and then averages both mu(E) and E. Then an interpolation scheme eventually puts the data on an exactly even k-space grid since there is no guarantee that the average E is in the correct place. Carlo On Thu, 18 Jul 2002, Matt Newville wrote:
Hi Carlo,
Sorry I didn't answer this more clearly.
CS> What is done with the high density data when converting to CS> k-space? Do you rebin (averaging both E and mu data) or do you CS> use a smoothing fit to take advantage of the statistics present CS> in the excess data points, or do you just interpolate and throw CS> away the extra statistics?
BR> ... However, mesuring for one second per point on, say, a BR> 0.25 eV grid is similar in a counting statistics sense to BR> two measurements of one second per point on a 0.5 eV grid. BR> That counting statistics improvement is not lost in the BR> interpolation of chi(E) to chi(k).
CS> I think that this last sentence is the answer that I was CS> looking for. I wanted to know if the counting statistics CS> improvement is propagated in the transformation to k-space. CS> This is good since it means that we do not have to write CS> our own rebinning or smoothing routines before handing the CS> data off to athena and ifeffit.
MN> -- spline() generates k and chi arrays using a 0.05Ang-1 grid MN> using a three-point interpolation of the chi(e) data. MN> That could possibly be improved, I suppose.
CS> I take this to mean, as Bruce mentioned in the previous CS> message, that the counting statistics improvement in these CS> fine-gridded data is used with this three point CS> interpolation. If this was not the case, I would write a CS> program to rebin by averaging multiple points to an equally CS> spaced > k-grid in order to use the increased statistics.
The three-point interpolation done probably WILL lose some statistics for finely gridded data. That is, if data is binned at fine energy intervals through the EXAFS region, the method currently used will not use all that data to construct chi(k). As an example : k = 10.00 -> E-E0 = 381.0 k = 10.05 -> E-E0 = 384.8 k = 10.10 -> E-E0 = 388.7
Currently, ifeffit marches in k-space in steps of 0.05Ang-1, and uses three energy points (the energy just below, the energy just below, and the next closest point) to make a parabola through chi(E) [that is, xmu(E)-bkg(E) at the energy points of the data], and uses the value of that parabola as chi(k). The result is that if data is binned on a 0.5eV grid, some of it will be ignored when making chi(k) at k=10.Ang^-1.
This could be improved. Ifeffit really wants chi(k) on an even k-grid, so the options would be either a finer k-grid or a better interpolation scheme. A finer grid in ifeffit could be possible, but it's a non-trivial change.
A better interpolation scheme is easier to do. Changing from 3-point interpolation to a cubic spline that passes through all the data points of chi(E) would be easy, and would use all the data for each chi(k) point. Whether it actually 'preserves statistics' is a harder question to answer. I think that any griddign of data could be said to lose statistics. Some sort of rolling averaging could be used, which might preserve statistics better at the (small) expense of resolution.
Anyway, the reason that's not cubic spline interpolation is not currently done is execution speed, but that's probably less important than throwing away data!
Changing to the better interpolation scheme is easy enough to try. I could send altered code if you like.
--Matt
_______________________________________________ Ifeffit mailing list Ifeffit@millenia.cars.aps.anl.gov http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
-- Carlo U. Segre -- Professor of Physics Illinois Institute of Technology Voice: 312.567.3498 Fax: 312.567.3494 Carlo.Segre@iit.edu http://www.iit.edu/~segre