[英]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.