Сравните две последовательности

Мне очень трудно изучать Python 3, и сейчас я борюсь с этим одним упражнением.

Я должен написать функцию, которая принимает два аргумента:

1) Строка, которая представляет собой последовательность ДНК.

2) Строка той же длины, что и аргумент один (также последовательность ДНК)

Функция должна возвращать число с плавающей запятой (пропорция оснований, которые одинаковы в двух последовательностях ДНК).

Итак, я знаю, что должен написать функцию, которая будет возвращать что-то вроде этого:

seq_similarity("ATGC","AGTT")

должен вернуться

0.75

Я только зашел так далеко, и теперь я застрял еще до того, как начал:

def sequence_similarity(seq1,seq2):
    seq1="AGTC"
    seq2="AGTT"

Можете ли вы помочь мне начать?

2 ответа

Решение

Ты можешь использовать sum и дать ему условие:

sum(x==y for (x,y) in zip(seq1, seq2))

Это говорит 3 для ваших двух строк.

Итак, разделите на длину:

sum(x==y for (x,y) in zip(seq1, seq2))/len(seq1)

Следите за целыми числами, если используете 2.x:

sum(x==y for (x,y) in zip(seq1, seq2))/float(len(seq1))

Есть встроенный

  from difflib import SequenceMatcher

def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()
Другие вопросы по тегам