首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配mRNA序列的正则表达式

匹配mRNA序列的正则表达式
EN

Stack Overflow用户
提问于 2019-02-28 17:21:10
回答 1查看 470关注 0票数 7

在真核生物中,剪接mRNA具有三个关键特性:

  1. mRNA以起始密码子开始
  2. mRNA的编码部分以三个终止密码子(TAA/TAG/TGA)中的一个结束。
  3. 在停止密码子之后立即有一个‘poly’尾‘。多聚(A)尾是许多腺嘌呤(A's)在转录后连接到编码序列3‘端的产物。事实上,可能有数百个A在poly的尾部,但通常mRNA/cDNA的末端并不是完全测序,因此在终止密码子后面可能只有5A。

因此,基本上,一个mRNA序列应该从ATG开始,后面跟着任意数量的As、Cs、Ts或Gs,然后是TAA或TAG或TGA,然后是5或更多的As。

我的(python)正则表达式是:^ATG[ATCG]*T(AA|AG|GA)A{5}A*$

然而,这是匹配的序列,在聚(A)尾之后有更多的字符,就好像$字符没有被识别一样。我做错了什么?

有效的例子:

代码语言:javascript
复制
ATGCTGATGATGATGATAGAAAAA
ATGTGAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

无效示例:

代码语言:javascript
复制
ATGCTGATGXTGATGATAGAAAAA
TATGCTGATGXTGATGATAGAAAAA
ATGTGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC

编辑(我的完整代码):

代码语言:javascript
复制
file = open('potential_mRNA.fasta')
alignment = SeqIO.parse(file, 'fasta')
mRNA_seqs = []
mRNA_pattern = r'^ATG[ATCG]*T(AA|AG|GA)A{5}A*$'
for mrna in alignment:
    sequence = str(mrna.seq)
    if re.search(mRNA_pattern, sequence):
        mRNA_seqs.append(sequence)
EN

回答 1

Stack Overflow用户

发布于 2019-04-02 14:09:42

它的工作方式是这样的,因为第一个*是贪婪的,并且试图尽可能匹配,匹配所有后缀,正则表达式解析器永远不会超越解析[ATCG]

然而,$应该使它像您所期望的那样工作,这样您的正则表达式对于您的任务是完全有效的,也许有一些未知的条件,我无法从您的问题中看到。

试试^ATG[ATCG]*?T(?:AA|AG|GA)A{5,}$

我使用了懒惰的*?而不是*,也使用了一个非捕获组(?:)A{5,},而不是A{5}A*来进行优化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54931073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档