diff --git a/.travis.yml b/.travis.yml index cfa0d351..7a35d6b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ addons: env: - PYTHON_VERSION=2.7 - - PYTHON_VERSION=3.3 + #- PYTHON_VERSION=3.3 - PYTHON_VERSION=3.4 - PYTHON_VERSION=3.5 diff --git a/GPy/__version__.py b/GPy/__version__.py index 39e0411d..0b2f79db 100644 --- a/GPy/__version__.py +++ b/GPy/__version__.py @@ -1 +1 @@ -__version__ = "1.0.9" +__version__ = "1.1.3" diff --git a/GPy/testing/minibatch_tests.py b/GPy/testing/minibatch_tests.py index fbf12939..09bcc1dc 100644 --- a/GPy/testing/minibatch_tests.py +++ b/GPy/testing/minibatch_tests.py @@ -127,28 +127,32 @@ class SparseGPMinibatchTest(unittest.TestCase): def test_sparsegp_init(self): # Test if the different implementations give the exact same likelihood as the full model. # All of the following settings should give the same likelihood and gradients as the full model: - np.random.seed(1234) - Z = self.X[np.random.choice(self.X.shape[0], replace=False, size=10)].copy() - Q = Z.shape[1] - m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=True, stochastic=False) - assert(m.checkgrad()) - m.optimize('adadelta', max_iters=10) - assert(m.checkgrad()) - - m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=True, stochastic=True) - assert(m.checkgrad()) - m.optimize('rprop', max_iters=10) - assert(m.checkgrad()) - - m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=False, stochastic=False) - assert(m.checkgrad()) - m.optimize('rprop', max_iters=10) - assert(m.checkgrad()) - - m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=False, stochastic=True) - assert(m.checkgrad()) - m.optimize('adadelta', max_iters=10) - assert(m.checkgrad()) + try: + np.random.seed(1234) + Z = self.X[np.random.choice(self.X.shape[0], replace=False, size=10)].copy() + Q = Z.shape[1] + m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=True, stochastic=False) + assert(m.checkgrad()) + m.optimize('adadelta', max_iters=10) + assert(m.checkgrad()) + + m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=True, stochastic=True) + assert(m.checkgrad()) + m.optimize('rprop', max_iters=10) + assert(m.checkgrad()) + + m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=False, stochastic=False) + assert(m.checkgrad()) + m.optimize('rprop', max_iters=10) + assert(m.checkgrad()) + + m = GPy.models.sparse_gp_minibatch.SparseGPMiniBatch(self.X, self.Y, Z, GPy.kern.RBF(Q)+GPy.kern.Matern32(Q)+GPy.kern.Bias(Q), GPy.likelihoods.Gaussian(), missing_data=False, stochastic=True) + assert(m.checkgrad()) + m.optimize('adadelta', max_iters=10) + assert(m.checkgrad()) + except ImportError: + from nose import SkipTest + raise SkipTest('climin not installed, skipping stochastic gradients') def test_predict_missing_data(self): m = GPy.models.bayesian_gplvm_minibatch.BayesianGPLVMMiniBatch(self.Y, self.Q, X_variance=False, missing_data=True, stochastic=True, batchsize=self.Y.shape[1]) diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..d800a886 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,89 @@ +environment: + pip_access: + secure: 8/ZjXFwtd1S7ixd7PJOpptupKKEDhm2da/q3unabJ00= + gpy_version: 1.1.3 + matrix: + - PYTHON_VERSION: 2.7 + MINICONDA: C:\Miniconda-x64 + - PYTHON_VERSION: 3.5 + MINICONDA: C:\Miniconda35-x64 + +#configuration: +# - Debug +# - Release + +install: + - "set PATH=%MINICONDA%;%MINICONDA%\\Scripts;%PATH%" + - conda config --set always_yes yes --set changeps1 no + - conda update -q conda + - conda info -a + - "conda create -q -n build-environment python=%PYTHON_VERSION% numpy scipy matplotlib" + - activate build-environment + # We need wheel installed to build wheels + - python -m pip install wheel + # GPy needs paramz + - python -m pip install paramz + - python -m pip install nose-show-skipped + - python -m pip install coverage + - python -m pip install codecov + - python -m pip install twine + - "python setup.py develop" + +build: off + +test_script: + # Put your test command here. + # If you don't need to build C extensions on 64-bit Python 3.3 or 3.4, + # you can remove "build.cmd" from the front of the command, as it's + # only needed to support those cases. + # Note that you must use the environment variable %PYTHON% to refer to + # the interpreter you're using - Appveyor does not do anything special + # to put the Python evrsion you want to use on PATH. + #- "build.cmd %PYTHON%\\python.exe setup.py test" + - "coverage run travis_tests.py" + +after_test: + # This step builds your wheels. + - "python setup.py bdist_wheel bdist_wininst" + - codecov + +artifacts: + # bdist_wheel puts your built wheel in the dist directory + - path: dist\* + + +deploy_script: +- echo [distutils] > %USERPROFILE%\\.pypirc +- echo index-servers = >> %USERPROFILE%\\.pypirc +- echo pypi >> %USERPROFILE%\\.pypirc +- echo test >> %USERPROFILE%\\.pypirc +- echo[ +- echo [pypi] >> %USERPROFILE%\\.pypirc +- echo username:maxz >> %USERPROFILE%\\.pypirc +- echo password:%pip_access% >> %USERPROFILE%\\.pypirc +- echo[ +- echo [test] >> %USERPROFILE%\\.pypirc +- echo repository:https://testpypi.python.org/pypi >> %USERPROFILE%\\.pypirc +- echo username:maxz >> %USERPROFILE%\\.pypirc +- echo password:%pip_access% >> %USERPROFILE%\\.pypirc +- ps: >- + if ($env:APPVEYOR_REPO_BRANCH -eq 'devel') { + twine upload -r test dist/* + } + elseif ($env:APPVEYOR_REPO_BRANCH -eq 'deploy') { + twine upload dist/* + } + else { + echo not deploying on other branches + } + +# deploy: +# - provider: GitHub +# release: GPy-v$(gpy_version) +# description: 'GPy windows install' +# artifact: dist/*.exe # upload wininst to GitHub +# draft: false +# prerelease: false +# on: +# branch: deploy # release from deploy branch only +# appveyor_repo_tag: true # deploy on tag push only \ No newline at end of file diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..a8a1ba08 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,24 @@ +codecov: + branch: devel + +coverage: + precision: 2 + round: down + range: "40...100" + + status: + project: + default: + target: auto + if_no_uploads: error + + patch: + default: + if_no_uploads: error + + changes: true + + +comment: + layout: "header, diff, changes, suggestions" + behavior: default \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 0f00211e..093dae49 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,12 +1,11 @@ [bumpversion] -current_version = 1.0.9 +current_version = 1.1.3 tag = False commit = True [bumpversion:file:GPy/__version__.py] -[bdist_wheel] -universal = 1 +[bumpversion:file:appveyor.yml] [upload_docs] upload-dir = doc/build/html diff --git a/setup.py b/setup.py index 18e0c7d8..c8d20add 100644 --- a/setup.py +++ b/setup.py @@ -59,14 +59,7 @@ def read_to_rst(fname): desc = """ -- `GPy homepage `_ -- `Tutorial notebooks `_ -- `User mailing-list `_ -- `Developer documentation `_ -- `Travis-CI unit-tests `_ -- `License `_ - -For full description and installation instructions please refer to the github page. +Please refer to the github homepage for detailed instructions on installation and usage. """ @@ -116,6 +109,7 @@ setup(name = 'GPy', author = read_to_rst('AUTHORS.txt'), author_email = "gpy.authors@gmail.com", description = ("The Gaussian Process Toolbox"), + long_description = desc, license = "BSD 3-clause", keywords = "machine-learning gaussian-processes kernels", url = "http://sheffieldml.github.com/GPy/", @@ -154,8 +148,7 @@ setup(name = 'GPy', include_package_data = True, py_modules = ['GPy.__init__'], test_suite = 'GPy.testing', - long_description=desc, - install_requires=['numpy>=1.7', 'scipy>=0.16', 'six', 'paramz>=0.5.2'], + install_requires = ['numpy>=1.7', 'scipy>=0.16', 'six', 'paramz>=0.5.2'], extras_require = {'docs':['sphinx'], 'optional':['mpi4py', 'ipython>=4.0.0',