class_docstr: Wrapped Gaussian Process.
  
  The implementation is based on the algorithm 4 of [1]_.
  
  Parameters
  ----------
  space : Manifold
      Equipped manifold.
  prior : callable
      Associate to each input a manifold valued point.
  
  References
  ----------
  .. [1] Mallasto, A. and Feragen, A. Wrapped gaussian process
      regression on riemannian manifolds. In 2018 IEEE/CVF
      Conference on Computer Vision and Pattern Recognition
class_docstr_tok: ["Wrapped","Gaussian","Process",".","The","implementation","is","based","on","the","algorithm","4","of","[","1","]","_.","Parameters","--","--","--","--","--","space",":","Manifold","Equipped","manifold",".","prior",":","callable","Associate","to","each","input","a","manifold","valued","point",".","References","--","--","--","--","--","..","[","1","]","Mallasto",",","A.","and","Feragen",",","A",".","Wrapped","gaussian","process","regression","on","riemannian","manifolds",".","In","2018","IEEE\/CVF","Conference","on","Computer","Vision","and","Pattern","Recognition"]
docstr: Draw samples from Wrapped Gaussian process and evaluate at X.
  
  A fitted Wrapped Gaussian process can be use to sample
  values through the following steps:
  
  - Use the stored Gaussian process regression on the dataset
    to sample tangent values
  - Compute the base-points using the prior
  - Flatten (and repeat if needed) both the base-points and the
    tangent samples to benefit from vectorized computation.
  - Map the tangent samples on the manifold via the metric's exp with the
    flattened and repeated base-points yielded by the prior
  
  Parameters
  ----------
  X : array-like of shape (n_samples_X, n_features) or list of object
      Query points where the WGP is evaluated.
  n_samples : int, default=1
      Number of samples drawn from the Wrapped Gaussian process per query
      point.
  random_state : int, RandomState instance or None, default=0
      Determines random number generation to randomly draw samples.
      Pass an int for reproducible results across multiple function
      calls.
  
  Returns
  -------
  y_samples : ndarray of shape (n_samples_X, n_samples), or             (n_samples_X, *target_shape, n_samples)
      Values of n_samples samples drawn from wrapped Gaussian process and
      evaluated at query points.
docstr_tok: ["Draw","samples","from","Wrapped","Gaussian","process","and","evaluate","at","X",".","A","fitted","Wrapped","Gaussian","process","can","be","use","to","sample","values","through","the","following","steps",":","-","Use","the","stored","Gaussian","process","regression","on","the","dataset","to","sample","tangent","values","-","Compute","the","base-points","using","the","prior","-","Flatten","(","and","repeat","if","needed",")","both","the","base-points","and","the","tangent","samples","to","benefit","from","vectorized","computation",".","-","Map","the","tangent","samples","on","the","manifold","via","the","metric","'s","exp","with","the","flattened","and","repeated","base-points","yielded","by","the","prior","Parameters","--","--","--","--","--","X",":","array-like","of","shape","(","n_samples_X",",","n_features",")","or","list","of","object","Query","points","where","the","WGP","is","evaluated",".","n_samples",":","int",",","default=1","Number","of","samples","drawn","from","the","Wrapped","Gaussian","process","per","query","point",".","random_state",":","int",",","RandomState","instance","or","None",",","default=0","Determines","random","number","generation","to","randomly","draw","samples",".","Pass","an","int","for","reproducible","results","across","multiple","function","calls",".","Returns","--","--","--","-","y_samples",":","ndarray","of","shape","(","n_samples_X",",","n_samples",")",",","or","(","n_samples_X",",","*","target_shape",",","n_samples",")","Values","of","n_samples","samples","drawn","from","wrapped","Gaussian","process","and","evaluated","at","query","points","."]
code: def sample_y(self, X, n_samples=1, random_state=0):
      """Draw samples from Wrapped Gaussian process and evaluate at X.
  
          A fitted Wrapped Gaussian process can be use to sample
          values through the following steps:
  
          - Use the stored Gaussian process regression on the dataset
            to sample tangent values
          - Compute the base-points using the prior
          - Flatten (and repeat if needed) both the base-points and the
            tangent samples to benefit from vectorized computation.
          - Map the tangent samples on the manifold via the metric's exp with the
            flattened and repeated base-points yielded by the prior
  
          Parameters
          ----------
          X : array-like of shape (n_samples_X, n_features) or list of object
              Query points where the WGP is evaluated.
          n_samples : int, default=1
              Number of samples drawn from the Wrapped Gaussian process per query
              point.
          random_state : int, RandomState instance or None, default=0
              Determines random number generation to randomly draw samples.
              Pass an int for reproducible results across multiple function
              calls.
  
          Returns
          -------
          y_samples : ndarray of shape (n_samples_X, n_samples), or \
              (n_samples_X, *target_shape, n_samples)
              Values of n_samples samples drawn from wrapped Gaussian process and
              evaluated at query points.
          """
      tangent_samples = gs.from_numpy(
          self.euclidean_gpr.sample_y(X, n_samples, random_state)
      )
  
      if gs.ndim(tangent_samples) > 2:
          tangent_samples = gs.moveaxis(tangent_samples, -2, -1)
  
      flat_tangent_samples = gs.reshape(
          tangent_samples, (-1, *self.space.shape)
      )
  
      base_points = gs.repeat(self.prior(X), n_samples, axis=0)
  
      flat_y_samples = self.space.metric.exp(
          flat_tangent_samples, base_point=base_points
      )
  
      y_samples = gs.reshape(
          flat_y_samples, (X.shape[0], n_samples, *self.space.shape)
      )
  
      if gs.ndim(tangent_samples) > 2:
          y_samples = gs.moveaxis(y_samples, 1, -1)
  
      return y_samples
  
file_path: geomstats/geomstats/learning/wrapped_gaussian_process.py
imports: from sklearn.base import BaseEstimator, MultiOutputMixin, RegressorMixin
  from sklearn.gaussian_process import GaussianProcessRegressor
  import geomstats.backend
label_desc: Use image node_id 6 for calling the WrappedGaussianProcess obj's underlying member method code with example usage: obj.sample_y(X, n_samples, random_state) and returns: y_samples