繁体   English   中英

使用 R 查找 DNA 序列中的所有出现

[英]Finding all occurrences in a DNA sequence with R

我需要找到以“AAA”或“GAA”开头并以“AGT”结尾并且至少有 2 个其他三联体(1 个三联体)的给定样本的所有可能出现的 DNA 序列(无论是否重叠、部分重叠) = 3 个字母的组合)在开始和结束之间。

下面的代码只给出了一个由序列中最大数量的三元组组成的序列。 我想要从至少 2 个三元组开始的所有序列的结果。 我没有最大值的限制,所以它必须从 2 个三元组开始给出所有可能的组合。

任何人都可以帮助这部分吗?

library( stringr )
dna <- c("GAACCCACTAGTATAAAATTTGGGAGTCCCAAACCCTTTGGGAGT")
#set constants
start <- c("AAA", "GAA")
end <- "AGT"
#build regex
regex <- paste0( "(", paste0( start, collapse = "|" ), ")", paste0( "([A-Z]{3}){2,}" ), end )
str_extract_all( dna, regex )

我会使用这个正则表达式模式:

^[AG]AA[ACGT]{6,}AGT$

示例脚本:

sequences = c("GAACCCACTAGTATAAAATTTGGGAGTCCCAAACCCTTTGGGAGT",  # a match
              "CGACCCACTAGTATAAAATTTGGGAGTCCCAAACCCTTTGGGCCC")  # not a match
matches <- sequences[grepl("^[AG]AA[ACGT]{6,}AGT$", sequences)]
matches

[1] "GAACCCACTAGTATAAAATTTGGGAGTCCCAAACCCTTTGGGAGT"

暂无
暂无

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

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