def ultimate_power(): """ Data from http://indexed.blogspot.com/2007/08/real-ultimate-power.html """ chart = VennChart(settings.width, settings.height) chart.add_data([100, 100, 100, 20, 20, 20, 10]) chart.set_title('Ninjas or God') chart.set_legend(['unseen agents', 'super powerful', 'secret plans']) chart.download('venn-ultimate-power.png')
def drawThreeVenn(set1,set2,set3,set1set2Intersect,set1set3Intersect,set2set3Intersect,allIntersect,width,height,outfile,title=None,legend=None,indicateNumberInLegend=False,colors=None,htmlReport=None): chart=VennChart(width,height) chart.add_data([set1,set2,set3,set1set2Intersect,set1set3Intersect,set2set3Intersect,allIntersect]) if title: chart.set_title(title) if legend: legendOut=legend[:] if indicateNumberInLegend: legendOut[0]=legend[0]+" ("+str(set1)+")" legendOut[1]=legend[1]+" ("+str(set2)+")" legendOut[2]=legend[2]+" ("+str(set3)+")" chart.set_legend(legendOut) if colors: for i in range(0,len(colors)): if type(colors[i]) is not StringType: #probably a int tuple (4 or 3) #print >> stderr,colors[i],"is not string" if type(colors[i]) is ListType or type(colors[i]) is TupleType: #print >> stderr,"is list or tuple" hexCode="" for color_component in colors[i]: hexCode+=twodigithex(color_component) colors[i]=hexCode #print >> stderr,colors chart.set_colours(colors) chart.download(outfile) if htmlReport: fout = open(htmlReport,"w") set1only=set1-set1set2Intersect-set1set3Intersect+allIntersect set2only=set2-set1set2Intersect-set2set3Intersect+allIntersect set3only=set3-set1set3Intersect-set2set3Intersect+allIntersect if not title: title="" if not legend: legend=["set1","set2","set3"] print >> fout, '<html><head><title>%s</title></head><body><h1>%s</h1><table width=%d><tr><td colspan=2><img src="%s"></td></tr><tr bgcolor="#AAAAAA"><td>%s</td><td>%d</td></tr><tr><td>%s</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s</td><td>%d</td></tr> <tr> <td>%s only</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s only</td><td>%d</td> </tr> <tr><td>%s only</td><td>%d</td> </tr> <tr bgcolor="#AAAAAA"> <td>%s ∩ %s</td><td>%d</td></tr> <tr> <td>%s ∩ %s</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s ∩ %s</td><td>%d</td></tr> <tr> <td>%s ∩ %s ∩ %s </td><td>%d</td></tr> </body></html>' %(title,title,width,basename(outfile),legend[0],set1,legend[1],set2,legend[2],set3,legend[0],set1only,legend[1],set2only,legend[2],set3only,legend[0],legend[1],set1set2Intersect,legend[0],legend[2],set1set3Intersect,legend[1],legend[2],set2set3Intersect,legend[0],legend[1],legend[2],allIntersect) fout.close()
def drawTwoVenn(set1,set2,intersect,width,height,outfile,fisherU=None,title=None,legend=None,indicateNumberInLegend=False,colors=None,htmlReport=None): chart=VennChart(width,height) chart.add_data([set1,set2,0,intersect]) if title: chart.set_title(title) if legend: legendOut=legend[:] if indicateNumberInLegend: legendOut[0]=legend[0]+" ("+str(set1)+")" legendOut[1]=legend[1]+" ("+str(set2)+")" chart.set_legend(legendOut) if colors: for i in range(0,len(colors)): if type(colors[i]) is not StringType: #probably a int tuple (4 or 3) #print >> stderr,colors[i],"is not string" if type(colors[i]) is ListType or type(colors[i]) is TupleType: #print >> stderr,"is list or tuple" hexCode="" for color_component in colors[i]: hexCode+=twodigithex(color_component) colors[i]=hexCode #print >> stderr,colors chart.set_colours(colors) chart.download(outfile) if fisherU: #build a contingency table 2x2 box1=intersect box2=set2-intersect box3=set2 box6=fisherU-set2 box7=set1 box8=fisherU-set1 box9=fisherU box4=set1-intersect box5=fisherU-set1-set2+intersect fisher_pvalues=fisher.pvalue(box1,box2,box4,box5) expectedIntersect=round(float(set1)*set2/fisherU) if htmlReport: if not title: title="" if not legend: legend=["set1","set2"] fout = open(htmlReport,"w") print >> fout, '<html><head><title>%s</title></head><body><h1>%s</h1><table width=%d><tr><td colspan=2><img src="%s"></td></tr><tr bgcolor="#AAAAAA"><td>%s</td><td>%d</td></tr><tr><td>%s</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s only</td><td>%d</td></tr> <tr><td>%s only</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s ∩ %s</td><td>%d</td></tr> ' %(title,title,width,basename(outfile),legend[0],set1,legend[1],set2,legend[0],set1-intersect,legend[1],set2-intersect,legend[0],legend[1],intersect) if fisherU: print >> fout, '<tr><td>Universe</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>E[%s ∩ %s]</td><td>%d</td></tr> <tr><td>dnrichment p-value</td><td>%g</td></tr> <tr bgcolor="#AAAAAA"> <td>depletion p-value</td><td>%g</td></tr>' %(fisherU,legend[0],legend[1],expectedIntersect,fisher_pvalues.right_tail,fisher_pvalues.left_tail) print >> fout, '</body></html>' fout.close()
def drawTwoVenn(set1, set2, intersect, width, height, outfile, fisherU=None, title=None, legend=None, indicateNumberInLegend=False, colors=None, htmlReport=None): chart = VennChart(width, height) chart.add_data([set1, set2, 0, intersect]) if title: chart.set_title(title) if legend: legendOut = legend[:] if indicateNumberInLegend: legendOut[0] = legend[0] + " (" + str(set1) + ")" legendOut[1] = legend[1] + " (" + str(set2) + ")" chart.set_legend(legendOut) if colors: for i in range(0, len(colors)): if type(colors[i]) is not StringType: #probably a int tuple (4 or 3) #print >> stderr,colors[i],"is not string" if type(colors[i]) is ListType or type(colors[i]) is TupleType: #print >> stderr,"is list or tuple" hexCode = "" for color_component in colors[i]: hexCode += twodigithex(color_component) colors[i] = hexCode #print >> stderr,colors chart.set_colours(colors) chart.download(outfile) if fisherU: #build a contingency table 2x2 box1 = intersect box2 = set2 - intersect box3 = set2 box6 = fisherU - set2 box7 = set1 box8 = fisherU - set1 box9 = fisherU box4 = set1 - intersect box5 = fisherU - set1 - set2 + intersect fisher_pvalues = fisher.pvalue(box1, box2, box4, box5) expectedIntersect = round(float(set1) * set2 / fisherU) if htmlReport: if not title: title = "" if not legend: legend = ["set1", "set2"] fout = open(htmlReport, "w") print >> fout, '<html><head><title>%s</title></head><body><h1>%s</h1><table width=%d><tr><td colspan=2><img src="%s"></td></tr><tr bgcolor="#AAAAAA"><td>%s</td><td>%d</td></tr><tr><td>%s</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s only</td><td>%d</td></tr> <tr><td>%s only</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s ∩ %s</td><td>%d</td></tr> ' % ( title, title, width, basename(outfile), legend[0], set1, legend[1], set2, legend[0], set1 - intersect, legend[1], set2 - intersect, legend[0], legend[1], intersect) if fisherU: print >> fout, '<tr><td>Universe</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>E[%s ∩ %s]</td><td>%d</td></tr> <tr><td>dnrichment p-value</td><td>%g</td></tr> <tr bgcolor="#AAAAAA"> <td>depletion p-value</td><td>%g</td></tr>' % ( fisherU, legend[0], legend[1], expectedIntersect, fisher_pvalues.right_tail, fisher_pvalues.left_tail) print >> fout, '</body></html>' fout.close()
def drawThreeVenn(set1, set2, set3, set1set2Intersect, set1set3Intersect, set2set3Intersect, allIntersect, width, height, outfile, title=None, legend=None, indicateNumberInLegend=False, colors=None, htmlReport=None): chart = VennChart(width, height) chart.add_data([ set1, set2, set3, set1set2Intersect, set1set3Intersect, set2set3Intersect, allIntersect ]) if title: chart.set_title(title) if legend: legendOut = legend[:] if indicateNumberInLegend: legendOut[0] = legend[0] + " (" + str(set1) + ")" legendOut[1] = legend[1] + " (" + str(set2) + ")" legendOut[2] = legend[2] + " (" + str(set3) + ")" chart.set_legend(legendOut) if colors: for i in range(0, len(colors)): if type(colors[i]) is not StringType: #probably a int tuple (4 or 3) #print >> stderr,colors[i],"is not string" if type(colors[i]) is ListType or type(colors[i]) is TupleType: #print >> stderr,"is list or tuple" hexCode = "" for color_component in colors[i]: hexCode += twodigithex(color_component) colors[i] = hexCode #print >> stderr,colors chart.set_colours(colors) chart.download(outfile) if htmlReport: fout = open(htmlReport, "w") set1only = set1 - set1set2Intersect - set1set3Intersect + allIntersect set2only = set2 - set1set2Intersect - set2set3Intersect + allIntersect set3only = set3 - set1set3Intersect - set2set3Intersect + allIntersect if not title: title = "" if not legend: legend = ["set1", "set2", "set3"] print >> fout, '<html><head><title>%s</title></head><body><h1>%s</h1><table width=%d><tr><td colspan=2><img src="%s"></td></tr><tr bgcolor="#AAAAAA"><td>%s</td><td>%d</td></tr><tr><td>%s</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s</td><td>%d</td></tr> <tr> <td>%s only</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s only</td><td>%d</td> </tr> <tr><td>%s only</td><td>%d</td> </tr> <tr bgcolor="#AAAAAA"> <td>%s ∩ %s</td><td>%d</td></tr> <tr> <td>%s ∩ %s</td><td>%d</td></tr> <tr bgcolor="#AAAAAA"> <td>%s ∩ %s</td><td>%d</td></tr> <tr> <td>%s ∩ %s ∩ %s </td><td>%d</td></tr> </body></html>' % ( title, title, width, basename(outfile), legend[0], set1, legend[1], set2, legend[2], set3, legend[0], set1only, legend[1], set2only, legend[2], set3only, legend[0], legend[1], set1set2Intersect, legend[0], legend[2], set1set3Intersect, legend[1], legend[2], set2set3Intersect, legend[0], legend[1], legend[2], allIntersect) fout.close()