Сравните две последовательности
Мне очень трудно изучать 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()