从DNA字符串集中的字符串中选择序列

时间:2019-05-17 09:55:30

标签: r string

我正在分析一个大型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个字符串中的名称,我将无法执行此操作。无论如何,我只想获取序列,而不是名称,而不是宽度,但是我不知道如何从此字符串集中提取序列。 你能帮我吗?

1 个答案:

答案 0 :(得分:1)

一个基本的R选项是使用grepl。作为您原始数据的较小版本,我正在使用以下代码:

sequences <- c("GAACAGCATG", "TATATATATA", "ATAGACATAC")
sequences[grepl("GAACA", sequences)]

[1] "GAACAGCATG"

如果您正在使用数据框存储序列信息,则使用类似以下的方法:

df[,grepl(df$seq, "GCGGCTACAGCAAAAGGTGGCCGGCCAAGG")]