[Ifeffit] Larch / Ifeffit2 development status

Scott Calvin scalvin at sarahlawrence.edu
Thu Jun 28 00:45:38 CDT 2012


This is great to hear, Matt! While I'm going to be too busy to give it a real look in the next few months, after that I'll be very interested. Writing it in Python will make it possible for me to compile the code myself, which I never succeeded in doing with the Fortran-based programs on the Mac. That means I may be able to help add new features and the like.

--Scott Calvin
Sarah Lawrence College

On Jun 27, 2012, at 6:36 PM, Matt Newville wrote:

> Hi Folks,
> 
> I wanted to give an update on progress of my Ifeffit 2 project, which
> I've been developing under the code name Larch, a name which I think
> might stick.  This has been a long, slow (and sometimes nearly
> stopped) process over several years, but a few events have conspired
> so that I've focused enough attention on it over the past month or so
> that enough progress has actually been made to report on it.  One of
> the conspiring events is the upcoming XAFS conference, where I will
> present several features of Larch.
> 
> First, a summary:
> 
> Larch is a complete rewrite of the functionality of Ifeffit.
> It has a much richer and flexible syntax, and much better
> data processing functionality.  Though currently focused on
> XAFS analysis, the intention is to add functionality for
> related techniques such as XRF.  Like Ifeffit, Larch works
> either as a command-line with a scriptable interface, or as
> a library, allowing GUIs to be built upon this foundation.
> Larch is written entirely in Python, using a large set of
> existing and supported scientific computing libraries.
> 
> By throwing out all of Ifeffit1 and Fortran and re-implementing in
> Python, a number of recurring problems we've add with Ifeffit 1 go
> away.  The most import of these is that there is no built-in limits on
> memory usage.  A secondary issue is that the macro language exposed to
> the user is much, much better -- you can write real programs in Larch
> (it is a dialect of Python itself) and have much richer data
> structures.  A third part of the enhancement is that development and
> extending functionality is simpler, and the code is much more modular.
> This not only means that maintenance is easier for me, but that many
> existing libraries can be immediately used.  It also means that others
> should have a much easier time playing with the code, which I
> encourage.
> 
> Though it may be easy to see that replacing Fortran for Python would
> give code that is more flexible, easier to read and maintain, it might
> be counter-intuitive to expect it to be more efficient.  But it turns
> out that for basic data processing (not including graphics), Larch is
> often considerably faster than Ifeffit 1.  A typical "read data, do
> background subtractions, and FFTs" is about 2.5x faster in my tests.
> That should make processing large amounts of QEXAFS and hyper-spectral
> data noticeably faster.   As an aside, the graphics are slower, but
> are of much better quality.
> 
> Larch is still in active development, but here's a short list of what
> is currently working:
> 
> Basic functionality:
>   1. basic mathematical, array manipulation.
>   2. reading / writing data from ASCII files.
>   3. reading data from HDF5.
>   4. line plotting of x, y data, with much better graphics than
> Ifeffit, with interactive zooming, plot configuration, etc.
>   5. simple 2d image display of 2d array data, I(x,y).
>   6. a complete python-like language for writing complex scripts.
>   7. an easy-to-use interface to general-purpose fitting of data, for
> example to Gaussian lineshapes.
>   8. running either as a command-line program or as a Python library,
> or in 'server mode', so that another process may interact with a
> background server process.
>   9. There is a start of a proof-of-principle general purpose GUI,
> but it's not very far along.
> 
> XAFS Functionality:
>   1. Pre-edge subtraction, normalization.  Currently done as in
> Ifeffit, and ready to be expanded.
>   2. Autobk background subtraction. A few missing features here.
>   3. XAFS Fourier transforms (forward and reverse) with a variety of
> window types.
>   4. Feffit fits to sums of Feff Paths from feff.dat files.  Support
> for multiple-k-weight fits and multiple-data-set fits are included.
>   5. Uncertainties calculations are automatically included and match
> very closely to those from Feffit/Ifeffit despite being a new
> implementation.
>   6. Standard reference data for several x-ray values can be
> retrieved from tables of Elam etal (absorption coefficients, x-ray
> edges and lines), Chantler etal (f', f''), Waasmaier and Kirfel (f0),
> and Keski-Rahkonen and Krause (core-hole widths).
> 
> Where possible, the syntax of the XAFS functionality is largely
> unchanged.   Some of the functionality listed above is an incomplete
> port of Ifeffit's functionality.  For example, the autobk() function
> does not yet support spline clamps, and may have an error when and
> there is not yet an equivalent of the Cromer-Libermann Background, ala
> MBACK.   Some functionality is much better, of course.
> 
> In essence, all of Ifeffit has been ported and is approximately ready
> for testing for the brave.  The build and installation process is not
> highly streamlined yet -- a windows executable does not yet exist.
> But code has been actively developed on Windows, Mac OS X, and Linux,
> and installs and runs without modification (there are some built in
> Windows-specific code but the user never needs to think about this).
> The documentation is fairly scant, especially for the EXAFS functions.
> This will improve over the next months.
> 
> Much of the current status is expected to be the starting point for
> further expansion, so this is the right time to think about and
> propose real enhancements.  For example, including better linear
> algebra / PCA methods would be near the top of list of things to add.
> My own needs include XRF Analysis, data collection, and I fully
> expect Larch to be able to all of these things.
> 
> Since most people here are mostly using the
> Athena/Artemis/Dathena/Dartemis GUIs I'll point out that the 'server
> mode' mentioned above will allow Demeter to communicate with Larch,
> and even allow Demeter to use 2 or more instances of background Larch
> processes running at the same time (say, one per core of your
> machine).  That is not yet all worked out, but we know how to do it.
> 
> Code and Documentation so far are at
> http://github.com/xraypy/xraylarch and
> http://xraypy.github.com/xraylarch
> 
> At this point, I'm looking for a couple types of feedback:
>  1. comments and suggestions on the process and design so far.
>  2. suggestions for enhancements or features.  This is the time to
> send your wish list!
>  3. collaborators on implementing these features or adding new functionality.
> 
> --Matt
> _______




More information about the Ifeffit mailing list