В основном, вопрос заключается в том, чтобы попросить выяснить все возможные мотивы (k-mers long) с не более чем d-несоответствиями среди коллекции строк ДНК. Я могу написать код ниже, чтобы найти все мотивы (k, d) для одной строковой ДНК. Я не знаю, как изменить свой код, когда выйдет многострочная строка ДНК.Найти все (k, d) -мотифы в наборе строк ДНК
Пример ввода:
к = 3, г = 1
ATTTGGC
TGCCTTA
CGGTATC
GAAAATT
Пример вывода:
ATA
ATT
GTT
ТТТ
import collections
kmer = 5;
in_genome = "GGGGCTTCACAGCGCCCCTACAATACAATAGCCCTCGAATACCTACTTGCCACTATGTTCGGCGTCATTACATACGACCCGCATGCTCGGCAGTATGTCTCTACTCAGGATCCCTCAATATTACTTACGCCAATATGTCTAAGGTTTAGA";
in_mistake = 1;
out_result = [];
mismatch_list = []
def hamming_distance(s1, s2):
# Return the Hamming distance between equal-length sequences
if len(s1) != len(s2):
raise ValueError("Undefined for sequences of unequal length")
else:
return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2))
for i in xrange(len(in_genome)-kmer + 1):
v = in_genome[i:i + kmer]
out_result.append(v)
for t_kmer in set(out_result):
for s_kmer in out_result:
if hamming_distance(t_kmer, s_kmer) <= in_mistake:
mismatch_list.append(t_kmer)
mismatch_count = collections.Counter(mismatch_list)
print mismatch_count
В чем вопрос plz? – Aprillion
Не могли бы вы рассказать о значении 'd'? Определить несоответствие – Pynchia
Вы можете объединить все эти строки в строку in_genome –