2016-08-11 46 views
0

我正在编写一个分析和解析共有序列的程序。我已经成功地进行了分析和解析工作,程序告诉我两个序列是否一致。在字符串中打印不一致的位置

我想添加一个额外的功能,如果两个序列不一致,我希望它告诉我两个序列不匹配的位置。

例如:

如果序列1:GACTTTTTACTTTTTTG &序列2:GACCTTTTACTTTTTTG

它会告诉我的序列1是不是一致,以序列2,但我也希望它告诉我不一致的位置是第4个字母。

我怎样才能让程序做到这一点?

这里是我到目前为止的代码:

for (h1,s1),(h2,s2) in combinations(zip(header,sequence),2): 
    if s1[start:stop]==s2[start:stop]: 
     print h1, "is concordant to", h2 
    else: 
     print h1, "is not concordant to", h2 
     nonconcordance_position=[] 
     nonconcordance_position.append(idx2[n-1]) 
     print "position of non concordance:", nonconcordance_position 

当我运行这个它的工作原理,但它并没有给出正确的位置。

+0

如果一致性意味着字符串是否是完全一样的,那么这是一样的寻找两个字符串的公共前缀。如果是这样,http://stackoverflow.com/a/6718435/85337是一个很好的方法来做到这一点。特别使用'os.path.commonprefix'。 –

回答

0

在您的else语句中,您可以遍历序列字符串,然后在字符不匹配时打印索引。

喜欢的东西:

else: 
    for i in range(0, len(h1)): 
     if h1[i] == h2[i]: 
      continue 
     else: 
      print i 
      break 
+0

我该怎么做? –

+0

已更新的答案。 –