[Ifeffit] More for dealing the LCF

Bruce Ravel bravel at bnl.gov
Fri Sep 9 08:23:01 CDT 2011

> 1. Constraining the sum of components fractions to one –
>  - when to apply?

*If* your set of standards is complete and fully describes the sample
and *if* all of your data are normalized accurately and *if* none of
your data is effected by measurement uncertainty of any sort, then the
sum of components must equal 1.

Suppose, however:

 * your set of standards is not perfect -- for example, if you sample
   contains metal nanoparticles and you are using data from a metal
   foil as a standard

 * there are errors in normalization -- which could happen for any
   number of reasons, for instance one or more scan has some funny
   feature in the pre-edge that makes the determination of pre-edge
   line ambiguous

 * there is measurement uncertainty -- for example, if one or more
   samples suffers from self-absorption

In any of those cases, it is helpful to lift the requirement of
weights summing to 1.  The fit, in that case, might be more accurate
or even more precise by having that constraint lifted.  In any case,
it may help you understand your data ensemble a little better to be
able to lift and impose that constraint.

>  - Which factors should be considered at this context while working with
> soil samples?

I think I covered that in answer above.  Also you need to make sure
you have actually measured enough samples.  It is basically
impossible to have a sufficiently large library of standards.  You
could always do to measure that wacky thing that almost certainly
isn't in your sample -- except when you find that it is. :)

>  - How would you suggest dealing the penalty when sum of components is
> different than one in these heterogeneous soil samples (with unknown
> composition and probably high effect of disorder)?

Simply rescale the weights by the sum.

> 2. Any reason not to constrain all fractions to be positive?

In fact, there is.  Obviously, a negative weight is unphysical.
However, the way the constraint is imposed by Athena is by putting a
hard-wall limit(*) on the value.  If that constraint is imposed and the
fit finds that it wants a negative value, the weight is forced to
zero.  In the language of Ifeffit, this is imposed as

   guess w = 0.25
   def weight = max(0, min(w, 1))

This is fine, in that it does in fact impose the constraint correctly.
However, the problem with a hard-wall constraint is that some or all
of the uncertainties cannot be evaluated for a fit that runs into a
hard wall.  This is easy to understand -- as 'w' floats to a smaller
and smaller and value, the evaluation of 'weight' does not change.
Since 'w' changes, but 'weight' does not, the sum of standards does
not change as 'w' changes.  Thus an error bars on 'w' cannot be

So there are 2 advantages of allowing a weight to go negative:

  * it tells you that its component is almost certainly not in your

  * it allows the fit to evaluate sensible error bars for the
    remaining parameters


(*) There are other ways to impose this kind of constraint, many of
which allow sensible evaluation of error bars.  There is a compelling
reason that it is implemented this way in Athena, which I could go
into if anyone is actually interested.


 Bruce Ravel  ------------------------------------ bravel at bnl.gov

 National Institute of Standards and Technology
 Synchrotron Methods Group at NSLS --- Beamlines U7A, X24A, X23A2
 Building 535A
 Upton NY, 11973

 My homepage:    http://xafs.org/BruceRavel
 EXAFS software:  http://cars9.uchicago.edu/ifeffit/Demeter

More information about the Ifeffit mailing list