[Ifeffit] restraints in larch
newville at cars.uchicago.edu
Fri Oct 5 08:00:07 CDT 2018
Hi Hanyu, Barbara,
On Fri, Oct 5, 2018 at 12:55 AM Hanyu Zhang <hxz269 at case.edu> wrote:
> Thought I'd give my two cents before the experts chime in... I'm only a
> grad student right now though so make what you want out of it. I also
> haven't touched Larch for a while now since I got my xafs (Larch) functions
> working in python several months ago.
> First off though, ntot1 = param(expr='nO1+nO2', min=5.0, max=8.5) ran
> without throwing an error in Larch for me... (See screenshot near the
> middle of this email) So I don't think anyone can really help without more
> details, but I want to comment on some things:
> 1. The first thing is that you're missing a vary = True in the
> statement for ntot1. Since the default value for vary is False according
> to the website, I would add that in if you actually wanted it to be fitted
> for during the fitting process (
> 2. In addition, when you run ntot1 = param(expr='nO1+nO2', min=5.0,
> max=8.5), are nO1 and nO2 pre-defined? If not the computer's not going
> to know what to make of those variables.
> 3. I'd recommend something along the lines of:
> nO1 = param(7.0, min=5, max=7, vary=True)
> nO2 = param(1, vary=True),
> ntot1 = param(expr='nO1+nO2', min=5.0, max=8.5, vary=True)
> I just tested this on my machine and it didn't throw any errors. (Though
> it also didn't throw any errors without the 2 fixes I recommended...):
> [image: Screen Shot 2018-10-05 at 12.55.59 AM.png]
> I didn't think to check when I took that screenshot but with that line,
> the vary is in fact set to false:
> larch> ntot1.vary
> In terms of the errors on error calculation --
> 1. What's the reduced chi-sq? What do you mean by very small? In
> physics you want that to be as close to one as possible. Though in xafs the
> reduced chi-sq apparently is typically around 100-1000 so I'm confused as
> to what you mean by "small". Also, if you're having issues with errorbars
> to begin with, I wouldn't trust the chi-sq since that calculation
> relies on how big the errorbars are. If the errors are NAN, who knows
> what the computer would do to divide those numbers...
> 2. What do you mean by "errors are not reported"? After the fit, it's
> returned in feffit.residual, or something along those lines (
> I haven't actually used this myself, so I can't say more.
> 3. *(Just a comment...)* I don't know if this would help but my
> physics professor didn't let me trust the reduced chi-sq and gof
> values I was getting until I found out how the errors were calculated. By
> default, the errors are calculated by assuming that the noise is white in
> R-space and that there's no signal at high-R, so the "signal" near your
> rmax is the noise. (
> second to last paragraph)
> Hope this was at least somewhat helpful,
> Hanyu (Alice) Zhang
> *Master's in Materials science | 2019*
> Research in utilizing XAFS to match current theory of metallic glasses to
> experimental data
> *Academic achievements:*
> <https://www.nwmissouri.edu/>:* Associate of Science, 2014
> *CWRU <http://case.edu/>:* Bachelor's of Science in Engineering Physics
> , 2018
> *Honors societies*: National Society of Collegiate Scholars | Tau Beta Pi
> <http://www.tbp.org> | Pi Mu Epsilon <http://pme-math.org/>
> *Other interests:*
> *Clubs*: Case Origami Circle | Case Rocket Team
> <http://caserocketteam.org> | CWRUbotix <http://cwrubotix.case.edu/> | Case
> Physics and Astronomy club | Math club
> *YouTube*: Chinese Operations Lead, Veritasium <http://veritasium.com> (5M
> subscribers) | Saturday Vlogs <http://bit.ly/AliceZhang>
> On Thu, Oct 4, 2018 at 8:04 PM Barbara Etschmann <
> barbara.etschmann at monash.edu> wrote:
>> I'm trying to use larch to refine the coordination of Y in solution. I
>> need to use 2xO paths to fit the first shell and would like to restrain the
>> total coordination to be between 5.5 and 8.
>> I can apply the constraint to each nO, but not the total, i.e.
>> nO1 = param(7.0, min=5, max=7, vary=True),
>> nO2 = param(1, vary=True),
>> ntot1 = param(expr='nO1+nO2', min=5.0, max=8.5)
>> does not work.
>> How can I restrain the total coordination?
I think that should work. But I can also believe it doesn't ;). It may
require a recent version of Larch (0.39 or 0.40 and really lmfit). I'll
try to verify that over the next couple of days.
Also, having some problems with the gofs and errors - the chi square is
>> rather small and often the errors are not reported and it is not clear why.
Hm, not sure. Can you post an example?
-------------- next part --------------
An HTML attachment was scrubbed...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2018-10-05 at 12.55.59 AM.png
Size: 122637 bytes
Desc: not available
More information about the Ifeffit