dyad_fold system:sage {{{id=1| def hamming(s1,s2): counter=0 l=len(s1) for i in range(l): if s1[i]!=s2[i]: counter+=1 return counter /// }}} {{{id=2| def hamming_map(s1,s2,dictionary): counter=0 l=len(s1) for i in range(l): if s1[i]!='N' and s2[i]!='N': if s1[i]!=dictionary[s2[i]]: counter+=1 return counter /// }}} {{{id=6| def permute_alph(ab,n): l=len(ab) if l==1: list0=[] list0.append(ab[0]) return list0 #return dic else: fact=math.factorial(l-1) pos=floor(n/fact) #print pos rem=n%fact #print rem letter=ab.pop(pos) temp=list(permute_alph(ab,rem)) #print temp,'x' temp.append(letter) #print temp,'y' return temp #dic={} #for i in range(l): #dic[ori[i]]=temp[i] #return dic /// }}} {{{id=7| def permute_dic(ab,n): l=len(ab) ori=[] for obj in ab: ori.append(obj) temp=permute_alph(ab,n) dic={} for i in range(l): dic[ori[i]]=temp[i] return dic /// }}} {{{id=3| def p_dis(s1,s2): dis=len(s1) for i in range(120): alp=['A','C','G','T','x'] dic=permute_dic(alp,i) #print i #print dic d=hamming_map(s1,s2,dic) #print d if d