:py:mod:`IMLCV.tools._rbfinterp_pythran`
========================================

.. py:module:: IMLCV.tools._rbfinterp_pythran


Module Contents
---------------


Functions
~~~~~~~~~

.. autoapisummary::

   IMLCV.tools._rbfinterp_pythran.linear
   IMLCV.tools._rbfinterp_pythran.thin_plate_spline
   IMLCV.tools._rbfinterp_pythran.cubic
   IMLCV.tools._rbfinterp_pythran.quintic
   IMLCV.tools._rbfinterp_pythran.multiquadric
   IMLCV.tools._rbfinterp_pythran.inverse_multiquadric
   IMLCV.tools._rbfinterp_pythran.inverse_quadratic
   IMLCV.tools._rbfinterp_pythran.gaussian
   IMLCV.tools._rbfinterp_pythran.scale
   IMLCV.tools._rbfinterp_pythran.cv_norm
   IMLCV.tools._rbfinterp_pythran.cv_vals
   IMLCV.tools._rbfinterp_pythran.kernel_vector
   IMLCV.tools._rbfinterp_pythran.polynomial_vector
   IMLCV.tools._rbfinterp_pythran.kernel_matrix
   IMLCV.tools._rbfinterp_pythran.polynomial_matrix
   IMLCV.tools._rbfinterp_pythran._polynomial_matrix
   IMLCV.tools._rbfinterp_pythran._build_system
   IMLCV.tools._rbfinterp_pythran._build_evaluation_coefficients



Attributes
~~~~~~~~~~

.. autoapisummary::

   IMLCV.tools._rbfinterp_pythran.NAME_TO_FUNC


.. py:function:: linear(r)


.. py:function:: thin_plate_spline(r)


.. py:function:: cubic(r)


.. py:function:: quintic(r)


.. py:function:: multiquadric(r)


.. py:function:: inverse_multiquadric(r)


.. py:function:: inverse_quadratic(r)


.. py:function:: gaussian(r)


.. py:data:: NAME_TO_FUNC

   

.. py:function:: scale(val, metric)


.. py:function:: cv_norm(x: IMLCV.base.CV.CV, y: IMLCV.base.CV.CV, metric: IMLCV.base.CV.CvMetric, eps)


.. py:function:: cv_vals(x: IMLCV.base.CV.CV, powers, metric: IMLCV.base.CV.CvMetric)


.. py:function:: kernel_vector(x: IMLCV.base.CV.CV, y: IMLCV.base.CV.CV, metric: IMLCV.base.CV.CvMetric, epsilon, kernel_func)

   Evaluate RBFs, with centers at `y`, at the point `x`.


.. py:function:: polynomial_vector(x: IMLCV.base.CV.CV, powers, metric: IMLCV.base.CV.CvMetric)

   Evaluate monomials, with exponents from `powers`, at the point `x`.


.. py:function:: kernel_matrix(x: IMLCV.base.CV.CV, metric: IMLCV.base.CV.CvMetric, eps, kernel_func)

   Evaluate RBFs, with centers at `x`, at `x`.


.. py:function:: polynomial_matrix(x: IMLCV.base.CV.CV, metric: IMLCV.base.CV.CvMetric, powers)

   Evaluate monomials, with exponents from `powers`, at `x`.


.. py:function:: _polynomial_matrix(x: IMLCV.base.CV.CV, powers, metric)

   Return monomials, with exponents from `powers`, evaluated at `x`.


.. py:function:: _build_system(y: IMLCV.base.CV.CV, metric: IMLCV.base.CV.CvMetric, d, smoothing, kernel, epsilon, powers)

   Build the system used to solve for the RBF interpolant coefficients.

   :param y: Data point coordinates.
   :type y: (P, N) float ndarray
   :param d: Data values at `y`.
   :type d: (P, S) float ndarray
   :param smoothing: Smoothing parameter for each data point.
   :type smoothing: (P,) float ndarray
   :param kernel: Name of the RBF.
   :type kernel: str
   :param epsilon: Shape parameter.
   :type epsilon: float
   :param powers: The exponents for each monomial in the polynomial.
   :type powers: (R, N) int ndarray

   :returns: * **lhs** (*(P + R, P + R) float ndarray*) -- Left-hand side matrix.
             * **rhs** (*(P + R, S) float ndarray*) -- Right-hand side matrix.
             * **shift** (*(N,) float ndarray*) -- Domain shift used to create the polynomial matrix.
             * **scale** (*(N,) float ndarray*) -- Domain scaling used to create the polynomial matrix.


.. py:function:: _build_evaluation_coefficients(x: IMLCV.base.CV.CV, y: IMLCV.base.CV.CV, metric: IMLCV.base.CV.CvMetric, kernel, epsilon, powers)

   Construct the coefficients needed to evaluate
   the RBF.

   :param x: Evaluation point coordinates.
   :type x: (Q, N) float ndarray
   :param y: Data point coordinates.
   :type y: (P, N) float ndarray
   :param kernel: Name of the RBF.
   :type kernel: str
   :param epsilon: Shape parameter.
   :type epsilon: float
   :param powers: The exponents for each monomial in the polynomial.
   :type powers: (R, N) int ndarray
   :param shift: Shifts the polynomial domain for numerical stability.
   :type shift: (N,) float ndarray
   :param scale: Scales the polynomial domain for numerical stability.
   :type scale: (N,) float ndarray

   :rtype: (Q, P + R) float ndarray


