首页 > 解决方案 > 从 DNA 字符串集中的字符串中选择序列

问题描述

我正在分析一个像这样的大型 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
... .... .....

好吧,假设我需要找到一个特定的序列,例如GCGGCTACAGCAAAAGGTGGCCGGCCAAGG在名称为 A1 的字符串中,我不明白如何获取它。我试过这个:

s1= SEQUENCE[4]
  A DNAStringSet instance of length 1
    width seq                                                                                                           names               
[1]   359 TCACCAGTGGCAGCCGCGGCTACAGCAAAAGGTGGCCGGCCAAGGAGTGTCGT...AGGTGTCGCGTGCCCTTGTGGACACGGGCTGTACAACGACCCTGATGACTCCG A1

现在这是一个简单的例子,我可以看到名称A1对应于字符串[4],但如果只知道 10000 多个字符串中的名称,我不能这样做。无论如何,我只想获取序列,而不是名称,而不是宽度,但我不知道如何从这个字符串集中提取它。你能帮助我吗?

标签: rstring

解决方案


一种基本 R 选项是使用grepl. 作为原始数据的较小版本,我使用的是:

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

[1] "GAACAGCATG"

如果您使用数据框来存储序列信息,请使用以下内容:

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

推荐阅读