GPLinearODE (GLO) struct

The GPLinearODEMaker.GLO object is used to ensure that all of the necessary pieces exist to specify the GLOM model.

GPLinearODEMaker.GLOType
GLO{T1<:Real, T2<:Integer} a.k.a. GPLinearODE

A structure that holds all of the relevant information for constructing the GLOM model

Arguments

  • kernel::Function: kernel function for the latent Gaussian process (GP)
  • n_kern_hyper::T2: amount of hyperparameters for the kernel function
  • n_dif::T2: amount of times you are differenting the base kernel
  • n_out::T2: amount of outputs you are jointly modelling
  • x_obs::Vector{T1}: the observation times/phases
  • y_obs::Vector{T1}: the flattened, observed data
  • noise::Vector{T1}: the measurement noise at all observations (σ, not σ^2)
  • normals::Vector{T1}: the normalization of each section of y_obs
  • a::Matrix{T1}: the meta kernel coefficients
  • non_zero_hyper_inds::Vector{T2}: the indices of the non-zero hyperparameters
  • coeff_orders::AbstractArray{T2,6}: The powers that each a coefficient is taken to for each part of the covariance matrix construction. Used for constructing differentiated versions of the kernel
  • coeff_coeffs::AbstractArray{T2,4}: The coefficients that each a coefficient is multiplied by for each part of the covariance matrix construction. Used for constructing differentiated versions of the kernel
  • covariance::Array{T1, 3}: the measurement covariance at all observations
  • has_covariance::Bool: Whether or not there are measurement covariances (as opposed to just having measurement noises)
  • kernel_changes_with_output::Bool: A flag for if the kernel is not the same for each output (e.g. there is a time delay kernel hyperparameter that changes)
source

It is often normalized before any optimizations to make the process more amenable to numerical methods

GPLinearODEMaker.normalize_GLO!Function
normalize_GLO!(glo)

Standardize the outputs in glo.y_obs (and glo.noise) to have 0-mean and unit variance and store the normalization in glo.normals

source
normalize_GLO!(glo, renorms)

Divide the outputs in glo.y_obs and glo.noise and multiply glo.normals by renorms

source