[Ifeffit] Jupyter/python question for Larch

Garret Bland gbland at andrew.cmu.edu
Tue Aug 4 10:27:03 CDT 2020


Hi Matt,
Thank you for the advice and speedy response! _athena_groups is exactly
what I was looking for.
Cheers,
Garret

On Tue, Aug 4, 2020 at 11:14 AM Matt Newville <newville at cars.uchicago.edu>
wrote:

> 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
> athena_prj._athena_groups.items()}
>
> --Matt
>
> 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
> _______________________________________________
> 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
>


-- 
Garret Bland
PhD Student
Carnegie Mellon University
Civil and Environmental Engineering
Porter Hall 201
Pittsburgh, PA, 15213
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://millenia.cars.aps.anl.gov/pipermail/ifeffit/attachments/20200804/14979c06/attachment-0001.html>


More information about the Ifeffit mailing list