繁体   English   中英

尝试创建一个滑动 window 检查 DNA 序列中的重复

[英]Trying to create a sliding window that checks for repeats in a DNA sequence

我正在尝试编写一个生物信息学代码来检查给定核苷酸串中的某些重复。 用户输入某种模式,程序会输出某些内容重复了多少次,甚至会突出显示它们所在的位置。 我已经有了一个良好的开端,但需要一些帮助。

到目前为止,下面是我的代码。

while True:
    text = 'AGACGCCTGGGAACTGCGGCCGCGGGCTCGCGCTCCTCGCCAGGCCCTGCCGCCGGGCTGCCATCCTTGCCCTGCCATGTCTCGCCGGAAGCCTGCGTCGGGCGGCCTCGCTGCCTCCAGCTCAGCCCCTGCGAGGCAAGCGGTTTTGAGCCGATTCTTCCAGTCTACGGGAAGCCTGAAATCCACCTCCTCCTCCACAGGTGCAGCCGACCAGGTGGACCCTGGCGCTgcagcggctgcagcggccgcagcggccgcagcgCCCCCAGCGCCCCCAGCTCCCGCCTTCCCGCCCCAGCTGCCGCCGCACATA'
    print ("Input Pattern:")
    pattern = input("")


    def pattern_count(text, pattern):
        count = 0
        for i in range(len(text) - len(pattern) + 1):
            if text[i: i + len(pattern)] == pattern:
                count = count + 1
            return count


    print(pattern_count(text, pattern))

问题在于我只能从头开始输入(例如 AGA 或 AGAC)以获得 output。任何帮助或建议将不胜感激。 太感谢了!

一种可能性是使用re.findall

import re
text = 'AGACGCCTGGGAACTGCGGCCGCGGGCTCGCGCTCCTCGCCAGGCCCTGCCGCCGGGCTGCCATCCTTGCCCTGCCATGTCTCGCCGGAAGCCTGCGTCGGGCGGCCTCGCTGCCTCCAGCTCAGCCCCTGCGAGGCAAGCGGTTTTGAGCCGATTCTTCCAGTCTACGGGAAGCCTGAAATCCACCTCCTCCTCCACAGGTGCAGCCGACCAGGTGGACCCTGGCGCTgcagcggctgcagcggccgcagcggccgcagcgCCCCCAGCGCCCCCAGCTCCCGCCTTCCCGCCCCAGCTGCCGCCGCACATA'
pattern = "CCT"
count = sum(1 for _ in re.findall(pattern, text))

sum(1 for...)是计算项目数量的常见模式,生成器返回。 参见例如这个答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM