User Tools

Site Tools


FRIDA: basic design ideas and guidelines

(Joachim Wuttke 2006:) At the time of this writing, promising developments take place in the field of neutron scattering data analysis. So far, however, no software has emerged that fully fulfills my personal requirements. In my opinion, a data analysis program should satisfy the following requirements:

  1. It must be open source, because
    1. I want to be able to quickly add new modules, and
    2. I want to be able to check the algorithms I am using in key steps of the data reduction and transformation.
  2. It shall not depend on commercial licenses, because I want the freedom to give the program to future users of my instrument, from whatever institution they come.
  3. It must have routines that are very specific for neutron scattering (reading different raw data formats, transformation to S(2th,w), interpolation to S(q,w) &c.).
  4. At the same time, it must have very flexible facilities for various operations on genery x[-z]-y data (selective deletion, rebinning, arithmetic operations, curve fitting &c.)
  5. Routine operations on data fields must be optimised for speed (which almost inevitably implies coding in FORTRAN or in C).
  6. It must have a line-oriented input mode designed for the ease of the expert user.
  7. It should have a GUI input facility for the occasional or novice user.
  8. It should have documentation (tutorial, manual, faq).

If I missed points you consider important, please let me know. Anyway, even if there are only eight requirements, I guess it is safe to say that no program on earth comes close to fulfilling all of them. After inquiring about various alternatives, I think IDA (now Frida-1) is still an excellent starting point. IDA has the big advantage that fundamental decisions regarding my requirements (2) and (5) have been made right - these choices are hard to correct ex post. IDA basically fulfills requirements (1) through (6) - and it fails completely with (7) and (8). So, the development priorities are clear:

  • consolidate the existing code base;
  • redesign the overall programming framework, uncompromisingly maintaining the current strengths of IDA, and preparing the ground for adding a GUI and scripting layer;
  • simultaneously, work on the documentation