Rational polynomial usage (sarpy.processing.rational_polynomial)¶
General purpose rational polynomial tools
- exception sarpy.processing.rational_polynomial.SarpyRatPolyError¶
Bases:
SarpyError
A custom exception class for rational polynomial fitting errors.
- add_note()¶
Exception.add_note(note) – add a note to the exception
- with_traceback()¶
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- sarpy.processing.rational_polynomial.get_default_coefficient_ordering(variables: int, order: int) Sequence[Tuple[int, ...]] ¶
Gets a sensible coefficient ordering of a polynomial of given number of variables and order.
- Parameters:
variables (int) –
order (int) –
- Returns:
coefficient_list – List of the form [(exponent 0, exponent 1, …)], determining the ordering of monomial terms in the associated multivariable polynomial.
- Return type:
Tuple[Tuple[int, …]]
- sarpy.processing.rational_polynomial.rational_poly_fit_1d(x: ndarray, data: ndarray, coeff_list: Sequence[int | Tuple[int]], cond: float | None = None) Tuple[ndarray, ndarray] ¶
Fits a one variable rational polynomial according to the input coefficient listing order.
- Parameters:
x (numpy.ndarray) –
data (numpy.ndarray) –
coeff_list (List[int|Tuple[int]]) –
cond (None|float) – Passed through to
scipy.linalg.lstsq()
.
- Returns:
numerator (numpy.ndarray)
denominator (numpy.ndarray)
- Raises:
SarpyRatPolyError – Convergence failures passed through
- sarpy.processing.rational_polynomial.rational_poly_fit_2d(x: ndarray, y: ndarray, data: ndarray, coeff_list: Sequence[Tuple[int, int]], cond: float | None = None) Tuple[ndarray, ndarray] ¶
Fits a two variable rational polynomial according to the input coefficient listing order.
- Parameters:
x (numpy.ndarray) –
y (numpy.ndarray) –
data (numpy.ndarray) –
coeff_list (Sequence[Tuple[int, int]]) –
cond (None|float) – Passed through to
scipy.linalg.lstsq()
.
- Returns:
numerator (numpy.ndarray)
denominator (numpy.ndarray)
- Raises:
SarpyRatPolyError – Convergence failures passed through
- sarpy.processing.rational_polynomial.rational_poly_fit_3d(x: ndarray, y: ndarray, z: ndarray, data: ndarray, coeff_list: Sequence[Tuple[int, int, int]], cond: float | None = None) Tuple[ndarray, ndarray] ¶
Fits a three variable rational polynomial according to the input coefficient listing order.
- Parameters:
x (numpy.ndarray) –
y (numpy.ndarray) –
z (numpy.ndarray) –
data (numpy.ndarray) –
coeff_list (Sequence[Tuple[int, int, int]]) –
cond (None|float) – Passed through to
scipy.linalg.lstsq()
.
- Returns:
numerator (numpy.ndarray)
denominator (numpy.ndarray)
- Raises:
SarpyRatPolyError – Convergence failures passed through
- class sarpy.processing.rational_polynomial.RationalPolynomial(numerator: Sequence[float] | ndarray, denominator: Sequence[float] | ndarray, coeff_list: Sequence[Tuple[int, ...]], input_offsets: Sequence[float], input_scales: Sequence[float], output_offset: float, output_scale: float)¶
Bases:
object
A basic rational polynomial implementation. This assumes the data model input_data -> output_data via the relation
\[\begin{split}X = (x, y, ...) & = (input\_data - input\_offset)/input\_scale \\ (output\_data - output\_offset)/output\_scale & = Data = numerator(X)/denominator(X) \\ output\_data & = (numerator(X)/denominator(X))*output_scale + output\_offset\end{split}\]This object is callable, and acts as the evaluation function after construction. That is, suppose we have
- property variables: int¶
The number of independent variables.
- Return type:
int
- property coefficient_list: Sequence[Tuple[int, ...]]¶
The coefficient list.
- Return type:
Sequence
- property numerator: Sequence[float]¶
The numerator coefficients.
- Return type:
Sequence
- property denominator: Sequence[float]¶
The denominator coefficients.
- Return type:
Sequence
- sarpy.processing.rational_polynomial.get_rational_poly_1d(x: ndarray, data: ndarray, coeff_list: Sequence[int | Tuple[int]] | None = None, order: int | None = None, cond: float | None = None) RationalPolynomial ¶
Gets the RationalPolynomial instance that comes from fitting the provided data.
- Parameters:
x (numpy.ndarray) –
data (numpy.ndarray) –
coeff_list (None|Sequence) –
order (None|int) –
cond (None|float) – Passed through to
scipy.linalg.lstsq()
.
- Return type:
- Raises:
SarpyRatPolyError – Convergence failures passed through
- sarpy.processing.rational_polynomial.get_rational_poly_2d(x: ndarray, y: ndarray, data: ndarray, coeff_list: Sequence[Tuple[int, int]] | None = None, order: int | None = None, cond: float | None = None) RationalPolynomial ¶
Gets the RationalPolynomial instance that comes from fitting the provided data.
- Parameters:
x (numpy.ndarray) –
y (numpy.ndarray) –
data (numpy.ndarray) –
coeff_list (None|Sequence) –
order (None|int) –
cond (None|float) – Passed through to
scipy.linalg.lstsq()
.
- Return type:
- Raises:
SarpyRatPolyError – Convergence failures passed through
- sarpy.processing.rational_polynomial.get_rational_poly_3d(x: ndarray, y: ndarray, z: ndarray, data: ndarray, coeff_list: Sequence[Tuple[int, int]] | None = None, order: int | None = None, cond: float | None = None) RationalPolynomial ¶
Gets the RationalPolynomial instance that comes from fitting the provided data.
- Parameters:
x (numpy.ndarray) –
y (numpy.ndarray) –
z (numpy.ndarray) –
data (numpy.ndarray) –
coeff_list (None|Sequence) –
order (None|int) –
cond (None|float) – Passed through to
scipy.linalg.lstsq()
.
- Return type:
- Raises:
SarpyRatPolyError – Convergence failures passed through
- class sarpy.processing.rational_polynomial.CombinedRationalPolynomial(*collection: List[RationalPolynomial])¶
Bases:
object
Assemble a collection of RationalPolynomial objects with the same number of variables into a single multi-variable output object.