【问题标题】:Total Mismatches between two strings两个字符串之间的总不匹配
【发布时间】:2014-11-24 16:26:47
【问题描述】:

我正在寻找一种方法来查找 python 中两个字符串之间的不匹配总数。我的输入是一个看起来像这样的列表

['sequence=AGATGG', 'sequence=AGCTAG', 'sequence=TGCTAG',
 'sequence=AGGTAG', 'sequence=AGCTAG', 'sequence=AGAGAG']

对于每个字符串,我想看看它与序列"sequence=AGATAA" 有多少不同。因此,如果输入是上面列表中的[0],则输出将如下所示:

sequence=AGATGG, 2

我不知道是否将每个字母拆分为单独的列表,或者我是否应该尝试以某种方式比较整个字符串。任何帮助都是有用的,谢谢

【问题讨论】:

  • 你是什么意思“差异”?只是成对的字符比较,或者例如en.wikipedia.org/wiki/Levenshtein_distance,还是……?
  • 定义一个从 0 循环到字符串字符数的方法。对于每个字符,如果引用字符串中的当前字符与检查字符串中相同索引处的字符不同,则增加一个计数器。当你完成这项工作后,你的计数器就会有 2 个字符串的确切差异数。

标签: python biopython genetics


【解决方案1】:

您可以使用sumzip 轻松计算两个字符串之间的配对不匹配总数:

>>> s1='AGATGG'
>>> s2='AGATAA'
>>> sum(c1!=c2 for c1,c2 in zip(s1,s2))
2

如果您必须处理大小不同的字符串,您可能更喜欢from itertools import zip_longest 而不是zip

【讨论】:

    【解决方案2】:

    首先,我认为你最安全的赌注是使用 Levenshtein 距离和一些图书馆。但是由于你是用 Biopython 标记的,你可以使用pairwise:

    1. 首先你想摆脱“sequence=”。您可以对每个字符串进行切片或

      seqs = [x.split("=")[1] for x in ['sequence=AGATGG',
                                        'sequence=AGCTAG',
                                        'sequence=TGCTAG',
                                        'sequence=AGGTAG',
                                        'sequence=AGCTAG',
                                        'sequence=AGAGAG']]
      
    2. 现在定义参考序列:

      ref_seq = "AGATAA"
      
    3. 并且使用pairwise 可以计算对齐:

      from Bio import pairwise2
      
      for seq in seqs:
          print pairwise2.align.globalxx(ref_seq, seq)
      

    我正在使用pairwise2.align.globalxx,即没有参数的对齐方式。其他函数接受不同的匹配值和间隙值。通过http://biopython.org/DIST/docs/api/Bio.pairwise2-module.html查看它们。

    【讨论】:

      【解决方案3】:

      查看 Levenshtein 距离:http://en.wikipedia.org/wiki/Levenshtein_distance

      您会发现大量有效实现此算法的 python 库。

      我认为比较此类基因序列更合适(因为它还可以很好地处理插入和删除)。

      【讨论】:

        猜你喜欢
        • 2018-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-15
        • 2019-01-12
        • 1970-01-01
        相关资源
        最近更新 更多