Instalar los paquetes que no se encuentran instalados en el sistema.
library(ggplot2)
library(phyloseq)
library(ranacapa)
library(vegan)
library(ggsignif)
setwd("ruta/a/objetos")
load("seqtab.nochim")
load("taxa")
sample.metadata <-read.csv("sampleData_alimentos.csv")
row.names(sample.metadata) <- sample.metadata$Run
physeq <- phyloseq(otu_table(seqtab.nochim, taxa_are_rows=FALSE),
sample_data(sample.metadata),
tax_table(taxa))
save(physeq, file= "physeq")
phyloseq()
La función phyloseq()
del paquete
phyloseq se utiliza para crear un objeto
integrado para el análisis, que combina en una sola estructura
la información de:
El objeto resultante (physeq
) es un contenedor que
facilita el manejo conjunto de abundancias, taxonomía y metadatos,
permitiendo realizar análisis estadísticos y gráficos complejos de forma
más sencilla.
p1 <- ggrare(ps_subset,
step = 50,
label = NULL,
color = "Sampling.position",
se = FALSE)
p1 <- p1 +
geom_line(size = 1, linetype = "solid") +
guides(
color = guide_legend(override.aes = list(shape = NA)),
label = "none"
) +
theme_minimal() +
labs(
x = "Number of sampled reads",
y = "Number of observed TAXA",
title = ""
)
p1
ggrare()
La función ggrare()
, del paquete
ranacapa, genera curvas de rarefacción
utilizando ggplot2 para visualizar cómo la riqueza
observada (número de ASVs/OTUs) cambia al submuestrear lecturas de una
muestra.
La función ggrare()utiliza el mismo algoritmo que vegan::rarecurve().La diferencia es que ggrare() devuelve los resultados en un formato compatible con ggplot2, lo que permite personalizar y mejorar la visualización.
alpha <- plot_richness(
ps_subset,
x = "Sampling.position",
measures = c("Shannon", "Simpson", "Observed"),
color = "Sampling.position"
) +
geom_point(size =2 , aes(color = Sampling.position)) +
theme_minimal() +
theme(
axis.title.x = element_blank(),
axis.text.x = element_text(size = 10, angle = 75, hjust = 1, vjust = 1),
axis.line.x = element_line(color = "black", size = 0.5),
axis.line.y = element_line(color = "black", size = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
) +
geom_signif(
comparisons = list(c("Sticking", "Anal swab")),
test = "wilcox.test",
test.args = list(exact = FALSE),
map_signif_level = TRUE,
step_increase = 0.1,
textsize = 5,
tip_length = 0,
color = "black"
) + ggtitle("Alpha Diversity")
alpha
plot_richness()
La función plot_richness()
del paquete
phyloseq genera gráficos de diversidad
alfa (riqueza dentro de cada muestra), utilizando distintos
índices ecológicos.
Parámetros principales:
physeq: objeto de clase phyloseq. x: variable de metadatos que se
usará en el eje X (en este caso, “Sampling.position”).
measures: vector con los índices de diversidad a calcular. Los más
comunes son:
- “Shannon”: combina riqueza y equidad de especies.
- “Simpson”: probabilidad de que dos lecturas elegidas al azar
correspondan a la misma especie.
- “Observed”: número de ASVs/OTUs observadas (riqueza pura).
color: variable de metadatos para colorear los puntos o cajas del
gráfico (aquí “Sampling.position”).
#Transformar a abundancias relativas
ps.prop <- transform_sample_counts(ps_subset, function(x) x / sum(x))
Ordinar con NMDS (Bray-Curtis) y graficar
set.seed(123) # reproducibilidad del NMDS
ord.nmds.bray <- ordinate(ps.prop, method = "NMDS", distance = "bray")
ordplot <- plot_ordination(
ps.prop, ord.nmds.bray,
title = "",
color = "Sampling.position",
shape = "Sampling.position"
) +
geom_point(size = 5) +
theme_bw() +
theme(text = element_text(size = 16))
#Agregar elipses por grupo (en este caso, Sampling.position)
p_ord <- ordplot +
labs(colour = "Sampling.position", fill = "Sampling.position", shape = "Sampling.position") +
ggforce::geom_mark_ellipse(aes(label = Sampling.position, fill = Sampling.position)) +
theme(legend.position = "none")
#PERMANOVA (Bray-Curtis) con metadatos
metadata <- as(sample_data(ps_subset), "data.frame")
metadata <- metadata[sample_names(ps_subset), , drop = FALSE]
dist.bc <- phyloseq::distance(ps_subset, method = "bray")
permanova <- vegan::adonis2(dist.bc ~ Sampling.position, data = metadata)
pval <- permanova$`Pr(>F)`[1]
#Función para agregar asteriscos
p_stars <- function(p) {
if (is.na(p)) return("")
if (p < 0.001) "***" else if (p < 0.01) "**" else if (p < 0.05) "*" else "ns"
}
#Etiqueta con p-valor
lab <- sprintf("PERMANOVA (Bray–Curtis): p = %.3g %s", pval, p_stars(pval))
p_ord_annot <- p_ord +
annotate(
"label",
x = Inf, y = Inf, label = lab,
hjust = 1.02, vjust = 1.5, size = 3.5, label.size = 0.3
) +
coord_cartesian(clip = "off") +
theme(plot.margin = margin(10, 40, 10, 10))
p_ord_annot
ordinate()
La función ordinate()
del paquete
phyloseq se utiliza para realizar análisis de
ordenación multivariada a partir de un objeto
phyloseq
.
La ordenación es una técnica que permite resumir la complejidad de las comunidades microbianas en un espacio de pocas dimensiones, facilitando la visualización y comparación entre muestras.
adonis2()
La función adonis2()
del paquete
vegan se utiliza para realizar un
PERMANOVA (Permutational Multivariate Analysis of
Variance), una prueba estadística no paramétrica que evalúa si las
comunidades microbianas difieren significativamente entre grupos
definidos por una variable categórica (por ejemplo, sitio, tratamiento,
condición experimental).