生物信息学:DNA序列中的模式识别



所以,我正在尝试制作一个python程序,接收像

这样的DNA序列

ATAAAAAGCGTAAGCATTGGCATCATTTGCAGCATACTCAAGCCATTTTTCAGCCAGCTCGGGCTCTTTTGTATATTTCGAGGCAACCCAGCCCTTCCCGCCAGCAAAAGGGGCGTATTCTTCTCCATTTGGCAATGTCGGAATGG

作为输入,我需要它来识别序列中的模式,比如"GGCAT"我需要程序返回"GGCAT has been found (so many times) in the sequence"我试着

print ("Pattern recognition system.")
option=input("Insert DNA sequence")
def PatternCount(Text, Pattern):
count=0
for i in range(0, len(text)-len(pattern)+1):
if text[i:len(pattern+i)]== pattern:
count=count+1
return count

,但我不认为这是这样做的方式,看到它在以前的帖子,但我得到的错误代码多个语句发现,而单个语句史密斯。有什么好主意吗?

这样如何:

  1. 使用str.find()方法查找字符串
  2. 中的模式
  3. 使用str.replace(Pattern, '', 1)方法将模式的第一次出现替换为空字符串,(传递1作为计数使其仅替换第一次出现)
  4. 在一个while循环中保持这样做,直到find()返回-1并每次增加count

代码:

def PatternCount(Text, Pattern):
count = 0
while Text.find(Pattern) != -1:
count = count + 1
Text = Text.replace(Pattern, '', 1)
return count

在你的函数中,

我可以看到

  1. 要传递的参数的名称Text,text中使用的字符不匹配。,
  2. 在你的if条件len(pattern+i)语法不正确。As pattern是一个字符串,i是一个整数。应该是len(pattern)+i

Please try this:

input_sequence = "ATAAAAAGCGTAAGCATTGGCATCATTTGCAGCATACTCAAGCCATTTTTCAGCCAGCTCGGGCTCTTTTGTATATTTCGAGGCAACCCAGCCCTTCCCGCCAGCAAAAGGGGCGTATTCTTCTCCATTTGGCAATGTCGGAATGG"
input_pattern = "GGCAT"
def PatternCount(sequence, pattern):
count=0
length_of_pattern = len(pattern)
range_to_iterate = len(sequence)-length_of_pattern
for i in range(0, range_to_iterate+1):
if sequence[i:i+length_of_pattern]==pattern:
count+=1
return count
print (PatternCount(input_sequence, input_pattern))

最新更新