Example #1
0
 def test_add_symbol(self):
     model = Model()
     model.add_symbol('x')
     model.add_symbol('why', string='y')
     eq_(len(model.symbols), 2)
     eq_(model.symbols['x'].name, 'x')
     eq_(model.symbols['why'].name, 'y')
Example #2
0
 def get_model(self):
     model = Model()
     model.test_symbols = ('x', 'y', 'z')
     model.add_symbols(*model.test_symbols)
     x, y, z = model.get_symbols(*model.test_symbols)
     model.expressions['exp'] = x + y
     model.replacements['rep_1'] = (x, y + z)
     model.replacements['rep_2'] = (z, x * x)
     model.replacements['rep_3'] = (x, y * z)
     model.replacement_groups['rep_g'] = ['rep_1', 'rep_2']
     return model
Example #3
0
 def get_model(self):
     model = Model('exponential_model')
     symbols = ('f', 'a', 'k', 't', 'τ')
     model.add_symbols(*symbols)
     f, a, k, t, tau = model.get_symbols(*symbols)
     model.expressions['f'] = f
     model.expressions['exp'] = a * sympy.functions.exp(- k * t)
     model.replacements['exp'] = (f, model.expressions['exp'])
     model.replacements['tau'] = (k, tau**(-1) )
     model.replacement_groups['all'] = ['exp', 'tau']
     return model
from scipy_data_fitting import Data, Model, Fit

#
# Example of a basic linear fit.
# This example demonstrates how to use a custom `fit_function`.
#

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.
Example #5
0
from scipy_data_fitting import Data, Model, Fit

#
# Example of a fit to a sine wave with error bars.
#

name = 'wave'

# 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},
]
Example #6
0
 def test_symbol(self):
     model = Model()
     model.add_symbol('x')
     eq_(model.symbol('x'), model.symbols['x'])
Example #7
0
 def test_get_symbols(self):
     model = Model()
     model.add_symbols('x', 'y', 'z')
     x, y, z = model.get_symbols('x', 'y', 'z')
     eq_(x, model.symbols['x'])
     eq_(y, model.symbols['y'])
Example #8
0
 def test_add_symbols(self):
     model = Model()
     model.add_symbols('x', 'y', 'z')
     eq_(len(model.symbols), 3)
     eq_(model.symbols['x'].name, 'x')
     eq_(model.symbols['y'].name, 'y')