簡體   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