我正在分析一个大型DNA字符串集,如下所示:
SEQUENCE
A DNAStringSet instance of length 6
width seq names
[1] 253 GAACAGCATGAATGTTAAAACTGAAATGGATGATGATGATGATGATGATGATG...GTATTATGGCATCATGATGAATGATGGTTAGGTTTTCAGAAAAAGCAGAAGA C3
[2] 158 TATATATATATAGTCAATTCGAGGATGTTAGATCGACAATGGGGATTATAGAA...AGCAAGAATTAGCAGGACCACTCCGGATACTATTCCAGAGTTTCCTTGCAAA B4
[3] 619 ATAGACATACACACAAATATTTTTATATCACATGCATACCCATACACACACAT...TCATATATAGACACAAATATATATATACATATTTATACATATATATATATAT A0
[4] 359 TCACCAGTGGCAGCCGCGGCTACAGCAAAAGGTGGCCGGCCAAGGAGTGTCGT...GGTGTCGCGTGCCCTTGTGGACACGGGCTGTACAACGACCCTGATGACTCCG A1
[5] 239 GAAGTGGTAAAGAGTGCGATGCGCTGAAAAAAGAGAGAACAGTACTTGAAATG...CCACACTTCAAGTACTGTTCTCTCTTTTTTCAGCGCATCGCACTCTTTACCA A2
[6] 212 CAAAAAGAAGGTTATGGTGACTGTTTGGTGGTGTACTGCTGGACCCATCCCCT...ATAGGGCCAATCATTCTTCATGACAATGCTCGACCACACGTTTTACTAATGA A3
... .... .....
好吧,假设我需要在名称为A1的字符串中找到特定的序列,例如GCGGCTACAGCAAAAGGTGGCCGGCCAAGG
,我不知道如何获得它。我已经尝试过了:
s1= SEQUENCE[4]
A DNAStringSet instance of length 1
width seq names
[1] 359 TCACCAGTGGCAGCCGCGGCTACAGCAAAAGGTGGCCGGCCAAGGAGTGTCGT...AGGTGTCGCGTGCCCTTGTGGACACGGGCTGTACAACGACCCTGATGACTCCG A1
现在这是一个简单的示例,在其中我可以看到名称A1
与字符串[4]
相对应,但是如果仅知道超过10000个字符串中的名称,我将无法执行此操作。无论如何,我只想获取序列,而不是名称,而不是宽度,但是我不知道如何从此字符串集中提取序列。
你能帮我吗?
答案 0 :(得分:1)
一个基本的R选项是使用grepl
。作为您原始数据的较小版本,我正在使用以下代码:
sequences <- c("GAACAGCATG", "TATATATATA", "ATAGACATAC")
sequences[grepl("GAACA", sequences)]
[1] "GAACAGCATG"
如果您正在使用数据框存储序列信息,则使用类似以下的方法:
df[,grepl(df$seq, "GCGGCTACAGCAAAAGGTGGCCGGCCAAGG")]