[Ifeffit] Jupyter/python question for Larch

Matt Newville newville at cars.uchicago.edu
Tue Aug 4 10:13:26 CDT 2020

Hi Garret,

On Tue, Aug 4, 2020 at 9:55 AM Garret Bland <gbland at andrew.cmu.edu> wrote:

> Hello!
> I have a Python/Larch related question. I have been developing some python
> script via jupyter and incorporating Larch as a module. I was able to read
> an athena prj file with the following code
> *import larch as lc*
> *athena_prj = lc.io.read_athena(prjfilename)*
> Python stores this object as a 'Group' object with each spectrum being an
> instance. I would like to go through more processing with all spectra.
> Example:
> *for spectrum in  athena_prj:*
> *     lc.xafs.find_e0(spectrum.energy, spectrum.mu <http://spectrum.mu>,
> group = spectrum)*
> This does not work since the 'Group' object is not iterable. I tried to
> look up some other built-in functionality with python, but couldn't find an
> efficient way other than manually typing out each spectrum
> (athena_prj.spectrum1,  athena_prj.spectrum2, .... etc). Is there any
> built-in functionality in larch that can iterate this 'Group' object?
Yeah, a Group is a pretty generic collection and so is not iterable.  There
is a dir() function, but that is not really what you want because the group
returned from read_athena() contains not only the "Athena Groups" (which is
what you want to loop over) but also some extra data about the project file
itself.   I think that what
you really want is to use the (magic-ish) `_athena_groups` data in the
project file group:

    for spectrum_name, spectrum in athena.prj._athena_groups.items():
          lc.xafs.find_e0(spectrum.energy, spectrum.mu)

or if you're just looking to extract E0 for all the groups in the project
file, perhaps:

    e0_vals = {name: lc.xafs.find_e0(spect) for name, spect in


PS: sorry, the word 'group' here probably has four different meanings.
print(" ".join(["buffalo"]*8))!

Any help would be appreciated. Thank you for your time!
> Garret
> --
> Garret Bland
> PhD Student
> Carnegie Mellon University
> Civil and Environmental Engineering
> Porter Hall 201
> Pittsburgh, PA, 15213
> _______________________________________________
> Ifeffit mailing list
> Ifeffit at millenia.cars.aps.anl.gov
> http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
> Unsubscribe: http://millenia.cars.aps.anl.gov/mailman/options/ifeffit

--Matt Newville <newville at cars.uchicago.edu> 630-252-0431
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://millenia.cars.aps.anl.gov/pipermail/ifeffit/attachments/20200804/1e2c5e4b/attachment.html>

More information about the Ifeffit mailing list