tag:blogger.com,1999:blog-1320528867223721914.post1328170938658083803..comments2024-03-18T10:00:22.981+01:00Comments on #!/perl/bioinfo: regenerando DNA degeneradobrunocontrerashttp://www.blogger.com/profile/06780659979139333360noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-1320528867223721914.post-27581941381874717612014-07-10T11:06:15.249+02:002014-07-10T11:06:15.249+02:00Os dejo el mismo código en python ;)
def disambig...Os dejo el mismo código en python ;)<br /><br />def disambiguate(seq,stype='dna'):<br /> '''Retrieves all possible sequences from a IUPAC sequence'''<br /><br /> nt_iupac = dict()<br /><br /> nt_iupac = {<br /> 'A' : ['A'], 'a' : ['a'],<br /> 'C' : ['C'], 'c' : ['c'],<br /> 'G' : ['G'], 'g' : ['g'],<br /> 'T' : ['T'], 't' : ['t'],<br /> 'U' : ['U'], 'u' : ['u'],<br /> 'M' : ['A', 'C'], 'm' : ['a', 'c'],<br /> 'R' : ['A', 'G'], 'r' : ['a', 'g'],<br /> 'W' : ['A', 'T'], 'w' : ['a', 't'],<br /> 'S' : ['C', 'G'], 's' : ['c', 'g'],<br /> 'Y' : ['C', 'T'], 'y' : ['c', 't'],<br /> 'K' : ['G', 'T'], 'k' : ['g', 't'],<br /> 'V' : ['A', 'C', 'G'], 'v' : ['a', 'c', 'g'],<br /> 'H' : ['A', 'C', 'T'], 'h' : ['a', 'c', 't'],<br /> 'D' : ['A', 'G', 'T'], 'd' : ['a', 'g', 't'],<br /> 'B' : ['C', 'G', 'T'], 'b' : ['c', 'g', 't'],<br /> 'N' : ['A', 'C', 'G', 'T'], 'n' : ['a', 'c', 'g', 't'],<br /> 'X' : ['A', 'C', 'G', 'T'], 'x' : ['a', 'c', 'g', 't']<br /> }<br /> <br /> count_combs = number_combs(seq)<br /> index_combs = count_combs<br /> comb_seqs = ['']*count_combs<br /> for nt in seq:<br /> comb_nts = nt_iupac[nt]<br /> index_combs = index_combs/len(comb_nts)<br /> count_nt_combs = 0<br /> index = 0<br /> for i in range(count_combs):<br /> count_nt_combs += 1<br /> comb_seqs[i] += comb_nts[index]<br /> if count_nt_combs == index_combs:<br /> count_nt_combs = 0<br /> index += 1<br /> if index > len(comb_nts)-1:<br /> index = 0<br /><br /> return comb_seqs<br /><br />def number_combs(seq,stype='dna'):<br /> '''Counts the number of possible sequence combinations from ambiguous sequences'''<br /><br /> count_combs = 1<br /><br /> for nt in seq:<br /> if re.match(r'[M|R|W|S|Y|K]', nt, re.IGNORECASE):<br /> count_combs *= 2<br /> if re.match(r'[V|H|D|B]', nt, re.IGNORECASE):<br /> count_combs *= 3<br /> if re.match(r'[X|N]', nt, re.IGNORECASE):<br /> count_combs *= 4<br /><br /> return count_combs<br />Anonymoushttps://www.blogger.com/profile/01111762212594457636noreply@blogger.com