def generate_align_html(alignment): ret = [] inter = [] for i in alignment.get('qDNA.a'): inter.append(colorify(i.upper())) ret.append(inter) inter = [] for i in alignment.get('match.a'): inter.append(colorify(i.upper())) ret.append(inter) inter = [] for i in alignment.get('tDNA.a'): inter.append(i.upper()) ret.append(inter) return ret
def gen_colorify(rowCol, alignstringfill): align = [] inter = [] index = 0 for i in alignstringfill[rowCol][:3]: if index != 2: inter.append(colorify(i.upper())) index += 1 else: inter.append(i.upper()) return inter
def ionograms(metrics): """generage ionograms from tf information""" for k, v in metrics.iteritems(): title = str(k) savePaths = [] alignment = [] for i in range(10): key = "Top " + str(i + 1) if key in v: index = i + 1 e = v[key] splitE = e.split(",") row = splitE[0] col = splitE[1] pre = splitE[2] post = splitE[3] ideal = splitE[4] bars = splitE[5] called = splitE[6] preA = [float(i) for i in pre.strip().split(" ")] postA = [float(i) for i in post.strip().split(" ")] rowCol = "(%s,%s)" % (row, col) header = title + " Pre-Corrected " + rowCol preIonogram = plotters.IonogramJMR("TACG", preA[: len(preA)], preA[: len(preA)], header) preIonogram.render() preSavePath = "Pre-Corrected_%s_%s.png" % (index, title) pylab.savefig(preSavePath) header = title + " Post-Corrected " + rowCol preIonogram = plotters.IonogramJMR("TACG", postA[: len(postA)], postA[: len(postA)], header) preIonogram.render() postSavePath = "Post-Corrected_%s_%s.png" % (index, title) pylab.savefig(postSavePath) savePaths.append([preSavePath, postSavePath]) alignment = [called, bars, ideal] alignhtml = [] index = 0 for string in alignment: ainter = [] if index != 2: index += 1 for i in string: ainter.append(colorify(i.upper())) else: for i in string: ainter.append(i.upper()) alignhtml.append(ainter) # print savePaths if len(savePaths) > 0: generateWeb(savePaths, title, alignhtml)
def blastToIonogram(blastPath, displayNum, byLength, key, floworder, getPerfect): blast = open(blastPath, "r") fullRowCol = {} firstIdentity = [] alignstring = {} startVal = {} endVal = {} currentQuery = None for line in blast: if "Iteration_query-def>" in line: if line not in fullRowCol: line = line.strip() line = line.strip().split(">") line = line[1].split("<") line = str(line[0]) line = line.strip() fullRowCol[line] = [] alignstring[line] = [] currentQuery = line if byLength: if "Hsp_qseq" in line: fullRowCol[currentQuery].append(line.strip()) else: if "Hsp_bit-score" in line: fullRowCol[currentQuery].append(line.strip()) if "Hsp_query-from" in line: alignstring[currentQuery].append(line.strip()) if "Hsp_query-to" in line: alignstring[currentQuery].append(line.strip()) if "Hsp_align-len" in line: alignstring[currentQuery].append(line.strip()) if "Hsp_positive" in line: alignstring[currentQuery].append(line.strip()) if "Hsp_qseq" in line: alignstring[currentQuery].append(line.strip()) if "Hsp_midline" in line: alignstring[currentQuery].append(line.strip()) if "Hsp_hseq" in line: alignstring[currentQuery].append(line.strip()) #print alignstring alignstringfill = {} for k,v in alignstring.iteritems(): curval = None curkey = None bars = None if len(v)>0: fr = v[0].split(">") fr = fr[1].split("<") fr = fr[0] #print fr to = v[1].split(">") to = to[1].split("<") to = to[0] #print to pos = v[2].split(">") pos = pos[1].split("<") pos = pos[0] #print pos lengt = v[3].split(">") lengt = lengt[1].split("<") lengt = lengt[0] #print length q = v[4].split(">") q = q[1].split("<") q=q[0] #print q s = v[5].split(">") s = s[1].split("<") s = s[0] #print s bars = v[6].split(">") bars = bars[1].split("<") bars = bars[0] #print bars output = [q,bars,s,fr,to,pos,lengt] curKey = k.split("|") row = curKey[0].split("r")[-1] col = curKey[1].split("c")[-1] rowcol = (int(row), int(col)) alignstringfill[rowcol] = output #print fullRowCol filtered = {} for k,v in fullRowCol.iteritems(): curVal = None curKey = None if len(v) > 0: curVal = v[0].split(">") curVal = curVal[1].split("<") curVal = curVal[0] curKey = k.split("|") row = curKey[0].split("r")[-1] col = curKey[1].split("c")[-1] rowcol = (int(row), int(col)) if byLength: filtered[rowcol] = length(curVal) else: filtered[rowcol] = float(curVal) sortedWells = sorted(filtered.items(), key=itemgetter(1), reverse = True) topfive = [] classData = [] readsVcycles = [] perfect_alignments = [] for rowcol,val in sortedWells: dif = abs(int(alignstringfill[rowcol][3])-int(alignstringfill[rowcol][4])) to = int(alignstringfill[rowcol][4]) fro = int(alignstringfill[rowcol][3]) string = alignstringfill[rowcol][0] matched = alignstringfill[rowcol][5] lengt = alignstringfill[rowcol][6] if 'N' not in string: if to<3 or fro<3 and dif>21: topfive.append((rowcol,val)) classData.append((rowcol,val,dif,string)) if matched == lengt: perfect_alignments.append((rowcol,val)) if getPerfect: topfive = perfect_alignments[:displayNum] else: topfive = topfive[:displayNum] if len(classData)<10000: cycles_vs_align_len(classData, blastPath, floworder) else: cycles_vs_align_len(classData[:10000], blastPath, floworder) alignmenthtml = {} space_string = {} for rowcol,val in topfive: inter = [] index = 0 for i in alignstringfill[rowcol][:3]: if index == 0: inter.append(i.upper()) index += 1 else: inter.append(colorify(i.upper())) alignmenthtml[rowcol] = inter countLen = math.floor(len(alignstringfill[rowcol][:3][0])) #print alignstringfill[rowcol][:3][0] space_string[rowcol] = "".join(get_align_num(countLen)) return (topfive, alignmenthtml, alignstringfill, space_string)
from colorify import * # initializing COLORIFY init_colorify() #this will generate text in random color for i in range(10): print(colorify("Random Colored text")) # text color = green print(colorify("Sucess", C.green)) # text color = black , background color = green print(colorify("Sucess", C.black, C.green)) print(colorify("Error ", C.red)) print(colorify("Error ", C.white, C.red)) print(colorify("Alert ", C.orange)) print(colorify("Alert ", C.black, C.orange)) print(colorify("Info ", C.blue)) print(colorify("Info ", C.white, C.crimson)) #this will print all the color printAllColor()