Я должен сделать функцию, которая печатает самую длинную палиндромную подстроку фрагмента ДНК. Я уже написал функцию, которая проверяет, является ли кусок ДНК самим палиндромом. См. Функцию ниже.
def make_complement_strand(DNA):
complement=[]
rules_for_complement={"A":"T","T":"A","C":"G","G":"C"}
for letter in DNA:
complement.append(rules_for_complement[letter])
return(complement)
def is_this_a_palindrome(DNA):
DNA=list(DNA)
if DNA!=(make_complement_strand(DNA)[::-1]):
print("false")
return False
else:
print("true")
return True
is_this_a_palindrome("GGGCCC")
Но теперь: как сделать функцию, печатающую самую длинную палиндромную подстроку строки ДНК?
Значение палиндрома в контексте генетики немного отличается из определения, используемого для слов и предложений. Поскольку двойная спираль образована двумя спаренными нитями нуклеотидов, которые проходят в противоположных направлениях в смысле 5'-3 ', а нуклеотиды всегда спариваются одинаково (аденин (A) с тимином (T) для ДНК, с урацилом (U) для РНК; цитозин (C) с гуанином (G)) (одноцепочечная) нуклеотидная последовательность называется палиндромом, если она равна его обратному комплементу. Например, последовательность ДНК ACCTAGGT представляет собой палиндром c, поскольку ее нуклеотидный нуклеотидный комплемент представляет собой TGGATCCA, и обратный порядок нуклеотидов в комплементе дает исходную последовательность.