欢迎光临散文网 会员登陆 & 注册

【ROSALIND】【练Python,学生信】09 确定DNA子序列出现的位置

2019-02-05 16:49 作者:未琢  | 我要投稿

如果第一次阅读本系列文档请先移步阅读【ROSALIND】【练Python,学生信】00 写在前面  谢谢配合~

题目:

确定DNA子序列出现的位置

Given: Two DNA strings s and t (each of length at most 1 kbp).

所给:两条DNA序列s和t,长度均不超过1kb。

Return: All locations of t as a substring of s.

需得:t是s的子序列,找到t在s中出现的所有位置。

 

测试数据

GATATATGCATATACTT

ATAT

测试输出

2 4 10

 

背景

模序(Motif)通常指一段核酸或氨基酸序列,在具有同源性的基因或蛋白质中重复出现,具有其特征的序列,通常有生物学意义。分子生物学中的一个重要研究内容就是定位模序出现的位置。

 

思路

Python中字符串虽然有.find()方法,但仅能返回子串第一次出现的位置,因此需要自己编写命令查找。我选用的方法是将与子串长度相同的字符串挨个取出比较,相同则输出位置。

 

Python知识点

一个字符在某字符串中的位置是指其左侧所有字符的数目(包括其自身),Python计数时从0开始。

 

代码

f = open('rosalind_subs.txt', 'r')

s = f.readlines()

f.close()

seq1 = s[0].strip()

seq2 = s[1].strip()

i = 0

while i < len(seq1)-len(seq2):

    if seq1[i:i+len(seq2)] == seq2:

        print(i+1, end=" ")

    i = i + 1


【ROSALIND】【练Python,学生信】09 确定DNA子序列出现的位置的评论 (共 条)

分享到微博请遵守国家法律