Geostat's syntax is now more in line with mathematical notation. A model is written as:
from geostat import GP, Model
import geostat.kernel as krn
gp = GP(0, krn.TrendPrior(...) + krn.SquaredExponential(...) + krn.Noise(...))
model = Model(gp, parameters = p_init, ...)
If you want to include a trend, do:
from geostat import GP, Model, Trend
import geostat.kernel as krn
gp = GP(
Trend(feat, beta=['b0', 'b1']),
krn.TrendPrior(...) + krn.SquaredExponential(...) + krn.Noise(...))
model = Model(gp, parameters = p_init, ...)
A compound GP can be created with `Mix`:
from geostat import GP, Model, Mix
import geostat.kernel as krn
latent1 = GP(0, krn.SquaredExponential(...))
latent2 = GP(0, krn.SquaredExponential(...))
obs1 = GP(0, krn.Noise(...))
obs2 = GP(0, krn.Noise(...))
obs3 = GP(0, krn.Noise(...))
obs_matrix = [[0., 1.], [1., 0.], ['c1', 'c2]]
gp = Mix([latent1, latent2], obs_matrix) + Mix([obs1, obs2, obs3])
model = Model(gp, parameters = p_init, ...)
If `obs_matrix` is not given with `Mix`, the identity matrix is assumed and under the hood I do an optimization where the component matrices for `obs1`, `obs2`, and `obs3` don't have to be fully computed.