resins.models.polynomial module

Collection of models based off polynomials.

All classes within are exposed for reference only and should not be instantiated directly. For obtaining the resolution function of an instrument, please use the resins.instrument.Instrument.get_resolution_function method.

class resins.models.polynomial.DiscontinuousPolynomialModel1D(model_data: DiscontinuousPolynomialModelData, **_)

Bases: GaussianKernel1DMixin, SimpleBroaden1DMixin, InstrumentModel

Model using a 1D polynomial to model an instrument, but with values above and below certain energy transfer set to constant values.

Models the resolution as a function of energy transfer (frequencies) only, with the output model being a Gaussian. This is done by fitting a single power-series polynomial (see numpy.polynomial.polynomial.Polynomial) to the resolution curve, where the result of the polynomial is the width (sigma) of the Gaussian. The polynomial can be of any degree and is given via the PolynomialModelData. However, all sigma values below DiscontinuousPolynomialModelData.low_energy_cutoff are set to the value of DiscontinuousPolynomialModelData.low_energy_resolution and similarly all sigma values above DiscontinuousPolynomialModelData.high_energy_cutoff are set to the value of DiscontinuousPolynomialModelData.high_energy_resolution.

Parameters:
model_data

The data associated with the model for a given version of a given instrument.

Attributes:
input

The names of the columns in the omega_q array expected by all computation methods, i.e. the names of the independent variables ([Q, w]) that the model models.

data_class

Data for the DiscontinuousPolynomialModel1D model.

polynomialnumpy.polynomial.polynomial.Polynomial

The polynomial representing the resolution function.

low_energy_cutoff

The lower bound (in meV) for the energy transfer (frequencies), below which the sigma values are set to the value of low_energy_resolution.

low_energy_resolution

The value (in meV) to which sigma is set when the energy transfer is lower than low_energy_cutoff.

high_energy_cutoff

The upper bound (in meV) for the energy transfer (frequencies), above which the sigma values are set to the value of high_energy_resolution.

high_energy_resolution

The value (in meV) to which sigma is set when the energy transfer is higher than high_energy_cutoff.

citation

The citation for this model.

Methods

__call__(points, data, *meshes)

Broadens the data on the meshes.

broaden(points, data, mesh)

Broadens the data on the full mesh using the straightforward scheme.

data_class

get_characteristics(points)

Computes the broadening width at each value of energy transfer given by points.

get_kernel(points, mesh)

Computes the Gaussian kernel centered on zero on the provided mesh at each (energy transfer or momentum scalar) point in points.

get_peak(points, mesh)

Computes the Gaussian broadening peak on the provided mesh at each (energy transfer or momentum scalar) point in points.

data_class

alias of DiscontinuousPolynomialModelData

get_characteristics(points: Float[np.ndarray, 'energy_transfer dimension=1']) dict[str, Float[np.ndarray, 'sigma']]

Computes the broadening width at each value of energy transfer given by points.

The model approximates the broadening using the Gaussian distribution, so the returned widths are in the form of the standard deviation (sigma).

Parameters:
points

The energy transfer in meV at which to compute the width in sigma of the kernel. This must be a sample x 1 2D array where sample is the number of energy transfers.

Returns:
characteristics

The characteristics of the broadening function, i.e. the Gaussian width as sigma in meV.

class resins.models.polynomial.DiscontinuousPolynomialModelData(*, function: str, citation: list[str], defaults: dict[str, int | float], restrictions: dict[str, list[int | float], set[int | float]], fit: list[float], low_energy_cutoff: float = -inf, low_energy_resolution: float = 0.0, high_energy_cutoff: float = inf, high_energy_resolution: float = 0.0)

Bases: ModelData

Data for the DiscontinuousPolynomialModel1D model.

Attributes:
function

The name of the function, i.e. the alias for DiscontinuousPolynomialModel1D.

citation

The citation for the model. Please use this to look up more details and cite the model.

restrictions

All constraints that the model places on the settings. If the value is a list, this signifies the range style (start, stop, step) tuple, and if it is a set, it is a set of explicitly allowed values.

defaults

The default values for the settings, used when a value is not provided when creating the model.

fit

Polynomial coefficients.

low_energy_cutoff

The lower bound (in meV) for the energy transfer (frequencies), below which the sigma values are set to the value of low_energy_resolution.

low_energy_resolution

The value (in meV) to which sigma is set when the energy transfer is lower than low_energy_cutoff.

high_energy_cutoff

The upper bound (in meV) for the energy transfer (frequencies), above which the sigma values are set to the value of high_energy_resolution.

high_energy_resolution

The value (in meV) to which sigma is set when the energy transfer is higher than high_energy_cutoff.

class resins.models.polynomial.PolynomialModel1D(model_data: PolynomialModelData, **_)

Bases: GaussianKernel1DMixin, SimpleBroaden1DMixin, InstrumentModel

Model using a 1D polynomial to model an instrument.

Models the resolution as a function of energy transfer (frequencies) only, with the output model being a Gaussian. This is done by fitting a single power-series polynomial (see numpy.polynomial.polynomial.Polynomial) to the resolution curve, where the result of the polynomial is the width (sigma) of the Gaussian. The polynomial can be of any degree and is given via the PolynomialModelData.

Parameters:
model_data

The data associated with the model for a given version of a given instrument.

Attributes:
input

The names of the columns in the omega_q array expected by all computation methods, i.e. the names of the independent variables ([Q, w]) that the model models.

data_class

Data for the PolynomialModel1D model.

polynomialnumpy.polynomial.polynomial.Polynomial

The polynomial representing the resolution function.

citation

The citation for this model.

Methods

__call__(points, data, *meshes)

Broadens the data on the meshes.

broaden(points, data, mesh)

Broadens the data on the full mesh using the straightforward scheme.

data_class

get_characteristics(points)

Computes the broadening width at each value of energy transfer (points).

get_kernel(points, mesh)

Computes the Gaussian kernel centered on zero on the provided mesh at each (energy transfer or momentum scalar) point in points.

get_peak(points, mesh)

Computes the Gaussian broadening peak on the provided mesh at each (energy transfer or momentum scalar) point in points.

data_class

alias of PolynomialModelData

get_characteristics(points: Float[np.ndarray, 'energy_transfer dimension=1']) dict[str, Float[np.ndarray, 'sigma']]

Computes the broadening width at each value of energy transfer (points).

The model approximates the broadening using the Gaussian distribution, so the returned widths are in the form of the standard deviation (sigma).

Parameters:
points

The energy transfer in meV at which to compute the width in sigma of the kernel. This must be a sample x 1 2D array where sample is the number of energy transfers.

Returns:
characteristics

The characteristics of the broadening function, i.e. the Gaussian width as sigma.

class resins.models.polynomial.PolynomialModelData(*, function: str, citation: list[str], defaults: dict[str, int | float], restrictions: dict[str, list[int | float], set[int | float]], fit: list[float])

Bases: ModelData

Data for the PolynomialModel1D model.

Attributes:
function

The name of the function, i.e. the alias for PolynomialModel1D.

citation

The citation for the model. Please use this to look up more details and cite the model.

restrictions

All constraints that the model places on the settings. If the value is a list, this signifies the range style (start, stop, step) tuple, and if it is a set, it is a set of explicitly allowed values.

defaults

The default values for the settings, used when a value is not provided when creating the model.

fit

Polynomial coefficients.