[Ifeffit] Scripting - Python

Matt Newville newville at cars.uchicago.edu
Mon Nov 1 14:51:31 CDT 2010


Hi Andrew,

On Mon, Nov 1, 2010 at 12:01 PM, Andrew Korinda
<a-korinda at northwestern.edu> wrote:
> I'm looking to introduce some scripting routines to some of my EXAFS
> fitting work. Looking around I ran across the Python module and
> downloaded that. The shell works fine, as does enter commands directly
> into Ifeffit, however I'm not getting the read and write commands to
> work from within Python scripts.
>
> Example: iff.ifeffit("read_data(C:\Program
> Files\Ifeffit\examples\Ifeffit\data\cu10k.chi,group=c)") returns -1.

This is almost certainly due to space in the filename, and is really
more of a problem with the fortran than python (or perl for that
matter).  That is, with a space in the file name, you should
explicitly use
    read_data(file=...., group=...)

This should work better::
    import Ifeffit
    iff = Ifeffit.Ifeffit()

    ret = iff.ifeffit("read_data(file=C:\Program
Files\Ifeffit\examples\Ifeffit\data\cu.xmu, group=c)")

If it doesn't, let use know.

> >From this experience I have some questions:
>
> ~First does anyone have some debugging tips for cross talk problems?
> The Fortran return values are fine, but would returning the
> echo_buffer or a log file be more helpful?

There should have been a printed message that might have altered you
that the file hadn't been read in correctly:
   *** read_data: no file name given!

was that message not given?

> ~Secondly, Does anyone have any example Python scripts for Ifeffit
> that they would like to share? I'm new to Python and haven't done
> programming for a while and I'd like to get a better idea of what's
> all possible, and how. I was looking at Matt Newville's message back
> in 2008 about defining a library for Athena in Python and his 2001
> paper but couldn't find much else.

I sort of deliberately have left the base Ifeffit python module
bare-bones.  It would certainly be possible to add more functionality
to that, or distribute add-on packages.  It sort of depends what
people would find desirable.

I have many example scripts using Ifeffit + Python, mostly scripts,
not documented, reliable code.  Of course, there is also sixpack.  I
had some older GUIs as well.  Would it be helpful to add some small
examples on a wiki page?

> ~Finally, would I be better off coding in Perl and using Demeter?

That's a difficult question.  The relative merits of Perl v Python are
sort of a topic all on their own.  For what it's worth, I believe
(far) more people have used Python than Perl, but several very notable
Ifeffit programs are written in Perl ;).

--Matt

PS: The next version of Ifeffit will be in python.   Progress is slow,
and when it will start to look like an EXAFS analysis program is a
fair question.  It probably shouldn't sway your decision much.



More information about the Ifeffit mailing list