Rosalind第九题:Finding a Motif in DNA

问题

给定两个 和,是子串的,如果被包含在符号的连续集合(其结果是,必须比不再)。

字符串中符号的位置是在其左侧找到的符号总数,包括符号本身(例如,“ AUGCUUCAGAAAGGUCUUACG”中所有出现的“ U”的位置分别为2、5、6、15、17和18) )。在位置的符号的通过表示。

的子字符串可以表示为,其中 和代表子字符串在其中的开始和结束位置;例如,如果=“ AUGCUUCAGAAAAAAGGUCUUACG”,则=“ UGCU”。

子串的位置是它的起始位置; 请注意,如果它作为的子字符串不止一次出现,它将在多个位置(请参见下面的示例)。 

给定:两个DNA串 和(每个长度最大1 kbp)。

返回:的所有位置,作为的子字符串。

样本数据集

GATATATGCATATACTT 
ATAT

样本输出

2 4 10

python解决方案

seq = 'GATATATGCATATACTT'
pattern = 'ATAT'


def find_motif(seq, pattern):
    position = []
    for i in range(len(seq) - len(pattern)):
        if seq[i:i + len(pattern)] == pattern:
            position.append(str(i + 1))

    print('\t'.join(position))


find_motif(seq, pattern)
import re
matches = re.finditer('(?=ATAT)', 'GATATATGCATATACTT')
for match in matches:
    print (match.start()+1,end = '\t')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值