QuasisepSolver
QuasisepSolver#
- class tinygp.solvers.QuasisepSolver(X: tinygp.helpers.JAXArray, matrix: tinygp.solvers.quasisep.core.SymmQSM, factor: tinygp.solvers.quasisep.core.LowerTriQSM)[source]#
Bases:
tinygp.solvers.solver.Solver
A scalable solver that uses quasiseparable matrices
Take a look at the documentation for the solvers.quasisep package, for more technical details.
You generally won’t instantiate this object directly but, if you do, you’ll probably want to use the
QuasisepSolver.init()
method instead of the usual constructor.- condition(kernel: Kernel, X_test: Optional[JAXArray], diag: Optional[JAXArray]) Any [source]#
Compute the covariance matrix for a conditional GP
In the case where the prediction is made at the input coordinates with a
tinygp.kernels.quasisep.Quasisep
kernel, this will return the quasiseparable representation of the conditional matrix. Otherwise, it will use scalable methods where possible, but return a dense representation of the covariance, so be careful when predicting at a large number of test points!- Parameters
kernel – The kernel for the covariance between the observed and predicted data.
X_test – The coordinates of the predicted points. Defaults to the input coordinates.
diag – Any extra variance to add to the diagonal of the predicted model.
- dot_triangular(y: tinygp.helpers.JAXArray) tinygp.helpers.JAXArray [source]#
Compute a matrix product with the lower triangular linear system
If the covariance matrix is
K = L @ L.T
for some lower triangular matrixL
, this method returnsL @ y
for somey
.
- classmethod init(kernel: tinygp.kernels.base.Kernel, X: tinygp.helpers.JAXArray, diag: tinygp.helpers.JAXArray, *, covariance: Optional[Any] = None) QuasisepSolver [source]#
Build a
QuasisepSolver
for a given kernel and coordinates- Parameters
kernel – The kernel function. This must be an instance of a subclass of
tinygp.kernels.quasisep.Quasisep
.X – The input coordinates.
diag – An extra diagonal component to add to the covariance matrix.
covariance – Optionally, a pre-computed
tinygp.solvers.quasisep.core.QSM
with the covariance matrix.
- normalization() tinygp.helpers.JAXArray [source]#
The multivariate normal normalization constant
This should be
(log_det + n*log(2*pi))/2
, wheren
is the size of the covariance matrix, andlog_det
is the log determinant of the matrix.
- solve_triangular(y: tinygp.helpers.JAXArray, *, transpose: bool = False) tinygp.helpers.JAXArray [source]#
Solve the lower triangular linear system defined by this solver
If the covariance matrix is
K = L @ L.T
for some lower triangular matrixL
, this method solvesL @ x = y
for somey
. If thetranspose
parameter isTrue
, this instead solvesL.T @ x = y
.