def overlay(self, image): self._overlay = image if image is None: self.ax.images.remove(self._overlay_plot) self._overlay_plot = None elif self._overlay_plot is None: props = dict(cmap=self.cmap, alpha=self.alpha, norm=mcolors.no_norm(), animated=True) self._overlay_plot = self.ax.imshow(image, **props) else: self._overlay_plot.set_data(image) self.redraw()
def plot_scatter_2d(data,labels): unique_labels = unique(labels) label_markers = array(markers)[unique_labels % len(markers)] label_colors = array(unique_labels,dtype=float64)/max(unique_labels + 1) for i in range(len(unique_labels)): l = unique_labels[i] colors = ones(sum(labels==l))*label_colors[i] scatter(data[0,labels==l],data[1,labels==l], marker=str(label_markers[i]), c=colors, cmap=matplotlib.cm.jet, norm=no_norm(), linewidths=(0.3,) )
def do_plotting(options): print "Generating Plots ..." particle_id = options.use_particle ext = "." + options.output_format plot_dir = options.output_dir + "/" + options.identifier + "/plots" if not exists(plot_dir): mkdir(plot_dir) data,data_time,true_labels = experimenter.load_data(options) if options.true_labels: predicted_labels = true_labels predicted_labels.shape = (1,predicted_labels.shape[0]) ext = "_true" + ext else: predicted_labels = load_labels(options) s_data,s_data_time,s_predicted_labels,idx = subsample( data,data_time,predicted_labels,options) T = data_time.shape[0] ess = load_ess(options) # Labeled 2D scatter plot of the first two PCs clf() plotting.plot_scatter_2d(s_data[0:2,:],s_predicted_labels[particle_id,:]) grid() savefig(plot_dir + "/" + "scatter_predicted" + ext) # 2D scatter plot with entropy heatmap clf() #ent = compute_label_entropy(s_predicted_labels) ent = ess[2,idx] certain = ent==0 uncertain = logical_not(certain) if sum(certain)>0: scatter(s_data[0,certain],s_data[1,certain],10,marker="s",facecolors="none", linewidth=0.3) if sum(uncertain)>0: scatter(s_data[0,uncertain],s_data[1,uncertain],10,ent[uncertain], linewidth=0.3,cmap=cm.hot) grid() title("Label Entropy") savefig(plot_dir + "/" + "scatter_entropy" + ext) # Label entropy vs. time clf() ent = compute_label_entropy(predicted_labels) #subplot(2,1,1) axes([0.25, 0.2, 0.7, 0.7]) plot(data_time,ent,'x',linewidth=1.5) #title("Label Entropy") #ylabel("Entropy") xlabel("Time") axis([-1,max(data_time)+2,-0.1,1.1]) grid() #subplot(2,1,2) #plot(data_time,ess[2,:],'x',linewidth=1.5) #ylabel("Entropy") #xlabel("Time (ms)") #axis([0,60000,0,1]) #title("Average Label Filtering Distribution Entropy (SMC)") #grid() F = gcf() F.set_size_inches(2,2) savefig(plot_dir + "/" + "entropy" + ext) clf() subplot(2,1,1) #axes([0.25, 0.2, 0.7, 0.7]) plot(data_time,ent,linewidth=0.5) title("Label Entropy (M-H sampler)") ylabel("Entropy") #xlabel("Time") axis([0,60000,-0.1,1.1]) grid() subplot(2,1,2) plot(data_time,ess[2,:],linewidth=0.5) ylabel("Entropy") xlabel("Time (ms)") axis([0,60000,-0.1,1.1]) title("Average Label Filtering Distribution Entropy (SMC)") grid() F = gcf() F.set_size_inches(6,4) savefig(plot_dir + "/" + "entropy_both" + ext) # 2D scatter plot of PCs against time with predicted labels (1st particle) clf() plotting.plot_pcs_against_time_labeled(s_data,s_data_time, s_predicted_labels[particle_id,:]) F = gcf() F.set_size_inches(8.3,4*data.shape[0]) savefig(plot_dir + "/" + "pcs_vs_time_predicted" + ext) # 2D scatter plot of PCs against time for RPV candidates clf() isi = data_time[1:]-data_time[:-1] rpvs = where(isi < 2)[0] + 1 rpvs = hstack((rpvs,rpvs-1)) if rpvs.shape[0] > 0: plotting.plot_pcs_against_time_labeled(data[:,rpvs],data_time[rpvs], predicted_labels[particle_id,rpvs]) F = gcf() F.set_size_inches(8.3,4*data.shape[0]) savefig(plot_dir + "/" + "pcs_vs_time_rpv" + ext) # 2D scatter plot with binary labels if options.binary_label: clf() match = find_best_match(predicted_labels[particle_id,:],true_labels) matches = (predicted_labels[particle_id,:]==match)[idx] non_matches = (predicted_labels[particle_id,:]!=match)[idx] subplot(1,2,1) plot(s_data[0,matches],s_data[1,matches],'x') plot(s_data[0,non_matches],s_data[1,non_matches],'.') grid() title("Predicted Labels") axis([-5,5,-5,5]) subplot(1,2,2) plot(s_data[0,true_labels[idx]==1],s_data[1,true_labels[idx]==1],'x') plot(s_data[0,true_labels[idx]!=1],s_data[1,true_labels[idx]!=1],'.') axis([-5,5,-5,5]) grid() title("True Labels") F = gcf() F.set_size_inches(6,3) savefig(plot_dir + "/" + "scatter_binary" + ext) # plot of effective sample size clf() subplot(2,1,1) plot(ess[1,:],linewidth=0.3) title('Unique Particles') ylabel("Unique Particles") axis([0,650,0,1100]) grid() xlabel("Time Step") subplot(2,1,2) plot(ess[0,:],linewidth=0.3) axis([0,650,0,1100]) title("Effective Sample Size") xlabel("Time Step") ylabel("ESS") grid() F = gcf() F.set_size_inches(6,4) savefig(plot_dir + "/" + "ess" + ext) # ISI histogram for each neuron clf() l = predicted_labels[particle_id,:] unique_labels = unique(l) for i in range(unique_labels.shape[0]): c = unique_labels[i] points = data[:,l==c] times = data_time[l==c] isi = times[1:] - times[0:-1] subplot(unique_labels.shape[0],2,2*i+1) label_colors = array(unique_labels,dtype=float64)/max(unique_labels+1) colors = ones(sum(l==c))*label_colors[i] scatter(points[0,:],points[1,:],marker=plotting.markers[c],c=colors, cmap=matplotlib.cm.jet, norm=no_norm(), linewidths=(0.3,)) title("Cluster %i (weight=%.2f)" % (c,sum(l==c)/float(l.shape[0]))) grid() axis([-5,5,-5,5]) subplot(unique_labels.shape[0],2,2*i+2) hist(isi,bins=100,range=(0,100),normed=True,facecolor='k') xx = arange(2,100,0.1) rate = 1/mean(isi-2) plot(xx,rate*exp(-rate*(xx-2))) title("ISI (mean = %.2f)" % mean(isi)) F = gcf() F.set_size_inches(8.3,2*unique_labels.shape[0]) savefig(plot_dir + "/" + "isi" + ext) particle = experimenter.load_particle(options) if particle != None: ### plots requiring the information from at least one particle clf() # plot of clusters + data at fixed, equally spaced time points num_plots = 9 timepoints = array(arange(1,num_plots+1)*(T-1)/(float(num_plots)),dtype=int32) for i in range(num_plots): subplot(3,3,i+1) t = timepoints[i] plotting.plot_state_with_data(particle,data,data_time,t) title("t = " + str(t)) grid() F.set_size_inches(6,6) savefig(plot_dir + "/" + "cluster_evolution" + ext) # plot of cluster means and variances over time clf() plotting.plot_pcs_against_time_labeled_with_particle( data,data_time,predicted_labels[0,:],particle) F.set_size_inches(40,8*data.shape[0]) savefig(plot_dir + "/" + "clusters_vs_time" + ext) # plot of mstore for each clusters clf() plotting.plot_mstore_against_time(particle) savefig(plot_dir + "/" + "mstore" + ext)