fittools - Tools for optimized fitting of functions

Use it like:

def gauss_ridge((reff, r210), a=1., mu0=10., mu1=-0.5, mu2=+0.01, si0=1.):
    mu = mu0 + mu1*reff + mu2*reff**2
    g = a*sympy.exp(-0.5*(r210-mu)**2/si0**2)
    return g
minimizable = compileTheanoMinimizable(gauss_ridge)
xflat = <tuple containing 1d arrays of reff and r210>
yflat = <tuple containing potential results of gauss_ridge>
fmin = setData(minimizable, xflat, yflat)
guess = [1.0, 5, -0.01, 0.00, 1.]

fitres = scipy.optimize.minimize(fmin, guess, method="SLSQP", jac=True) #currently TNC and SLSQP are tested
print fitres.x
runmacs.spec.retrieval.fittools.mkSymbolic(func)[source]

Takes a function and returns a sympy expression of it.

runmacs.spec.retrieval.fittools.numpyfy(func)[source]

Takes a function with sympy operations and turns it into a function with numpy operations.

runmacs.spec.retrieval.fittools.compileTheanoMinimizable(func)[source]

Compiles a function to compute fit residual and its derrivatives.

runmacs.spec.retrieval.fittools.setData(m, x, y)[source]

Attaches x and y data to a minimizable. The result can be passed to sympy.optimize.minimize.