Python 序列比较功能未按预期工作
业余Python程序员试图在这里学习,所以我想问一下我的脚本是怎么回事。我真的不知道哪里出了问题。(想想第24行或Python 序列比较功能未按预期工作,python,python-2.7,bioinformatics,biopython,Python,Python 2.7,Bioinformatics,Biopython,业余Python程序员试图在这里学习,所以我想问一下我的脚本是怎么回事。我真的不知道哪里出了问题。(想想第24行或difference=“%s-%s[%d]”(seq1[i],seq2[i],i)) 该函数用于加载序列,重命名它们(该位起作用),然后将每个序列与参考序列(此处仅为文件中的第一个序列)进行比较,如果序列中的字母与参考不匹配,则打印差异和位置。但是,正如您在下面看到的,这不起作用 这是一个模型输入文件- 这是我得到的输出,这是不正确的,因为7065_8#4中的位置454实际上=p 7
difference=“%s-%s[%d]”(seq1[i],seq2[i],i)
)
该函数用于加载序列,重命名它们(该位起作用),然后将每个序列与参考序列(此处仅为文件中的第一个序列)进行比较,如果序列中的字母与参考不匹配,则打印差异和位置。但是,正如您在下面看到的,这不起作用
这是一个模型输入文件-
这是我得到的输出,这是不正确的,因为7065_8#4中的位置454实际上=p
7065_8#1 7065_8#1
7065_8#1 7065_8#2
7065_8#1 7065_8#3
7065_8#1 7065_8#4 E-G [245]
7065_8#1 7065_8#5
解决这一问题的最佳方法无疑是将其分解为更小的部分,并对每个部分进行验证 以下是一个最小的差异实现:
def compare_sequences(seq1, seq2):
for index, (a, b) in enumerate(zip(seq1, seq2)):
if a != b:
yield index, a, b
这就是它的工作原理:
print list(compare_sequences('abcdef', 'abddef'))
这让我
[(2, 'c', 'd')]
你可以用它作为一个简单的证明,它的工作。我建议您将输入隔离到函数中,并验证它是否按预期工作
也许输入中存在空白或换行符的问题,而您不希望输入的空白或换行符会使所有内容都丢失?谢谢您的帮助,我看了一下,这似乎是输入文件的问题,而不是编码的问题。
[(2, 'c', 'd')]