Python,通过正则表达式找到(n)n字符串的长度

标签 python regex

我有一个看起来像这样的代码:

import HTSeq
reference = open('genome.fa','r')
sequences = dict( (s.name, s) for s in HTSeq.FastaReader(reference))
out = open('homopolymers_in_ref','w')

def find_all(a_str,sub):
    start = 0
    while True:
        start = a_str.find(sub, start)
        if start == -1: return
        yield start
        start += len(sub)
homa = 'AAAAAAAAAA'
homc = 'CCCCCCCCCC'
homg = 'GGGGGGGGGG'
homt = 'TTTTTTTTTT'
for key,line in sequences.items():
    seq = str(line)
    a= list(find_all(seq,homa))
    c = list(find_all(seq,homc))
    g = list(find_all(seq,homg))
    t = list(find_all(seq,homt))
    for i in a:
##        print i,key,'A'
        out.write(str(i)+'\t'+str(key)+'\t'+'A'+'\n')
    for i in c:
        out.write(str(i)+'\t'+str(key)+'\t'+'C'+'\n')
##        print i,key,'C'
    for i in g:
        out.write(str(i)+'\t'+str(key)+'\t'+'G'+'\n')
    for i in t:
        out.write(str(i)+'\t'+str(key)+'\t'+'T'+'\n')
out.close()

我使用 HTSeq 打开引用文献。它的作用 - 它寻找长度为 10 的简单均聚物并输出起始位置、染色体和类型(A、C、T、G、)。

序列总是看起来像: ACCGCTACGATCGATCGAAAAAAAAAAAAAAAAAACGATCGAC 汽车 有时它包含 N

所以我们正在寻找的均聚物是: AAAAAAAAAA(或其他仅由 C,G,T 组成的)

基本上,您的帮助仅与 find_all 函数有关: 现在我想改变的是找到每个均聚物的长度。因为,现在如果均聚物的长度为 15,我的脚本无法告诉它。 我正在考虑通过某种正则表达式来做到这一点,即:像现在一样找到至少 10 bp 并通过向其添加 +1 来计算长度,直到下一个碱基与均聚物中的碱基不同为止。

关于如何在 python 中使用正则表达式有什么建议吗?

最佳答案

如果你想用正则表达式做到这一点,你可以尝试这样的事情:

>>> import re
>>> seq = 'ACCGCTACGATCGATCGAAAAAAAAAAAAAAAAAACGATCGAC'
>>>
>>> [(m.group(), m.start())
...     for m in re.finditer(r'([ACGT])\1{9,}', seq)
...         if len(m.group()) >= 10]
[('AAAAAAAAAAAAAAAAAA', 17)]

这会生成一个 (sequence, start_index) 元组列表。

关于Python,通过正则表达式找到(n)n字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702165/

相关文章:

python - 如何删除 one2many TreeView 中的删除图标

regex - 使用 Perl 从句子中提取小数和整数

regex - 模式验证器对于 IP 地址正则表达式无效

javascript - 允许验证括号 () 的正则表达式

regex - VSCode 片段 : add variable number of objects to a class constructor

python - Flask 和长时间运行的任务

python - 我试图理解下面的预测模型的形状值。请帮我理解值(value)和解释器的o/p是什么意思?

python - 如何使用Python将单元格的值包含在Excel文件名中?

python - 将具有单个元素和列表的列表转换为平面列表

python - 正则表达式 python - 查找子字符串