Ejemplo n.º 1
0
 def test_expression_with_string_and_replacements(self):
     fit = Fit(model=self.get_model())
     fit.expression = 'exp'
     a, k, t, tau = fit.model.get_symbols('a', 'k', 't', 'τ')
     fit.replacements = (k, 1 / tau)
     expression = a * sympy.functions.exp(-t / tau)
     eq_(fit.expression, expression)
Ejemplo n.º 2
0
 def test_expression_with_replacements(self):
     fit = Fit(model=self.get_model())
     fit.replacements = 'tau'
     fit.expression = fit.model.expressions['exp']
     a, t, tau = fit.model.get_symbols('a', 't', 'τ')
     expression = a * sympy.functions.exp(-t / tau)
     eq_(fit.expression, expression)
Ejemplo n.º 3
0
 def get_fit_for_fitting(self):
     fit = Fit('exponential_fit',
         data=self.get_data(),
         model=self.get_model())
     fit.expression = 'exp'
     fit.independent = {'symbol': 't'}
     fit.parameters = [
         {'symbol': 'a', 'guess': 10},
         {'symbol': 'k', 'guess': 20},
     ]
     return fit
Ejemplo n.º 4
0
 def test_function_with_more_symbols(self):
     fit = Fit()
     fit.model = Model()
     symbols = ('x', 'a', 'b', 'c', 'd', 'e', 'f')
     fit.model.add_symbols(*symbols)
     x, a, b, c, d, e, f = fit.model.get_symbols(*symbols)
     fit.model.expressions['exp'] = a * f + b * e + x * c + d
     fit.expression = 'exp'
     fit.independent = {'symbol': 'x'}
     fit.parameters = [
         {'symbol': 'a', 'guess': 2},
         {'symbol': 'b', 'guess': 3},
         {'symbol': 'c', 'value': 4, 'prefix': 'kilo'},
         {'symbol': 'd', 'value': 5},
     ]
     fit.constants = [
         {'symbol': 'e', 'value': 10},
         {'symbol': 'f', 'value': 12, 'prefix': 'milli'},
     ]
     eq_(fit.function(2, 4, 7), 8075.048)
Ejemplo n.º 5
0
#

name = 'linear_polyfit'

# Load data from a csv file.
data = Data(name)
data.path = os.path.join('examples', 'data', 'linear.csv')
data.genfromtxt_args['skip_header'] = 1

# Create a linear model.
model = Model(name)
model.add_symbols('t', 'v', 'x_0')
t, v, x_0 = model.get_symbols('t', 'v', 'x_0')
model.expressions['line'] = v * t + x_0

# Create the fit using the data and model.
fit = Fit(name, data=data, model=model)
fit.expression = 'line'
fit.independent = {'symbol': 't', 'name': 'Time', 'units': 's'}
fit.dependent = {'name': 'Distance', 'units': 'm'}
fit.parameters = [
    {'symbol': 'v', 'guess': 1, 'units': 'm/s'},
    {'symbol': 'x_0', 'guess': 1, 'units': 'm'},
]

# Use `numpy.polyfit` to do the fit.
fit.options['fit_function'] = lambda f, x, y, p0, **op: (numpy.polyfit(x, y, 1), )

# Save the fit to disk.
save_example_fit(fit)
Ejemplo n.º 6
0
# Load data from a csv file.
data = Data(name)
data.path = os.path.join('examples','data', 'wave.csv')
data.genfromtxt_args['skip_header'] = 1
data.error = (0.1, 0.05)

# Create a wave model.
model = Model(name)
model.add_symbols('t', 'A', 'ω', 'δ')
A, t, ω, δ = model.get_symbols('A', 't', 'ω', 'δ')
model.expressions['wave'] = A * sympy.functions.sin(ω * t + δ)
model.expressions['frequency'] = ω / (2 * sympy.pi)

# Create the fit using the data and model.
fit = Fit(name, data=data, model=model)
fit.expression = 'wave'
fit.independent = {'symbol': 't', 'name': 'Time', 'units': 's'}
fit.dependent = {'name': 'Voltage', 'prefix': 'kilo', 'units': 'kV'}
fit.parameters = [
    {'symbol': 'A', 'value': 0.3, 'prefix': 'kilo', 'units': 'kV'},
    {'symbol': 'ω', 'guess': 1, 'units': 'Hz'},
    {'symbol': 'δ', 'guess': 1},
]
fit.quantities = [
    {'expression': 'frequency', 'name': 'Frequency', 'units': 'Hz'},
    {'expression': 1 / model.expressions['frequency'] , 'name': 'Period', 'units': 's'},
]

# Save the fit to disk.
save_example_fit(fit)
Ejemplo n.º 7
0
 def test_expression_with_string(self):
     fit = Fit(model=self.get_model())
     expression = fit.model.expressions['exp']
     fit.expression = 'exp'
     eq_(fit.expression, expression)
Ejemplo n.º 8
0
 def test_expression(self):
     fit = Fit(model=self.get_model())
     expression = fit.model.expressions['exp']
     fit.expression = expression
     eq_(fit.expression, expression)