Fityk 0.7.6 review

by on

Fityk project is a general-purpose nonlinear curve fitting and data analysis software. Although it is being developed to analyze p

License: GPL (GNU General Public License)
File size: 0K
Developer: Marcin Wojdyr
0 stars award from

Fityk project is a general-purpose nonlinear curve fitting and data analysis software.

Although it is being developed to analyze powder diffraction patterns, it can be used to fit analytical functions to any kind of data: crystallographic module is an independent part of the program. Apart from crystallography fityk is reported to be used also in chromatography, photoluminescence, infrared and Raman spectroscopy, and in other fields.

At present fityk knows only about common peak-shaped functions (Gaussian, Lorentzian, Voigt, Pearson VII etc.) and polynomial. User-defined functions will be implemented in 2005.

In terms of powder diffraction fityk will fit the data with a set of position-correlated peaks to give the refined lattice parameters, zero-shift, sample displacement and wavelength.

Fityk offers everything a decent refinement program should offer but first of all intuitive graphical interface. Apart from the standard Marquardt least-square algorithm one may choose a genetic algorithm or Nelder-Mead simplex method for complex or unstable cases.

Fityk already works under Linux, Windows and MacOS X and can in principle be ported to other systems because it's GUI is written with a portable wxWidgets library. And it is free software (GPL).

Here are some key features of "Fityk":
It is the heart of the program - finding minimum of weigthed sum of squared residuals, in other words - fitting function to data. Nonlinear fitting is a difficult problem, and there is no perfect solution. Fityk offers three well-known algorithms: Levenberg-Marquard gradient-based method, Nelder-Mead downhill simplex method and Genetic Algorithms. Every of these methods has a set of adjustable parameters, for greater flexibility.
Data - a set of (x, y) points, can be read from text file, or from file in one of other supported formats. When loading data, you can read standard deviations of y 's, if given, read only selected points (eg. first thousend, or every third point) or merge neighbouring points, to reduce noise. In every moment you can activate or disactivate selected points (disactivated points are not subject to fitting) or change standard deviation.
Fitted curve is given as a sum of functions. All functions are given by parametrized formulae, eg. function of gaussian type has such parameters like height or position of center. Availaible functions are: gaussian, lorenzian, pearson VII, voigt, pseudo-voigt and fifth-order polynomial.
Every parameter of function is given as a constans or as a variable or as a function of other parameters. First case is clear. In second case value of the variable can be adjusted when fitting. Optionally also domain of the variable can be given. In last case, the parameter can be given in terms of other parameters, eg. as a multiplication of constant and variable parameters.
Background (baseline) may be obtained as linear or spline interpolation of points selected by the user or as a background function, that optionally can be fitted. Currently the only function suitable for background is a polynomial.
There are two ways of dealing with error in x 's. First requires specifying displacements of x in points, where it is known - program will interpolate it to the rest of points. Second assumes that the source of displacements is known and given by a zero-shift functions, which can be fitted.
All commands, that are changing anything, what can influence further run of the program (eg. adding baseline, but not displaying help), can be logged to file. This is one of the ways to obtain a script, that can be edited and reused. Using scripts can save a lot of work, eg. it is possible to write scripts that will fit a series of data files and output results.
The crystallographic module of the program enables easy adding peaks, that represents Bragg reflections. It is assumed that analyzed data points are intensities in function of 2theta, typically from X-ray diffraction. User have to define phases (lattice parameters), wavelengths with their relative intensities and which hkl 's are present. Optionally, width and shape parameters can be constrained, using formulae taken from DBWS program.
Fityk is written in C++. The program (GUI) can run on most Unix species with GTK+, on MS Windows and MacOS X. Ports to other platforms supported by wxWidgets library are also possible.
The program comes in two versions: GUI (Graphical User Interface) version - more comfortable in most cases, and CLI (Command Line Interface) version (named cfityk to differentiate) - used only in special situations, when visualisation is not essential and user prefers to use a text terminal.
There is a mailing list where everyone can ask a question. You can also write directly to program's author, although usually it's better to use the mailing list. Asking for a change in fityk or for new feature will usually result in putting the request on TODO list or, if it is already on TODO list, in assigning higher priority to it.
It is free software; you can redistribute and modify it under the terms of GNU General Public License. There is NO warranty.

What's New in This Release:
erf and erfc functions were added.
Session saving was improved.
The user interface was enhanced.

Fityk 0.7.6 keywords