前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生物信息学算法之Python实现|Rosalind刷题笔记:009 查找DNA中的motif

生物信息学算法之Python实现|Rosalind刷题笔记:009 查找DNA中的motif

作者头像
简说基因
发布2020-12-15 11:26:48
7770
发布2020-12-15 11:26:48
举报
文章被收录于专栏:简说基因简说基因简说基因

在字符串中查找子串是一个常见问题。子串在字符串中可能是唯一的,比如特定的基因序列;也有可能有多个拷贝,比如基因组中的重复序列。这些重复序列可能相同,可能有微小区别。本题中重复子串完全相同,可以简单地通过 Python 的find()函数来查找,如果重复子串不完全相同并且符合某种模式,则可以用正则表达式模块re来处理。

给定: 两个 DNA 序列st(长度都不超过 1kb)。

需得: ts中的所有位置。

示例数据

GATATATGCATATACTT
ATAT

示例结果

2 4 10

Python 实现

Finding_a_Motif_in_DNA.py

import sys
import re

def find_motif(s, t):
    ret = []
    pos = s.find(t)
    while pos != -1:
        ret.append(pos+1)
        pos = s.find(t, pos+1)
    return ' '.join([str(n) for n in ret])

def test():
    return find_motif('GATATATGCATATACTT', 'ATAT') == '2 4 10'

if __name__ == '__main__':
    if not test():
        print("find_motif: Failed")
        sys.exit(1)

    with open('rosalind_subs.txt') as fh:
        s = fh.readline().rstrip()
        t = fh.readline().rstrip()
        print(find_motif(s, t))
  • 注意找到一个位置后,再次查找需要从下一个位置(pos+1)开始,以防止重复查找。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例数据
  • 示例结果
  • Python 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档