繁体   English   中英

Python序列比较

[英]Python Sequence Comparison

我正在尝试比较两个序列:

>>> seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
>>> seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgac"

但我正在使用的代码卡在最后的 sequence_comparison 上。 这段代码是在网上找到的,我很难找到它的问题。 提供的语法错误突出显示了最后一段代码开头的 s:

def sequence_compare(seq_a, seq_b):
    len1 = len(seq_a)
    len2 = len(seq_b)
    mismatches = []
    for pos in range (0,min(len1,len2)):
        if seq_a[pos] != seq_b[pos]:
            mismatches.append('|')
        else:
            mismatches.append(' ')
    print(seq_a)
    print(mismatches)
    print(seq_b)
sequence_compare(seq_a,seq_b)

谁能帮我找到这个问题?

看起来问题是mismatches显示为列表,而不是字符串。 我已将其转换为字符串:

更新代码

def sequence_compare(seq_a, seq_b):
    len1 = len(seq_a)
    len2 = len(seq_b)
    mismatches = ""
    for pos in range (0,min(len1,len2)):
        if seq_a[pos] != seq_b[pos]:
            mismatches += '|'
        else:
            mismatches += ' '
    print(seq_a)
    print(mismatches)
    print(seq_b)

seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt"
seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg"

sequence_compare(seq_a,seq_b)

Output

tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt
|  ||  |  ||||||||||   |||  |||| || ||||||| ||||| || |||||||||||| ||| | ||| |
agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg

在 python 中必须添加缩进,如果您不在某个位置添加缩进,您的代码将无法工作; 这里在声明function之后,需要在声明function之后添加一个缩进。

def sequence_compare(seq_a, seq_b):
    len1 = len(seq_a)
    len2 = len(seq_b)
    mismatches = []
    for pos in range (0,min(len1,len2)):
        if seq_a[pos] != seq_b[pos]:
            mismatches.append('|')
        else:
            mismatches.append(' ')
    print(seq_a)
    print(mismatches)
    print(seq_b)

这段代码应该可以工作,因为我在需要的地方添加了缩进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM