我目前正在处理一个大型数据集,到目前为止,我可以通过无数的谷歌搜索和长时间的尝试和错误会话很好地解决我所有的想法/问题。我已经设法使用 plyr 和 reshape 函数对我的不同数据集进行一些转换并学到了很多东西,但我认为我已经达到了我目前的 R 知识不再帮助我的地步。
即使我的问题听起来非常具体(即 OTU 表和 fasta 文件),我想我的尝试是跨许多不同领域(而不仅仅是生物信息学)的通用 R 应用程序。
现在,我已经将一个参考序列文件与一个丰度表合并,我想根据这个data.frame的信息生成一个特定的文件——一个fasta文件。
我的 df 目前看起来有点像这样:
repSeq sw.1.102 sw.3.1021 sw.30.101 sw.5.1042 ...
ACCT-AGGA 3 0 1 0
ACCT-AGGG 1 1 2 0
ACTT-AGGG 0 1 0 25
...
生成的文件应如下所示:
>sw.1.102_1
ACCT-AGGA
>sw.1.102_2
ACCT-AGGA
>sw.1.102_3
ACCT-AGGA
>sw.1.102_4
ACCT-AGGG
>sw.3.1021_1
ACCT-AGGG
>sw.3.1021_2
ACTT-AGGG
>sw.30.101_1
ACCT-AGGA
>sw.30.101_2
ACCT-AGGG
...
如您所见,我想使用有关每个样本(即 sw.n)的(参考)序列数量的信息来创建(fasta)文件。
我没有使用 R 中的循环的经验(我只在简单的处理尝试期间使用基本循环),但我认为这可以解决问题。我从SeqinR 包中找到了write.fasta函数,但在那里找不到任何解决方案。mothur中的deunique.seqs命令不起作用,因为它需要一个 fasta 文件作为输入(我显然没有)。Bioconductor (OTUbase?)上很有可能有一些东西,但老实说,我不知道从哪里开始,我很高兴有任何帮助。我真的很想在 R 中做这件事,因为我喜欢使用它,但也非常欢迎任何其他想法。
//小编辑:
下面的两个答案都很好用(请参阅我的评论) - 我还发现了两种可能的不太优雅和非 R 的解决方法(尚未测试):
- 因为我已经有了分类文件和丰富的 OTU 表,我认为 mothur 命令make.biom可以用来创建biom-format 文件。我还没有使用 biom 文件,但我认为有一些工具和脚本可用于将 biom 文件数据再次保存为 fasta
- 将 Qiime 文件转换为 oligotyping 格式- 这还需要一个分类文件和一个 Otu 表
不确定这两种方式是否有效 - 因此,如果我错了,请纠正我。