diff --git a/GPy/__init__.py b/GPy/__init__.py index d5520aa4..ecc3cf3c 100644 --- a/GPy/__init__.py +++ b/GPy/__init__.py @@ -15,7 +15,8 @@ from . import kern from . import plotting # Direct imports for convenience: -from .core import ProbabilisticModel, priors +from .core import Model +from GPy.core.parameterization import priors from paramz import Param, Parameterized, ObsAr, transformations as constraints from .__version__ import __version__ diff --git a/GPy/core/__init__.py b/GPy/core/__init__.py index ae1e6769..0fa020fd 100644 --- a/GPy/core/__init__.py +++ b/GPy/core/__init__.py @@ -1,7 +1,7 @@ # Copyright (c) 2012-2014, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) -from .probabilistic_model import ProbabilisticModel +from GPy.core.model import Model from .parameterization import Param, Parameterized from .gp import GP diff --git a/GPy/core/gp.py b/GPy/core/gp.py index dfb0f6b7..ae710355 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -3,19 +3,19 @@ import numpy as np from .. import kern -from .probabilistic_model import ProbabilisticModel +from GPy.core.model import Model from paramz import ObsAr from .mapping import Mapping from .. import likelihoods from ..inference.latent_function_inference import exact_gaussian_inference, expectation_propagation -from .variational import VariationalPosterior +from GPy.core.parameterization.variational import VariationalPosterior import logging import warnings from GPy.util.normalizer import MeanNorm logger = logging.getLogger("GP") -class GP(ProbabilisticModel): +class GP(Model): """ General purpose Gaussian process model @@ -541,7 +541,7 @@ class GP(ProbabilisticModel): :param optimize: whether to optimize the location of new X (True by default) :type optimize: boolean :return: a tuple containing the posterior estimation of X and the model that optimize X - :rtype: (:class:`~GPy.core.parameterization.variational.VariationalPosterior` and numpy.ndarray, :class:`~GPy.core.probabilistic_model.Model`) + :rtype: (:class:`~GPy.core.parameterization.variational.VariationalPosterior` and numpy.ndarray, :class:`~GPy.core.model.Model`) """ from ..inference.latent_function_inference.inferenceX import infer_newX return infer_newX(self, Y_new, optimize=optimize) diff --git a/GPy/core/probabilistic_model.py b/GPy/core/model.py similarity index 91% rename from GPy/core/probabilistic_model.py rename to GPy/core/model.py index d87fd29d..ad09c917 100644 --- a/GPy/core/probabilistic_model.py +++ b/GPy/core/model.py @@ -1,12 +1,12 @@ # Copyright (c) 2012-2014, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) from .parameterization.priorizable import Priorizable -from paramz import Model +from paramz import Model as ParamzModel -class ProbabilisticModel(Model, Priorizable): +class Model(ParamzModel, Priorizable): def __init__(self, name): - super(ProbabilisticModel, self).__init__(name) # Parameterized.__init__(self) + super(Model, self).__init__(name) # Parameterized.__init__(self) def log_likelihood(self): raise NotImplementedError("this needs to be implemented to use the model class") diff --git a/GPy/core/parameterization/__init__.py b/GPy/core/parameterization/__init__.py index 813d12fe..c31486d4 100644 --- a/GPy/core/parameterization/__init__.py +++ b/GPy/core/parameterization/__init__.py @@ -2,4 +2,5 @@ # Licensed under the BSD 3-clause license (see LICENSE.txt) from .param import Param -from .parameterized import Parameterized \ No newline at end of file +from .parameterized import Parameterized +from paramz import transformations \ No newline at end of file diff --git a/GPy/core/priors.py b/GPy/core/parameterization/priors.py similarity index 99% rename from GPy/core/priors.py rename to GPy/core/parameterization/priors.py index df2173ea..cb7699eb 100644 --- a/GPy/core/priors.py +++ b/GPy/core/parameterization/priors.py @@ -4,7 +4,7 @@ import numpy as np from scipy.special import gammaln, digamma -from ..util.linalg import pdinv +from ...util.linalg import pdinv from paramz.domains import _REAL, _POSITIVE import warnings import weakref diff --git a/GPy/core/variational.py b/GPy/core/parameterization/variational.py similarity index 99% rename from GPy/core/variational.py rename to GPy/core/parameterization/variational.py index 3cc9d00a..84a0b739 100644 --- a/GPy/core/variational.py +++ b/GPy/core/parameterization/variational.py @@ -5,8 +5,8 @@ Created on 6 Nov 2013 ''' import numpy as np -from .parameterization.parameterized import Parameterized -from .parameterization.param import Param +from .parameterized import Parameterized +from .param import Param from paramz.transformations import Logexp, Logistic,__fixed__ class VariationalPrior(Parameterized): diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index 761b517d..d71eecc3 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -6,7 +6,7 @@ from .gp import GP from .parameterization.param import Param from ..inference.latent_function_inference import var_dtc from .. import likelihoods -from .variational import VariationalPosterior +from GPy.core.parameterization.variational import VariationalPosterior import logging logger = logging.getLogger("sparse gp") diff --git a/GPy/inference/latent_function_inference/inferenceX.py b/GPy/inference/latent_function_inference/inferenceX.py index 0c8a2513..60a29952 100644 --- a/GPy/inference/latent_function_inference/inferenceX.py +++ b/GPy/inference/latent_function_inference/inferenceX.py @@ -2,8 +2,8 @@ # Licensed under the BSD 3-clause license (see LICENSE.txt) import numpy as np -from ...core import ProbabilisticModel -from ...core import variational +from ...core import Model +from GPy.core.parameterization import variational from ...util.linalg import tdot def infer_newX(model, Y_new, optimize=True, init='L2'): @@ -26,7 +26,7 @@ def infer_newX(model, Y_new, optimize=True, init='L2'): return infr_m.X, infr_m -class InferenceX(ProbabilisticModel): +class InferenceX(Model): """ The model class for inference of new X with given new Y. (replacing the "do_test_latent" in Bayesian GPLVM) It is a tiny inference model created from the original GP model. The kernel, likelihood (only Gaussian is supported at the moment) diff --git a/GPy/inference/latent_function_inference/var_dtc.py b/GPy/inference/latent_function_inference/var_dtc.py index 13ef954d..020cecaa 100644 --- a/GPy/inference/latent_function_inference/var_dtc.py +++ b/GPy/inference/latent_function_inference/var_dtc.py @@ -4,7 +4,7 @@ from .posterior import Posterior from ...util.linalg import mdot, jitchol, backsub_both_sides, tdot, dtrtrs, dtrtri, dpotri, dpotrs, symmetrify from ...util import diag -from ...core.variational import VariationalPosterior +from GPy.core.parameterization.variational import VariationalPosterior import numpy as np from . import LatentFunctionInference log_2_pi = np.log(2*np.pi) diff --git a/GPy/inference/latent_function_inference/var_dtc_parallel.py b/GPy/inference/latent_function_inference/var_dtc_parallel.py index 4c0e1c7b..50957c3b 100644 --- a/GPy/inference/latent_function_inference/var_dtc_parallel.py +++ b/GPy/inference/latent_function_inference/var_dtc_parallel.py @@ -4,7 +4,7 @@ from .posterior import Posterior from ...util.linalg import jitchol, backsub_both_sides, tdot, dtrtrs, dtrtri,pdinv from ...util import diag -from ...core.variational import VariationalPosterior +from GPy.core.parameterization.variational import VariationalPosterior import numpy as np from . import LatentFunctionInference log_2_pi = np.log(2*np.pi) diff --git a/GPy/kern/src/psi_comp/__init__.py b/GPy/kern/src/psi_comp/__init__.py index c1706679..9afa8e8c 100644 --- a/GPy/kern/src/psi_comp/__init__.py +++ b/GPy/kern/src/psi_comp/__init__.py @@ -3,7 +3,7 @@ from paramz.core.pickleable import Pickleable from paramz.caching import Cache_this -from ....core import variational +from GPy.core.parameterization import variational #from linear_psi_comp import LINEAr class PSICOMP(Pickleable): diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index daca864a..86638eb9 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -5,7 +5,7 @@ import numpy as np from .. import kern from ..core.sparse_gp_mpi import SparseGP_MPI from ..likelihoods import Gaussian -from ..core.variational import NormalPosterior, NormalPrior +from GPy.core.parameterization.variational import NormalPosterior, NormalPrior from ..inference.latent_function_inference.var_dtc_parallel import VarDTC_minibatch import logging diff --git a/GPy/models/bayesian_gplvm_minibatch.py b/GPy/models/bayesian_gplvm_minibatch.py index 9df9e266..73324386 100644 --- a/GPy/models/bayesian_gplvm_minibatch.py +++ b/GPy/models/bayesian_gplvm_minibatch.py @@ -5,7 +5,7 @@ import numpy as np import logging from .. import kern from ..likelihoods import Gaussian -from ..core.variational import NormalPosterior, NormalPrior +from GPy.core.parameterization.variational import NormalPosterior, NormalPrior from .sparse_gp_minibatch import SparseGPMiniBatch from ..core.parameterization.param import Param diff --git a/GPy/models/gp_kronecker_gaussian_regression.py b/GPy/models/gp_kronecker_gaussian_regression.py index dc623d9c..37a33bef 100644 --- a/GPy/models/gp_kronecker_gaussian_regression.py +++ b/GPy/models/gp_kronecker_gaussian_regression.py @@ -2,11 +2,11 @@ # Licensed under the BSD 3-clause license (see LICENSE.txt) import numpy as np -from ..core import ProbabilisticModel +from ..core import Model from paramz import ObsAr from .. import likelihoods -class GPKroneckerGaussianRegression(ProbabilisticModel): +class GPKroneckerGaussianRegression(Model): """ Kronecker GP regression @@ -29,7 +29,7 @@ class GPKroneckerGaussianRegression(ProbabilisticModel): """ def __init__(self, X1, X2, Y, kern1, kern2, noise_var=1., name='KGPR'): - ProbabilisticModel.__init__(self, name=name) + Model.__init__(self, name=name) # accept the construction arguments self.X1 = ObsAr(X1) self.X2 = ObsAr(X2) diff --git a/GPy/models/gradient_checker.py b/GPy/models/gradient_checker.py index 96c62c94..f7c17376 100644 --- a/GPy/models/gradient_checker.py +++ b/GPy/models/gradient_checker.py @@ -5,7 +5,7 @@ import numpy np = numpy from ..core.parameterization import Param -from ..core.probabilistic_model import ProbabilisticModel +from GPy.core.model import Model from ..util.block_matrices import get_blocks, get_block_shapes, unblock, get_blocks_3d, get_block_shapes_3d def get_shape(x): @@ -21,7 +21,7 @@ def at_least_one_element(x): def flatten_if_needed(x): return numpy.atleast_1d(x).flatten() -class GradientChecker(ProbabilisticModel): +class GradientChecker(Model): def __init__(self, f, df, x0, names=None, *args, **kwargs): """ diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index f8ce8997..be28d1a5 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -5,7 +5,7 @@ import numpy as np import itertools, logging from ..kern import Kern -from ..core.variational import NormalPrior +from GPy.core.parameterization.variational import NormalPrior from ..core.parameterization import Param from paramz import ObsAr from ..inference.latent_function_inference.var_dtc import VarDTC diff --git a/GPy/models/sparse_gp_classification.py b/GPy/models/sparse_gp_classification.py index e00a3533..a996732a 100644 --- a/GPy/models/sparse_gp_classification.py +++ b/GPy/models/sparse_gp_classification.py @@ -62,7 +62,7 @@ class SparseGPClassificationUncertainInput(SparseGP): .. Note:: Multiple independent outputs are allowed using columns of Y """ def __init__(self, X, X_variance, Y, kernel=None, Z=None, num_inducing=10, Y_metadata=None, normalizer=None): - from ..core.variational import NormalPosterior + from GPy.core.parameterization.variational import NormalPosterior if kernel is None: kernel = kern.RBF(X.shape[1]) diff --git a/GPy/models/sparse_gp_minibatch.py b/GPy/models/sparse_gp_minibatch.py index 69c65381..73393d85 100644 --- a/GPy/models/sparse_gp_minibatch.py +++ b/GPy/models/sparse_gp_minibatch.py @@ -4,7 +4,7 @@ from __future__ import print_function import numpy as np from ..core.parameterization.param import Param -from ..core.variational import VariationalPosterior +from GPy.core.parameterization.variational import VariationalPosterior from ..core.sparse_gp import SparseGP from ..core.gp import GP from ..inference.latent_function_inference import var_dtc diff --git a/GPy/models/sparse_gp_regression.py b/GPy/models/sparse_gp_regression.py index 5d649452..31bde23d 100644 --- a/GPy/models/sparse_gp_regression.py +++ b/GPy/models/sparse_gp_regression.py @@ -7,7 +7,7 @@ from ..core.sparse_gp_mpi import SparseGP_MPI from .. import likelihoods from .. import kern from ..inference.latent_function_inference import VarDTC -from ..core.variational import NormalPosterior +from GPy.core.parameterization.variational import NormalPosterior class SparseGPRegression(SparseGP_MPI): """ diff --git a/GPy/models/ss_gplvm.py b/GPy/models/ss_gplvm.py index dfbbcbd4..7cb1bb17 100644 --- a/GPy/models/ss_gplvm.py +++ b/GPy/models/ss_gplvm.py @@ -7,7 +7,7 @@ from ..core.sparse_gp_mpi import SparseGP_MPI from .. import kern from ..core.parameterization import Param from ..likelihoods import Gaussian -from ..core.variational import SpikeAndSlabPrior, SpikeAndSlabPosterior,VariationalPrior +from GPy.core.parameterization.variational import SpikeAndSlabPrior, SpikeAndSlabPosterior,VariationalPrior from ..inference.latent_function_inference.var_dtc_parallel import update_gradients, VarDTC_minibatch from ..kern.src.psi_comp.ssrbf_psi_gpucomp import PSICOMP_SSRBF_GPU diff --git a/GPy/models/ss_mrd.py b/GPy/models/ss_mrd.py index 182ee60b..d571a542 100644 --- a/GPy/models/ss_mrd.py +++ b/GPy/models/ss_mrd.py @@ -3,15 +3,15 @@ The Maniforld Relevance Determination model with the spike-and-slab prior """ import numpy as np -from ..core import ProbabilisticModel +from ..core import Model from .ss_gplvm import SSGPLVM -from ..core.variational import SpikeAndSlabPrior,NormalPosterior,VariationalPrior +from GPy.core.parameterization.variational import SpikeAndSlabPrior,NormalPosterior,VariationalPrior from ..util.misc import param_to_array from ..kern import RBF from ..core import Param from numpy.linalg.linalg import LinAlgError -class SSMRD(ProbabilisticModel): +class SSMRD(Model): def __init__(self, Ylist, input_dim, X=None, X_variance=None, Gammas=None, initx = 'PCA_concat', initz = 'permute', num_inducing=10, Zs=None, kernels=None, inference_methods=None, likelihoods=None, group_spike=True, @@ -117,13 +117,13 @@ class SSMRD(ProbabilisticModel): Gammas.append(gamma) return X, X_variance, Gammas, fracs - @ProbabilisticModel.optimizer_array.setter + @Model.optimizer_array.setter def optimizer_array(self, p): if self.mpi_comm != None: if self._IN_OPTIMIZATION_ and self.mpi_comm.rank==0: self.mpi_comm.Bcast(np.int32(1),root=0) self.mpi_comm.Bcast(p, root=0) - ProbabilisticModel.optimizer_array.fset(self,p) + Model.optimizer_array.fset(self,p) def optimize(self, optimizer=None, start=None, **kwargs): self._IN_OPTIMIZATION_ = True diff --git a/GPy/plotting/gpy_plot/plot_util.py b/GPy/plotting/gpy_plot/plot_util.py index a2d4a7c0..5a884b8e 100644 --- a/GPy/plotting/gpy_plot/plot_util.py +++ b/GPy/plotting/gpy_plot/plot_util.py @@ -334,7 +334,7 @@ def x_frame1D(X,plot_limits=None,resolution=None): """ assert X.shape[1] ==1, "x_frame1D is defined for one-dimensional inputs" if plot_limits is None: - from ...core.variational import VariationalPosterior + from GPy.core.parameterization.variational import VariationalPosterior if isinstance(X, VariationalPosterior): xmin,xmax = X.mean.min(0),X.mean.max(0) else: diff --git a/GPy/testing/examples_tests.py b/GPy/testing/examples_tests.py index 57b8ceb4..48a18119 100644 --- a/GPy/testing/examples_tests.py +++ b/GPy/testing/examples_tests.py @@ -25,7 +25,7 @@ def model_checkgrads(model): return model.checkgrad(step=1e-4) def model_instance(model): - return isinstance(model, GPy.core.probabilistic_model.Model) + return isinstance(model, GPy.core.model.Model) def flatten_nested(lst): result = [] diff --git a/GPy/testing/gp_tests.py b/GPy/testing/gp_tests.py index 5cde5e98..63345c18 100644 --- a/GPy/testing/gp_tests.py +++ b/GPy/testing/gp_tests.py @@ -5,7 +5,7 @@ Created on 4 Sep 2015 ''' import unittest import numpy as np, GPy -from ..core.variational import NormalPosterior +from GPy.core.parameterization.variational import NormalPosterior class Test(unittest.TestCase): diff --git a/GPy/testing/kernel_tests.py b/GPy/testing/kernel_tests.py index efb313a2..1b1c6ea5 100644 --- a/GPy/testing/kernel_tests.py +++ b/GPy/testing/kernel_tests.py @@ -16,7 +16,7 @@ except ImportError: config.set('cython', 'working', 'False') -class Kern_check_model(GPy.core.ProbabilisticModel): +class Kern_check_model(GPy.core.Model): """ This is a dummy model class used as a base class for checking that the gradients of a given kernel are implemented correctly. It enables @@ -456,7 +456,7 @@ class KernelTestsProductWithZeroValues(unittest.TestCase): class Kernel_Psi_statistics_GradientTests(unittest.TestCase): def setUp(self): - from GPy.core.variational import NormalPosterior + from GPy.core.parameterization.variational import NormalPosterior N,M,Q = 100,20,3 X = np.random.randn(N,Q) diff --git a/GPy/testing/mapping_tests.py b/GPy/testing/mapping_tests.py index 7c327f97..2ff0e2d8 100644 --- a/GPy/testing/mapping_tests.py +++ b/GPy/testing/mapping_tests.py @@ -5,7 +5,7 @@ import unittest import numpy as np import GPy -class MappingGradChecker(GPy.core.ProbabilisticModel): +class MappingGradChecker(GPy.core.Model): """ This class has everything we need to check the gradient of a mapping. It implement a simple likelihood which is a weighted sum of the outputs of the diff --git a/GPy/testing/pickle_tests.py b/GPy/testing/pickle_tests.py index 285eb6bb..40f690c4 100644 --- a/GPy/testing/pickle_tests.py +++ b/GPy/testing/pickle_tests.py @@ -9,7 +9,7 @@ import pickle import numpy as np import tempfile from GPy.examples.dimensionality_reduction import mrd_simulation -from GPy.core.variational import NormalPosterior +from GPy.core.parameterization.variational import NormalPosterior from GPy.models.gp_regression import GPRegression from functools import reduce diff --git a/GPy/testing/rv_transformation_tests.py b/GPy/testing/rv_transformation_tests.py index 2be58e54..9c510aa4 100644 --- a/GPy/testing/rv_transformation_tests.py +++ b/GPy/testing/rv_transformation_tests.py @@ -10,12 +10,12 @@ import scipy.stats as st import GPy -class TestModel(GPy.core.ProbabilisticModel): +class TestModel(GPy.core.Model): """ A simple GPy model with one parameter. """ def __init__(self, theta=1.): - GPy.core.ProbabilisticModel.__init__(self, 'test_model') + GPy.core.Model.__init__(self, 'test_model') theta = GPy.core.Param('theta', theta) self.link_parameter(theta)