Updated:
23.02.2015


Software package SASfit
for fitting smallangle scattering curves
SASfit has
been written for analyzing and plotting small angle scattering data.
It can calculate 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 polarised neutrons. The global fit helps to
determine fit parameters unambiguously which by analyzing a single
curve would be otherwise strongly correlated. The program has been
written to fulfill the needs at the small angle neutron scattering
facility at PSI (kur.web.psi.ch).
The numerical routines have been written in C whereas the menu
interface has been written in tcl/tk and the plotting routine with
the extension blt.
Author Information:
SASfit
by
Joachim
Kohlbrecher and Ingo
Bressler
Laboratory for Neutron
Scattering Paul Scherrer Institut CH5232 Villigen PSI Switzerland
Tel: +41 56 310 3165 Fax.: +41 56 310 20 87
SASfit is
available for users analysing data taken at PSI SASfit has been
developed at the Paul Scherrer Institute (PSI) and remains copyright
of the PSI. SASfit is provided for users of the PSI
facilities SASfit is provided "as is" and with no
warranty.
download
SASfit package: (source, Windows binary , Linux binary, MacOS
binary) (previous
versions)
License Readme
Manual with a jumble of formulas used by SASfit
(pdf, html)
Video about “How
to set up the build environment” Video about “How
to Create a New Plugin”
Version information:
 SASfit0.94.6 20141214
 improved analysis of confidence intervals of fit parameters:
 clickable correlation coefficients in the matrix highlight associated
pair of fit parameters
 covariance matrix elements are highlighted according to their correlation
coefficient
 highlighting and selection of correlated params improved
 SASfit 0.94.5 20141003
 storing intensity and size distribution in batch processing routine
 changed the width of the error bar, assuming that the supplied error is FWHM
 changed the internal procedure for plotting error bars
 resolution parameter can now also be plotted
 changed the order of plotting the fit results
in "integral structural parameters"
 interruption of batch processing or series analysis implemented
 SASfit 0.94.4 20140903
 a new interrupt button can stop now the intensity evaluation of fitting
procedure after each qvalue. Before the whole scattering curve needed to be
calculated.
 progress bar has been added to the GUI
 bug fix in plotting error bars of multiple data sets.
 implementation of another method for thinning out oversampled data sets. The
new methods is performing an averaging of data points depending on a
userdefined maximum allowed qsmearing and a userdefined maximum distance
in intensity in units of the error bar of the data points, i.e. an averaging is
only performed, if the intensities look similar with ntimes the intensity
error bars.
 bug fix in GUI if one wants to forget old data and load a new data sets.
 SASfit 0.94.3 20140702
 bug fix in the plugin for parallel epiped
 spelling errors in the menue interface
 in case of slow convergence the OZ solver can be interupted now
 SASfit 0.94.2 (20140206)
 new binding for zoom option, which works better for a mouse with one
button (plot zoom by ctrl+leftmouse btn)
 removed key binding for scattering contributions
 Added several iteration schemes for finding the fixpoint of the OZ equation.
 Added a tab for the total correlation function h(r)
 Added also some root finding algorithms for solving OZ equation.
 resolution parameter from file was not scaled during the change of units
for Q
 bug fix in calculation of xi for sq for wormlike structures (PS1 model)
 wrong label for contrast in TeubnerStrey model
 bug fix in SPHERE+R^a Nagg form factor in assignement of core volume
 data export format set to scientific notation in the form x.yyyE?zz only
 SASfit 0.94.1 (20140205)
 added missing parameter label for Hamaker constant in DLVO potential
 Penetrable Sphere Model was not properly assigned.
 added all available plugins into the distribution binaries
 SASfit 0.94.0 (20140120)
 A new interface for solving the Ornstein Zernike equation for different
closure relations and potentials (OZsolver) has been added. The solutions
of the OZsolver can be used as a structure factor as a spline function
without the possibility to fit a parameter of the potential at the moment.
 manual has been extended for the ferrofluid plugin scattering functions
 orientation of the 2D simulation was rotated by 90deg.
 correction of the manual for Porod's approximation of cylinders.
 minor bug fix for Porod's approximation of a long cylinders.
 SASfit 0.93.5 (20130609)
 implementation of a plugin for a form factor and correlation function for
spin misalignment
 bug fix for the scattering contribution of the individual chains in the form
factors WORM*, ROD*, and DISC*
 bug fix in the form factor MagneticShellCrossTerm
 added some subfolders for form factor plugins
 bug fix in the calculation of the scattering length density SLD(E) of xrays
 SASfit 0.93.4 (20130430)
 In the menu for confidence interval the nondiagonal elements of correlation
matrix are shown together with the confidence interval for the fitted
parameters as diagonal elements.
 added some additional parameters into the fit menu useful to evaluate the
goodness of a fit
 new plugin for Parallelepiped abc of dimension a*b*c to be found under
[by pluginsanisotropic obj]
 new plugin for generalized Guinier law to be found under
[by pluginsnonparticular structures]
 Renamed HMI format into BerSANS format and did some debugging. Now
also all masked data points (negative errors) are ignored.
 added key bindings Home, End, PgUp, PgDn, Insert, Delete for going to
firstlastnextprevious entry or to add and remove an entry
 adding plugin with a series of form factor for strongly anisotropic structures
with local planar and local cylindrical shapes
 adding a new plugin form factor for spheres with fuzzy interfaces. The
existing form factors ExpShell, LinShell and LinShell2 have been moved to this plugin.
 New plugin of FuzzySphere and CoreShellMicrogel. Also the related
functions for calculating the corresponding radial proles have been added.
 new section in the manual about absolute scale, molecular weight, etc.
 for the form factors flat cylinder long cylinder, and Porod cylinder
the limiting case q=0 is now treated properly
 small bug fix in the peak function Gamma (Area) for checking validity of
parameter
 bug fix of the resolution parameter handling in case it will be read in from
a data file
 included under peak function the Maxwell distribution and the
generalized Maxwell distribution
 batch fitting
 SASfit
0.93.3 (2011054)
 bug fix in the model "Stacked Discs". The structure factor describing the stacking order contained a bug.
 extended plugin for stroboscopic measurements, especially for TISANE
 plotting: ignore negative y values on log() and sqrt() scales
 included Pcs_homogeneousCyl form factor
 bug fix of ferrofluid plugin
 added radial averaged form factor in ferrofluid plugin
 extended the spline plugin to be used also as form factors.
In case somebody wants to fit a spline function to e.g. a TEM size distribution,
this function need to be available as a form factor and not only as a size distribution.
 added configuration file 'config.ini' as replacement for deprecated sasfit_init_public.tcl
 added switch for disabling 'about' popup at start time via config file
 added checkbox (ascii options) for ignoring zero(0) intensity at the beginning of data
 removed , as data column separator
 added substitution of , => . for data columns (german decimal format to english format)
 added interface function for covariance matrix output
 covar matrix visualisation with parameter highlighting
 added a chapter about particle number densities, volume fraction and absolute intensities in the manual.
 LogNorm_fp size distribution is now plugin function. The new plugin is not backwards compatible.
The manual explains a bit the difficulties in describing the size distribution in terms of a volume fraction.
 added scrollbars for fit parameter window
 SASfit
0.93.2 (20100708)
 bug fix in ferrofluid plugin
 added radial averaged form factor. Included radial averaged form factors
also for SAW model
 Extended the spline plugin to be used also as form factors. In case somebody
wants to fit a spline function to a size distribution, this
function needs to be available as a form factor and not only as a
size distribution.
 forwarding intermediate linear Guinier approximation results to the plot
window (green curve)
 display of linear Guinier approximation results in ISP text output window
 residuum window updated with linear Guinier approximation residuum
 by default disabled, see checkbox in ISP window
 fixed SLDCalculator in source package (missing data files)
 added KNOWN_BUGS.txt (not complete)
 optical(layout) GUI improvements:
 removed thick margin around text boxes for ISP/analyt results
 added resizeable file list in ISP window
 added resizeable 'merge files' list when loading data files
 added menu>tools>toggle console to show the console, it is hidden
by default now
 added 'OPTIM' parameter to src/CMakeLists.txt for optimized binary
generation on the underlying hardware, use: 'cmake DOPTIM=TRUE'
 added configuration file 'config.ini' as (working) replacement for
deprecated sasfit_init_public.tcl
 added switch for disabling 'about' popup at start time via config file
 added switch to set the default data directory
 added checkbox (ascii options) for ignoring zero(0) intensity at the
beginning of data
 SASfit 0.93.1 (20100513)
removed obsolete print menu entries and fix
of textual output bug
 SASfit 0.93.0 (20100505)
 copy&pasteable text output, as well as csv export (semicolon separated) for
 integral structural parameters (ISP) data
 parameters of contributions
 moments of size distribution
 improved/rewritten file selection GUI for ISP series fitting
 new and improved plugins: Kratky
Sphere, JuelichCoreShell
(rewritten), Langevin
 data is always plotted first, below the calculated lines
 error bars are drawn behind data points
 fixed wrong plotting of very large error bars
 for logplotting on the yaxis, negative data is ignored (not plotted,
was abs() before)
 fix to prevent the user from loading a SASfit project file as data
 fix in FormFactor Background
(improved numerical stability)
 bug fix for saving parameter files on windows
 bug fix in gui when selecting form factor TwoAttachedSpheres
 bug fix for "Singular Matrix" error (may still occur because of
other reasons)
 documentation update
 SASfit 0.92.3 (20100102)
 implemented
three different versions for worm like chains as described in
Macromolecules 1996, 29, 76027612. They have been implemented as
structure factors [anistropic
objP'(Q):local cylindrical geometry], so that it can be
combined with different crosssection form factors of local
cylindrical objects [anisotropic
obj.Pcs(Q) for cylindrical obj.].
 new form factor plugin for a sphere with 3 shells
 new structure factor for a regular cluster up to maximal 5 particle
(tetrahedron like)
 correction of menue entry order for magnetic shell and superparamagnetic shell
 new plugin for ferrofluid particles with a scheme similar to the one
from J.S. Pedersen for Gaussian Chains attached to a spherical
particle
 bug fix in mMemberedTwistedRing
 two more default plot: Guinier
(rods) and Guinier (sheets)
 bug fix in loglogistic
peak
 implementation of asymptotic limits for fractals, which require a numerical
integration. The integration often fails for large qvalues for
which an asymptotic solution is available or has been constructed.
 reprogrammed SquareWell1
structure factor for a squared well potential
 replaced sasfit_qromb function by sasfit_integrate
function in the form factor for the torus. The sasfit_qromb
routine did not work for some unknown reason. This needs to be
checked.
 new structure factor for a thin square well potential
 bug fix in BeaucageExpPowLaw2
 bug fix for setting plot option Holtzer
in multiple data set tab
 public initialization file for setting the default working directory by
the user to any path
 SASfit 0.92.2 (20091008)
 data reduction without data loss, after loading a project file the data
reduction can be reversed
 info message about a guessed error bar is displayed only once when the
ascii options are changed (not for every file)
 added tooltip for complete filenames in merge window
 color for selected fit region stays at dark grey after loading an old project
file
 removed unused help buttons in file open dialogs
 fixed error loop when adding new data to previously loaded project file
 fix for a homedir being e.g. 'U:\' at startup on Windows
 minor correction in the routine to guess the error bar (normalization)
when only two column are supplied
 fix of rare error "form factor param out of range: 1"
 SASfit 0.92.1 (13th of September)
 fix for GUI problem with two plugin form factors (contribution updates). If
there are two plugin model functions with a different number of
parameters, you can't switch/cycle trough the contributions anymore
(Next, Previous).
 fix for saving a parameter file (file creation was disabled by accident in
previous version)
 SASfit 0.92.0 (8th of September)
 data reduction when loading a data file: only a subset of data points
can be loaded based on the overall point count or distance between
points
 default directory for file selection is the current users home directory
now
 documentation update
 fixed doxygen documentation and latex issues
 Holtzer and DebyeBueche plot style added
 fixed bessel function evaluation for large values for resolution
calculation
 fix for data file selection when error pops up and retry after input format
correction
 fixed names of resolution parameter labels
 fixed error when loading default data file with sasfit installed in
directory with spaces (again)
 fixed bug with loading a 'new ..' data set when there were already some
loaded: data structure maintenance issue
 unified window titles
 SASfit 0.91.1 (8th of July 2009)
Since the previous version of SASfit
(0.90.1, January 2009) there were a lot of changes to primarily
improve the quality and portability of the code. Here is only a
short summary of the larger changes done:
 added detailed documentation on setup and installation of SASfit, as well
as plugin development (how to add own model functions)
 fixed some bugs in plugin framework
 added automatic determination of available plugins at build time
 enabled static building for plugins
 increasing maximum number of model parameter in GUI
 verified build compatibility for MacOS
 Extended and improved Scattering Length Density (SLD) Calculator. Now the
scattering length density for xray energies between 1keV and 24.9
keV can be calculated.
 a few new form factor have been included: generalized
Gaussian coil, generalized
Gaussian coil 1, generalized
Gaussian coil 2, ellCylShell1,
ellCylShell2
 SASfit 0.90.1 (12th of January 2009): bugfix in pluginGUI
 SASfit 0.90 (5th January 2009): new release including full source code and
binaries for windows and linux.
Since the previous version of
SASfit (0.87, March 2008) there were a lot of changes to primarily
improve the quality and portability of the code. Here only a short
summary of the 'big' changes done (as of Dec. 17th, 2008):
 Structured
the source code into the modules sasfit_common, sasfit_sd,
sasfit_sq, sasfit_ff, sasfit_core.
 Switched
to CMake build environment for platform independence. Build and
tested SASfit on Linux and Windows, 32bit as well as 64bit.
 Replaced
intensive string comparisons for model function selection in each
interation step by more reasonable selection of functions pointers
at initialization time and direct call of the according function at
iteration time.
 Fixed a
lot of bugs and typos in the GUI (but there are still some)
 Added
flexible plugin system for external model functions. This way, all
model functions can be provided as plugins and though move out of
the core algorithms. Also enables easy customization. In the future
the modules sasfit_sd, sasfit_sq, sasfit_ff and sasfit_peaks will
be converted to external plugins.
 Added
sasfit_peaks, a new class of model functions containing peaks.
 Added
capability to ship SASfit as standalone executable, allows running
on system without the need of external libraries (e.g. Tcl, BLT,
...)
 4.03.2008: (SASfit version 0.87) The last modification in the menu navigation
still had bugs. Hopefully they are removed in this version.
 28.02.2008:
(SASfit version 0.86) The menu navigation has been debugged and
optimized. Corrected a bug in calculating the polydispersity index
(PDI) in DLS cumulant analysis (PDI=Gamma2/Gamma1ˆ2)
 25.01.2008: (SASfit version
0.85) A bug for the form factors ROD+Rˆa* has been corrected.
The implementation of the scaling approximation, partial structure
factors and local monodisperse approach has been improved.
 09.01.2008: (SASfit version
0.84) Form factor for wormlike micelles (WORM+Chains(RW),
WORM+Chains(RW)_Rc, WORM+Chains(RW)_Nagg) and for cluster
aggregates (Mass
Fractal (Exp(x) CutOff), FisherBurford, MassFractExp,
MassFractGauss, Mass Fractal (Exp(xˆa) CutOff),
DLCAggregation, RLCAggregation, MassFractOverlappingSph)
have
been implemented. Furthermore a simple scheme for importing
data from the clipboard has been implemented, which e.g. allows to
copy/paste data from spreadsheets directly into SASfit.
 04.10.2007: (SASFit version
0.80) Next to the correction of some bugs a simulation option for
multiple data sets has been implemented. Furthermore an option has
been implemented to subtract a theoretical scattering contribution
from the experimental data set, like e.g. a constant background
signal. The format of the projects have up to now never been tested
for compatibility. An attempt has been started to change this for
the future versions.
 20.08.2007: A couple of form factors for spherical, elliptical, cylindrical and
very long rodlike micelles consisting of a homogeneous core and
which are either grafted with Gaussian chains "*(RW)*",
or grafted with semiflexible selfavoiding and interacting chains
"*(SAW)*"
or a corona with powerlaw decaying profile r^(a)
"*(R^a)*"
have been implemented: SPHERE+Chains(RW),
SPHERE+Chains(RW)_Rc, SPHERE+Chains(RW)_Nagg, SPHERE+Chains(SAW),
SPHERE+Chains(SAW)_Rc, SPHERE+Chains(SAW)_Nagg, SPHERE+Rˆa,
SPHERE+Rˆa_Rc, SPHERE+Rˆa_Nagg, ELL+Chains(RW),
ELL+Chains(RW)_Rc, ELL+Chains(RW)_Nagg, CYL+Chains(RW),
CYL+Chains(RW)_Rc, CYL+Chains(RW)_Nagg, ROD+Chains(RW),
ROD+Chains(RW)_Rc, ROD+Chains(RW)_nagg, ROD+Rˆa, ROD+Rˆa_Rc,
ROD+Rˆa_nagg
 30.6.2007: Rudimental copy algorithm to copy plots or parameters into
windowclipboard. Everything is copied in wmfformat and the option
only works fine for information in nonscrolled widgets. Copyoption
can be activated with right mouse button or double click of left
mouse button. The form factor for a triaxial ellipsoidal
(triaxEllShell) shell with semiaxis a,
b, c
and shell thickness t is available.
 4.6.2007: Implementation of form factors for cylindrical shells with circular
crosssection and capped ends (CylShell2)
and without capped ends (CylShell1)
together with an approximation for very long cylindrical shells
(LongCylShell)
 27.3.2007:
Implementation of form factor for bicontinuous systems
(TeubnerStrey and DAB)
 23.02.2007:
Implementation of the structure factor for a system of charged,
spheroidal objects in a dielectric medium according to the RMSA
model of Hayter and Penfold
 11.11.2006:
Implementation of a semiflexible polymer according to Kholodenko,
some form factors with plane geometry, which are intended to be used
with lamellar structure factors
(homogenousXSTwoInfinitelyThinPlates,
LayeredCentroSymmetricXS, BiLayerGauss),
a sphere with Gaussian chains attached SphereWithGaussChains
and a slightly different parametrised form factor named
BlockCopolymerMicelle. An additional
option for reading ASCII data files is now available, which allows
to convert values for the scattering vector from nm^1 into A^1 and
vice versa.
 23.10.2006:
Implementation of a polydsiperse star PolydisperseStar
and of flexible ring polymers FlexibleRingPolymer
and mMemberedTwistedRing.
 22.10.2006:
Implementation of the form factor of a flexible polymer with
Gaussian statistics (in different parameterisations Gauss,
Gauss2, Gauss3)
for a polydisperse flexible polymer with Gaussian statistics
(GaussPoly) and a flexible ring of
polymer with Gaussian statistics (FlexiblePolymerRing)
 12.10.2006:
Under the menu option "Calc/DLS..."
next to a cumulant fit also a double stretched exponential decay can
be selected to fit dynamic light scattering data.
 5.10.2006:
Implementation of a spherical shell with a diffuse (expontential)
scattering length density profile inside the shell caused by solvent
penetration into the shell
 13.9.2006:
Implementation of a form factor for spheres with gaussian chains
attached.
 19.7.2006:
first release (current version: 0.71)
at the moment only a
windows version is available. The installation files for tcl/tlk and
blt are included in the distribution file.

