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