【发布时间】:2019-02-28 17:21:10
【问题描述】:
在真核生物中剪接的 mRNA 具有三个关键特性:
- mRNA 以起始密码子 (ATG) 开头
- mRNA 的编码部分以三个终止密码子之一 (TAA/TAG/TGA) 结束
- 在终止密码子之后立即有一个“poly(A) 尾”。多聚 (A) 尾是一连串在转录后连接到编码序列 3' 末端的腺嘌呤 (A's)。实际上,poly(A) 尾可能有数百个 A,但通常 mRNA/cDNA 的末端没有完全测序,因此终止密码子后面可能只有 5 个 A。
所以基本上,一个 mRNA 序列应该以 ATG 开头,后跟任意数量的 As、Cs、Ts 或 Gs,然后是 TAA 或 TAG 或 TGA,然后是 5 个或更多 As。
我的 (python) 正则表达式是这样的:^ATG[ATCG]*T(AA|AG|GA)A{5}A*$
但是,这是匹配在 poly(A) 尾部后有更多字符的序列,就好像 $ 字符没有被识别一样。我做错了什么?
有效例子:
ATGCTGATGATGATGATAGAAAAA
ATGTGAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
无效示例:
ATGCTGATGXTGATGATAGAAAAA
TATGCTGATGXTGATGATAGAAAAA
ATGTGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC
编辑(我的完整代码):
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)
【问题讨论】:
-
请提供示例字符串(有效/无效)。也许解析器会是更好的选择。
-
感谢您的评论!这是一个家庭作业,所以我需要使用正则表达式。就示例字符串而言,创建简单案例或包含我正在处理的实际序列会更好吗?只是因为它们很长(约 2000 个字符)。
-
可能问题出在字符串中重复的 TAA/TAG/TGA 上?试试
^ATG(?:(?!T(?:AA|AG|GA))[ATCG])*T(?:AA|AG|GA)A{5,}$ -
@Sian 一个简单的案例更好
-
你的正则表达式很好 - regex101.com/r/Q6jSrN/1
标签: python regex jupyter-notebook bioinformatics