Skip to content

Remove GPJax dependency from the test suite #36

@bwengals

Description

@bwengals

Several tests compare PTGP's kernel and likelihood output against GPJax. For example, tests/kernels/test_stationary.py checks Gram and cross-covariance matrices against gpjax.kernels.stationary. This was a shortcut early on, since comparing against a known-good library let us validate the math quickly without writing out expected values by hand.

The problem is that it couples our CI to GPJax's API and release cadence, which already broke us when GPJax 0.15.0 changed Kernel.gram() to return a cola-backed TaggedLinearOperator instead of a Dense object with .to_dense(). We pinned gpjax==0.13.6 to work around it, but a pin rots and hides real upstream changes.

Proposal

Rewrite the affected tests to assert correctness directly instead of agreement with another GP library. Check closed-form kernel values for small inputs, for example ExpQuad k(x, y) = exp(-r²/2) at known distances. Check mathematical properties like symmetry, positive-definiteness, the diagonal equaling the variance, stationarity, and correct scaling with lengthscale and variance. Check limiting cases like the Matern52/32/12 reductions and ARD matching isotropic when lengthscales are equal. Once these are in place, drop GPJax from conda_envs/environment-test.yaml.

Why this is worth doing

A test suite should pin down that our kernels are correct, not that they match GPJax. Decoupling removes a class of version-drift failures, drops a heavy test-only dependency, and makes the suite self-contained.

Affected tests

  • tests/kernels/test_stationary.py
  • tests/test_svgp.py
  • tests/likelihoods/test_gaussian.py
  • tests/likelihoods/test_bernoulli.py

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions