Horae Source Code Release 057

This page documents the changes and new features in this release. This release includes Athena 0.8.045. Artemis and Hephaestus are unchanged.

Athena 0.8.045

Discussion of major new features

Linear Combination Fitting improvements

I made several more improvements to the linear combination fitting dialog. Linear combination fitting is pretty simple conceptually, but it sure takes a lot of fiddling to get all the interface and implementation details correct!

  • Added the weighted components as columns to the report
  • Fixed a bug in LCF pluck buttons
  • Changed how parameter values are saved for data groups so that parameters are remembered when clicking between groups.
  • Added a function to the operations list for constraining LCF parameters between groups
  • Added preference for how to handle constraints when doing marked group fitting. Since parameters can be set individually for different data groups, the question is whether parameters should be constrained when clicking the marked groups fit button. The choices are to constrain automatically, not to constrain, or to prompt the user for what to do. See the linearcombo section of the preference dialog.

  • Added a column to the main LCF table which is labeled Reqd and which is used to require that a component be in all combinatoric fits. That is, when doing the combinatorial fitting, every fit will include the marked group. To unset this button, you need to select Reset from the operations list.

  • Sort indeces in first column of upper table in combinatoric tab of LCF

Filetype plugins and the new plugin registry

A question about encoder data from Norbert prompted me to make several improvements to the filetype plugin system in Athena. Filetype plugins are little bits of perl code that are loaded dynamically at start-up which help Athena deal with data in formats that it otherwise would not be able to handle. Some examples might be a data file that confuses Ifeffit's read_data() function, a data file in a binary format, or data recorded as a function of something other than energy.

None of those examples fall neatly into Athena's model of what constitutes data, i.e. columns of energy and scalars which can be combined to form mu(E). Rather than hard-coding special cases into Athena, I created a system of plugins. These contain functions for recognizing the format of the data file to be imported and for converting it into a form that will make Athena happy. In the case of data recorded as a function of encoder, the plugin will prompt the user for some parameters needed to do the conversion to energy then rewrite the file as a function of energy (without overwriting the original!!) before importing it into Athena.

Because you may not want the overhead of checking every file to see if it one of these odd-ball types, I created a registry for the plugins. This can be found in the Settings menu. The available plugins can be turned on and off. Thus, to continue with the encoder example, you will need to register the encoder plugin before beginning to analyze your encoder data.

There are currently 5 filetype plugins that come with Athena:

  1. Encoder: import data recorded as a function of encoder position

  2. Lambda: import data recorded as a function of photon wavelength

  3. X10C: import data from beamline X10C at NSLS

  4. X15B: import binary data from beamline X15B at NSLS

  5. BESSRC: import an older data file format used at 12BM at the APS

I also wrote a document page for the plugin. There is a document button on the registry page. You can read the documentation for each individual plugin by double clicking on its entry in the list on the registry page.

The plugin system is intended to be user-extendable. That is, you can write your own plugins and install them in a special location on your computer. On a unix (including linux and OSX) computer, you can drop a new plugin in ~/.horae/Ifeffit/Plugins/Filetype/Athena/ and on Windows C:\Program Files\Ifeffit\horae\Ifeffit\Plugins\Filetype\Athena\. When Athena starts, it'll find any plugins in that special location and add them to the registry.

If you are interested in writing a filetype plugin, just follow the example of one of the existing plugins. They are quite short and intended to be easy to write for anyone who knows a bit of perl. The rules that a plugin must follow are explained in the plugin document page.

Other new features
  • Split the background removal parameters into two groups for the purpose of display. There are buttons for switching the display between the two groups.
  • Added controls for functional normalization and for normalization order. However the current version of Ifeffit has small bugs which preclude these from working properly. They are currently disabled and will be turned on after the next release of Ifeffit. The functional normalization setting was added to the data groups reports.
  • Avoid updating the background removel when merging in mu(E), plotting in mu(E) or doing diff in mu(E) -- i.e. in a way that does not actually require that the update be done.
  • Put a note in reference pre-processing tab about energy array

Bug fixes
  • The invert flag is now respected when making a difference group
  • The plot multiplier is now respected when plotting a difference spectrum in E
  • Fixed a bug in choice of bkg standard that came from mishandling the data after the switch to the BrowseEntry control

  • Fixed a serious bug in selecting the pre-processing standard from the BrowseEntry widget

  • Fixed the annoying bug where the group would go out of view in the Groups list when changing its name
  • I think I fixed an annoying bug which spit up a spurious warning when deleting many groups -- it had to do with having the cursor hanging out over a group that was being deleted.
  • The modified indicator now displays correctly when closing project

HoraeVersion057 (last edited 2005-11-07 16:25:13 by BruceRavel)