Minor tidy up of names in visualize (replace histogram with bar chart in lvm_dimselect).

This commit is contained in:
Neil Lawrence 2013-04-30 07:17:44 +01:00
parent 71114eef8c
commit e941c949e5

View file

@ -96,18 +96,8 @@ class lvm(data_show):
pass pass
def on_click(self, event): def on_click(self, event):
#print 'click', event.xdata, event.ydata
if event.inaxes!=self.latent_axes: return if event.inaxes!=self.latent_axes: return
self.move_on = not self.move_on self.move_on = not self.move_on
# if self.called:
# self.xs.append(event.xdata)
# self.ys.append(event.ydata)
# self.line.set_data(self.xs, self.ys)
# self.line.figure.canvas.draw()
# else:
# self.xs = [event.xdata]
# self.ys = [event.ydata]
# self.line, = self.latent_axes.plot(event.xdata, event.ydata)
self.called = True self.called = True
def on_move(self, event): def on_move(self, event):
if event.inaxes!=self.latent_axes: return if event.inaxes!=self.latent_axes: return
@ -120,7 +110,7 @@ class lvm(data_show):
class lvm_subplots(lvm): class lvm_subplots(lvm):
""" """
latent_axes is a np array of dimension np.ceil(Q/2) + 1, latent_axes is a np array of dimension np.ceil(Q/2) + 1,
one for each pair of the axes, and the last one for the sensitiity histogram one for each pair of the axes, and the last one for the sensitiity bar chart
""" """
def __init__(self, vals, model, data_visualize, latent_axes=None, latent_index=[0,1]): def __init__(self, vals, model, data_visualize, latent_axes=None, latent_index=[0,1]):
lvm.__init__(self, vals, model,data_visualize,latent_axes,[0,1]) lvm.__init__(self, vals, model,data_visualize,latent_axes,[0,1])
@ -132,39 +122,39 @@ class lvm_subplots(lvm):
class lvm_dimselect(lvm): class lvm_dimselect(lvm):
""" """
A visualizer for latent variable models which allows selection of the latent dimensions to use by clicking on a histogram of their length scales. A visualizer for latent variable models which allows selection of the latent dimensions to use by clicking on a bar chart of their length scales.
""" """
def __init__(self, vals, model, data_visualize, latent_axes=None, hist_axes=None, latent_index=[0, 1]): def __init__(self, vals, model, data_visualize, latent_axes=None, sense_axes=None, latent_index=[0, 1]):
if latent_axes==None and hist_axes==None: if latent_axes==None and sense_axes==None:
self.fig,(latent_axes,self.hist_axes) = plt.subplots(1,2) self.fig,(latent_axes,self.sense_axes) = plt.subplots(1,2)
elif hist_axes==None: elif sense_axes==None:
fig=plt.figure() fig=plt.figure()
self.hist_axes = fig.add_subplot(111) self.sense_axes = fig.add_subplot(111)
else: else:
self.hist_axes = hist_axes self.sense_axes = sense_axes
lvm.__init__(self,vals,model,data_visualize,latent_axes,latent_index) lvm.__init__(self,vals,model,data_visualize,latent_axes,latent_index)
self.draw_histogram() self.show_sensitivities()
print "use left and right mouse butons to select dimensions" print "use left and right mouse butons to select dimensions"
def draw_histogram(self): def show_sensitivities(self):
# A click in the histogram axis for selection a dimension. # A click in the bar chart axis for selection a dimension.
self.hist_axes.cla() self.sense_axes.cla()
self.hist_axes.bar(np.arange(self.model.Q),1./self.model.input_sensitivity(),color='b') self.sense_axes.bar(np.arange(self.model.Q),1./self.model.input_sensitivity(),color='b')
if self.latent_index[1] == self.latent_index[0]: if self.latent_index[1] == self.latent_index[0]:
self.hist_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='y') self.sense_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='y')
self.hist_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='y') self.sense_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='y')
else: else:
self.hist_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='g') self.sense_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='g')
self.hist_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='r') self.sense_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='r')
self.hist_axes.figure.canvas.draw() self.sense_axes.figure.canvas.draw()
def on_click(self, event): def on_click(self, event):
if event.inaxes==self.hist_axes: if event.inaxes==self.sense_axes:
new_index = max(0,min(int(np.round(event.xdata-0.5)),self.model.Q-1)) new_index = max(0,min(int(np.round(event.xdata-0.5)),self.model.Q-1))
if event.button == 1: if event.button == 1:
# Make it red if and y-axis (red=port=left) if it is a left button click # Make it red if and y-axis (red=port=left) if it is a left button click
@ -173,7 +163,7 @@ class lvm_dimselect(lvm):
# Make it green and x-axis (green=starboard=right) if it is a right button click # Make it green and x-axis (green=starboard=right) if it is a right button click
self.latent_index[0] = new_index self.latent_index[0] = new_index
self.draw_histogram() self.show_sensitivities()
self.latent_axes.cla() self.latent_axes.cla()
self.model.plot_latent(which_indices=self.latent_index, self.model.plot_latent(which_indices=self.latent_index,
@ -188,7 +178,6 @@ class lvm_dimselect(lvm):
def on_move(self, event): def on_move(self, event):
#print "move"
if event.inaxes!=self.latent_axes: return if event.inaxes!=self.latent_axes: return
if self.called and self.move_on: if self.called and self.move_on:
self.latent_values[self.latent_index[0]]=event.xdata self.latent_values[self.latent_index[0]]=event.xdata