我有一个fasta文件(fas2),它有大约1000个fasta序列,下面是fasta序列的几个例子:
>gi|108863165-BAdV-2
ATGGCTACTCCTTCGATGATGCCGCAGTGGTCTTACATGCACATCGCCGGGCAGGATGCCTCCGA
>gi|108863163-BAdV-1
ATGGCGACGCCGTCGATGATGCCCCAGTGGTCGTACATGCACATCGCCGGGCAGGATGCCTCAGA
我在线查看并看到许多教程使用readDNAStringSet来读取fasta文件。所以我用这个评论来阅读我的文件:
fas3 <- readDNAStringSet(fas2, "fasta")
它确实创建了一个类似data.frame的结构(但不是data.frame)来查看fasta文件。我的问题是R中是否有任何功能我可以从fas3中随机抽取500个fasta序列?另外,如果我想重命名特定的fasta名称,例如(gi | 108863165-BAdV-2到BAdV-2),我该怎么做?在此先感谢!!
答案 0 :(得分:1)
如果您不介意使用命令行 - 并且如果您知道FASTA标题和序列是成对的行 - 您可以使用sample来对线对进行采样。
例如,无需替换即可对500个序列进行采样:
$ sample --lines-per-offset=2 --sample-size=500 fas2.fa > fas2.sample.fa
运行sample --help
以获取更多选项。
您可以使用sed
替换名称:
$ sed 's/gi|108863165-BAdV-2/BAdV-2/' fas2.fa > fas2.modified.fa
答案 1 :(得分:1)
fas3
遵循&#39;类似矢量&#39;接口,而不是data.frame,因此您可以通过从对象的长度生成500个数字并使用这些数据来对子集进行采样
fas3.subset = fas3[sample(length(fas3), 500)]
使用访问者names()<-
更新名称,例如
names(fas3) = sub("gi|108863165-", "", names(fas3)
帮助页面?DNAStringSet
上有说明。另请参阅Bioconductor support site以获取有关Bioconductor封装的更合适的论坛。