Analysis of small-angle scattering patterns is never easy, not for monodisperse protein samples, nor for samples containing polydisperse scatterers (which has been the focus of my research).
This is in a large part due to the ambiguity of the data: the same data can be analysed with a lot of different models. Despite this ambiguity, however, trying to get a good fit (using a model of a given shape and a given polydispersity) can be like playing darts in the dark.
McSAS, the Monte Carlo program we developed, makes life easier. It can fit scattering patterns from polydisperse samples, giving you the size distribution for a given shape. Crucially, the size distribution has no assumptions: it can be of any shape, with as many modes (peaks) as necessary.
This publication describes the last two years of collaborative development of the small-angle scattering pattern analysis code. During this time, we changed the program from a scientist-written piece of functional but illegible code (which was hard to use and adapt), into a package with clear code structure, and a GUI to make it easy to use. This could not have been achieved without the excellent knowledge and patience of Ingo Breßler, without whose expertise none of the improvements would have happened. The difference between the two variants is like the difference between a 10-year old kid’s essay and a proper paper. Both convey information, but there is one which will last into the future.
In my experience, the effort required to make, change and maintain code is larger than people think. Consequently, programming is a quite underappreciated branch in science, usually relegated to a small section at the end of a journal.
While it is relatively easy to make a small program that analyses one dataset once, turning this into a program that can be used more broadly is hard. Most of the possible use- and abuse-cases should be considered, and if the program is not structured clearly, it cannot be maintained over the years. The change of McSAS took several years of continued effort (see, for example, the small fragment of update notices in Figure 1), a duration which is not uncommon. Other examples of this are the development of PyFAI, Irena and SASfit, each of which took many people many years to get them to their current state. After years of such effort, one may hope to be able to write a single publication. In the current “metrics”-driven environment, this appears to be a good path away from “success”.
However, we small-angle scatterers need such concerted effort now more than ever. We do not have a “standard” suite of analysis programs, nor do we even have a consistent way of performing data corrections! Letting the user fend for themselves in this respect may have been adorable thirty years ago, but can no longer be accepted if the technique is to reach maturity.
Anyway, please play around with McSAS and let us know if you have some comments, want to congratulate us or want to contribute! P.S.: The developers will be at the SAS2015 conference, ready to accept drinks :).