class_docstr: Class for fitting Gaussian processes. 
class_docstr_tok: ["Class","for","fitting","Gaussian","processes","."]
docstr: Constructor. 
docstr_tok: ["Constructor","."]
code: def __init__(self, X, Y, options, reporter="default"):
      """Constructor."""
      super(GPFitter, self).__init__()
      assert len(X) == len(Y)
      self.reporter = get_reporter(reporter)
      options = load_options(mandatory_gp_args, partial_options=options)
      self.options = options
      self.X = X
      self.Y = Y
      self.num_data = len(X)
      self._set_up()
  
imports: from __future__ import division
  from argparse import Namespace
  from itertools import product
  import sys
  import numpy
  from ..distributions.model import Model
  from ..distributions import continuous
  from ..distributions import discrete
  from ..utils.general_utils import stable_cholesky, draw_gaussian_samples, project_symmetric_to_psd_cone, solve_lower_triangular, solve_upper_triangular
  from ..utils.oper_utils import direct_ft_maximise, pdoo_maximise, random_maximise, random_sample_cts_dscr
  from ..utils.option_handler import get_option_specs, load_options
  from ..utils.reporters import get_reporter
label_desc: Use image node_id 1 to create a new GPFitter object from inherited base classes: object with example: obj = GPFitter(X, Y, options, reporter)