resins.models.panther_abins

The AbINS model of the PANTHER instrument.

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.panther_abins.PantherAbINSModel(model_data: PantherAbINSModelData, e_init: float | None = None, **_)

Bases: GaussianKernel1DMixin, SimpleBroaden1DMixin, InstrumentModel

Model for the PANTHER instrument originating from the AbINS software.

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

The resolution is modelled as:

resolution = Polynomial(model_data.abs)(frequencies) +
             Polynomial(model_data.ei_dependence)(e_init) +
             Polynomial(model_data.ei_energy_product)(e_init * frequencies)

where e_init is the initial energy, frequencies is the energy transfer, and model_data is an instance of PantherAbINSModelData.

Parameters:
model_data

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

e_init

The incident energy in meV.

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 PantherAbINSModel model.

absnumpy.polynomial.polynomial.Polynomial

The energy transfer polynomial.

ei_dependencefloat

The e_init contribution to the resolution.

ei_energy_productnumpy.polynomial.polynomial.Polynomial

The energy transfer and e_init product polynomial.

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 PantherAbINSModelData

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.panther_abins.PantherAbINSModelData(*, function: str, citation: list[str], defaults: dict[str, int | float], restrictions: dict[str, list[int | float], set[int | float]], abs: list[float], ei_dependence: list[float], ei_energy_product: list[float])

Bases: ModelData

Data for the PantherAbINSModel model.

Attributes:
function

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

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.

abs

Polynomial coefficients for the energy transfer (frequencies) polynomial.

ei_dependence

Polynomial coefficients for the initial energy polynomial.

ei_energy_product

Polynomial coefficients for the product of initial energy and energy transfer (frequencies) polynomial.