使用python搜索特定的重复

2024-04-19 20:24:21 发布

您现在位置:Python中文网/ 问答频道 /正文

输入文件示例:

1  AAcgGGGGGGtacctgt    yes
2  TTcccccctgtAAcgta   no
3  tcgAAAAaatacgacc     no
4  AAcgtataatacctgt   no
...

我想写一个程序来扫描每个序列并检查单体核苷酸重复(mnr)

输出示例:

^{pr2}$

定义:单体核苷酸是:A、T、C、G的重复(不区分大小写)

我要找的是这样的: AAAAaaAAgtcgtAAAAAAAAAAcaaaaaaAAAaaaaaaaaaacccccccccccCCCCCcccCCC 或者。。。在

我尝试了以下正则表达式,但不起作用:

import csv
import re
list=[]
with open('sequences.txt', 'r') as f:
    reader = csv.reader(f,delimiter="\t")
    seq=re.findall(r'[Aa]{6, }','sequences.txt')
    for line in reader:
        if line.__contains__(seq):
            print(list.append(line))

感谢任何帮助。在


Tags: 文件csvnoimportretxt示例line
2条回答

更新:使用正则表达式的部分解决方案已经被提出。请注意,下面的解决方案不能使用regex,而是查找长度为6或更多的任何字符的任何序列。在

试验数据:

number,sequence,status
1,kjhfklashfkldflkhasdfl,0
2,aaaaaljgkldfkjgldkfjgfldj,0
3,bbbbbbjigdfsjgjg,0
4,ccCccCCcjjfijsdfjsdf,0
5,klsjdflsjdfhdddddjnjlkhngjk,0
6,kjkljfhnlasjkdfheeeeeeejjjeeeeeeeeeekjdkljfleeef,0
7,jhfshffFffFFFFffkljjjj908u89,0

查找长度为6或更大的MNR的代码:

^{pr2}$

请注意,CSV方言可能需要根据运行代码和生成数据文件的系统进行调整。在

输出上述给定测试数据:

"number","sequence","status"
"3","bbbbbbjigdfsjgjg","0"
"4","ccCccCCcjjfijsdfjsdf","0"
"6","kjkljfhnlasjkdfheeeeeeejjjeeeeeeeeeekjdkljfleeef","0"
"7","jhfshffFffFFFFffkljjjj908u89","0"

这里有一个紧凑的解决方案可以满足您的需求:

import csv
with open('sequences.txt', 'r') as f:
    reader = csv.reader(f, delimiter=",")
    for line in reader:
        seq_lower = line[1].lower()
        if 'aaaaaa' in seq_lower or 'cccccc' in seq_lower or 'tttttt' in seq_lower or 'gggggg' in seq_lower:
            print(line)

在这里,我假设您只考虑a,c,g,t的mnrs,因为您正在处理一个DNA序列。在

相关问题 更多 >