r - 用 R 查找 DNA 序列中的所有出现
问题描述
我需要找到以“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"
推荐阅读
- .net - 不允许我从课堂外调用事件
- amazon-dynamodb - 如何仅基于分区键更新项目?
- reactjs - 将 CodePen 嵌入到 React 框架站点中
- testing - Testcafe 每次触发浏览器大约需要 2 分钟。这里有什么解决方法?
- selenium - selenium/standalone-chrome-debug:3.141.59-yttrium 在同一主机 EC2 上的多个容器
- asp.net-core - CORS 问题:AWS S3 和 Cloudfront 上的 Angular 5 和 IIS10 EC 2 windows server 2019 上的 .net core webapi
- python - 为什么pygame显示一个黑色的窗口?
- python - 如何将自定义标头添加到 urllib 请求?
- c - 我如何知道行号何时更改?
- python - 从另一个 Flask 应用程序调用 Flask 应用程序的 REST API