【发布时间】:2020-05-10 09:52:40
【问题描述】:
该项目的目标是从文本文件中打开并读取 DNA 序列,例如,如果子字符串是 AGATC,那么连续的子字符串也是,我们添加到计数器中,一旦连续的子字符串string 不再是 AGATC,目的是统计到该范围内的最高分,清除计数器并继续搜索,以找到最长的连续序列。
str_count = []
counter = 0
highest = 0
# read sequence
with open(argv[2], "r") as seq:
seqRead = seq.read()
for i in range(len(seqRead)):
#search for consecutive AGATC
if i == 'A' and seqRead[i:i+6] == 'AGATC':
while i == 'A' and seqRead[i:i+6] == 'AGATC':
counter += 1
i = i + 5
if highest < counter:
highest = counter
counter = 0
else:
counter = 0
现在我认为我遇到的问题是我认为我没有正确比较文本序列,因此没有读取字符串中正确的字母序列。
我的目标是将“i”跟踪为“A”,然后提取连续的 4 个字母并将其与“AGATC”进行比较,然后如果匹配,则增加计数器并将“i”更改为比较后的字母,并且如果是A重复直到不再连续,然后添加到最高直到结束。 这是至少,但是在运行调试器时,我注意到它从不进入第一个 if 语句,这让我相信我比较的方式是不正确的。
示例输入:
AGATCAGATCAGATCAGATCAGATCDJFDHFDTTTTCCSSDDSDDGFJFHAGATCAGATCAGATCAGATCAGATCAGATGJFHJGHJDSHGDKFSAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCDKFDKDFKGJKDFKAGATCkFGJKFDDAGATCDFKJKFJFKDJKAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCAGATCKFDHDFKFDHKGHKDFGJFKHDFK
预期输出:最高 = 30
由于AGATC最长连续出场30次。
输入:
AAGGTAAGTTTAGAATATAAAAGGTGAGTTAAATAGAATAGGTTAAAATTAAAGGAGATCAGATCAGATCAGATCTATCTATCTATCTATCTATCAGAAAAGAGTAAATAGTTAAAGAGTAAGATATTGAATTAATGGAAAATATTGTTGGGGAAAGGAGGGATAGAAGG
输出:最高 = 4
我对如何使用 seqRead[i:i+6] 有误吗?
我怎样才能做得更好?
【问题讨论】:
-
您能否提供一个示例输入?和预期的输出?它可能是您正在阅读的文件的一部分。
-
已编辑样本和预期
-
如果我错了,请纠正我,但我认为你的第一个例子有 29 次连续出现,而不是 30 次
-
@Kwsswart 感谢您提供示例输入。请看我的回答!