# Path: reggie/means/_core.py
# class Mean(Parameterized):
#     """
#     The base Function interface.
#     """
#     def __call__(self, x):
#         X = np.array(x, ndmin=1)[None]
#         return self.get_mean(X)[0]
# 
#     def get_mean(self, X):
#         """
#         Evaluate the function at input points X.
#         """
#         raise NotImplementedError
# 
#     def get_grad(self, X):
#         """
#         Get the gradient of the function with respect to any hyperparameters,
#         evaluated at input points X. Return a generator yielding each gradient
#         component.
#         """
#         raise NotImplementedError
# 
# Path: reggie/kernels/_distances.py
# def rescale(ell, X1, X2=None):
#     """
#     Rescale the input data contained in X1 and X2 with lengthscales ell. Return
#     the tuple of rescaled data, or if X2 is None return (X1, None).
#     """
#     X1 = (X1 / ell)
#     X2 = (X2 / ell) if (X2 is not None) else None
#     return X1, X2
# 
# def dist(X1, X2=None, metric='sqeuclidean'):
#     """
#     Compute the pairwise distances between input data contained in X1 and X2
#     with some given metric (passed directly to scipy's cdist). If X2 is None
#     then compute the distances between X1 and itself.
#     """
#     X2 = X1 if (X2 is None) else X2
#     return ssd.cdist(X1, X2, metric)


import numpy as np
from ._core import Mean
from ..kernels._distances import rescale, dist
"""
Implementation of basic functions.
"""

from __future__ import division
from __future__ import absolute_import
from __future__ import print_function



__all__ = ['Zero', 'Constant', 'Linear', 'Quadratic']



# Path: reggie/means/_core.py
# class Mean(Parameterized):
#     """
#     The base Function interface.
#     """
#     def __call__(self, x):
#         X = np.array(x, ndmin=1)[None]
#         return self.get_mean(X)[0]
# 
#     def get_mean(self, X):
#         """
#         Evaluate the function at input points X.
#         """
#         raise NotImplementedError
# 
#     def get_grad(self, X):
#         """
#         Get the gradient of the function with respect to any hyperparameters,
#         evaluated at input points X. Return a generator yielding each gradient
#         component.
#         """
#         raise NotImplementedError
# 
# Path: reggie/kernels/_distances.py
# def rescale(ell, X1, X2=None):
#     """
#     Rescale the input data contained in X1 and X2 with lengthscales ell. Return
#     the tuple of rescaled data, or if X2 is None return (X1, None).
#     """
#     X1 = (X1 / ell)
#     X2 = (X2 / ell) if (X2 is not None) else None
#     return X1, X2
# 
# def dist(X1, X2=None, metric='sqeuclidean'):
#     """
#     Compute the pairwise distances between input data contained in X1 and X2
#     with some given metric (passed directly to scipy's cdist). If X2 is None
#     then compute the distances between X1 and itself.
#     """
#     X2 = X1 if (X2 is None) else X2
#     return ssd.cdist(X1, X2, metric)


# Path: reggie/means/basic.py
import numpy as np
from ._core import Mean
from ..kernels._distances import rescale, dist

"""
Implementation of basic functions.
"""

from __future__ import division
from __future__ import absolute_import
from __future__ import print_function



__all__ = ['Zero', 'Constant', 'Linear', 'Quadratic']



class Zero(Mean):