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: Model

A 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: Model

Exponential 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: Model

A 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: object

Base 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: Model

A 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: Model

Sinusoid 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: Model

The 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\)

class experimentalis.models.SineModel(amplitude, frequency, phase)

Bases: Model

Default sinusoid model.

\[f(x) = A \sin (2 \pi f x + \phi)\]
Parameters:
  • amplitude (float) – Amplitude \(A\)

  • frequency (float) – Frequency \(f\)

  • phase (float) – Phase \(\phi\)