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

时间:2015-03-18 22:12:30

标签: r bioinformatics fasta bioconductor

我有一个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),我该怎么做?在此先感谢!!

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封装的更合适的论坛。