Recent Releases of symfit

symfit - symfit 0.5.6

  • Switched scipy.integrate.odeint for the more modern scipy.integrate.solve_ivp. This greatly expands the possible ODE solvers one can use. By default, we still use odeint's LSODA with the old settings so existing code is not affected.
  • Significant clean-up of the code base by removing some features which were once introduced to support both py2.7 and py3.x.

- Python
Published by tBuLi about 3 years ago

symfit - symfit 0.5.5

  • Fixed critical pickling bug caused by a change in sympy's pickling (#342).
  • Minor bug fixes.

- Python
Published by tBuLi almost 4 years ago

symfit - symfit 0.5.4

  • Changed licence from GNU to MIT.
  • Added python 3.9 support, dropped python 3.5.
  • Add jupyter latex printing.
  • Remove leastsqbound.py, adapt MINPACK minimizer to use scipy.optimize.least_squares.
  • Improved pickling.
  • Improved various tests.
  • Various bugfixes.

- Python
Published by tBuLi over 4 years ago

symfit - symfit 0.5.3

Bugfix release.

Most importantly this fixes the printing of HadamardPower objects, relaxes demands on the scipy version, and switches from unittest to pytest.

- Python
Published by tBuLi over 5 years ago

symfit - symfit 0.5.2

Symfit 0.5.2 offers a fantastic new feature: ODEModels now also accept parameter objects as initial values, allowing them to be optimized as well! Additionally it undoes some of the performance penalties that were accidentally introduced in 0.5.0-0.5.1, making it as fast again as the 0.4.x series.

Full changelog: - ODEModels can now use parameters for their initial values, so these can be optimized during the fitting! - Hessian and jacobian models are now generated lazily to prevent slow model building. - The output of models was a namedtuple, which has a limit to the amount of arguments in older python versions. This has therefore been replaced by a custom tuple subclass called ModelOutput. - Numerous small big fixes - Documentation improvements

- Python
Published by tBuLi over 6 years ago

symfit - symfit 0.5.1

Bugfix release:

  • Global likelihood fitting now works as advertised.
  • CallableNumericalModel's now only need the connectivity_mapping for non-analytical components.
  • Printing of special functions like bessel functions now works.
  • Fixed a bug in the printing of matrix multiplication.
  • General improvements to the documentation.

- Python
Published by tBuLi over 6 years ago

symfit - symfit 0.5.0

The long awaited symfit 0.5.0 is here. And it was worth the wait, because it has got some very significant improvements over previous versions, including:

  • Hessian minimizer trust-constr added, and all our models and objectives support hessian minimizers fully.
  • The components of models can now depend on each other, which greatly improves readability, allows for more creative definition of models, and means that expensive to calculate intermediates can be reused by other components.
  • MatrixSymbols are now supported, meaning a vast number of Matrix equations can now also be fitted with great ease.
  • Improved printing of fit results.
  • Better checking if data is provided for all variables.
  • BivariateGaussian added as a predefined distribution.
  • A whole sway of minor and mayor bug fixes.

- Python
Published by tBuLi almost 7 years ago

symfit - symfit 0.4.6

A simple but important new version of symfit: we have made symfit multiprocessing compatible, finally delivering on that long standing promise of scalability.

- Python
Published by tBuLi over 7 years ago

symfit - symfit 0.4.5

Most important change is an improvement of the documentation by including examples in the docs, and the new feature CallableNumericalModel. With this feature, symfit can now also fit arbitrary python callables, while still allowing users access to the convenient symfit API.

- Python
Published by tBuLi over 7 years ago

symfit - symfit 0.4.4

Proudly presenting symfit 0.4.4, the best version of symfit to date.

Biggest changes: - Introduction of the BasinHopping minimizer, a wrapper around scipy's basinhopping. - Huge performance upgrade by making sure sympy code is translated to scipy compatible code only once per model. - Fixed an issue with using constraints and bounds at the same time. - parameter convenience method now allows you to set values etc immediately.

- Python
Published by tBuLi over 7 years ago

symfit - symfit 0.4.3

Introduces the first global minimizer by wrapping scipy's differential evolution algorithm, and adds the possibility of chaining several minimizers.

Additionally, this fixes an important bug due to an incompatibility with sympy==1.2 by demanding 1.1.1.

- Python
Published by tBuLi over 7 years ago

symfit - symfit 0.4.2

Bugfix release. Most important fixes include - Arguments no longer use inspect to find their name, it is recommended to provide names explicitly. The old syntax is still supported, although it will raise a deprication warning. - numpy >= 1.12 is demanded - symfit Argument-objects are full pickelable - ODEModels can now be integrated back in time too. - ODEModels now have a __str__, and to declare a __str__ has been made mandatory by adding it as an abstractmethod on BaseModel. - More minor bug fixes

- Python
Published by tBuLi over 7 years ago

symfit - symfit 0.4.0

Major overhaul of the internal API, making future development of symfit easier.

Additionally covariance matrices are now calculated for all current fitting types, meaning all parameters uncertainties are now provided. Additionally, gradients can now also be calculated for ODEModels due to the addition of finite differences as a default means of calculating gradients.

- Python
Published by tBuLi about 8 years ago

symfit - symfit 0.3.7

Bugfix release.

- Python
Published by tBuLi almost 9 years ago

symfit - symfit 0.3.6

Apart from bug-fixes, the most important change in this version is the addition of the contrib module. This will hold useful side-project which depend on the symfit core but are not a part of it.

Currently, this contains a visual guess tool, which aims to make providing good guesses for your model a lot easier. Give it a shot!

- Python
Published by tBuLi almost 9 years ago

symfit - symfit 0.3.5

This version of symfit introduces a lot of improvements to the Fit object. Global fitting now works better, and the Fit object takes constraints.

Apart from this, it features many minor improvements and bug fixes.

- Python
Published by tBuLi about 9 years ago

symfit - symfit 0.3.2!

What better way to start the new year than with a version of symfit?

This version introduces two great new fitting types: LinearLeastSquares and NonLinearLeastSquares.

Up until now all fitting in symfit was done numerically and iteratively. However, LinearLeastSquares is an implementation of the analytical solution to the least squares problem. Therefore, no more iterations. It's one step and you'll have your answer!

However, this only works with models linear in the parameters. For nonlinear models there is NonLinearLeastSquares. NonLinearLeastSquares works by approximating your model by it's first-order Taylor expansion and then iteratively improving the fit using LinearLeastSquares.

These objects are an exciting step towards my goal of implementing constrained fitting in a sexy and generic manner throughout symfit.

p.s. It also features some minor bug fixes.

- Python
Published by tBuLi about 10 years ago

symfit - symfit 0.3.0

After a long time, a brand new version. To throw around some prime marketing: "Nothing has changed - except everything".

The way models are handled has been completely redefined, allowing for great syntactic sugar such as: - named dependent variables:

python x, y = variables('x, y') model = {y: a * x**2} - And assigning data by name:

python fit = Fit(model, x=xdata, y=ydata, sigma_y=sigma)

Furthermore this version finally comes with documentation of all the objects in the API, so symfit will finally be more useable and hopefully more easy to contribute to.

One downside: Python 2 support has been dropped in this version. I don't have the time to support both versions of Python, and frankly Python 3 just offers some language features I don't want to do without anymore.

- Python
Published by tBuLi about 10 years ago

symfit - Bug fix release [!]

The previous version introduced fitting with weights. Allthough the correct values were found for the parameters, it turns out that the errors in the parameters were grossly overestimated. It was caused by a disconnect between the residuals returned by scipy.optimize.leastsq and what I assumed those residuals to be. This version fixes this problem, and also includes some other non-fundamental fixes.

Important: the errors in parameters are now the same as given by scipy.optimize.curve_fit with absolute_sigma=True because this is always larger than absolute_sigma=False and it's better to overestimate errors when in doubt. I would love some feedback on which of the two is correct when dealing with real data with measurement errors. So if you know anything on this topic, please join the discussion here: https://github.com/tBuLi/symfit/issues/22

I do not wan't to simply add a keyword equivalent to absolute_sigma because I consider it to be unpythonic and very unclear as to what it does.

- Python
Published by tBuLi almost 11 years ago

symfit - Error support

It is now possible to do least squares fitting with weights. Two keywords have been included to make this possible: weights and sigma. Only one of the two can be provided, and they must have the same shape as ydata.

Example:

``` python from symfit.api import Variable, Parameter, Fit

tdata = np.array([1.4, 2.1, 2.6, 3.0, 3.3]) ydata = np.array([10, 20, 30, 40, 50])

sigma = 0.2 n = np.array([5, 3, 8, 15, 30]) sigma_t = sigma / np.sqrt(n)

We now define our model

y = Variable() g = Parameter() t_model = (2 * y / g)**0.5

fit = Fit(tmodel, ydata, tdata, sigma=sigmat) fit_result = fit.execute() ```

- Python
Published by tBuLi almost 11 years ago

symfit - Likelihood

This release introduced some great new features. Most important among those are the return of the scipy.optimize.minimize wrappers Minimize and Maximize. Furthermore, the Likelihood object allows fitting using the principle of maximum likelihood. Lastly, submodels can now be evaluated more easely than ever before, allowing the following:

``` python pop1 = A1 * exp(-(x - x01)**2/(2 * sig12)) pop2 = A2 * exp(-(x - x0_2)2/(2 * sig2**2)) model = pop1 + pop_2

fit = Fit(model, xdata, ydata) fit_result = fit.execute()

y = model(x=xdata, *fitresult.params) y1 = pop_1(x=xdata, *fit_result.params) ```

- Python
Published by tBuLi almost 11 years ago

symfit - symfit 0.2.2

Bugfix release.

Changelog - fixed a fatal bug which appears in cases where the variance in parameters could not be calculated. This typically happens in models with a lot of parameters. - bug when using parameter names with underscores fixed. - more metadata in setup.py

- Python
Published by tBuLi about 11 years ago

symfit - symfit 0.2.1!

Stable release. This has some minor changes under the hood as compared to previous versions, but no changes to the API.

- Python
Published by tBuLi about 11 years ago

symfit - symfit 0.1

First stable release of Symbolic Fitting!

- Python
Published by tBuLi over 11 years ago