随机子序列fasta序列和改变序列名称

Random subsequence fasta sequence and change sequence name

我有一个 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),我该怎么做?提前致谢!!

如果您不介意使用命令行 — 并且您知道您的 FASTA headers 和序列是成对的线 — 您可以使用 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

fas3 遵循 'vector-like' 接口,而不是 data.frame,因此您可以通过从对象的长度生成 500 个数字并使用它们对子集

fas3.subset = fas3[sample(length(fas3), 500)]

使用访问器 names()<- 更新名称,例如,

 names(fas3) = sub("gi|108863165-", "", names(fas3)

这在帮助页面 ?DNAStringSet 上有说明。另请参阅 Bioconductor support site 以获得更合适的论坛,以解决有关 Bioconductor 包的问题。