def plotViolin(self,data,labels_to_plot='all',series='all',transformations=None,save=True): if transformations is None: transformations = [(lambda x: x,'')] timestamp = utils.s_timestamp() figure_folder = os.path.join(self._default_figure_folder,timestamp) if save: #create a separate_folder if not os.path.exists(figure_folder): os.makedirs(figure_folder) if series == 'all': series = data.keys() if labels_to_plot == 'all': labels_to_plot = data[series[0]].keys() for label_to_plot in labels_to_plot: plt.figure(figsize=(10,15)) data_to_plot = [] for transformation_fun,transformation_label in transformations: for serie_name in series: series_data = data[serie_name] if label_to_plot not in series_data: raise ValueError('Label "{0}" not in series "{1}"'.format(label_to_plot,serie_name)) raw_data = np.array([val for val in series_data[label_to_plot] if val is not None]) transformed_data = transformation_fun(raw_data) data_to_plot.append(transformed_data) plt.ylabel(label_to_plot) plt.title(label_to_plot) plt.violinplot(data_to_plot,showmedians=True) plt.xticks( range(1,1+len(series)), series ) plt.ylim([min([qwe for asd in data_to_plot for qwe in asd])-3,max([qwe for asd in data_to_plot for qwe in asd])+3]) if save: plt.savefig(os.path.join(figure_folder,self.getDescr(label_to_plot))+'.png') else: plt.show()
def plotHistogram(self,data,labels_to_plot='all',series='all',nbins=10,transformations=None,save=True,draw_normal=True,draw_bimodal=True): if transformations is None: transformations = [(lambda x: x,'')] timestamp = utils.s_timestamp() figure_folder = os.path.join(self._default_figure_folder,timestamp) if save: #create a separate_folder if not os.path.exists(figure_folder): os.makedirs(figure_folder) if series == 'all': series = data.keys() if labels_to_plot == 'all': labels_to_plot = data[series[0]].keys() fitters_ = [] if draw_normal: fitters_.append(fitters.NormalFitter) if draw_bimodal: fitters_.append(fitters.BiModalFitter) for label_to_plot in labels_to_plot: plt.figure(figsize=(10,15)) i = 1 for transformation_fun,transformation_label in transformations: for serie_name in series: plt.subplot(len(transformations),len(series),i) i += 1 series_data = data[serie_name] if label_to_plot not in series_data: raise ValueError('Label "{0}" not in series "{1}"'.format(label_to_plot,serie_name)) raw_data = np.array([val for val in series_data[label_to_plot] if val is not None]) transformed_data = transformation_fun(raw_data) title = transformation_label+' '+serie_name+' ' n, bins, patches = plt.hist(transformed_data, bins=nbins, normed=False) data_pdf = n/sum(n) bin_centers = [(bins[i_]+bins[i_+1])/2.0 for i_ in range(len(bins)-1)] #plt.xlabel(transformation_label+' '+label_to_plot) plt.ylabel('Count') fitted = [] for fitter in fitters_: temp = fitter(transformed_data) fitted.append(temp) p = temp.pdf(bin_centers) plt.plot(bin_centers, p*sum(n), 'k', linewidth=2) mse = (np.array(data_pdf-p)**2).mean()*100 #title += '\nmse {0}:{1:.2f}'.format(temp._descr,mse) fitter_combinations = [(f1i,f2i) for f1i,f1 in enumerate(fitters_) for f2i,f2 in enumerate(fitters_) if f1i < f2i] for f1i,f2i in fitter_combinations: f1,f2 = fitted[f1i],fitted[f2i] title += ' {0}vs{1}:{2:.2f}'.format(f1._descr,f2._descr,self.f_test(n/sum(n),f1.pdf(bin_centers),f2.pdf(bin_centers),f1._n_params,f2._n_params,len(transformed_data))) plt.title(title) if save: plt.savefig(os.path.join(figure_folder,self.getDescr(label_to_plot))+'.png') else: plt.show()
def plotDiGraphViaGraphViz(n_nodes, ebunch, cmap, pos=None, node_labels=None): def getForwardLinks(): return [(from_node, to_node) for from_node, to_node, _ in ebunch if from_node < to_node] if node_labels is None: node_labels = [str(i + 1) for i in range(n_nodes)] file_ = os.path.join(PROJECT_DIR, 'output', 'temp', s_timestamp() + ".dot") flag = '' # flag = '\tsplines = true;\n' if pos is None: pos = _posTree(getForwardLinks()) flag = '\tsplines = true;\n' with open(file_, 'w') as pout: pout.write('digraph G {{\n'.format(n_nodes)) pout.write('\tsplines="curved";\n') pout.write(flag) pout.write('\tInput [pos="0,0!" color=white];\n') for node_idx in range(n_nodes): r, g, b, a = cmap(node_idx * 1.0 / n_nodes) color = struct.pack('BBB', *(r * 255, g * 255, b * 255)).encode('hex') pout.write( '\t{0} [pos="{2},{3}!" shape=circle style=filled fillcolor="#{1}" width=.5 fixedsize=true];\n'.format( node_labels[node_idx], color, pos[node_idx][0], pos[node_idx][1])) for from_node, to_node, weight in ebunch: color = "black" extra = "" if from_node > to_node: extra = '' if weight < 0: color = "red" extra += ' arrowhead="tee"' else: color = "green" pout.write( '\t{0} -> {1} [color="{2}" {3}];\n'.format(node_labels[from_node], node_labels[to_node], color, extra)) pout.write('\tInput -> {0} [color="black"];\n'.format(node_labels[0])) pout.write('}\n') out_file = file_ + ".png" command = 'neato -Tpng "' + file_ + '" > "' + out_file call(command, shell=True, env=os.environ) img = -1 while 1: try: img = mpimg.imread(out_file) break except: time.sleep(1) print 'Sleep' plt.imshow(img) plt.axis('off') return pos
def plotDiGraphViaGraphViz(n_nodes, ebunch, cmap, pos=None, node_labels=None): def getForwardLinks(): return [(from_node, to_node) for from_node, to_node, _ in ebunch if from_node < to_node] if node_labels is None: node_labels = [str(i + 1) for i in range(n_nodes)] file_ = os.path.join(PROJECT_DIR, 'output', 'temp', s_timestamp() + ".dot") #flag = '' flag = '\tsplines = true; overlap=true\n' if pos is None: pos = _posTree(getForwardLinks()) flag = '\tsplines = true;\n' with open(file_, 'w') as pout: pout.write('digraph G {{\n'.format(n_nodes)) pout.write('\tsplines="curved";\n') pout.write(flag) pout.write('\tInput [pos="0,0!" color=white];\n') for node_idx in range(n_nodes): r, g, b, a = cmap(node_idx * 1.0 / n_nodes) color = struct.pack('BBB', *(r * 255, g * 255, b * 255)).encode('hex') pout.write( '\t{0} [pos="{2},{3}!" shape=circle style=filled fillcolor="#{1}" width=.5 fixedsize=true];\n' .format(node_labels[node_idx], color, pos[node_idx][0], pos[node_idx][1])) for from_node, to_node, weight in ebunch: color = "black" extra = "" if weight < 0: color = "red" extra += ' arrowhead="tee"' pout.write('\t{0} -> {1} [color="{2}" {3}];\n'.format( node_labels[from_node], node_labels[to_node], color, extra)) pout.write('\tInput -> {0} [color="black"];\n'.format(node_labels[0])) pout.write('}\n') out_file = file_ + ".png" command = 'neato -Tpng "' + file_ + '" > "' + out_file call(command, shell=True, env=os.environ) img = -1 while 1: try: img = mpimg.imread(out_file) break except: time.sleep(1) print 'Sleep' plt.imshow(img) plt.axis('off') return pos
def run(self, data, series, strains): all_pairs = [(i1, i2) for i1, _ in enumerate(strains) for i2, _ in enumerate(strains) if i1 < i2] with open(os.path.join(self._default_res_folder, utils.s_timestamp() + ".txt"), "w") as pout: for series_name in series: for i1, i2 in all_pairs: strain1, strain2 = strains[i1], strains[i2] data1, data2 = ( utils.removeNoneValues(data[strain1][series_name]), utils.removeNoneValues(data[strain2][series_name]), ) smallu, bigu, z, p = self.mannwhitneyu(data1, data2) pout.write( "Strain1: {0: <13} Strain2: {1: <13} Series: {2: <20} p: {3:8.5f}\n".format( strain1, strain2, series_name, p ) )
def plotDiGraphViaGraphVizASD(n_nodes, ebunch, cmap, pos=None, node_labels=None, method_symmetrical=True): file_ = os.path.join(PROJECT_DIR, 'output', 'temp', s_timestamp() + ".dot") flag = '\tsplines = true;\n' with open(file_, 'w') as pout: pout.write('digraph G {{\n'.format(n_nodes)) pout.write('\tsplines="curved";\n') pout.write(flag) for node_idx in range(n_nodes): r, g, b, a = cmap(node_idx * 1.0 / n_nodes) color = struct.pack('BBB', *(r * 255, g * 255, b * 255)).encode('hex') pout.write( '\t{0} [pos="{2},{3}!" shape=circle style=filled fillcolor="#{1}" width=.5 fixedsize=true];\n' .format(node_labels[node_idx], color, pos[node_idx][0], pos[node_idx][1])) for from_node, to_node, weight in ebunch: color = "black" extra = "" if weight < 0: color = "red" if not method_symmetrical: extra += ' arrowhead="tee"' if method_symmetrical: extra += ' arrowhead="none"' pout.write('\t{0} -> {1} [color="{2}" {3}];\n'.format( node_labels[from_node], node_labels[to_node], color, extra)) pout.write('}\n') out_file = file_ + ".png" command = 'neato -Tpng "' + file_ + '" > "' + out_file call(command, shell=True, env=os.environ) return pos