#libraries
library(phyloseq)
library(dplyr)
library(vegan)
library(tidyverse)
library(tibble)
library(cowplot)
library(ggh4x)
library(factoextra)
library(reshape2)
library(dplyr)
library(microbiome )
library(ggplot2)
library(ranacapa)
library(microViz)
library(microbiomeutilities)
#2 change working directory
setwd("$PATH_to_files")
################################################################################
#3 importar data
#16S
otu16s_df<-read.table("otu_table.txt",
header=TRUE, row.names=1, check.names=FALSE)
otu16s_mat<-as.matrix(otu16s_df)
tax16s_df<-read.table("taxonomytable.txt",
header=TRUE, row.names=1, check.names=FALSE, sep = '\t')
tax16s_mat<-as.matrix(tax16s_df)
metadata16s_df<-read.table("metadata.txt",
sep="\t", header=TRUE, row.names=1)
OTU16s = otu_table(otu16s_mat, taxa_are_rows = TRUE)
TAX16s = tax_table(tax16s_mat)
ps_16s = phyloseq(OTU16s,TAX16s, sample_data(metadata16s_df))
ps_16s
ps_16s_genus = ps_16s %>% aggregate_taxa(level = "Genus")
##### Curves ###############
fuente_rare = theme(text = element_text(size= 12, face="bold"),
axis.text.x = element_text(size = 12,face="bold"),
axis.text.y = element_text(size = 12,face="bold"),
panel.background = element_rect(fill = "white",colour = "grey50"),
panel.grid.major = element_blank(),panel.grid.minor = element_blank())
#genus
ggrare(ps_16s_genus, step = 209, plot = T,
parallel = T, se = F, color = "Sample" ) +
fuente_rare + labs(y="Géneros observados", x="Tamaño de la muestra")
##################alpha#######################3
alphadiv <- plot_richness(ps_16s, x = "Sample",
measures=c("Observed","Chao1", "Shannon", "Simpson"), color = "Sample") +
labs(x="Origin", y="Alpha diversity")
alphadiv
##############
#16s
genus_comp = ps_16s_genus %>% transform(transform = "compositional")
genus_perc = transform_sample_counts(genus_comp, function(x) x*100)
genus_perc
genus_1up = filter_taxa(genus_perc, function(x) sum(x) > 1, TRUE)
genus_1up
#70
genus_5up = filter_taxa(genus_perc, function(x) sum(x) > 2, TRUE)
genus_5up
#30
genus_top = aggregate_top_taxa2(genus_perc,top = 32, level = "Genus")
genus_top
data = psmelt(genus_top) # create dataframe from phyloseq object
data$Genus <- as.character(data$Genus) #convert to character
data$Genus[data$Genus == "Other"] <- "< 2% overall rel. ab."
mycolors= c( "#F6F6F6","#68228B","#2BDEBB","#C0C0C0","#EEAD0E","#CD3333",
"#CDC8B1","#B565A7","#fff5b5","#66CD00","#53868B",
"#fcff5d","#8B4513","#009B77","#FF6F61","#CAFF70",
"#98F5FF","#EFC050","#FFD29B","#00BFFF","#722F37","#BF3EFF",
"#FF1493","#096e24","#BDFFBC","#93FF33","#FF8C00",
"#5F9EA0","#955251","#00008B","#FFD700","#CCCCFF",
"#8B8278","#A6CF4A","#CD661D","#FF0000","#1E90FF","#CDAA7D","#D65076",
"#FF4040","#DFFF00","#1874CD","#CD950C","#00CDCD",
"#458B00","#FF3030","#8B6508","#cb7cc3","#76EE00",
"#2f2aa0","#cb7c80","#92A8D1","#8B0A50","#F7CAC9",
"#C1FFC1","#fe9000","#2BDE8A","#FA8072","#909aa6", "black")
bars_genus_top <- ggplot(data, aes(x=Sample, y=Abundance, fill=Genus)) +
geom_bar(aes(), stat="identity", position="stack", color="black") +
facet_nested(. ~ Origin + Platform, scales = "free_x",space="free_x") +
labs(x = "", y = "Abundancia relativa (%)") +
scale_fill_manual(values=mycolors) + guides(x = guide_axis(angle = 90)) +
theme(panel.spacing=unit(0.1,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90", fill = NA),
axis.ticks.x=element_blank()) +
scale_y_continuous(expand = c(0.01, 0.01))
bars_genus_top
###############PHYLA####################
ps_16s_Phylum = ps_16s %>% aggregate_taxa(level = "Phylum")
Phylum_comp = ps_16s_Phylum %>% transform(transform = "compositional")
Phylum_perc = transform_sample_counts(Phylum_comp, function(x) x*100)
Phylum_perc
Phylum_1up = filter_taxa(Phylum_perc, function(x) sum(x) > 1, TRUE)
Phylum_1up
#30 y 10
Phylum_top = aggregate_top_taxa2(Phylum_perc,top = 30, level = "Phylum")
Phylum_top
data = psmelt(Phylum_top) # create dataframe from phyloseq object
data$Phylum <- as.character(data$Phylum) #convert to character
data$Phylum[data$Phylum == "Other"] <- "< 2% overall rel. ab."
bars_Phylum_top <- ggplot(data, aes(x=Sample, y=Abundance, fill=Phylum)) +
geom_bar(aes(), stat="identity", position="stack", color="black") +
facet_nested(. ~ Origin + Platform, scales = "free_x",space="free_x") +
labs(x = "", y = "Abundancia relativa (%)") +
scale_fill_manual(values=mycolors) + guides(x = guide_axis(angle = 90)) +
theme(panel.spacing=unit(0.1,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90", fill = NA),
axis.ticks.x=element_blank()) +
scale_y_continuous(expand = c(0.01, 0.01))
bars_Phylum_top
############################################################################
###############Class####################
ps_16s_Class = ps_16s %>% aggregate_taxa(level = "Class")
Class_comp = ps_16s_Class %>% transform(transform = "compositional")
Class_perc = transform_sample_counts(Class_comp, function(x) x*100)
Class_perc
Class_1up = filter_taxa(Class_perc, function(x) sum(x) > 0.1, TRUE)
Class_1up
#64 y 40
Class_top = aggregate_top_taxa2(Class_perc,top = 40, level = "Class")
Class_top
data = psmelt(Class_top) # create dataframe from phyloseq object
data$Class <- as.character(data$Class) #convert to character
data$Class[data$Class == "Other"] <- "< 0.5% overall rel. ab."
bars_Class_top <- ggplot(data, aes(x=Sample, y=Abundance, fill=Class)) +
geom_bar(aes(), stat="identity", position="stack", color="black") +
facet_nested(. ~ Origin + Platform, scales = "free_x",space="free_x") +
labs(x = "", y = "Abundancia relativa (%)") +
scale_fill_manual(values=mycolors) + guides(x = guide_axis(angle = 90)) +
theme(panel.spacing=unit(0.1,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90", fill = NA),
axis.ticks.x=element_blank()) +
scale_y_continuous(expand = c(0.01, 0.01))
bars_Class_top
############################################################################
###############Order####################
ps_16s_Order = ps_16s %>% aggregate_taxa(level = "Order")
Order_comp = ps_16s_Order %>% transform(transform = "compositional")
Order_perc = transform_sample_counts(Order_comp, function(x) x*100)
Order_perc
Order_1up = filter_taxa(Order_perc, function(x) sum(x) > 1, TRUE)
Order_1up
#42
Order_top = aggregate_top_taxa2(Order_perc,top = 42, level = "Order")
Order_top
data = psmelt(Order_top) # create dataframe from phyloseq object
data$Order <- as.character(data$Order) #convert to character
data$Order[data$Order == "Other"] <- "< 1% overall rel. ab."
bars_Order_top <- ggplot(data, aes(x=Sample, y=Abundance, fill=Order)) +
geom_bar(aes(), stat="identity", position="stack", color="black") +
facet_nested(. ~ Origin + Platform, scales = "free_x",space="free_x") +
labs(x = "", y = "Abundancia relativa (%)") +
scale_fill_manual(values=mycolors) + guides(x = guide_axis(angle = 90)) +
theme(panel.spacing=unit(0.1,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90", fill = NA),
axis.ticks.x=element_blank()) +
scale_y_continuous(expand = c(0.01, 0.01))
bars_Order_top
############################################################################
###############Family####################
ps_16s_Family = ps_16s %>% aggregate_taxa(level = "Family")
Family_comp = ps_16s_Family %>% transform(transform = "compositional")
Family_perc = transform_sample_counts(Family_comp, function(x) x*100)
Family_perc
Family_1up = filter_taxa(Family_perc, function(x) sum(x) > 2, TRUE)
Family_1up
#30 y 10
Family_top = aggregate_top_taxa2(Family_perc,top = 35, level = "Family")
Family_top
data = psmelt(Family_top) # create dataframe from phyloseq object
data$Family <- as.character(data$Family) #convert to character
data$Family[data$Family == "Other"] <- "< 2% overall rel. ab."
bars_Family_top <- ggplot(data, aes(x=Sample, y=Abundance, fill=Family)) +
geom_bar(aes(), stat="identity", position="stack", color="black") +
facet_nested(. ~ Origin + Platform, scales = "free_x",space="free_x") +
labs(x = "", y = "Abundancia relativa (%)") +
scale_fill_manual(values=mycolors) + guides(x = guide_axis(angle = 90)) +
theme(panel.spacing=unit(0.1,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90", fill = NA),
axis.ticks.x=element_blank()) +
scale_y_continuous(expand = c(0.01, 0.01))
bars_Family_top
############################################################################
###############Specie####################
ps_16s_Specie = ps_16s %>% aggregate_taxa(level = "Specie")
Specie_comp = ps_16s_Specie %>% transform(transform = "compositional")
Specie_perc = transform_sample_counts(Specie_comp, function(x) x*100)
Specie_perc
Specie_1up = filter_taxa(Specie_perc, function(x) sum(x) > 1, TRUE)
Specie_1up
#30 y 10
Specie_top = aggregate_top_taxa2(Specie_perc,top = 54, level = "Specie")
Specie_top
data = psmelt(Specie_top) # create dataframe from phyloseq object
data$Specie <- as.character(data$Specie) #convert to character
data$Specie[data$Specie == "Other"] <- "< 1% overall rel. ab."
bars_Specie_top <- ggplot(data, aes(x=Sample, y=Abundance, fill=Specie)) +
geom_bar(aes(), stat="identity", position="stack", color="black") +
facet_nested(. ~ Origin + Platform, scales = "free_x",space="free_x") +
labs(x = "", y = "Abundancia relativa (%)") +
scale_fill_manual(values=mycolors) + guides(x = guide_axis(angle = 90)) +
theme(panel.spacing=unit(0.1,"lines"),
strip.background=element_rect(color="grey30", fill="grey90"),
panel.border=element_rect(color="grey90", fill = NA),
axis.ticks.x=element_blank()) +
scale_y_continuous(expand = c(0.01, 0.01))
bars_Specie_top
#genus###################
ps_16s_genus
genus_df <- data.frame(phyloseq::otu_table(ps_16s_genus))
#write.table(genus_transpose,file="genus_nmds.txt", sep = "\t", row.names = TRUE, col.names = NA)
genus_transpose_m <- as.data.frame(t(as.matrix(genus_df)))
#write.table(genus_transpose,file="genus_nmds_transpose.txt", sep = "\t", row.names = TRUE, col.names = NA)
genus_nmds <- metaMDS(genus_transpose_m, k=2, trymax=100, sfgrmin = 1e-9)
genus_nmds
stressplot(genus_nmds) # Produces a Shepards diagram
plot(genus_nmds)
genus_nmds
ordiplot(genus_nmds,type="n")
orditorp(genus_nmds,display="sites",cex=1.25,air=0.01)