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
Several tests compare PTGP's kernel and likelihood output against GPJax. For example,
tests/kernels/test_stationary.pychecks Gram and cross-covariance matrices againstgpjax.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-backedTaggedLinearOperatorinstead of aDenseobject with.to_dense(). We pinnedgpjax==0.13.6to 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 fromconda_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.pytests/test_svgp.pytests/likelihoods/test_gaussian.pytests/likelihoods/test_bernoulli.py