+A  Click here to enlarge/reduce to/back from full screen 
Paul Scherrer Institut PSI KuR - Kleinwinkelstreuung & Reflektometrie
PSI ETH NUM LNS LDM SINQ   phone & e-mail



Updated:
02.01.2010
E-Mail: joachim.kohlbrecher@psi.ch


Printer Friendly Printout without Logo or Navigation Elements available here... just click and print

Software package SASfit
for fitting small-angle 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
ETHZ & PSI
CH-5232 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
jumble of formulas used by SASfit (pdf, html)

Version information:

  • SASfit 0.92.3 (2010-01-02)
    • implemented three different versions for worm like chains as described in Macromolecules 1996, 29, 7602-7612. They have been implemented as structure factors [anistropic obj|P'(Q):local cylindrical geometry], so that it can be combined with different cross-section 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 q-values
      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 (2009-10-08)
    • 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 Debye-Bueche 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 x-ray 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): bug-fix in plugin-GUI
  • 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):
    1. Structured the source code into the modules sasfit_common, sasfit_sd, sasfit_sq, sasfit_ff, sasfit_core.
    2. Switched to CMake build environment for platform independence. Build and tested SASfit on Linux and Windows, 32bit as well as 64bit.
    3. 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.
    4. Fixed a lot of bugs and typos in the GUI (but there are still some)
    5. 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.
    6. Added sasfit_peaks, a new class of model functions containing peaks.
    7. 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) Cut-Off), Fisher-Burford, MassFractExp, MassFractGauss, Mass Fractal (Exp(-xˆa) Cut-Off), 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 spread-sheets 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 rod-like micelles consisting of a homogeneous core and which are either grafted with Gaussian chains "*(RW)*", or grafted with semi-flexible self-avoiding and interacting chains "*(SAW)*" or a corona with power-law 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 window-clipboard. Everything is copied in wmf-format and the option only works fine for information in non-scrolled widgets. Copy-option 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 cross-section 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 bi-continuous 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.