def __init__(self, input_dim, active_dims, name, useGPU=False, *a, **kw):
super(Kern, self).__init__(name=name, *a, **kw)<EOL>self.input_dim = int(input_dim)<EOL>if active_dims is None:<EOL><INDENT>active_dims = np.arange(input_dim, dtype=np.int_)<EOL><DEDENT>self.active_dims = np.atleast_1d(np.asarray(active_dims, np.int_))<EOL>self._all_dims_active = np.atleast_1d(self.active_dims).astype(np.int_)<EOL>assert self.active_dims.size == self.input_dim, "<STR_LIT>".format(self.input_dim, self._all_dims_active.size)<EOL>self._sliced_X = <NUM_LIT:0><EOL>self.useGPU = self._support_GPU and useGPU<EOL>from .psi_comp import PSICOMP_GH<EOL>self.psicomp = PSICOMP_GH()<EOL>
The base class for a kernel: a positive definite function
which forms of a covariance function (kernel).

input_dim:

    is the number of dimensions to work on. Make sure to give the
    tight dimensionality of inputs.
    You most likely want this to be the integer telling the number of
    input dimensions of the kernel.

active_dims:

    is the active_dimensions of inputs X we will work on.
    All kernels will get sliced Xes as inputs, if _all_dims_active is not None
    Only positive integers are allowed in active_dims!
    if active_dims is None, slicing is switched off and all X will be passed through as given.

:param int input_dim: the number of input dimensions to the function
:param array-like|None active_dims: list of indices on which dimensions this kernel works on, or none if no slicing

Do not instantiate.