【问题标题】:Find the sequence using R使用 R 查找序列
【发布时间】:2021-02-23 07:37:12
【问题描述】:

如何编写一个函数,该函数接受一个 DNA 序列(作为单个字符串)和一个数字“n >= 2”,并返回一个包含所有以三元组“AAA”或“ GAA”并以三连音“AGT”结尾,并且在开头和结尾之间至少有 2 个,最多有“n”个其他三连音。

第一季度:

for "GAACCCACTAGTATAAAATTTGGGAGTCCCAAACCCTTTGGGAGT" and for n=2, 
the answer is c=(“GAACCCACTAGT”, “AAATTTGGGAGT”).

第二季度:

e.g, n=10
the answer is:  c("GAACCCACTAGTATAAAATTTGGGAGT", "AAACCCTTTGGGAGT")

【问题讨论】:

标签: r bioinformatics


【解决方案1】:

这是一种可能的方法。

它使用基于 2 -> n 次重复三个 [A-Z] 作为其核心的正则表达式。

library( stringr )
#sample data
dna <- c("GAACCCACTAGTATAAAATTTGGGAGTCCCAAACCCTTTGGGAGT")
#set constants
start <- c("AAA", "GAA")
end <- "AGT"
n <- 10  # << set as desired

#build regex
regex <- paste0( "(", paste0( start, collapse = "|" ), ")", paste0( "([A-Z]{3}){2,", n, "}" ), end )
#for n = 10, this looks like: "(AAA|GAA)([A-Z]{3}){2,10}AGT"

stringr::str_extract_all( dna, regex )

# n = 2
# [[1]]
# [1] "GAACCCACTAGT" "AAATTTGGGAGT"

# n = 10
# [[1]]
# [1] "GAACCCACTAGTATAAAATTTGGGAGT" "AAACCCTTTGGGAGT"

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多