A curve fitting program for small-angle scattering curves, mostly from SAXS and SANS experiments in analytical or biological chemistry. It features more than 200 particle models and is capable of fitting several data sets simutaneously.
The project was started by Dr. Joachim Kohlbrecher in the 1990s during his PhD thesis at the Helmholtz-Zentrum Berlin für Materialien und Energie (former Hahn-Meitner-Institut).
The program calculates integral structural parameters like radius of gyration, scattering invariant, Porod constant. Furthermore it can fit size distributions together with several form factors including different structure factors. Additionally, an algorithm has been implemented, which allows to simultaneously fit several scattering curves with a common set of (global) parameters. This last option is especially important in contrast variation experiments or measurements with polarized neutrons. The global fit helps to determine fit parameters unambiguously which would be otherwise strongly correlated by analyzing a single curve.
The program has been written to fulfill the needs of the users at the small angle neutron scattering facility Paul Scherrer Institute. The numerical routines have been written in the C programming language whereas the graphical user interface has been written in Tcl/Tk.
There are binary packages for Windows, Linux and MacOS. For more detailed information and source code, please visit the Project Page.
Motivated by a job proposal initiated by Sylvain Prévost, I joined Joachim Kohlbrecher in March 2008. The first steps included:
- Moving the code base from the CVS revision control system to Subversion and later to Mercurial
- Automating the build process and package creation by introducing CMake. The build process is not trivial because the C code for numerics has to be combined with the Tcl/Tk scripts into a standalone executable for each platform separately
- Introducing Doxygen a source code documentation system
- Reorganizing the source code and introducing unified model function interfaces
- Developing a plug-in system for model functions which enable users to use custom model functions without deeper understanding of the program source code
- Work-flow improvements in corporation with users in a scientific background
- There is a Channel to support users with specific tasks and by creating their own custom model functions