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

2024-09-30 14:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我正在尝试制作一个python程序,它接收DNA序列,如

ATAAAAAGCGTAAGCATTGGCATCATTTGCAGCATACTCAAGCCATTTTTCAGCCAGCTCGGGCTCTTTT GTATATTTCGAGGCAACCCAGCCCTTCCCGCCAGCAAAAGGGGCGTATTCTTCTCCATTTGGCAATGTCG GAATGG

作为输入,我需要它识别序列中的模式,比如说“GGCAT”,我需要程序返回“GGCAT已在序列中找到(多次)”。 我试过了

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

但我不认为这是解决问题的方法,我在上一篇文章中看到过,但我得到了错误代码,在单语句smth时发现了多个语句。 有没有办法让这一切发生


Tags: text程序lencount模式序列语句dna
2条回答

像这样的怎么样:

  1. 使用str.find()方法在字符串中查找模式
  2. 使用str.replace(Pattern, '', 1)方法将模式的第一个匹配项替换为空字符串(将1作为计数传递使其仅替换第一个匹配项)
  3. 在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. 传递的文本模式的参数名称与在文本模式中使用的参数名称不匹配
  2. if条件中len(pattern+i)的语法不正确。因为pattern是字符串,i是整数。它应该是len(pattern)+i

请试试这个:

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))

相关问题 更多 >