Kernels

API reference

gpLib.SigmaKernel

class gpLib.SigmaKernel(power='abs', alpha_prior: object | None = None, alpha_constraint=None, **kwargs)

Non-stationary multiplicative kernel

\[\begin{split}k(x,x') &= \sigma(x)\,\sigma(x'),\\ \sigma(x) &= \begin{cases} \exp\!\bigl(-\alpha\,|x|\bigr), & \text{``abs''},\\[6pt] \exp\!\bigl(-\alpha\,x^{2}\bigr), & \text{``square''}. \end{cases}\end{split}\]
Parameters:

power – Either "abs" or "square" (see above).

Variables:

alpha (torch.Tensor) – Positive decay rate.

gpLib.SpaceTime1d

class gpLib.SpaceTime1d(**kwargs)

One-dimensional space–time covariance (Bolin & Wallin 2016).

Inputs are 2-vectors \((x,t)\). With parameters \(\phi,a,a',c,\alpha,\delta,\alpha',\gamma,\varepsilon \ge 0\)

\[k\bigl((x,t),(x',t')\bigr) \;=\; \underbrace{\frac{\phi} {\bigl(1+a\,(t-t')^{2}\bigr)^{\alpha}} \exp\!\Bigl[ -\frac{c\;\|x-x'-\varepsilon(t-t')\|^{2\gamma}} {\bigl(1+a\,(t-t')^{2}\bigr)^{\alpha\gamma}} \Bigr]}_{\text{spatio-temporal interaction}} \;+\; \underbrace{\frac{\delta\,\mathbf 1_{x=x'}} {\bigl(1+a'(t-t')^{2}\bigr)^{\alpha'}}}_{\text{pure nugget}}\]
Parameters:

batch_shape – Optional batch shape.

Variables:
  • epsilon (torch.Tensor) – Space–time advection parameter.

  • gamma (torch.Tensor a, a_prime, c, phi, alpha, delta, alpha_prime,) – Positive parameters with constraints shown in code.

gpLib.MinKernel

class gpLib.MinKernel(offset_prior: Prior | None = None, offset_constraint: Interval | None = None, **kwargs)

Min kernel (integrated Brownian motion)

\[k(x,x') \;=\; \min(x,x') + \text{offset}.\]

For numerical efficiency we use the identity

\[\min(x,x') \;=\; \tfrac12\!\bigl(|x| + |x'| - |x-x'|\bigr).\]

The underlying covariance is that of a continuous-time Brownian motion (discrete-time Gaussian random walk).

Variables:

offset (torch.Tensor) – Non-negative constant added to all entries.

gpLib.FractionalGaussianNoise

class gpLib.FractionalGaussianNoise(H_prior: Prior | None = None, H_constraint: Interval | None = None, **kwargs)

Discrete fractional Gaussian noise kernel.

For increment lag \(h = x - x'\)

\[k(h) \;=\; \tfrac12 \Bigl(|h+1|^{\alpha} - 2|h|^{\alpha} + |h-1|^{\alpha}\Bigr), \qquad \alpha = 2H,\; H\in(0.5,1).\]
Parameters:
  • H_prior – Optional prior on the Hurst index \(H\).

  • H_constraint – Interval \((0.51,0.99)\) by default.

Variables:

H (torch.Tensor) – Hurst exponent.

gpLib.RBFNonSeparableKernel

class gpLib.RBFNonSeparableKernel(**kwargs)

Anisotropic squared-exponential (non-separable) kernel.

\[k(\mathbf x,\mathbf y) = \exp\!\Bigl[ -\tfrac12(\mathbf x-\mathbf y)^{\top}A^{-1}(\mathbf x-\mathbf y) \Bigr],\]
\[\begin{split}A^{-1} = \begin{pmatrix} a & -\rho\sqrt{ac}\\ -\rho\sqrt{ac} & c \end{pmatrix}, \qquad a,c>0,\;|\rho|<1.\end{split}\]

Equivalent length-scales:

\[\ell_{1} = \sqrt{\frac{1}{a(1-\rho^{2})}},\qquad \ell_{2} = \sqrt{\frac{1}{c(1-\rho^{2})}}.\]
Variables:

a,c,rho (torch.Tensor) – Raw parameters defining \(A^{-1}\).

gpLib.MaxDistanceKernel

class gpLib.MaxDistanceKernel(c: float, **kwargs)

Max-distance kernel on a bounded domain

\[k(\mathbf x,\mathbf y) \;=\; c - \bigl\|\mathbf x-\mathbf y\bigr\|_{A}, \qquad \|\mathbf v\|_{A} := \sqrt{\mathbf v^{\top}A\mathbf v},\]

with fixed diameter \(c\) and anisotropy matrix

\[\begin{split}A=\begin{pmatrix}1 & -\gamma\\ -\gamma & 1\end{pmatrix}, \; 0\le\gamma<1.\end{split}\]
Parameters:

c – Upper bound of the metric (must dominate all pairwise distances).

Variables:

gamma (float) – Off-diagonal coupling (set to 0.5 in code).

gpLib.MaternNonSeparableKernel

class gpLib.MaternNonSeparableKernel(nu: float = 2.5, **kwargs)

2-D anisotropic Matérn kernel with Mahalanobis distance.

\[\begin{split}r^{2} = (\mathbf x-\mathbf y)^{\top}A^{-1}(\mathbf x-\mathbf y),\qquad k_\nu(r) = \begin{cases} \exp(-r), & \nu=\tfrac12\\[4pt] (1+\sqrt3\,r)\exp(-\sqrt3\,r), & \nu=\tfrac32\\[4pt] \bigl(1+\sqrt5\,r+\tfrac53 r^{2}\bigr)\exp(-\sqrt5\,r), & \nu=\tfrac52 \end{cases}\end{split}\]
Parameters:

gpLib.fBMKernel

class gpLib.fBMKernel(H_prior: Prior | None = None, H_constraint: Interval | None = None, **kwargs)

Fractional Brownian motion covariance

\[k(s,t) = \tfrac12\Bigl(|s|^{\alpha} + |t|^{\alpha} - |s-t|^{\alpha}\Bigr), \qquad \alpha = 2H,\; H\in(0.5,1).\]

The kernel is non-stationary and self-similar of order \(H\).

Parameters:

H_constraint – Interval \((0.51,0.99)\) by default.

Variables:

H (torch.Tensor) – Hurst exponent.

gpLib.WendlandKernel

class gpLib.WendlandKernel(mu: float = 1.0, k: int = 0, **kwargs)

Compactly-supported Wendland kernel.

Let \(t = \|x-x'\|/\ell_{0}\), \((1-t)_+ = \max(1-t,0)\) and \(\ell = k+1+\mu\).

\[\begin{split}k(t) = \begin{cases} (1-t)_+^{\ell}, & k = 0,\\[6pt] (1-t)_+^{\ell+1}\bigl[1 + (\ell+1)t\bigr], & k = 1,\\[6pt] (1-t)_+^{\ell+2}\!\Bigl[ 1 + (\ell+2)t + \tfrac13(\ell^{2}+4\ell+3)t^{2} \Bigr], & k = 2. \end{cases}\end{split}\]
Parameters:
  • mu – Smoothness parameter \(\mu>0\).

  • k – Order 0, 1 or 2 (see cases above).

gpLib.PowerExponentialKernel

class gpLib.PowerExponentialKernel(alpha_prior: Prior | None = None, alpha_constraint: Interval | None = None, **kwargs)

Generalised exponential kernel

\[k(x,x') = \exp\!\Bigl[-\bigl(r/\ell\bigr)^{\alpha}\Bigr],\quad r = \|x-x'\|,\; 0<\alpha\le 2.\]
Parameters:
  • alpha_prior – Optional prior over \(\alpha\).

  • alpha_constraint – Interval \((0,2]\).

Variables:

alpha (torch.Tensor) – Shape (*batch,1,ard).

gpLib.GeneralCauchy

class gpLib.GeneralCauchy(alpha_constraint: Interval | None = None, beta_constraint: Interval | None = None, **kwargs)

Generalised Cauchy kernel

\[\begin{split}k(r) = \bigl(1 + r^{\alpha}\bigr)^{-\beta/\alpha},\\ r = \frac{\lVert x - x' \rVert}{\ell}\end{split}\]

with

  • (0 < alpha le 2)

  • (beta > 0)

Variables:

beta (torch.Tensor alpha,) – Shape (*batch,1).

gpLib.CosineKernel

class gpLib.CosineKernel(period_prior: Prior | None = None, period_constraint: Interval | None = None, **kwargs)

Stationary cosine kernel

\[k(x,x') = \cos\!\Bigl(\tfrac{2\pi}{p}\,\lvert x-x'\rvert\Bigr),\]

periodic with period \(p\).

Parameters:
  • period_prior – Optional prior on \(p\).

  • period_constraint – Positive.

Variables:

period (torch.Tensor) – The period \(p\).

gpLib.GeneralizedOU

class gpLib.GeneralizedOU(H_constraint: Interval | None = None, **kwargs)

Generalised Ornstein–Uhlenbeck kernel (stationary)

\[k(h) = \cosh\!\bigl(H\,|h|/\ell\bigr) \;-\; \frac{\bigl[\sinh(|h|/(2\ell))\bigr]^{2H}}{2},\]

with Hurst-like parameter \(H\in(0,1)\) and lengthscale \(\ell\).

Parameters:

H_constraint – Interval \((0,1)\).

Variables:

H (torch.Tensor) – Shape (*batch,1).

gpLib.TwoParamKernel

class gpLib.TwoParamKernel(H_constraint: Interval | None = None, alpha_constraint: Positive | None = None, **kwargs)

Two-parameter power-law kernel (non-stationary)

\[k(s,t) = (s\,t)^{H}\; \exp\!\bigl[-\alpha\,|\log(t/s)|\bigr], \qquad 0<H<1,\; \alpha>0,\; s,t>0.\]
Parameters:
  • H_constraint – Interval \((0,1)\).

  • alpha_constraint – Positive.

Variables:

alpha (torch.Tensor H,) – Shape (*batch,1).

gpLib.NonStationaryGeneralizedOU

class gpLib.NonStationaryGeneralizedOU(H_constraint: Interval | None = None, alpha_constraint: Positive | None = None, **kwargs)

Time-varying generalised OU kernel

Let \(x = t + \tau/2,\; y = t - \tau/2\). With parameters \(H,\alpha>0\)

\[k(x,y) = \cosh\!\bigl[(H+\alpha t)\,|\tau|\bigr] \;-\; \bigl[2\sinh(|\tau|/2)\bigr]^{\,H+\alpha t}.\]

The process is non-stationary in mean square; variance grows with t.

Parameters:
  • H_constraint – Interval \((0,1)\).

  • alpha_constraint – Positive.

Variables:

alpha (torch.Tensor H,) – Shape (*batch,1).