[ANN] GModelFit.jl: a model fitting framework for Julia.
Dear community, after a few years of testing and improving the user interface, the GModelFit data-driven model fitting framework for Julia is now released!!
The package allows to define complex models (both numerical and analytical) to be compared to empirical data. A non-linear least square minimizer varies the model parameters to reduce the residuals between model and data, thus providing the best fit parameter values (with uncertainties).
Links:
- repo: GitHub - gcalderone/GModelFit.jl: A data-driven model fitting framework
- docs: Home ยท GModelFit.jl
Quick example:
using GModelFit
dom = Domain(0:0.01:5)
model = Model(dom, :bkg => GModelFit.OffsetSlope(1, 1, 0.1),
:l1 => GModelFit.Gaussian(1, 2, 0.2),
:l2 => GModelFit.Gaussian(1, 3, 0.4),
:main => SumReducer(:bkg, :l1, :l2))
data = GModelFit.mock(Measures, model)
best, res = fit(model, data)
The above code results in the following output:
(Components:
โญโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโฎ
โ Component โ Type โ Eval. count โ Min โ Max โ Mean โ NaN/Inf โ
โโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโค
โ main โ SumReducer โ 204 โ 0.8851 โ 3.151 โ 1.543 โ 0 โ
โ โโ bkg โ GModelFit.OffsetSlope_1D โ 65 โ 0.8851 โ 1.398 โ 1.142 โ 0 โ
โ โโ l1 โ GModelFit.Gaussian_1D โ 87 โ 2.189e-49 โ 2.018 โ 0.2016 โ 0 โ
โ โโ l2 โ GModelFit.Gaussian_1D โ 78 โ 3.608e-13 โ 1.007 โ 0.2 โ 0 โ
โฐโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโฏ
Parameters:
โญโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโฎ
โ Component โ Param. โ Range โ Value โ Uncert. โ Actual โ Patch โ
โโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโค
โ bkg โ offset โ โ 0.9877 โ 0.009352 โ โ โ
โ โ x0 โ โ 1 โ (FIXED) โ โ โ
โ โ slope โ โ 0.1026 โ 0.004225 โ โ โ
โโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโค
โ l1 โ norm โ 0:Inf โ 1.01 โ 0.01883 โ โ โ
โ โ center โ โ 2.002 โ 0.003727 โ โ โ
โ โ sigma โ 0:Inf โ 0.1997 โ 0.003704 โ โ โ
โโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโค
โ l2 โ norm โ 0:Inf โ 1.002 โ 0.0288 โ โ โ
โ โ center โ โ 3.005 โ 0.0102 โ โ โ
โ โ sigma โ 0:Inf โ 0.3969 โ 0.01204 โ โ โ
โฐโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโฏ
, Fit results:
#Data : 501 Red. fit stat.: 1.0225 (DOF: 493)
#Free : 8 Elapsed time : 0.011 s
Status: OK
)
A quick plot of data and best fit model can be obtained with (e.g.) Gnuplot.jl:
using Gnuplot
@gp data best
(this new post replaces a previous one, wrote when the package still had the old name โDataFittingโ: [ANN] DataFitting.jl general purpose data fitting framework)
Comments and suggestions (as well as PRs) are very welcome!!