Python Сравнение последовательностей - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь сравнить две последовательности:

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

, но код, который я использую, застревает в конце сравнения последовательностей. Этот код был найден в Интернете, и у меня возникли трудности с поиском его проблемы. Предоставленная синтаксическая ошибка выделяет 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)

Может кто-нибудь помочь мне найти проблему с этим?

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

В python добавление отступа является обязательным. Если вы не добавите отступ в определенном месте, ваш код не будет работать; Здесь после объявления функции необходимо добавить отступ после объявления функции.

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)

Этот код должен работать, поскольку я добавил отступ везде, где это было необходимо.

0 голосов
/ 04 мая 2020

Похоже, проблема была в том, что 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)

Вывод

tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt
|  ||  |  ||||||||||   |||  |||| || ||||||| ||||| || |||||||||||| ||| | ||| |
agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...