Ejemplo n.º 1
0
def weekly_job_2():
    main.init()
    try:
        main.fit(True)
    except Exception as ex:
        traceback.print_exc()
    try:
        main.map(any=True)
    except Exception as ex:
        traceback.print_exc()
Ejemplo n.º 2
0
def fcn2min(params, x, data):
    """Model decaying sine wave, subtract data."""
    amp = params['amp']
    shift = params['shift']
    omega = params['omega']
    decay = params['decay']
    model = amp * np.sin(x * omega + shift) * np.exp(-x * x * decay)
    return model - data


# create a set of Parameters
params = Parameters()
# params.add('amp', value=7, min=2.5)
params.add('amp', value=7, min=0, max=14)
params.add('decay', value=0.05, min=0, max=0.1)
params.add('shift', value=0.0, min=-np.pi / 2., max=np.pi / 2)
params.add('omega', value=3, min=0, max=5)

params['amp'].set(brute_step=0.25)
params['decay'].set(brute_step=0.005)
params['omega'].set(brute_step=0.25)

params.pretty_print()

result = fit(fcn2min, params, args=(x, data), algo_choice='genetic')

plt.plot(x, data, 'b')
plt.plot(x, data + fcn2min(params, x, data), 'y')
plt.plot(x, data + fcn2min(result, x, data), 'r')
plt.show()
Ejemplo n.º 3
0
def fcn2min(params, x, data):
    """Model decaying sine wave, subtract data."""
    amp = params['amp']
    shift = params['shift']
    omega = params['omega']
    decay = params['decay']
    model = amp * np.sin(x * omega + shift) * np.exp(-x * x * decay)
    return model - data


# create a set of Parameters
params = Parameters()
# params.add('amp', value=7, min=2.5)
params.add('amp', value=7, min=0, max=14)
params.add('decay', value=0.05, min=0, max=0.1)
params.add('shift', value=0.0, min=-np.pi / 2., max=np.pi / 2)
params.add('omega', value=3, min=0, max=5)

params['amp'].set(brute_step=0.25)
params['decay'].set(brute_step=0.005)
params['omega'].set(brute_step=0.25)

params.pretty_print()

result = fit(fcn2min, params, args=(x, data), algo_choice='montecarlo')

plt.plot(x, data, 'b')
plt.plot(x, data + fcn2min(params, x, data), 'y')
plt.plot(x, data + fcn2min(result, x, data), 'r')
plt.show()
Ejemplo n.º 4
0
def func(pars, x, data):
    a, b, c = pars['a'], pars['b'], pars['c']
    model = a * np.exp(-b * x) + c
    if data is None:
        return model
    return model - data


def f(var, x):
    return var[0] * np.exp(-var[1] * x) + var[2]


params = Parameters()
params.add('a', value=10)
params.add('b', value=10)
params.add('c', value=10)

a, b, c = 2.5, 1.3, 0.8
x = np.linspace(0, 4, 50)
y = f([a, b, c], x)
data = y + 0.15 * np.random.normal(size=x.size)

# fit without analytic derivative
result = fit(func, params, args=(x, data), algo_choice="levmar")

plt.plot(x, data, 'b')
plt.plot(x, data + func(params, x, data), 'y')
plt.plot(x, data + func(result, x, data), 'r')
plt.show()
Ejemplo n.º 5
0
import matplotlib.pyplot as plt
import numpy as np

from main import fit
from lmfit import Parameters

x = np.linspace(1, 10, 250)
np.random.seed(0)
y = 3.0 * np.exp(-x / 2) - 5.0 * np.exp(-(x - 0.1) / 10.) + 0.1 \
    * np.random.randn(x.size)

p = Parameters()
p.add_many(('a1', 4.), ('a2', 4.), ('t1', 3.), ('t2', 3., True))


def residual(p):
    v = p
    return v['a1'] * np.exp(-x / v['t1']) + v['a2'] * np.exp(-(x - 0.1)
                                                             / v['t2']) - y


result = fit(residual, p, algo_choice="simplex")

plt.plot(x, y, 'b')
plt.plot(x, y + residual(p), 'y')
plt.plot(x, y + residual(result), 'r')
plt.show()