Overview:
- Removed `Chex` as a direct GPJax dependancy (Daniel-Dodd).
- Depreciated parameter initialisation (Daniel-Dodd).
- Depreciated `gpjax.parameters` to `JaxUtils.parameters` (thomaspinder).
- Depreciated `gpjax.config` to `JaxUtils.config` (Daniel-Dodd).
- Deprecated `gpjax.utils` to `JaxUtils.dict` (Daniel-Dodd).
- Addressed issues with documentation build and checks for new PRs (thomaspinder).
Remove `Chex` import and dataclasses
**Issue:** 157
**Fixed:** via 176, Daniel-Dodd
**Details:**
`Chex` has been removed in as a direct dependancy of `GPJax`.
_Note Distrax depends on Chex, so you still need the relevant version of Chex installed to use GPJax._
This means it is recommend that users no longer use `Chex`'s `dataclass` decorator, to define objects. Instead, we advise users inherit from abstract types provided in GPJax (e.g., `AbstractGP`) or should inherit the `JaxUtils.PyTree` module, to ensure their object is registered as a JAX PyTree.
This decision to remove `Chex` was given to provide great flexibility of defining new classes, and mitigating pain points with class inheritance issues (resorting use to use mixin classes).
⚠️ WARNING: Given `GPJax`'s objects are no longer `Chex.dataclasses` note the keyword only argument convention for initialising objects has been removed - users should be careful on the order of their inputs.
Parameter initialisation:
**Issue:** 172
**Fixed:** 178, Daniel-Dodd
**Details:**
To initialise default parameters you should call/define `init_param` instead of `_initialise_params`. The latter is being depreciated and will be removed in `v0.6`.
Example (1):
python
import jaxkern as jk
import gpjax as gpx
import jax.random as jr
prior = gpx.Prior(kernel = jk.RBF())
OLD DO NOT USE:
key = jr.PRNGKey(123)
params = prior._initialise_params(key)
NEW WAY:
key = jr.PRNGKey(123)
params = prior.init_params(key)
Example (2):
python
from gpjax.likelihoods import AbstractLikelihood
from jax.random import KeyArray
from typing import Dict
class Poisson(AbstractLikelihood):
Define __init__, ect as usual.
def __init__(self, ...) -> None:
....
Define your default params via the `init_params` method instead of the old `_initialise_params`
def init_params(self, key: KeyArray) -> Dict:
....
Documentation fix build and add checks
**Issue:** 170, 169
**Fixed:** 171 (thomaspinder).
**Details:**
The docs now builds and checks are in place to ensure successful builds on new PRs made to the master branch.
_Note the docs are currently built using a GitHub workflow, while unit tests are run via CircleCI workflows._