Modelling¶
The basic modeling module for the Experimentalis library. This module provides some simple generic usecase models and the base model class, like linear, sinusoid, exponential fits, etc. Additional, usecase-specific models can be found under experimentalis.modules, such as the RC and LRC response curve models.
- class experimentalis.models.CustomFitModel(fit_function, initial_params, param_bounds=None)¶
Bases:
ModelA generic model class implementation for performing custom fits by manually specifying values.
import numpy as np from experimentalis.models import CustomFitModel def decay_model(t, A, tau, C): return A * np.exp(-t / tau) + C initial_params = { "A": 1.0, "tau": 2.5, "C": 0.1 } model = CustomFitModel( fit_function=decay_model, initial_params=initial_params ) # Evaluate the model at some points t = np.linspace(0, 10, 100) y = model.fit_function(t, *model.param_values)
- Parameters:
fit_function (Callable) – The mathematical function for this model.
initial_params (dict) – The parameter names and starting values for this function.
param_bounds (Optional[Tuple[NDArray, NDArray]]) – Bounds for the parameter values to be used during model optimization (optional).
- initial_params = None¶
- class experimentalis.models.ExponentialOffsetModel(amplitude, time_constant, offset)¶
Bases:
ModelExponential decay model with a vertical offset.
\[f(x) = A \exp(-x/ au) + C\]- Parameters:
amplitude (float) – Amplitude \(A\)
time_constant (float) – Time Constant \(\tau\)
offset (float) – Vertical Offset \(C\)
- class experimentalis.models.LinearModel(slope)¶
Bases:
ModelA one-parameter linear fit.
\[f(x) = mx\]- Parameters:
slope (float) – Slope \(m\)
- class experimentalis.models.Model(fit_function=None, param_names=<factory>, param_values=<factory>, param_uncerts=<factory>, param_bounds=None)¶
Bases:
objectBase class for a fitting model, consisting of the mathematical function to use for fitting (
fit_function), and information about each of the model’s parameters, like the names (param_names), values (param_values), uncertainties (param_uncerts), and the bounds to use when fitting the model to some data (param_bounds).- bounds()¶
- Returns:
The bounds of the model, if it has any.
- Return type:
Optional[Tuple[NDArray, NDArray]]
- fit_function = None¶
- has_bounds()¶
- Returns:
Whether or not this model has any parameters bounds.
- Return type:
bool
- labels()¶
- Returns:
Parameter names.
- Return type:
Tuple[str]
- param_bounds = None¶
- param_names¶
- param_uncerts¶
- param_values¶
- tabulate(units=None)¶
Tabulates the results as a pandas dataframe to be easily displayed as a LaTeX table in a Jupyter cell.
- Parameters:
units (list[str]) – Optional units to include in the table.
- Returns:
A table representation of the model’s parameters.
- Return type:
pandas.DataFrame
- uncertainties()¶
- Returns:
Parameter uncertainties.
- Return type:
Tuple[float]
- update_fit_results(fit_params, fit_errors)¶
Sets the model’s parameters to a fresh set of values and uncertainties, post-modelling.
- Parameters:
fit_params (NDArray) – New parameters for the model.
fit_errors (NDArray) – New uncertainties for the model.
- values()¶
- Returns:
Parameter values.
- Return type:
Tuple[float]
- class experimentalis.models.OffsetLinearModel(slope, intercept)¶
Bases:
ModelA two-parameter linear fit (slope and intercept).
\[f(x) = mx + b\]- Parameters:
slope (float) – Slope \(m\)
intercept (float) – Intercept \(b\)
- class experimentalis.models.OffsetSineModel(amplitude, frequency, phase, offset)¶
Bases:
ModelSinusoid model with a vertical offset.
\[f(x) = A \sin (2 \pi f x + \phi) + C\]- Parameters:
amplitude (float) – Amplitude \(A\)
frequency (float) – Frequency \(f\)
phase (float) – Phase \(\phi\)
offset (float) – Offset \(C\)
- class experimentalis.models.RingdownModel(amplitude, time_constant, resonant_frequency, phase)¶
Bases:
ModelThe Ringdown Model, used for fitting the time-domain response of a lightly-damped harmonic oscillator (or other sinusoid).
\[f(t) = A \exp(-t/\tau) \cos(2 \pi f_0 t + \phi)\]- Parameters:
amplitude (float) – Amplitude \(A\)
time_constant (float) – Frequency \(\tau\)
resonant_frequency (float) – Phase \(f_0\)
phase (float) – Offset \(\phi\)