class_docstr: Hilbert Space Gaussian process approximation.
  
  The `gp.HSGP` class is an implementation of the Hilbert Space Gaussian process.  It is a
  reduced rank GP approximation that uses a fixed set of basis vectors whose coefficients are
  random functions of a stationary covariance function's power spectral density.  It's usage
  is largely similar to `gp.Latent`.  Like `gp.Latent`, it does not assume a Gaussian noise model
  and can be used with any likelihood, or as a component anywhere within a model.  Also like
  `gp.Latent`, it has `prior` and `conditional` methods.  It supports any sum of covariance
  functions that implement a `power_spectral_density` method. (Note, this excludes the
  `Periodic` covariance function, which uses a different set of basis functions for a
  low rank approximation, as described in `HSGPPeriodic`.).
  
  For information on choosing appropriate `m`, `L`, and `c`, refer Ruitort-Mayol et al. or to
  the PyMC examples that use HSGP.
  
  To work with the HSGP in its "linearized" form, as a matrix of basis vectors and a vector of
  coefficients, see the method `prior_linearized`.
  
  Parameters
  ----------
  m: list
      The number of basis vectors to use for each active dimension (covariance parameter
      `active_dim`).
  L: list
      The boundary of the space for each `active_dim`.  It is called the boundary condition.
      Choose L such that the domain `[-L, L]` contains all points in the column of X given by the
      `active_dim`.
  c: float
      The proportion extension factor.  Used to construct L from X.  Defined as `S = max|X|` such
      that `X` is in `[-S, S]`.  `L` is the calculated as `c * S`.  One of `c` or `L` must be
      provided.  Further information can be found in Ruitort-Mayol et al.
  drop_first: bool
      Default `False`. Sometimes the first basis vector is quite "flat" and very similar to
      the intercept term.  When there is an intercept in the model, ignoring the first basis
      vector may improve sampling. This argument will be deprecated in future versions.
  parameterization: str
      Whether to use `centred` or `noncentered` parameterization when multiplying the
      basis by the coefficients.
  cov_func: Covariance function, must be an instance of `Stationary` and implement a
      `power_spectral_density` method.
  mean_func: None, instance of Mean
      The mean function.  Defaults to zero.
  
  Examples
  --------
  .. code:: python
  
      # A three dimensional column vector of inputs.
      X = np.random.rand(100, 3)
  
      with pm.Model() as model:
          # Specify the covariance function.
          # Three input dimensions, but we only want to use the last two.
          cov_func = pm.gp.cov.ExpQuad(3, ls=0.1, active_dims=[1, 2])
  
          # Specify the HSGP.
          # Use 25 basis vectors across each active dimension for a total of 25 * 25 = 625.
          # The value `c = 4` means the boundary of the approximation
          # lies at four times the half width of the data.
          # In this example the data lie between zero and one,
          # so the boundaries occur at -1.5 and 2.5.  The data, both for
          # training and prediction should reside well within that boundary..
          gp = pm.gp.HSGP(m=[25, 25], c=4.0, cov_func=cov_func)
  
          # Place a GP prior over the function f.
          f = gp.prior("f", X=X)
  
      ...
  
      # After fitting or sampling, specify the distribution
      # at new points with .conditional
      Xnew = np.linspace(-1, 2, 50)[:, None]
  
      with model:
          fcond = gp.conditional("fcond", Xnew=Xnew)
  
  References
  ----------
  -   Ruitort-Mayol, G., and Anderson, M., and Solin, A., and Vehtari, A. (2022). Practical
      Hilbert Space Approximate Bayesian Gaussian Processes for Probabilistic Programming
  
  -   Solin, A., Sarkka, S. (2019) Hilbert Space Methods for Reduced-Rank Gaussian Process
      Regression.
class_docstr_tok: ["Hilbert","Space","Gaussian","process","approximation",".","The","`","gp.HSGP","`","class","is","an","implementation","of","the","Hilbert","Space","Gaussian","process",".","It","is","a","reduced","rank","GP","approximation","that","uses","a","fixed","set","of","basis","vectors","whose","coefficients","are","random","functions","of","a","stationary","covariance","function","'s","power","spectral","density",".","It","'s","usage","is","largely","similar","to","`","gp.Latent","`",".","Like","`","gp.Latent","`",",","it","does","not","assume","a","Gaussian","noise","model","and","can","be","used","with","any","likelihood",",","or","as","a","component","anywhere","within","a","model",".","Also","like","`","gp.Latent","`",",","it","has","`","prior","`","and","`","conditional","`","methods",".","It","supports","any","sum","of","covariance","functions","that","implement","a","`","power_spectral_density","`","method",".","(","Note",",","this","excludes","the","`","Periodic","`","covariance","function",",","which","uses","a","different","set","of","basis","functions","for","a","low","rank","approximation",",","as","described","in","`","HSGPPeriodic","`",".",")",".","For","information","on","choosing","appropriate","`","m","`",",","`","L","`",",","and","`","c","`",",","refer","Ruitort-Mayol","et","al",".","or","to","the","PyMC","examples","that","use","HSGP",".","To","work","with","the","HSGP","in","its","``","linearized","''","form",",","as","a","matrix","of","basis","vectors","and","a","vector","of","coefficients",",","see","the","method","`","prior_linearized","`",".","Parameters","--","--","--","--","--","m",":","list","The","number","of","basis","vectors","to","use","for","each","active","dimension","(","covariance","parameter","`","active_dim","`",")",".","L",":","list","The","boundary","of","the","space","for","each","`","active_dim","`",".","It","is","called","the","boundary","condition",".","Choose","L","such","that","the","domain","`","[","-L",",","L","]","`","contains","all","points","in","the","column","of","X","given","by","the","`","active_dim","`",".","c",":","float","The","proportion","extension","factor",".","Used","to","construct","L","from","X",".","Defined","as","`","S","=","max|X|","`","such","that","`","X","`","is","in","`","[","-S",",","S","]","`",".","`","L","`","is","the","calculated","as","`","c","*","S","`",".","One","of","`","c","`","or","`","L","`","must","be","provided",".","Further","information","can","be","found","in","Ruitort-Mayol","et","al",".","drop_first",":","bool","Default","`","False","`",".","Sometimes","the","first","basis","vector","is","quite","``","flat","''","and","very","similar","to","the","intercept","term",".","When","there","is","an","intercept","in","the","model",",","ignoring","the","first","basis","vector","may","improve","sampling",".","This","argument","will","be","deprecated","in","future","versions",".","parameterization",":","str","Whether","to","use","`","centred","`","or","`","noncentered","`","parameterization","when","multiplying","the","basis","by","the","coefficients",".","cov_func",":","Covariance","function",",","must","be","an","instance","of","`","Stationary","`","and","implement","a","`","power_spectral_density","`","method",".","mean_func",":","None",",","instance","of","Mean","The","mean","function",".","Defaults","to","zero",".","Examples","--","--","--","--","..","code",":",":","python","#","A","three","dimensional","column","vector","of","inputs",".","X","=","np.random.rand","(","100",",","3",")","with","pm.Model","(",")","as","model",":","#","Specify","the","covariance","function",".","#","Three","input","dimensions",",","but","we","only","want","to","use","the","last","two",".","cov_func","=","pm.gp.cov.ExpQuad","(","3",",","ls=0.1",",","active_dims=","[","1",",","2","]",")","#","Specify","the","HSGP",".","#","Use","25","basis","vectors","across","each","active","dimension","for","a","total","of","25","*","25","=","625",".","#","The","value","`","c","=","4","`","means","the","boundary","of","the","approximation","#","lies","at","four","times","the","half","width","of","the","data",".","#","In","this","example","the","data","lie","between","zero","and","one",",","#","so","the","boundaries","occur","at","-1.5","and","2.5",".","The","data",",","both","for","#","training","and","prediction","should","reside","well","within","that","boundary","..","gp","=","pm.gp.HSGP","(","m=","[","25",",","25","]",",","c=4.0",",","cov_func=cov_func",")","#","Place","a","GP","prior","over","the","function","f.","f","=","gp.prior","(","``","f","''",",","X=X",")","...","#","After","fitting","or","sampling",",","specify","the","distribution","#","at","new","points","with",".conditional","Xnew","=","np.linspace","(","-1",",","2",",","50",")","[",":",",","None","]","with","model",":","fcond","=","gp.conditional","(","``","fcond","''",",","Xnew=Xnew",")","References","--","--","--","--","--","-","Ruitort-Mayol",",","G.",",","and","Anderson",",","M.",",","and","Solin",",","A.",",","and","Vehtari",",","A",".","(","2022",")",".","Practical","Hilbert","Space","Approximate","Bayesian","Gaussian","Processes","for","Probabilistic","Programming","-","Solin",",","A.",",","Sarkka",",","S.","(","2019",")","Hilbert","Space","Methods","for","Reduced-Rank","Gaussian","Process","Regression","."]
code: def __add__(self, other):
      raise NotImplementedError("Additive HSGPs aren't supported.")
  
imports: import numbers
  import warnings
  from types import ModuleType
  from typing import Optional, Sequence, Union
  import numpy
  import pytensor.tensor
  import pymc
  from pymc.gp.cov import Covariance, Periodic
  from pymc.gp.gp import Base
  from pymc.gp.mean import Mean, Zero
label_desc: Use image node_id 2 for calling the HSGP obj's underlying member method code with example usage: obj.__add__(other) without return types