Merge pull request #829 from jbect/init-super

Use super().__init__ consistently
This commit is contained in:
Neil Lawrence 2020-06-19 11:16:43 +01:00 committed by GitHub
commit 490c4c73f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 47 additions and 42 deletions

View file

@ -46,7 +46,7 @@ class GpGrid(GP):
inference_method = gaussian_grid_inference.GaussianGridInference() inference_method = gaussian_grid_inference.GaussianGridInference()
GP.__init__(self, X, Y, kernel, likelihood, inference_method=inference_method, name=name, Y_metadata=Y_metadata, normalizer=normalizer) super(GpGrid, self).__init__(X, Y, kernel, likelihood, inference_method=inference_method, name=name, Y_metadata=Y_metadata, normalizer=normalizer)
self.posterior = None self.posterior = None
def parameters_changed(self): def parameters_changed(self):

View file

@ -53,7 +53,7 @@ class SparseGP(GP):
self.Z = Param('inducing inputs', Z) self.Z = Param('inducing inputs', Z)
self.num_inducing = Z.shape[0] self.num_inducing = Z.shape[0]
GP.__init__(self, X, Y, kernel, likelihood, mean_function, inference_method=inference_method, name=name, Y_metadata=Y_metadata, normalizer=normalizer) super(SparseGP, self).__init__(X, Y, kernel, likelihood, mean_function, inference_method=inference_method, name=name, Y_metadata=Y_metadata, normalizer=normalizer)
logger.info("Adding Z as parameter") logger.info("Adding Z as parameter")
self.link_parameter(self.Z, index=0) self.link_parameter(self.Z, index=0)

View file

@ -21,7 +21,7 @@ class Compound(Mapping):
def __init__(self, mapping1, mapping2): def __init__(self, mapping1, mapping2):
assert(mapping1.output_dim==mapping2.input_dim) assert(mapping1.output_dim==mapping2.input_dim)
input_dim, output_dim = mapping1.input_dim, mapping2.output_dim input_dim, output_dim = mapping1.input_dim, mapping2.output_dim
Mapping.__init__(self, input_dim=input_dim, output_dim=output_dim) super(Compound, self).__init__(input_dim=input_dim, output_dim=output_dim)
self.mapping1 = mapping1 self.mapping1 = mapping1
self.mapping2 = mapping2 self.mapping2 = mapping2
self.link_parameters(self.mapping1, self.mapping2) self.link_parameters(self.mapping1, self.mapping2)

View file

@ -21,7 +21,7 @@ class Constant(Mapping):
""" """
def __init__(self, input_dim, output_dim, value=0., name='constmap'): def __init__(self, input_dim, output_dim, value=0., name='constmap'):
Mapping.__init__(self, input_dim=input_dim, output_dim=output_dim, name=name) super(Constant, self).__init__(input_dim=input_dim, output_dim=output_dim, name=name)
value = np.atleast_1d(value) value = np.atleast_1d(value)
if not len(value.shape) ==1: if not len(value.shape) ==1:
raise ValueError("bad constant values: pass a float or flat vectoor") raise ValueError("bad constant values: pass a float or flat vectoor")

View file

@ -8,7 +8,7 @@ class Identity(Mapping):
A mapping that does nothing! A mapping that does nothing!
""" """
def __init__(self, input_dim, output_dim, name='identity'): def __init__(self, input_dim, output_dim, name='identity'):
Mapping.__init__(self, input_dim, output_dim, name) super(Identity, self).__init__(input_dim, output_dim, name)
def f(self, X): def f(self, X):
return X return X

View file

@ -33,7 +33,7 @@ class Kernel(Mapping):
""" """
def __init__(self, input_dim, output_dim, Z, kernel, name='kernmap'): def __init__(self, input_dim, output_dim, Z, kernel, name='kernmap'):
Mapping.__init__(self, input_dim=input_dim, output_dim=output_dim, name=name) super(Kernel, self).__init__(input_dim=input_dim, output_dim=output_dim, name=name)
self.kern = kernel self.kern = kernel
self.Z = Z self.Z = Z
self.num_bases, Zdim = Z.shape self.num_bases, Zdim = Z.shape

View file

@ -15,7 +15,7 @@ class PiecewiseLinear(Mapping):
assert input_dim==1 assert input_dim==1
assert output_dim==1 assert output_dim==1
Mapping.__init__(self, input_dim, output_dim, name) super(PiecewiseLinear, self).__init__(input_dim, output_dim, name)
values, breaks = np.array(values).flatten(), np.array(breaks).flatten() values, breaks = np.array(values).flatten(), np.array(breaks).flatten()
assert values.size == breaks.size assert values.size == breaks.size

View file

@ -30,7 +30,7 @@ class BCGPLVM(GPLVM):
else: else:
assert mapping.input_dim==Y.shape[1], "mapping input dim does not work for Y dimension" assert mapping.input_dim==Y.shape[1], "mapping input dim does not work for Y dimension"
assert mapping.output_dim==input_dim, "mapping output dim does not work for self.input_dim" assert mapping.output_dim==input_dim, "mapping output dim does not work for self.input_dim"
GPLVM.__init__(self, Y, input_dim, X=mapping.f(Y), kernel=kernel, name="bcgplvm") super(BCGPLVM, self).__init__(Y, input_dim, X=mapping.f(Y), kernel=kernel, name="bcgplvm")
self.unlink_parameter(self.X) self.unlink_parameter(self.X)
self.mapping = mapping self.mapping = mapping
self.link_parameter(self.mapping) self.link_parameter(self.mapping)

View file

@ -35,8 +35,8 @@ class GPClassification(GP):
if inference_method is None: if inference_method is None:
inference_method = EP() inference_method = EP()
GP.__init__(self, X=X, Y=Y, kernel=kernel, likelihood=likelihood, inference_method=inference_method, super(GPClassification, self).__init__(X=X, Y=Y, kernel=kernel, likelihood=likelihood, inference_method=inference_method,
mean_function=mean_function, name='gp_classification', normalizer=normalizer) mean_function=mean_function, name='gp_classification', normalizer=normalizer)
@staticmethod @staticmethod
def from_gp(gp): def from_gp(gp):

View file

@ -26,7 +26,7 @@ class GPKroneckerGaussianRegression(Model):
""" """
def __init__(self, X1, X2, Y, kern1, kern2, noise_var=1., name='KGPR'): def __init__(self, X1, X2, Y, kern1, kern2, noise_var=1., name='KGPR'):
Model.__init__(self, name=name) super(GPKroneckerGaussianRegression, self).__init__(name=name)
# accept the construction arguments # accept the construction arguments
self.X1 = ObsAr(X1) self.X1 = ObsAr(X1)

View file

@ -46,8 +46,8 @@ class SparseGPClassification(SparseGP):
if inference_method is None: if inference_method is None:
inference_method = EPDTC() inference_method = EPDTC()
SparseGP.__init__(self, X, Y, Z, kernel, likelihood, mean_function=mean_function, inference_method=inference_method, super(SparseGPClassification, self).__init__(X, Y, Z, kernel, likelihood, mean_function=mean_function, inference_method=inference_method,
normalizer=normalizer, name='SparseGPClassification', Y_metadata=Y_metadata) normalizer=normalizer, name='SparseGPClassification', Y_metadata=Y_metadata)
@staticmethod @staticmethod
def from_sparse_gp(sparse_gp): def from_sparse_gp(sparse_gp):
@ -136,9 +136,9 @@ class SparseGPClassificationUncertainInput(SparseGP):
X = NormalPosterior(X, X_variance) X = NormalPosterior(X, X_variance)
SparseGP.__init__(self, X, Y, Z, kernel, likelihood, super(SparseGPClassificationUncertainInput, self).__init__(X, Y, Z, kernel, likelihood,
inference_method=EPDTC(), inference_method=EPDTC(), name='SparseGPClassification',
name='SparseGPClassification', Y_metadata=Y_metadata, normalizer=normalizer) Y_metadata=Y_metadata, normalizer=normalizer)
def parameters_changed(self): def parameters_changed(self):
#Compute the psi statistics for N once, but don't sum out N in psi2 #Compute the psi statistics for N once, but don't sum out N in psi2

View file

@ -43,6 +43,10 @@ class SparseGPMiniBatch(SparseGP):
missing_data=False, stochastic=False, batchsize=1): missing_data=False, stochastic=False, batchsize=1):
self._update_stochastics = False self._update_stochastics = False
# FIXME(?): Half of this function seems to be copy-pasted from
# SparseGP.__init, any particular reason why SparseGP.__init
# is not called (instead of calling GP.__init__ directly)?
# pick a sensible inference method # pick a sensible inference method
if inference_method is None: if inference_method is None:
if isinstance(likelihood, likelihoods.Gaussian): if isinstance(likelihood, likelihoods.Gaussian):
@ -56,7 +60,8 @@ class SparseGPMiniBatch(SparseGP):
self.Z = Param('inducing inputs', Z) self.Z = Param('inducing inputs', Z)
self.num_inducing = Z.shape[0] self.num_inducing = Z.shape[0]
GP.__init__(self, X, Y, kernel, likelihood, inference_method=inference_method, name=name, Y_metadata=Y_metadata, normalizer=normalizer) # Skip SparseGP.__init (see remark above)
super(SparseGP, self).__init__(X, Y, kernel, likelihood, inference_method=inference_method, name=name, Y_metadata=Y_metadata, normalizer=normalizer)
self.missing_data = missing_data self.missing_data = missing_data
if stochastic and missing_data: if stochastic and missing_data:

View file

@ -55,7 +55,7 @@ class SparseGPRegression(SparseGP_MPI):
else: else:
infr = VarDTC() infr = VarDTC()
SparseGP_MPI.__init__(self, X, Y, Z, kernel, likelihood, mean_function=mean_function, super(SparseGPRegression, self).__init__(X, Y, Z, kernel, likelihood, mean_function=mean_function,
inference_method=infr, normalizer=normalizer, mpi_comm=mpi_comm, name=name) inference_method=infr, normalizer=normalizer, mpi_comm=mpi_comm, name=name)
def parameters_changed(self): def parameters_changed(self):

View file

@ -58,7 +58,7 @@ class SparseGPRegressionMD(SparseGP_MPI):
infr = VarDTC_MD() infr = VarDTC_MD()
SparseGP_MPI.__init__(self, X, Y, Z, kernel, likelihood, inference_method=infr, normalizer=normalizer, mpi_comm=mpi_comm, name=name) super(SparseGPRegressionMD, self).__init__(X, Y, Z, kernel, likelihood, inference_method=infr, normalizer=normalizer, mpi_comm=mpi_comm, name=name)
self.output_dim = output_dim self.output_dim = output_dim
def parameters_changed(self): def parameters_changed(self):

View file

@ -23,7 +23,7 @@ class SparseGPLVM(SparseGPRegression):
from ..util.initialization import initialize_latent from ..util.initialization import initialize_latent
X, fracs = initialize_latent(init, input_dim, Y) X, fracs = initialize_latent(init, input_dim, Y)
X = Param('latent space', X) X = Param('latent space', X)
SparseGPRegression.__init__(self, X, Y, kernel=kernel, num_inducing=num_inducing) super(SparseGPLVM, self).__init__(X, Y, kernel=kernel, num_inducing=num_inducing)
self.link_parameter(self.X, 0) self.link_parameter(self.X, 0)
def parameters_changed(self): def parameters_changed(self):

View file

@ -36,7 +36,7 @@ class vpython_show(data_show):
""" """
def __init__(self, vals, scene=None): def __init__(self, vals, scene=None):
data_show.__init__(self, vals) super(vpython_show, self).__init__(vals)
# If no axes are defined, create some. # If no axes are defined, create some.
if scene==None: if scene==None:
@ -54,7 +54,7 @@ class matplotlib_show(data_show):
the matplotlib_show class is a base class for all visualization methods that use matplotlib. It is initialized with an axis. If the axis is set to None it creates a figure window. the matplotlib_show class is a base class for all visualization methods that use matplotlib. It is initialized with an axis. If the axis is set to None it creates a figure window.
""" """
def __init__(self, vals, axes=None): def __init__(self, vals, axes=None):
data_show.__init__(self, vals) super(matplotlib_show, self).__init__(vals)
# If no axes are defined, create some. # If no axes are defined, create some.
if axes==None: if axes==None:
@ -72,7 +72,7 @@ class vector_show(matplotlib_show):
vector elements alongside their indices. vector elements alongside their indices.
""" """
def __init__(self, vals, axes=None): def __init__(self, vals, axes=None):
matplotlib_show.__init__(self, vals, axes) super(vector_show, self).__init__(vals, axes)
#assert vals.ndim == 2, "Please give a vector in [n x 1] to plot" #assert vals.ndim == 2, "Please give a vector in [n x 1] to plot"
#assert vals.shape[1] == 1, "only showing a vector in one dimension" #assert vals.shape[1] == 1, "only showing a vector in one dimension"
self.size = vals.size self.size = vals.size
@ -102,7 +102,7 @@ class lvm(matplotlib_show):
vals = model.X.values vals = model.X.values
if len(vals.shape)==1: if len(vals.shape)==1:
vals = vals[None,:] vals = vals[None,:]
matplotlib_show.__init__(self, vals, axes=latent_axes) super(lvm, self).__init__(vals, axes=latent_axes)
if isinstance(latent_axes,mpl.axes.Axes): if isinstance(latent_axes,mpl.axes.Axes):
self.cid = latent_axes.figure.canvas.mpl_connect('button_press_event', self.on_click) self.cid = latent_axes.figure.canvas.mpl_connect('button_press_event', self.on_click)
@ -198,10 +198,10 @@ class lvm_subplots(lvm):
if i == self.nplots-1: if i == self.nplots-1:
if self.nplots*2!=Model.input_dim: if self.nplots*2!=Model.input_dim:
latent_index = [i*2, i*2] latent_index = [i*2, i*2]
lvm.__init__(self, self.latent_vals, Model, data_visualize, axis, sense_axes, latent_index=latent_index) super(lvm_subplots, self).__init__(self.latent_vals, Model, data_visualize, axis, sense_axes, latent_index=latent_index)
else: else:
latent_index = [i*2, i*2+1] latent_index = [i*2, i*2+1]
lvm.__init__(self, self.latent_vals, Model, data_visualize, axis, latent_index=latent_index) super(lvm_subplots, self).__init__(self.latent_vals, Model, data_visualize, axis, latent_index=latent_index)
@ -223,7 +223,7 @@ class lvm_dimselect(lvm):
else: else:
self.sense_axes = sense_axes self.sense_axes = sense_axes
self.labels = labels self.labels = labels
lvm.__init__(self,vals,model,data_visualize,latent_axes,sense_axes,latent_index) super(lvm_dimselect, self).__init__(vals,model,data_visualize,latent_axes,sense_axes,latent_index)
self.show_sensitivities() self.show_sensitivities()
print(self.latent_values) print(self.latent_values)
print("use left and right mouse buttons to select dimensions") print("use left and right mouse buttons to select dimensions")
@ -286,7 +286,7 @@ class image_show(matplotlib_show):
:type cmap: matplotlib.cm""" :type cmap: matplotlib.cm"""
def __init__(self, vals, axes=None, dimensions=(16,16), transpose=False, order='C', invert=False, scale=False, palette=[], preset_mean=0., preset_std=1., select_image=0, cmap=None): def __init__(self, vals, axes=None, dimensions=(16,16), transpose=False, order='C', invert=False, scale=False, palette=[], preset_mean=0., preset_std=1., select_image=0, cmap=None):
matplotlib_show.__init__(self, vals, axes) super(image_show, self).__init__(vals, axes)
self.dimensions = dimensions self.dimensions = dimensions
self.transpose = transpose self.transpose = transpose
self.order = order self.order = order
@ -352,7 +352,7 @@ class mocap_data_show_vpython(vpython_show):
"""Base class for visualizing motion capture data using visual module.""" """Base class for visualizing motion capture data using visual module."""
def __init__(self, vals, scene=None, connect=None, radius=0.1): def __init__(self, vals, scene=None, connect=None, radius=0.1):
vpython_show.__init__(self, vals, scene) super(mocap_data_show_vpython, self).__init__(vals, scene)
self.radius = radius self.radius = radius
self.connect = connect self.connect = connect
self.process_values() self.process_values()
@ -412,7 +412,7 @@ class mocap_data_show(matplotlib_show):
if axes==None: if axes==None:
fig = plt.figure() fig = plt.figure()
axes = fig.add_subplot(111, projection='3d', aspect='equal') axes = fig.add_subplot(111, projection='3d', aspect='equal')
matplotlib_show.__init__(self, vals, axes) super(mocap_data_show, self).__init__(vals, axes)
self.color = color self.color = color
self.connect = connect self.connect = connect
@ -496,7 +496,7 @@ class stick_show(mocap_data_show):
def __init__(self, vals, connect=None, axes=None): def __init__(self, vals, connect=None, axes=None):
if len(vals.shape)==1: if len(vals.shape)==1:
vals = vals[None,:] vals = vals[None,:]
mocap_data_show.__init__(self, vals, axes=axes, connect=connect) super(stick_show, self).__init__(vals, axes=axes, connect=connect)
def process_values(self): def process_values(self):
self.vals = self.vals.reshape((3, self.vals.shape[1]/3)).T self.vals = self.vals.reshape((3, self.vals.shape[1]/3)).T
@ -515,7 +515,7 @@ class skeleton_show(mocap_data_show):
self.skel = skel self.skel = skel
self.padding = padding self.padding = padding
connect = skel.connection_matrix() connect = skel.connection_matrix()
mocap_data_show.__init__(self, vals, axes=axes, connect=connect, color=color) super(skeleton_show, self).__init__(vals, axes=axes, connect=connect, color=color)
def process_values(self): def process_values(self):
"""Takes a set of angles and converts them to the x,y,z coordinates in the internal prepresentation of the class, ready for plotting. """Takes a set of angles and converts them to the x,y,z coordinates in the internal prepresentation of the class, ready for plotting.

View file

@ -61,7 +61,7 @@ class Kern_check_dK_dtheta(Kern_check_model):
respect to parameters. respect to parameters.
""" """
def __init__(self, kernel=None, dL_dK=None, X=None, X2=None): def __init__(self, kernel=None, dL_dK=None, X=None, X2=None):
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=X2) super(Kern_check_dK_dtheta, self).__init__(kernel=kernel,dL_dK=dL_dK, X=X, X2=X2)
self.link_parameter(self.kernel) self.link_parameter(self.kernel)
def parameters_changed(self): def parameters_changed(self):
@ -74,7 +74,7 @@ class Kern_check_dKdiag_dtheta(Kern_check_model):
kernel with respect to the parameters. kernel with respect to the parameters.
""" """
def __init__(self, kernel=None, dL_dK=None, X=None): def __init__(self, kernel=None, dL_dK=None, X=None):
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=None) super(Kern_check_dKdiag_dtheta, self).__init__(kernel=kernel,dL_dK=dL_dK, X=X, X2=None)
self.link_parameter(self.kernel) self.link_parameter(self.kernel)
def log_likelihood(self): def log_likelihood(self):
@ -86,7 +86,7 @@ class Kern_check_dKdiag_dtheta(Kern_check_model):
class Kern_check_dK_dX(Kern_check_model): class Kern_check_dK_dX(Kern_check_model):
"""This class allows gradient checks for the gradient of a kernel with respect to X. """ """This class allows gradient checks for the gradient of a kernel with respect to X. """
def __init__(self, kernel=None, dL_dK=None, X=None, X2=None): def __init__(self, kernel=None, dL_dK=None, X=None, X2=None):
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=X2) super(Kern_check_dK_dX, self).__init__(kernel=kernel,dL_dK=dL_dK, X=X, X2=X2)
self.X = Param('X',X) self.X = Param('X',X)
self.link_parameter(self.X) self.link_parameter(self.X)
@ -96,7 +96,7 @@ class Kern_check_dK_dX(Kern_check_model):
class Kern_check_dKdiag_dX(Kern_check_dK_dX): class Kern_check_dKdiag_dX(Kern_check_dK_dX):
"""This class allows gradient checks for the gradient of a kernel diagonal with respect to X. """ """This class allows gradient checks for the gradient of a kernel diagonal with respect to X. """
def __init__(self, kernel=None, dL_dK=None, X=None, X2=None): def __init__(self, kernel=None, dL_dK=None, X=None, X2=None):
Kern_check_dK_dX.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=None) super(Kern_check_dKdiag_dX, self).__init__(kernel=kernel,dL_dK=dL_dK, X=X, X2=None)
def log_likelihood(self): def log_likelihood(self):
return (np.diag(self.dL_dK)*self.kernel.Kdiag(self.X)).sum() return (np.diag(self.dL_dK)*self.kernel.Kdiag(self.X)).sum()
@ -107,7 +107,7 @@ class Kern_check_dKdiag_dX(Kern_check_dK_dX):
class Kern_check_d2K_dXdX(Kern_check_model): class Kern_check_d2K_dXdX(Kern_check_model):
"""This class allows gradient checks for the secondderivative of a kernel with respect to X. """ """This class allows gradient checks for the secondderivative of a kernel with respect to X. """
def __init__(self, kernel=None, dL_dK=None, X=None, X2=None): def __init__(self, kernel=None, dL_dK=None, X=None, X2=None):
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X, X2=X2) super(Kern_check_d2K_dXdX, self).__init__(kernel=kernel,dL_dK=dL_dK, X=X, X2=X2)
self.X = Param('X',X.copy()) self.X = Param('X',X.copy())
self.link_parameter(self.X) self.link_parameter(self.X)
self.Xc = X.copy() self.Xc = X.copy()
@ -129,7 +129,7 @@ class Kern_check_d2K_dXdX(Kern_check_model):
class Kern_check_d2Kdiag_dXdX(Kern_check_model): class Kern_check_d2Kdiag_dXdX(Kern_check_model):
"""This class allows gradient checks for the second derivative of a kernel with respect to X. """ """This class allows gradient checks for the second derivative of a kernel with respect to X. """
def __init__(self, kernel=None, dL_dK=None, X=None): def __init__(self, kernel=None, dL_dK=None, X=None):
Kern_check_model.__init__(self,kernel=kernel,dL_dK=dL_dK, X=X) super(Kern_check_d2Kdiag_dXdX, self).__init__(kernel=kernel,dL_dK=dL_dK, X=X)
self.X = Param('X',X) self.X = Param('X',X)
self.link_parameter(self.X) self.link_parameter(self.X)
self.Xc = X.copy() self.Xc = X.copy()

View file

@ -15,7 +15,7 @@ class TestModel(GPy.core.Model):
A simple GPy model with one parameter. A simple GPy model with one parameter.
""" """
def __init__(self, theta=1.): def __init__(self, theta=1.):
GPy.core.Model.__init__(self, 'test_model') super(TestModel, self).__init__('test_model')
theta = GPy.core.Param('theta', theta) theta = GPy.core.Param('theta', theta)
self.link_parameter(theta) self.link_parameter(theta)

View file

@ -163,7 +163,7 @@ def rotation_matrix(xangle, yangle, zangle, order='zxy', degrees=False):
# Motion capture data routines. # Motion capture data routines.
class skeleton(tree): class skeleton(tree):
def __init__(self): def __init__(self):
tree.__init__(self) super(skeleton, self).__init__()
def connection_matrix(self): def connection_matrix(self):
connection = np.zeros((len(self.vertices), len(self.vertices)), dtype=bool) connection = np.zeros((len(self.vertices), len(self.vertices)), dtype=bool)
@ -197,13 +197,13 @@ class skeleton(tree):
# class bvh_skeleton(skeleton): # class bvh_skeleton(skeleton):
# def __init__(self): # def __init__(self):
# skeleton.__init__(self) # super(bvh_skeleton, self).__init__()
# def to_xyz(self, channels): # def to_xyz(self, channels):
class acclaim_skeleton(skeleton): class acclaim_skeleton(skeleton):
def __init__(self, file_name=None): def __init__(self, file_name=None):
skeleton.__init__(self) super(acclaim_skeleton, self).__init__()
self.documentation = [] self.documentation = []
self.angle = 'deg' self.angle = 'deg'
self.length = 1.0 self.length = 1.0