Skip to content

README of pypi now directly in setup #368

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Apr 12, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion GPy/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.0.6"
__version__ = "1.0.7"
2 changes: 1 addition & 1 deletion GPy/plotting/gpy_plot/data_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ def _plot_inducing(self, canvas, visible_dims, projection, label, **plot_kwargs)
visible_dims = [i for i in sig_dims if i is not None]
free_dims = get_free_dims(self, visible_dims, None)

Z = self.Z[:, free_dims]
Z = self.Z.values
plots = {}

#one dimensional plotting
Expand Down
19 changes: 10 additions & 9 deletions GPy/plotting/gpy_plot/latent_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,28 +112,29 @@ def plot_latent_inducing(self,
which_indices=None,
legend=False,
plot_limits=None,
marker='^',
num_samples=1000,
marker=None,
projection='2d',
**kwargs):
"""
Plot a scatter plot of the inducing inputs.

:param array-like labels: a label for each data point (row) of the inputs
:param (int, int) which_indices: which input dimensions to plot against each other
:param [int] which_indices: which input dimensions to plot against each other
:param bool legend: whether to plot the legend on the figure
:param plot_limits: the plot limits for the plot
:type plot_limits: (xmin, xmax, ymin, ymax) or ((xmin, xmax), (ymin, ymax))
:param str marker: markers to use - cycle if more labels then markers are given
:param str marker: marker to use [default is custom arrow like]
:param kwargs: the kwargs for the scatter plots
:param str projection: for now 2d or 3d projection (other projections can be implemented, see developer documentation)
"""
canvas, projection, kwargs, sig_dims = _new_canvas(self, projection, kwargs, which_indices)

Z = self.Z.values
labels = np.array(['inducing'] * Z.shape[0])
kwargs['marker'] = marker
if legend: label = 'inducing'
else: label = None
if marker is not None:
kwargs['marker'] = marker
update_not_existing_kwargs(kwargs, pl().defaults.inducing_2d) # @UndefinedVariable
scatters = _plot_latent_scatter(canvas, Z, sig_dims, labels, num_samples=num_samples, projection=projection, **kwargs)
from .data_plots import _plot_inducing
scatters = _plot_inducing(self, canvas, sig_dims[:2], projection, label, **kwargs)
return pl().add_to_canvas(canvas, dict(scatter=scatters), legend=legend)


Expand Down
2 changes: 1 addition & 1 deletion GPy/plotting/matplot_dep/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
# Data plots:
data_1d = dict(lw=1.5, marker='x', color='k')
data_2d = dict(s=35, edgecolors='none', linewidth=0., cmap=cm.get_cmap('hot'), alpha=.5)
inducing_1d = dict(lw=0, s=500, facecolors=Tango.colorsHex['darkRed'])
inducing_1d = dict(lw=0, s=500, color=Tango.colorsHex['darkRed'])
inducing_2d = dict(s=17, edgecolor='k', linewidth=.4, color='white', alpha=.5, marker='^')
inducing_3d = dict(lw=.3, s=500, color=Tango.colorsHex['darkRed'], edgecolor='k')
xerrorbar = dict(color='k', fmt='none', elinewidth=.5, alpha=.5)
Expand Down
6 changes: 3 additions & 3 deletions GPy/plotting/matplot_dep/plot_definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def plot(self, ax, X, Y, Z=None, color=None, label=None, **kwargs):
return ax.plot(X, Y, color=color, zs=Z, label=label, **kwargs)
return ax.plot(X, Y, color=color, label=label, **kwargs)

def plot_axis_lines(self, ax, X, color=Tango.colorsHex['mediumBlue'], label=None, **kwargs):
def plot_axis_lines(self, ax, X, color=Tango.colorsHex['darkRed'], label=None, **kwargs):
from matplotlib import transforms
from matplotlib.path import Path
if 'marker' not in kwargs:
Expand All @@ -126,14 +126,14 @@ def barplot(self, ax, x, height, width=0.8, bottom=0, color=Tango.colorsHex['med
bottom=bottom, label=label, color=color,
**kwargs)

def xerrorbar(self, ax, X, Y, error, color=Tango.colorsHex['mediumBlue'], label=None, **kwargs):
def xerrorbar(self, ax, X, Y, error, color=Tango.colorsHex['darkRed'], label=None, **kwargs):
if not('linestyle' in kwargs or 'ls' in kwargs):
kwargs['ls'] = 'none'
#if Z is not None:
# return ax.errorbar(X, Y, Z, xerr=error, ecolor=color, label=label, **kwargs)
return ax.errorbar(X, Y, xerr=error, ecolor=color, label=label, **kwargs)

def yerrorbar(self, ax, X, Y, error, color=Tango.colorsHex['mediumBlue'], label=None, **kwargs):
def yerrorbar(self, ax, X, Y, error, color=Tango.colorsHex['darkRed'], label=None, **kwargs):
if not('linestyle' in kwargs or 'ls' in kwargs):
kwargs['ls'] = 'none'
#if Z is not None:
Expand Down
Binary file added GPy/testing/baseline/bayesian_gplvm_gradient.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/bayesian_gplvm_gradient.png
Binary file not shown.
Binary file added GPy/testing/baseline/bayesian_gplvm_inducing.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/bayesian_gplvm_inducing.png
Binary file not shown.
Binary file not shown.
Binary file removed GPy/testing/baseline/bayesian_gplvm_inducing_3d.png
Binary file not shown.
Binary file added GPy/testing/baseline/bayesian_gplvm_latent.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/bayesian_gplvm_latent.png
Binary file not shown.
Binary file added GPy/testing/baseline/bayesian_gplvm_latent_3d.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/bayesian_gplvm_latent_3d.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added GPy/testing/baseline/coverage_3d_plot.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/coverage_3d_plot.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added GPy/testing/baseline/coverage_gradient.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/coverage_gradient.png
Binary file not shown.
Binary file added GPy/testing/baseline/coverage_imshow_interact.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/coverage_imshow_interact.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_2d_data.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_2d_data.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_2d_in_error.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_2d_in_error.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_2d_inducing.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_2d_inducing.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_2d_mean.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_2d_mean.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_3d_data.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_3d_data.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_3d_inducing.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_3d_inducing.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_3d_mean.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_3d_mean.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_class_likelihood.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_class_likelihood.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_class_raw.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_class_raw.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_class_raw_link.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_class_raw_link.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_conf.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_conf.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_data.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_data.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_density.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_density.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_in_error.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_in_error.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_mean.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_mean.png
Binary file not shown.
Binary file added GPy/testing/baseline/gp_out_error.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_out_error.png
Diff not rendered.
Binary file added GPy/testing/baseline/gp_samples.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gp_samples.png
Diff not rendered.
Binary file added GPy/testing/baseline/gplvm_gradient.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gplvm_gradient.png
Diff not rendered.
Binary file added GPy/testing/baseline/gplvm_latent.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gplvm_latent.png
Diff not rendered.
Binary file added GPy/testing/baseline/gplvm_latent_3d.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gplvm_latent_3d.png
Diff not rendered.
Binary file added GPy/testing/baseline/gplvm_magnification.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/gplvm_magnification.png
Diff not rendered.
Binary file added GPy/testing/baseline/kern_ARD.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/kern_ARD.png
Diff not rendered.
Binary file added GPy/testing/baseline/kern_cov_1d.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/kern_cov_1d.png
Diff not rendered.
Binary file added GPy/testing/baseline/kern_cov_2d.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/kern_cov_2d.png
Diff not rendered.
Binary file added GPy/testing/baseline/kern_cov_3d.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/kern_cov_3d.png
Diff not rendered.
Binary file added GPy/testing/baseline/kern_cov_no_lim.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/kern_cov_no_lim.png
Diff not rendered.
Binary file not shown.
Binary file removed GPy/testing/baseline/sparse_gp_class_likelihood.png
Diff not rendered.
Binary file added GPy/testing/baseline/sparse_gp_class_raw.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/sparse_gp_class_raw.png
Diff not rendered.
Binary file added GPy/testing/baseline/sparse_gp_class_raw_link.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/sparse_gp_class_raw_link.png
Diff not rendered.
Binary file added GPy/testing/baseline/sparse_gp_data_error.npz
Binary file not shown.
Binary file removed GPy/testing/baseline/sparse_gp_data_error.png
Diff not rendered.
114 changes: 91 additions & 23 deletions GPy/testing/plotting_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def test_change_plotting(self):
except ImportError:
raise SkipTest("Matplotlib not installed, not testing plots")

extensions = ['png']
extensions = ['npz']

def _image_directories():
"""
Expand All @@ -93,39 +93,107 @@ def _image_directories():
if not os.path.exists(baseline_dir):
raise SkipTest("Not installed from source, baseline not available. Install from source to test plotting")

def _sequenceEqual(a, b):
assert len(a) == len(b), "Sequences not same length"
for i, [x, y], in enumerate(zip(a, b)):
assert x == y, "element not matching {}".format(i)
def _image_comparison(baseline_images, extensions=['pdf','svg','png'], tol=11, rtol=1e-3, **kwargs):

def _notFound(path):
raise IOError('File {} not in baseline')

def _image_comparison(baseline_images, extensions=['pdf','svg','png'], tol=11):
for num, base in zip(plt.get_fignums(), baseline_images):
for ext in extensions:
fig = plt.figure(num)
fig.canvas.draw()
#fig.axes[0].set_axis_off()
#fig.set_frameon(False)
fig.canvas.draw()
fig.savefig(os.path.join(result_dir, "{}.{}".format(base, ext)),
transparent=True,
edgecolor='none',
facecolor='none',
#bbox='tight'
)
if ext in ['npz']:
figdict = flatten_axis(fig)
np.savez_compressed(os.path.join(result_dir, "{}.{}".format(base, ext)), **figdict)
fig.savefig(os.path.join(result_dir, "{}.{}".format(base, 'png')),
transparent=True,
edgecolor='none',
facecolor='none',
#bbox='tight'
)
else:
fig.savefig(os.path.join(result_dir, "{}.{}".format(base, ext)),
transparent=True,
edgecolor='none',
facecolor='none',
#bbox='tight'
)
for num, base in zip(plt.get_fignums(), baseline_images):
for ext in extensions:
#plt.close(num)
actual = os.path.join(result_dir, "{}.{}".format(base, ext))
expected = os.path.join(baseline_dir, "{}.{}".format(base, ext))
def do_test():
err = compare_images(expected, actual, tol, in_decorator=True)
if err:
raise SkipTest("Error between {} and {} is {:.5f}, which is bigger then the tolerance of {:.5f}".format(actual, expected, err['rms'], tol))
if ext == 'npz':
def do_test():
if not os.path.exists(expected):
import shutil
shutil.copy2(actual, expected)
#shutil.copy2(os.path.join(result_dir, "{}.{}".format(base, 'png')), os.path.join(baseline_dir, "{}.{}".format(base, 'png')))
raise IOError("Baseline file {} not found, copying result {}".format(expected, actual))
else:
exp_dict = dict(np.load(expected).items())
act_dict = dict(np.load(actual).items())
for name in act_dict:
if name in exp_dict:
try:
np.testing.assert_allclose(exp_dict[name], act_dict[name], err_msg="Mismatch in {}.{}".format(base, name), rtol=rtol, **kwargs)
except AssertionError as e:
raise SkipTest(e)
else:
def do_test():
err = compare_images(expected, actual, tol, in_decorator=True)
if err:
raise SkipTest("Error between {} and {} is {:.5f}, which is bigger then the tolerance of {:.5f}".format(actual, expected, err['rms'], tol))
yield do_test
plt.close('all')

def flatten_axis(ax, prevname=''):
import inspect
members = inspect.getmembers(ax)

arrays = {}

def _flatten(l, pre):
arr = {}
if isinstance(l, np.ndarray):
if l.size:
arr[pre] = np.asarray(l)
elif isinstance(l, dict):
for _n in l:
_tmp = _flatten(l, pre+"."+_n+".")
for _nt in _tmp.keys():
arrays[_nt] = _tmp[_nt]
elif isinstance(l, list) and len(l)>0:
for i in range(len(l)):
_tmp = _flatten(l[i], pre+"[{}]".format(i))
for _n in _tmp:
arr["{}".format(_n)] = _tmp[_n]
else:
return flatten_axis(l, pre+'.')
return arr


for name, l in members:
if isinstance(l, np.ndarray):
arrays[prevname+name] = np.asarray(l)
elif isinstance(l, list) and len(l)>0:
for i in range(len(l)):
_tmp = _flatten(l[i], prevname+name+"[{}]".format(i))
for _n in _tmp:
arrays["{}".format(_n)] = _tmp[_n]

return arrays

def _a(x,y,decimal):
np.testing.assert_array_almost_equal(x, y, decimal)

def compare_axis_dicts(x, y, decimal=6):
try:
assert(len(x)==len(y))
for name in x:
_a(x[name], y[name], decimal)
except AssertionError as e:
raise SkipTest(e.message)

def test_figure():
np.random.seed(1239847)
from GPy.plotting import plotting_library as pl
Expand Down Expand Up @@ -187,7 +255,7 @@ def test_kernel():
k2.plot_ARD(['rbf', 'linear', 'bias'], legend=True)
k2.plot_covariance(visible_dims=[0, 3], plot_limits=(-1,3))
k2.plot_covariance(visible_dims=[2], plot_limits=(-1, 3))
k2.plot_covariance(visible_dims=[2, 4], plot_limits=((-1, 0), (5, 3)), projection='3d')
k2.plot_covariance(visible_dims=[2, 4], plot_limits=((-1, 0), (5, 3)), projection='3d', rstride=10, cstride=10)
k2.plot_covariance(visible_dims=[1, 4])
for do_test in _image_comparison(
baseline_images=['kern_{}'.format(sub) for sub in ["ARD", 'cov_2d', 'cov_1d', 'cov_3d', 'cov_no_lim']],
Expand Down Expand Up @@ -260,7 +328,7 @@ def test_threed():
m.plot_samples(projection='3d', plot_raw=False, samples=1)
plt.close('all')
m.plot_data(projection='3d')
m.plot_mean(projection='3d')
m.plot_mean(projection='3d', rstride=10, cstride=10)
m.plot_inducing(projection='3d')
#m.plot_errorbars_trainset(projection='3d')
for do_test in _image_comparison(baseline_images=['gp_3d_{}'.format(sub) for sub in ["data", "mean", 'inducing',
Expand Down Expand Up @@ -325,7 +393,7 @@ def test_sparse_classification():
m.plot(plot_raw=True, apply_link=False, samples=3)
np.random.seed(111)
m.plot(plot_raw=True, apply_link=True, samples=3)
for do_test in _image_comparison(baseline_images=['sparse_gp_class_{}'.format(sub) for sub in ["likelihood", "raw", 'raw_link']], extensions=extensions):
for do_test in _image_comparison(baseline_images=['sparse_gp_class_{}'.format(sub) for sub in ["likelihood", "raw", 'raw_link']], extensions=extensions, rtol=2):
yield (do_test, )

def test_gplvm():
Expand Down
16 changes: 0 additions & 16 deletions README.rst

This file was deleted.

5 changes: 1 addition & 4 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 1.0.6
current_version = 1.0.7
tag = False
commit = True

Expand All @@ -11,6 +11,3 @@ universal = 1
[upload_docs]
upload-dir = doc/build/html

[metadata]
description-file = README.rst

13 changes: 12 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,18 @@ def read_to_rst(fname):
except ImportError:
return read(fname)

desc = read('README.rst')
desc = """

- `GPy homepage <http://sheffieldml.github.io/GPy/>`_
- `Tutorial notebooks <http://nbviewer.ipython.org/github/SheffieldML/notebook/blob/master/GPy/index.ipynb>`_
- `User mailing-list <https://lists.shef.ac.uk/sympa/subscribe/gpy-users>`_
- `Developer documentation <http://gpy.readthedocs.org/en/devel/>`_
- `Travis-CI unit-tests <https://travis-ci.org/SheffieldML/GPy>`_
- `License <https://opensource.org/licenses/BSD-3-Clause>`_

For full description and installation instructions please refer to the github page.

"""

version_dummy = {}
exec(read('GPy/__version__.py'), version_dummy)
Expand Down
2 changes: 1 addition & 1 deletion travis_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,5 @@
import nose, warnings
with warnings.catch_warnings():
warnings.simplefilter("ignore")
nose.main('GPy', defaultTest='GPy/testing/')
nose.main('GPy', defaultTest='GPy/testing/', argv=['', '-v'])