n the data
GP.X = X;
GP.y = y;

% Plug in the components
GP.MeanFn  = tacopig.meanfn.ConstantMean(0);
GP.CovFn   = tacopig.covfn.SqExp();%SqExp();
GP.NoiseFn = tacopig.noisefn.Stationary();
GP.objective_function = @tacopig.objectivefn.NLML;
GP.solver_function = @anneal;

% Initialise the hyperparameters
GP.covpar   = 1*ones(1,GP.CovFn.npar(size(X,1)));
GP.meanpar  = zeros(1,GP.MeanFn.npar(size(X,1)));
GP.noisepar = 1e-3*ones(1,GP.NoiseFn.npar);


%% Learn & Query
GP.learn();
GP.solve();
[mf, vf] = GP.query(