Fit

Interactive curve fitting for Linux, Windows and macOS

Extension points

One section per seam: what you write, where it goes in, and what is registered through it in this build. Generated from the registries themselves.

Curve type

A shape that can be placed on data and fitted. The only seam whose members self-register, from the unit's own initialization section.

name id class analytic group amplitude unbounded placed by point set preferred axis
2 br. Pseudo-Voigt{6DE06C1B-E51A-48C6-B036-C81A841EC468}T2BranchesPseudoVoigtPointsSetyesTDiffractionAngleAxis
Asym. Pseudo-Voigt{74A6EC30-A019-475D-99A3-B62C4AB03A6C}TAsymPseudoVoigtPointsSetyesTDiffractionAngleAxis
Doniach-Sunjic{EC663A56-0E89-4BC3-91FD-F243AADB253E}TDoniachSunjicPointsSetyesTDiffractionAngleAxis
Exponentially Modified Gaussian{4D320BBE-1000-4D70-A860-3AC0D7076FF5}TEmgPointsSetyesTDiffractionAngleAxis
Gaussian{FF4E399C-C33C-482E-84D7-952700BCD4AE}TGaussPointsSetyesTDiffractionAngleAxis
Lorentzian{7CA6FDAF-95B7-4D84-BCBA-130C828407CC}TLorentzPointsSetyesTDiffractionAngleAxis
Moffat{E6E51486-6970-4AB3-8010-908664116379}TMoffatPointsSetyesTDiffractionAngleAxis
Pearson VII{195B2208-9AA0-4281-8CAB-7D29D959AC4D}TPearson7PointsSetyesTDiffractionAngleAxis
Pseudo-Voigt{9F27DC7C-970F-4DAC-88CD-F5FB3400D38D}TPseudoVoigtPointsSetyesTDiffractionAngleAxis
Skewed Gaussian{A32763F7-18DC-4378-A8E6-C0CCE28B5FD6}TSkewedGaussianPointsSetyesTDiffractionAngleAxis
Step (erf){3FC3B846-3A44-4ACE-B91B-CF84304391F9}TStepPointsSetyesTDiffractionAngleAxis
User Defined{D8CAFCE5-8B03-4CCE-9E93-EA28ACB8E7CA}TUserPointsSetyesTIdentityAxis
Voigt{EEED2EC3-D036-473E-81E1-8E40943D8158}TVoigtPointsSetyesTDiffractionAngleAxis

Data loader

Reads one file format. The Open dialog's filter is built from this registry, so a build can only offer what something can actually read.

class extensions format
TDATFileLoader.DATDiffraction profile
TOHLCFileLoader.CSVPrice data, OHLC

Minimizer

An engine, and the capability answers the client greys choices out from. Its factory returns the IFitBackend that does the work.

kind name description needs formula needs python sidecar supports weighting supports curve scaling has backend factory
0Downhill Simplex (native)The original algorithm. Needs no Python and fits any curve type, including those with no formula.yesyes
1Levenberg-Marquardt (Python/lmfit)Trust-region least squares with uncertainties. Needs the Python sidecar, and a curve type that has a formula.yesyesyesyes

Loss function

What "best fit" means. Compatibility with a curve type is DERIVED from the two capability flags, never from a table of type names.

kind name description self normalising least squares poolable
0R-factorSquared deviations normalised by the data, so values are comparable between datasets.yesyes
1R-factor (legacy)The original objective. Normalised by the model rather than by the data, so with curve scaling on it can be lowered by inflating the model. Kept for comparison.yes
2Sum of squaresPlain least squares, with no normalisation at all - the value scales with the data, so compare it only within one dataset.yesyes
3Relative deviationAbsolute deviations as a fraction of the data - reads directly as "the model is off by this much".yes

REST action

One verb of the HTTP API the desktop client and any other caller use.

name description asynchronous
minimize-differenceFit the current model to the profile.yes
minimize-difference-againContinue fitting from where the last fit stopped.yes
minimize-number-of-curvesFit, then drop curves that do not earn their place.yes
do-all-automaticallyBackground, positions and fit, in one pass.yes
smooth-profileSmooth the experimental profile.yes
compute-curve-boundsWork out where each curve begins and ends.yes
compute-background-pointsPropose background points from the profile.yes
compute-curve-positionsPropose a curve position for each peak found.yes
select-all-points-as-curve-positionsUse every profile point as a curve position.yes
select-entire-profileFit over the whole profile rather than a marked interval.yes
create-curve-listRebuild the curve list from the current model.
stopStop the operation now, keeping what it has reached.
subtract-backgroundSubtract the background from the profile.
select-profile-intervalRestrict the fit to the interval between start and stop.

Server module

An analysis vertical's server side: the resources it answers and its per-problem session state.

UI module

A module's contribution to the window, declared as data: menu entries and one panel. The client names no module type.

Python sidecar pack

Names a module's <name>_routes.py, which the sidecar imports on start. Only the name travels; the sidecar finds the file itself.

Curve builder

Builds every curve a marked point set describes. Without one, the engine takes the position-based path.

Chart overlay

Redraws a module's own marks after the model is recomputed, so the client need not name the module to refresh it.