By Angus ball
library(phyloseq)
library(tidyr)
library(dplyr)
Bring in your full phyloseq object WITH sequence information
physeq_Key <- readRDS(file = "C:\\Users\\angus\\OneDrive - UNBC\\Angus Ball\\Lab work\\Bioinformatics\\ULTRA\\physeq_Key_merged.rds")
#I can tell it has sequence information by this
physeq_Key
phyloseq-class experiment-level object
otu_table() OTU Table: [ 48054 taxa and 52 samples ]
sample_data() Sample Data: [ 52 samples by 4 sample variables ]
tax_table() Taxonomy Table: [ 48054 taxa by 7 taxonomic ranks ]
refseq() DNAStringSet: [ 48054 reference sequences ]
refseq is the sequence info
okay lets extract the otu table
OTU1 = as(otu_table(physeq_Key), "matrix")
OTUdf = as.data.frame(OTU1)
A taxa table
TAXA1 = as(tax_table(physeq_Key), "matrix")
TAXAdf = as.data.frame(TAXA1)
#Export sequences to .fna file
ShortRead::writeFasta(refseq(physeq_Key), "C:\\Users\\angus\\OneDrive - UNBC\\Angus Ball\\Lab work\\Bioinformatics\\ULTRA\\picrust\\rep-seqs.fna")
#Export metadata as .txt file
write.table(data.frame("sampleid"=sample_names(physeq_Key),sample_data(physeq_Key)),"C:\\Users\\angus\\OneDrive - UNBC\\Angus Ball\\Lab work\\Bioinformatics\\ULTRA\\picrust\\sample-metadata.txt", sep="\t", row.names=FALSE, col.names=TRUE, quote=FALSE)
#export taxa table
write.table(TAXAdf, "C:\\Users\\angus\\OneDrive - UNBC\\Angus Ball\\Lab work\\Bioinformatics\\ULTRA\\picrust\\tax.txt", quote=FALSE, col.names=FALSE, sep="\t")
#bad news picrust can't handle names with spaces in them, uhhh thanks for telling me before hand???
spaceless <- function(x) {colnames(x) <- gsub(" ", "_", colnames(x));x}
OTUdf <- spaceless(OTUdf)
#also to avoid pain in the future (need a header name for the OTU labels which won't happen automatically within write.table)
OTUdf$OTU <- row.names(OTUdf) #make a column of row names
OTUdf<-relocate(OTUdf, OTU, .before = everything())#just moves the OTU column first
#export the OTU table
write.table(OTUdf, "C:\\Users\\angus\\OneDrive - UNBC\\Angus Ball\\Lab work\\Bioinformatics\\ULTRA\\picrust\\OTU.txt", quote=FALSE, col.names=TRUE, row.names = FALSE, sep="\t")
These documents should be ready for picrust!
LS0tDQp0aXRsZTogIkNyZWF0aW5nIGEgdHN2IGZpbGUgZnJvbSB5b3VyIHBoeWxvc2VxIG9iamVjdCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQpCeSBBbmd1cyBiYWxsDQoNCg0KDQpgYGB7cn0NCmxpYnJhcnkocGh5bG9zZXEpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShkcGx5cikNCmBgYA0KDQpCcmluZyBpbiB5b3VyIGZ1bGwgcGh5bG9zZXEgb2JqZWN0IFdJVEggc2VxdWVuY2UgaW5mb3JtYXRpb24NCg0KYGBge3J9DQpwaHlzZXFfS2V5IDwtIHJlYWRSRFMoZmlsZSA9ICJDOlxcVXNlcnNcXGFuZ3VzXFxPbmVEcml2ZSAtIFVOQkNcXEFuZ3VzIEJhbGxcXExhYiB3b3JrXFxCaW9pbmZvcm1hdGljc1xcVUxUUkFcXHBoeXNlcV9LZXlfbWVyZ2VkLnJkcyIpDQojSSBjYW4gdGVsbCBpdCBoYXMgc2VxdWVuY2UgaW5mb3JtYXRpb24gYnkgdGhpcw0KcGh5c2VxX0tleQ0KDQpgYGANCnJlZnNlcSBpcyB0aGUgc2VxdWVuY2UgaW5mbw0KDQpva2F5IGxldHMgZXh0cmFjdCB0aGUgb3R1IHRhYmxlIA0KYGBge3J9DQpPVFUxID0gYXMob3R1X3RhYmxlKHBoeXNlcV9LZXkpLCAibWF0cml4IikNCk9UVWRmID0gYXMuZGF0YS5mcmFtZShPVFUxKQ0KYGBgDQoNCkEgdGF4YSB0YWJsZQ0KYGBge3J9DQpUQVhBMSA9IGFzKHRheF90YWJsZShwaHlzZXFfS2V5KSwgIm1hdHJpeCIpDQpUQVhBZGYgPSBhcy5kYXRhLmZyYW1lKFRBWEExKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCiNFeHBvcnQgc2VxdWVuY2VzIHRvIC5mbmEgZmlsZQ0KU2hvcnRSZWFkOjp3cml0ZUZhc3RhKHJlZnNlcShwaHlzZXFfS2V5KSwgIkM6XFxVc2Vyc1xcYW5ndXNcXE9uZURyaXZlIC0gVU5CQ1xcQW5ndXMgQmFsbFxcTGFiIHdvcmtcXEJpb2luZm9ybWF0aWNzXFxVTFRSQVxccGljcnVzdFxccmVwLXNlcXMuZm5hIikNCg0KI0V4cG9ydCBtZXRhZGF0YSBhcyAudHh0IGZpbGUgDQp3cml0ZS50YWJsZShkYXRhLmZyYW1lKCJzYW1wbGVpZCI9c2FtcGxlX25hbWVzKHBoeXNlcV9LZXkpLHNhbXBsZV9kYXRhKHBoeXNlcV9LZXkpKSwiQzpcXFVzZXJzXFxhbmd1c1xcT25lRHJpdmUgLSBVTkJDXFxBbmd1cyBCYWxsXFxMYWIgd29ya1xcQmlvaW5mb3JtYXRpY3NcXFVMVFJBXFxwaWNydXN0XFxzYW1wbGUtbWV0YWRhdGEudHh0Iiwgc2VwPSJcdCIsIHJvdy5uYW1lcz1GQUxTRSwgY29sLm5hbWVzPVRSVUUsIHF1b3RlPUZBTFNFKQ0KDQojZXhwb3J0IHRheGEgdGFibGUNCndyaXRlLnRhYmxlKFRBWEFkZiwgIkM6XFxVc2Vyc1xcYW5ndXNcXE9uZURyaXZlIC0gVU5CQ1xcQW5ndXMgQmFsbFxcTGFiIHdvcmtcXEJpb2luZm9ybWF0aWNzXFxVTFRSQVxccGljcnVzdFxcdGF4LnR4dCIsIHF1b3RlPUZBTFNFLCBjb2wubmFtZXM9RkFMU0UsIHNlcD0iXHQiKQ0KDQoNCiNiYWQgbmV3cyBwaWNydXN0IGNhbid0IGhhbmRsZSBuYW1lcyB3aXRoIHNwYWNlcyBpbiB0aGVtLCB1aGhoIHRoYW5rcyBmb3IgdGVsbGluZyBtZSBiZWZvcmUgaGFuZD8/Pw0Kc3BhY2VsZXNzIDwtIGZ1bmN0aW9uKHgpIHtjb2xuYW1lcyh4KSA8LSBnc3ViKCIgIiwgIl8iLCBjb2xuYW1lcyh4KSk7eH0NCk9UVWRmIDwtIHNwYWNlbGVzcyhPVFVkZikNCg0KI2Fsc28gdG8gYXZvaWQgcGFpbiBpbiB0aGUgZnV0dXJlIChuZWVkIGEgaGVhZGVyIG5hbWUgZm9yIHRoZSBPVFUgbGFiZWxzIHdoaWNoIHdvbid0IGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdpdGhpbiB3cml0ZS50YWJsZSkNCk9UVWRmJE9UVSA8LSByb3cubmFtZXMoT1RVZGYpICNtYWtlIGEgY29sdW1uIG9mIHJvdyBuYW1lcw0KT1RVZGY8LXJlbG9jYXRlKE9UVWRmLCBPVFUsIC5iZWZvcmUgPSBldmVyeXRoaW5nKCkpI2p1c3QgbW92ZXMgdGhlIE9UVSBjb2x1bW4gZmlyc3QNCg0KDQojZXhwb3J0IHRoZSBPVFUgdGFibGUNCndyaXRlLnRhYmxlKE9UVWRmLCAiQzpcXFVzZXJzXFxhbmd1c1xcT25lRHJpdmUgLSBVTkJDXFxBbmd1cyBCYWxsXFxMYWIgd29ya1xcQmlvaW5mb3JtYXRpY3NcXFVMVFJBXFxwaWNydXN0XFxPVFUudHh0IiwgcXVvdGU9RkFMU0UsIGNvbC5uYW1lcz1UUlVFLCByb3cubmFtZXMgPSBGQUxTRSwgc2VwPSJcdCIpDQoNCg0KYGBgDQoNClRoZXNlIGRvY3VtZW50cyBzaG91bGQgYmUgcmVhZHkgZm9yIHBpY3J1c3QhDQoNCg0KDQoNCg0KDQoNCg0KDQo=