Figure 1: Maps

  • Loading libraries
library(tidyverse)
library(ggrepel)
library(ggspatial)
library(ggmap)
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
library(ggsn)
library(cowplot)
  • Setting global map
YK = map_data("world")
YK2 = map_data("world") %>% filter(group==985)
#YK3=map_data("world")%>% filter(group==985) %>% filter(abs(long)>97 & abs(long)<103) %>% filter(abs(lat)<21 & abs(lat)>18)
air<- read.csv("../Data/coord.csv") %>% mutate_at(c(1,2,3,7), as.factor)
air$Sites<- factor(air$Names, levels = c(
  "1. Tetlanohcan 1", "2. Tetlanohcan 2",
  "3. La Ascención Huitzcolotepec", "4. Tepeticpac",
  "5. El Carmen Las Carrozas","6. La Caridad",
  "7. Tandi-Chala", "8. San Francisco Mitepec",
  "9. Piedra Canteada de San Felipe, Hidalgo",
  "10. Paraje El Madroño", "11. Ejido San Gabriel" ,
  "12. San Rafael Ixtapalucan 2" ))


sites <- st_as_sf(data.frame(
  longitude = c(-80.15, -80.1), 
  latitude = c(26.5, 6.8)), 
  coords = c("longitude", "latitude"),
  crs = 4326, agr = "constant")


maps<-ggplot() + 
  theme_bw() + 
  geom_polygon(data = YK, aes(x=long, y = lat, group = group), color = 'black', 
               fill = "cornsilk") + 
  geom_polygon(data = YK2, aes(x=long, y = lat, group = group), 
               color = 'black', fill = 'grey') +
  coord_sf(xlim = c(-110, -85), ylim = c(10, 30))+
 # geom_polygon(data = YK3, aes(x=long, y = lat, group = group), 
  #             color = 'black', fill = 'red')
    xlab("Longitude")+ ylab("Latitude")+
  theme(panel.grid.major = element_line(colour = gray(0.5), linetype = "dashed", 
                                        size = 0.5), panel.background = element_rect(fill = "aliceblue"), 
        panel.border = element_rect(fill = NA))+
  geom_point(data = air, mapping = aes(
    x = Longitude, y = Latitude),#,color=Sitio, shape=Transecto), 
    size=1, color="black" )+ annotation_scale(location = "br", plot_unit = "km")+ 
    annotate("text", x =-100, y = 21, label = "TMVB", size=3, fontface="bold")

maps

library(maptools)  
## Loading required package: sp
## Warning: package 'sp' was built under R version 4.3.2
## 
## Attaching package: 'maptools'
## The following object is masked from 'package:sp':
## 
##     sp2Mondrian
library(RColorBrewer) 
library(readxl)
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.3.3
library(broom)
library(dplyr)
library(ggplot2)
library(classInt) 
library(sp)
#library(rgdal)
library(spdep) 
## Loading required package: spData
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
library(ggpubr)
## 
## Attaching package: 'ggpubr'
## The following object is masked from 'package:cowplot':
## 
##     get_legend
library(faraway)
## Warning: package 'faraway' was built under R version 4.3.3
## 
## Attaching package: 'faraway'
## The following object is masked from 'package:spData':
## 
##     wheat
belt  <- readShapePoly("../Data/Transmexican_Volcanic_Belt_province/Transmexican_Volcanic_Belt_province.shp")
## Warning: shapelib support is provided by GDAL through the sf and terra packages
## among others
belt_tidy <- tidy(belt) 
## Warning: `tidy.SpatialPolygonsDataFrame()` was deprecated in broom 1.0.4.
## ℹ Please use functions from the sf package, namely `sf::st_as_sf()`, in favor
##   of sp tidiers.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Regions defined for each Polygons
maps=maps+
  geom_polygon(data = belt, aes( x= long, y = lat, group = group),
               fill = "cornsilk",
               color = "black",
               size = 0.05)
## Warning: `fortify(<SpatialPolygonsDataFrame>)` was deprecated in ggplot2 3.4.4.
## ℹ Please migrate to sf.
## ℹ The deprecated feature was likely used in the ggplot2 package.
##   Please report the issue at <https://github.com/tidyverse/ggplot2/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Regions defined for each Polygons
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
  • Setting sits map
# define box
sbbox <- make_bbox(lon = c(-98.7, -97.9), lat = c(19.13,19.5), f = .1)


#watercolor
sbbox <- make_bbox(lon = c(-98.7, -97.9), lat = c(19.13,19.6), f = .1)

map <- get_stadiamap( bbox = sbbox,  maptype = "stamen_terrain_background")

wat<-ggmap(map) + 
  theme(
    plot.title = element_text(colour = "orange"), 
    panel.border = element_rect(
      colour = "grey", fill=NA, size=2),
    panel.grid.major = element_line(colour = "red"), 
    panel.grid.minor = element_line(
      colour = "red", size = 0.25))+
  coord_equal() + # needed for ggsn
  guides(scale="none") + 
  ggsn::north(x.min = -98.75, x.max = -98.65, 
              y.min = 19.60, y.max = 19.64, scale = 1.5) + 
  ggsn::scalebar(x.min = -98, x.max = -97.9, 
                 st.size = 2,
                 y.min = 19.63, y.max = 19.61, 
                 dist = 5, transform = TRUE, 
                 model = "WGS84", height = 0.5, 
                 st.dist = 0.5, dist_unit = "km") +
  geom_point(data = air%>% group_by(Sites) %>% summarise_if(is.numeric, mean), mapping = aes(
    x = Longitude, y = Latitude, fill=Sites), 
    size=4, pch=21 ) +
  geom_text_repel(data = air %>% group_by(Site) %>% summarise_if(is.numeric, mean), 
            mapping = aes(x = Longitude+0.002,
                          y = Latitude,
                          label =Site),
            size = 4, color = "black", box.padding = .3, segment.color = NA,
            fontface = "bold")+
  scale_fill_viridis_d(option ="turbo", name="Sites")+
  theme(legend.text = element_text(size = 12),
        legend.title = element_text(size = 12),
        axis.title = element_text(size = 16),
        axis.text = element_text(size = 16))+
  geom_vline(xintercept = c(-98.75, -98.50, -98.25, -98 ),
             color = "grey", size = 0.3, linetype = "longdash")+
  geom_hline(yintercept = c(19.6,19.5,19.4,19.3,19.2,19.1 ),
             color = "grey", size = 0.3,  linetype = "longdash")+
  theme(legend.title = element_blank(),
        axis.title = element_text(size = 8),
        axis.text = element_text(size = 8))


wat2<- wat+theme(axis.text = element_text(colour = "black"))+ylab(
                   "Latitude")+xlab("Longitude")+ 
    annotate("text", x =-98.25, y = 19.6, label = "TMVB", size=5, fontface="bold")+ 
  annotate("text", x =-98, y = 19.3, label = "LMNP", size=5, fontface="bold")+ 
  annotate("text", x =-98.7, y = 19.35, label = "IPNP", size=5, fontface="bold")+
  theme(legend.position = "none")
  
wat2

leg<- get_legend(wat)
arrowA <- data.frame(x1 = 5, x2 = 15, y1 = 9.3, y2 = 14.5)
  • Joinning figures
maps_final<-ggplot() +
  coord_equal(
    xlim = c(0, 30), ylim = c(0, 20), expand = FALSE) +
  annotation_custom(
    ggplotGrob(maps), xmin = 0, 
    xmax = 10, ymin = 0,ymax = 18) +
  annotation_custom(
    ggplotGrob(wat2), xmin = 5, xmax = 34,
    ymin =10,ymax =20) +
  annotation_custom(
    leg, xmin = 20, xmax = 28, 
    ymin = 5, ymax = 7) +
  geom_segment(
    aes(x = x1, y = y1, xend = x2, yend = y2),
    data = arrowA,arrow = arrow(), lineend = "round") +
  theme_void()
maps_final

ggsave('map_sites_final_r1.pdf',device = "pdf",
       width = 10, height = 6.5, dpi = 600, plot = maps_final)

Figure S1: Alpha diversity

  • Loading libraries
library(tidyverse)
library(readxl)
library(qiime2R)
library(ggpubr)
  • Loading data
scaleFUN <- function(x) sprintf("%.1f", x)
scaleFUN0 <- function(x) sprintf("%.0f", x)
scaleFUN2 <- function(x) sprintf("%.2f", x)

metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)
table_single_micop<- read.delim("../Data/table_micop_single.txt") 
table_paired_micop<- read.delim("../Data/table_micop_paired.txt")
table_qiime2<- data.frame(read_qza(
  "../Data/clustered_table_filter.qza")$data,
  check.names = F) %>% t() %>% as.data.frame(
      ) %>% rownames_to_column(
  var = "SampleID") %>% separate(
    SampleID, c(
      "id_metagenome", "R", "unmap", "Paired"), 
    sep = "_")%>% inner_join(metadata) %>% dplyr::select(
      -id_metagenome:-Paired, -id_sequence:-id_fisicoq, -Sites, -Names) %>% column_to_rownames(
        var="SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)

table_fungi<- read.delim(
  "../Data/table_kraken.txt", 
  row.names = 1, check.names = F) %>% dplyr::select_if(
    is.numeric)%>% t() %>% as.data.frame(
      ) %>% rownames_to_column(
        var = "id_sequence") %>% separate(
    ., "id_sequence", c("kraken", "pluspfp", "id_metagenome", "report", "bracken", "species"), sep = "_") %>% dplyr::select(
      -kraken, -pluspfp, -report, -bracken, -species) %>% full_join(
                                 metadata) %>% dplyr::select(-id_sequence:-Transecto, -id_metagenome, -Sites, -id_new,   -id_fisicoq, -Names) %>% column_to_rownames(
                                   var = "SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)
  • Calculate Hill numbers
library(hillR)
q0<-hill_taxa(table_qiime2, q = 0, MARGIN = 2)
q1<-hill_taxa(table_qiime2, q = 1, MARGIN = 2)
q2<-hill_taxa(table_qiime2, q = 2, MARGIN = 2)

alphadiv_qiime2<- cbind(q0, q1, q2) %>%as.data.frame(
) %>% rownames_to_column(var = "SampleID") %>%  pivot_longer(
  .,cols = q0:q2, names_to =  "qs", values_to =  "value") %>% inner_join(
    metadata) %>% mutate(order=case_when(
      qs=="q0"~"q = 0",
      qs=="q1"~"q = 1",
      qs=="q2"~"q = 2"  ))

q0<-hill_taxa(table_single_micop, q = 0, MARGIN = 2)
q1<-hill_taxa(table_single_micop, q = 1, MARGIN = 2)
q2<-hill_taxa(table_single_micop, q = 2, MARGIN = 2)

alphadiv_single_micop<- cbind(q0, q1, q2) %>%as.data.frame(
) %>% rownames_to_column(var = "SampleID") %>%  pivot_longer(
  .,cols = q0:q2, names_to =  "qs", values_to =  "value") %>% inner_join(
    metadata) %>% mutate(order=case_when(
      qs=="q0"~"q = 0",
      qs=="q1"~"q = 1",
      qs=="q2"~"q = 2"  ))

q0<-hill_taxa(table_paired_micop, q = 0, MARGIN = 2)
q1<-hill_taxa(table_paired_micop, q = 1, MARGIN = 2)
q2<-hill_taxa(table_paired_micop, q = 2, MARGIN = 2)

alphadiv_paired_micop<- cbind(q0, q1, q2) %>%as.data.frame(
) %>% rownames_to_column(var = "SampleID") %>%  pivot_longer(
  .,cols = q0:q2, names_to =  "qs", values_to =  "value") %>% inner_join(
    metadata) %>% mutate(order=case_when(
      qs=="q0"~"q = 0",
      qs=="q1"~"q = 1",
      qs=="q2"~"q = 2"  ))


q0<-hill_taxa(table_fungi, q = 0, MARGIN = 2)
q1<-hill_taxa(table_fungi, q = 1, MARGIN = 2)
q2<-hill_taxa(table_fungi, q = 2, MARGIN = 2)

alphadiv_fungip<- cbind(q0, q1, q2) %>%as.data.frame(
) %>% rownames_to_column(var = "SampleID") %>%  pivot_longer(
  .,cols = q0:q2, names_to =  "qs", values_to =  "value") %>% inner_join(
    metadata) %>% mutate(order=case_when(
      qs=="q0"~"q = 0",
      qs=="q1"~"q = 1",
      qs=="q2"~"q = 2"  ))
  • qiime2
alphadiv_qiime2_q0<- alphadiv_qiime2 %>%filter(qs=="q0")
alphadiv_qiime2_q1<- alphadiv_qiime2 %>%filter(qs=="q1") 
alphadiv_qiime2_q2<- alphadiv_qiime2 %>%filter(qs=="q2") 

aq0<- ggboxplot(alphadiv_qiime2_q0, 
                x = "Sites", y = "value", fill = "Sites", facet.by = "order") +
  stat_compare_means(label.y = 135, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")+theme(axis.title.x = element_blank())+ scale_y_continuous(labels=scaleFUN)

aq1<- ggboxplot(alphadiv_qiime2_q1, 
                x = "Sites", y = "value", fill = "Sites", facet.by = "order") + stat_compare_means(label.y = 62, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")

aq2<- ggboxplot(alphadiv_qiime2_q2 %>% mutate(methodS="GENEIOUS+UNITE"), 
                x = "Sites", y = "value", fill = "Sites", facet.by = "order") +
  stat_compare_means(label.y = 45, label = "p.format")+
  facet_grid(rows = vars(methodS), cols = vars(order))+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         strip.text = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")

qiime2al<-cowplot::plot_grid(aq0, aq1, aq2, ncol = 3, align = "h", rel_widths = c(1,1,1.1))
  • single_micop
alphadiv_single_micop_q0<- alphadiv_single_micop %>%filter(qs=="q0")
alphadiv_single_micop_q1<- alphadiv_single_micop %>%filter(qs=="q1") 
alphadiv_single_micop_q2<- alphadiv_single_micop %>%filter(qs=="q2") 

as0<- ggboxplot(alphadiv_single_micop_q0, 
                x = "Sites", y = "value", fill = "Sites") +
  stat_compare_means(label.y = 135, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")+theme(axis.title.x = element_blank())+ scale_y_continuous(labels=scaleFUN)

as1<- ggboxplot(alphadiv_single_micop_q1, 
                x = "Sites", y = "value", fill = "Sites") +
  stat_compare_means(label.y = 62, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+ scale_y_continuous(labels=scaleFUN)+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")

as2<- ggboxplot(alphadiv_single_micop_q2 %>% mutate(methodS="SINGLE MICOP"), x = "Sites", y = "value", fill = "Sites") +
  facet_grid( rows= vars(methodS))+
    stat_compare_means(label.y = 45, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         strip.text = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")

singleal<-cowplot::plot_grid(as0, as1, as2, ncol = 3, align = "h", rel_widths = c(1,1,1.1))
  • paired_micop
alphadiv_paired_micop_q0<- alphadiv_paired_micop %>%filter(qs=="q0")
alphadiv_paired_micop_q1<- alphadiv_paired_micop %>%filter(qs=="q1") 
alphadiv_paired_micop_q2<- alphadiv_paired_micop %>%filter(qs=="q2") 


ap0<- ggboxplot(alphadiv_paired_micop_q0, 
                x = "Sites", y = "value", fill = "Sites") +
    stat_compare_means(label.y = 195, label.x = 1.5, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title.x = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+ylab("Efective number of features")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0),colour = "black", size = 12))+ scale_y_continuous(labels=scaleFUN)



ap1<- ggboxplot(alphadiv_paired_micop_q1, 
                x = "Sites", y = "value", fill = "Sites") +
 stat_compare_means(label.y = 9,label.x = 3, label = "p.format")+
  theme_linedraw()+theme(legend.position = "top", 
                         axis.title = element_blank(),
                         axis.text.x = element_blank(),
                         axis.ticks.x = element_blank(),
                         
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+ scale_y_continuous(labels=scaleFUN)+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")+guides(fill=guide_legend(nrow =1))+
  theme(legend.text =element_text(size = 14), legend.title = element_text(size = 18))

ap2<- ggboxplot(alphadiv_paired_micop_q2 %>% mutate(methodS="PAIRED MICOP"), x = "Sites", y = "value", fill = "Sites") +
  facet_grid(rows = vars(methodS))+
  stat_compare_means(label.y = 4.5, label.x = 3, label = "p.format")+
             theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.ticks.x = element_blank(),
                         
                         axis.text.x = element_blank(),
                         strip.text = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+ scale_y_continuous(labels=scaleFUN)+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")

pairedal<-cowplot::plot_grid(ap0, ap1, ap2, ncol = 3, align = "h", rel_widths = c(1,1,1.1))
  • fungi
alphadiv_fungi_q0<- alphadiv_fungip %>%filter(qs=="q0")
alphadiv_fungi_q1<- alphadiv_fungip %>%filter(qs=="q1") 
alphadiv_fungi_q2<- alphadiv_fungip %>%filter(qs=="q2") 


af0<- ggboxplot(alphadiv_fungi_q0, 
                x = "Sites", y = "value", fill = "Sites") +
 stat_compare_means(label.y = 72.0001, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_text(size = 12),
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")+theme(axis.title.x = element_blank())+ scale_y_continuous(labels=scaleFUN2)+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

af1<- ggboxplot(alphadiv_fungi_q1, 
                x = "Sites", y = "value", fill = "Sites") +
  stat_compare_means(label.y = 10, label.x = 6,label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_text(size = 12),
                         strip.text.x = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+ scale_y_continuous(labels=scaleFUN)+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

af2<- ggboxplot(alphadiv_fungi_q2 %>% mutate(methodS="KRAKEN2"), 
                x = "Sites", y = "value", fill = "Sites") +
  facet_grid(rows = vars(methodS))+
  stat_compare_means(label.y = 3.3, label = "p.format")+
  theme_linedraw()+theme(legend.position = "none", 
                         axis.title = element_blank(),
                         axis.text.x = element_text(size = 12),
                         strip.text = element_text(
                           size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(
                           size = 0.5, linetype = 'solid',
                           colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(
                           size = 0.25, linetype = 'solid',
                           colour = "#E5E8E8"))+
  scale_fill_viridis_d(option ="turbo", name="Sites")+ scale_y_continuous(labels=scaleFUN)+theme(axis.title.y = element_text(margin = margin(t = 0, r=20, b = 0, l = 0)))+ylab("")+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

pairedfungi<-cowplot::plot_grid(af0, af1, af2, ncol = 3, align = "h", rel_widths = c(1,1,1.1))
  • Joinning plots
leg<- get_legend(ap1)
all<- cowplot::plot_grid(aq0, aq1, aq2,
                         as0, as1, as2,
                         ap0, ap1+theme(legend.position = "none"), ap2, 
                         af0, af1, af2, 
                         labels = c("a)", "b)", "c)",
                                    "d)", "e)", "f)",
                                    "g)", "h)", "i)", 
                                    "j)", "k)", "l)"), 
                         scale = 1, nrow = 4, ncol = 3,
                         label_y = 1,label_x =0.05,
                   label_size = 14, hjust = -0.2, align = "hv")



all2<- cowplot::plot_grid(leg, all, nrow = 2, rel_heights = c(0.1,1))
all2

ggsave("FigS1.exploratory_alpha_final_mod.jpg",width = 12, height = 10, dpi = 300, plot = all2, device = "jpg")

Figure 3: Heatmap

  • Load packages and data
library(vegan)
library(qiime2R)
library(readxl)
library(tidyverse)
library(ggh4x)
library(ComplexHeatmap)
library(circlize)
library(viridis)
source("../Code/general_functions.R")
metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)
meta<-metadata
table_single_micop<- read.delim("../Data/table_micop_single.txt") 
table_paired_micop<- read.delim("../Data/table_micop_paired.txt")
table_qiime2<- data.frame(
  read_qza("../Data/clustered_table_filter.qza")$data,
  check.names = F) %>% t() %>% as.data.frame(
  ) %>% rownames_to_column(
    var = "SampleID") %>% separate(
      SampleID, c(
        "id_metagenome", "R", "unmap", "Paired"), 
      sep = "_")%>% inner_join(
        meta) %>% dplyr::select(
          -id_metagenome:-Paired, -id_sequence:-id_fisicoq, -Sites, -Names) %>% column_to_rownames(
            var="SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)

table_fungi<- read.delim("../Data/table_kraken.txt", 
                         row.names = 1, check.names = F) %>% dplyr::select_if(
                           is.numeric)%>% t() %>% as.data.frame() %>% rownames_to_column(
                             var = "id_sequence") %>% separate(
                               ., "id_sequence", c(
                                 "kraken", "fungi", 
                                 "id_metagenome", "report", "bracken"), 
                               sep = "_") %>% dplyr::select(-kraken, -fungi, -report, -bracken) %>% full_join(
                                 metadata) %>% dplyr::select(-id_sequence:-Transecto, -id_metagenome, -Sites, -id_new, -Names, -id_fisicoq) %>% column_to_rownames(
                                   var = "SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)


vector_order<- c("P1S1T1", "P1S1T2", "P1S1T3",
                 "P1S2T1", "P1S2T2", "P1S2T3",
                 "P2S1T1", "P2S1T2", "P2S1T3",
                 "P2S2T1", "P2S2T2", "P2S2T3",
                 "P3S1T1", "P3S1T2", "P3S1T3",
                 "P3S2T1", "P3S2T2", "P3S2T3",
                 "P4S1T1", "P4S1T2", "P4S1T3",
                 "P4S2T1", "P4S2T2", "P4S2T3",
                 "P5S1T1", "P5S1T2", "P5S1T3",
                 "P5S2T1", "P5S2T2", "P5S2T3",
                 "P6S1T1", "P6S1T2", "P6S1T3",
                 "P6S2T1", "P6S2T2", "P6S2T3")


vector_order<- c("P1S1",
                 "P1S2", 
                 "P2S1", 
                 "P2S2",
                 "P3S1", 
                 "P3S2", 
                 "P4S1", 
                 "P4S2", 
                 "P5S1", 
                 "P5S2", 
                 "P6S1", 
                 "P6S2")

#ordering

taxonomy_qiime2<- data.frame(read_qza("../Data/taxonomy_blast_dfc_0.98.qza")$data, check.names = F) %>% dplyr::select(Feature.ID,Taxon)
taxonomy_single_micop<- read.delim("../Data/table_micop_single.txt") %>% rownames_to_column(var = "Feature.ID") %>% dplyr::select(Feature.ID) %>% mutate(Taxon=Feature.ID)
taxonomy_paired_micop<- read.delim("../Data/table_micop_paired.txt") %>% rownames_to_column(var = "Feature.ID") %>% dplyr::select(Feature.ID) %>% mutate(Taxon=Feature.ID)
taxonomy_fungi<- read.delim("../Data/table_kraken.txt", 
                             row.names = 1, check.names = F) %>% select_if(is.character) %>% rownames_to_column(
                              var = "#OTU ID") %>% dplyr::select(Feature.ID = "#OTU ID", Taxon= taxonomy)

map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))
metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)
  • Formatting data for Heatmap
taxones_color<- read_csv("../Data/taxones_color.csv")

data_fun<- function(tab, taxonomy, metadata){
  table_genus<- tab %>%rownames_to_column(
    var = "Feature.ID") %>%  inner_join(taxonomy) %>% separate(
      Taxon, c("k","p","c","o","f","g","s"), sep = ";" ) %>% mutate_at(
        c("g"), ~str_replace(., "g__", ""))%>% 
    dplyr::mutate(g = stringr::str_trim(g, side = "both")) %>% mutate_if(
      is.character, ~replace_na(., "Unassigned")) %>% group_by(
        g) %>% summarise_if(is.numeric, sum) %>% column_to_rownames(
          var = "g") %>%  mutate(
            all= rowSums(.)) %>% dplyr::arrange(
              -all) %>% rel_ab(.) %>%as.data.frame( ) %>%  rownames_to_column(
              var = "Taxon")%>% filter(!Taxon=="unidentified" ,
                                       !Taxon=="Unassigned") #%>%slice(
                                         #c(1:50))  %>% pivot_longer(
                                         #  ., cols = -Taxon, 
                                          # names_to ="SampleID", 
                                           #values_to = "relab" ) %>% filter( !SampleID=="all")

#cols<- table_genus %>% inner_join(taxones_color) %>% arrange(Taxon)
#col <- as.character(cols$color)
#names(col) <- as.character(cols$Taxon)
  
#barplot_genus<- table_genus %>% inner_join(metadata)%>% dplyr::select(
 #   Taxon, SampleID, relab) %>% pivot_wider(
  #    names_from = Taxon, values_from = relab) %>% column_to_rownames(
   #     var = "SampleID") %>% t() %>% as.data.frame()
  }

data_fun2<- function(tab, taxonomy, metadata){
  table_genus<- tab %>%rownames_to_column(
  var = "Feature.ID") %>%  inner_join(taxonomy) %>% separate(
    Taxon, c("k","p","c","o","f","g","s"), sep = "__" ) %>% mutate_at(
      c("g"), ~str_replace(., "g__", "")) %>% mutate_at(
        c("g"), ~str_replace(., "g__", "")) %>% mutate_if(
          is.character, ~replace_na(., "Unassigned")) %>% group_by(
            g) %>% summarise_if(is.numeric, sum) %>% column_to_rownames(
              var = "g") %>%  mutate(
                all= rowSums(.)) %>% dplyr::arrange(-all) %>% rel_ab(.) %>% as.data.frame() %>% rownames_to_column(
                  var = "Taxon")%>% filter(!Taxon=="unidentified" , !Taxon=="Unassigned") #%>% slice(
                    #c(1:50))  %>% pivot_longer(
                     # ., cols = -Taxon, names_to ="SampleID", 
                      #values_to = "relab" ) %>% filter(!SampleID=="all")

#cols<- table_genus %>% inner_join(taxones_color) %>% arrange(Taxon)
#col <- as.character(cols$color)
#names(col) <- as.character(cols$Taxon)


#barplot_genus<- table_genus %>% inner_join(metadata)%>% dplyr::select(
 # Taxon, SampleID, relab) %>% pivot_wider(
  #  names_from = Taxon, values_from = relab) %>% column_to_rownames(
   #   var = "SampleID") %>% t() %>% as.data.frame()
  }



data_qiime2<- data_fun(table_qiime2, taxonomy_qiime2, metadata) %>%
  column_to_rownames(var = "Taxon")
data_qiime22= data_qiime2 %>% dplyr::select(-all) %>% t() %>% as.data.frame() %>% rownames_to_column(
  var = "SampleID") %>% full_join(metadata) %>% group_by(Poligono, Sitio) %>% summarize_if(
    is.numeric, mean  ) %>% mutate(SampleID=paste0("P", Poligono,"S", Sitio))%>% column_to_rownames(var = "SampleID") %>% 
  dplyr::select_if(is.numeric) %>% t() %>% as.data.frame()
data_qiime2_order=data_qiime22[, match(vector_order, colnames(data_qiime22))] %>% 
  rename_if(is.numeric, ~paste0(.,"_qiime2"))%>% rownames_to_column(var="gen")


data_fungi<- data_fun(table_fungi, taxonomy_fungi, metadata) %>%
  column_to_rownames(var = "Taxon")
data_fungi2= data_fungi %>% dplyr::select(-all) %>% t() %>% as.data.frame() %>% rownames_to_column(
  var = "SampleID") %>% full_join(metadata) %>% group_by(Poligono, Sitio) %>% summarize_if(
    is.numeric, mean  ) %>% mutate(SampleID=paste0("P", Poligono,"S", Sitio))%>% column_to_rownames(var = "SampleID") %>% 
  dplyr::select_if(is.numeric) %>% t() %>% as.data.frame()

data_fungi_order=data_fungi2[, match(vector_order, colnames(data_fungi2))]%>%
  rename_if(is.numeric, ~paste0(.,"_kraken2")) %>% rownames_to_column(var="gen")

data_single<- data_fun2(table_single_micop, taxonomy_single_micop, metadata) %>%
  column_to_rownames(var = "Taxon")
data_single2= data_single %>% dplyr::select(-all) %>% t() %>% as.data.frame() %>% rownames_to_column(
  var = "SampleID") %>% full_join(metadata) %>% group_by(Poligono, Sitio) %>% summarize_if(
    is.numeric, mean  ) %>% mutate(SampleID=paste0("P", Poligono,"S", Sitio))%>% column_to_rownames(var = "SampleID") %>% 
  dplyr::select_if(is.numeric) %>% t() %>% as.data.frame()
data_single_order=data_single2[, match(vector_order, colnames(data_single2))]%>%
  rename_if(is.numeric, ~paste0(.,"_single"))%>% rownames_to_column(var="gen")

data_paired<- data_fun2(table_paired_micop, taxonomy_paired_micop, metadata) %>%
  column_to_rownames(var = "Taxon")
data_paired2= data_paired %>% dplyr::select(-all) %>% t() %>% as.data.frame() %>% rownames_to_column(
  var = "SampleID") %>% full_join(metadata) %>% group_by(Poligono, Sitio) %>% summarize_if(
    is.numeric, mean  ) %>% mutate(SampleID=paste0("P", Poligono,"S", Sitio))%>% column_to_rownames(var = "SampleID") %>% 
  dplyr::select_if(is.numeric) %>% t() %>% as.data.frame()

data_paired_order=data_paired2[, match(vector_order, colnames(data_paired2))]%>%
  rename_if(is.numeric, ~paste0(.,"_paired"))%>% rownames_to_column(var="gen")




merge_data<- data_qiime2_order %>% full_join(
  data_single_order)%>% full_join(
    data_paired_order)%>% full_join(
      data_fungi_order) %>% replace(is.na(.), 0)  %>% mutate(gen=case_when(
        gen=="Leptosphaeria maculans species complex" ~ "Leptosphaeria", 
        TRUE ~ as.character(gen)))%>% column_to_rownames(
        var = "gen") %>% mutate(proms=rowMeans(.)) %>% dplyr::arrange(-proms) %>% slice(
          1:60)%>% dplyr::select(-proms) %>% mutate_all(., funs(R = case_when(
          . <= 0.001 ~ 0,
          . >  0.001 & .  <= 0.005 ~ 1,
          . >  0.005 & .  <= 0.01 ~ 2,
          . >  0.01 & .  <= 0.10 ~ 3,
          . >  0.10 & .  <= 0.20 ~ 4,
          . >  0.20 & .  <= 1.00 ~ 5,
          . >  1.00 & .  <= 2.00 ~ 6,
          . >  2.00 & .  <= 5.00 ~ 7,
          . >  5.00 & .  <= 10.00 ~ 8,
          . >  10.00 & .  <= 25.00 ~ 9,
          . >  25.00 & .  <= 50.00 ~ 10,
          . >  50.00 & .  <= 75.00 ~ 11,
          . >  75.00 ~ 12))) %>%select_at(
            vars(contains("_R"))) %>% select_all(~str_replace(., "_R", ""))
  • Setting annotations and format for Heatmap
col_fun2 = colorRamp2(c(0,  1, 1+1e-5,10,50, 100), 
                      viridis(6, option = "F", direction = -1))
my_palette <- viridis::viridis(n = 12, option = "F", direction = -1)
col_fun = colorRamp2(c(0,  1, 1+1e-5,5,5+1e-5,10,10+1e-5,50,50+1e-5, 75, 75+1e-5,100), 
                      viridis(12, option = "F", direction = -1))

#annotation ids
annotation_columns<- data.frame(id=colnames(merge_data)) 
rownames(annotation_columns) <- colnames(heatmap)

#set.seed(123)
split = rep(1:4, each = 12)

Sites<- c(1,1,1,
          2,2,2,
          3,3,3,
          4,4,4,
          5,5,5,
          6,6,6,
          7,7,7,
          8,8,8,
          9,9,9,
          10,10,10,
          11,11,11,
          12,12,12)

Sites = 1:12

ha = HeatmapAnnotation("Method" = anno_block(gp = gpar(
  fill = c("black" ,"black" ,"black", "black")), 
  labels = c("GENEIOUS+UNITE", "SINGLE MICOP", "PAIRED MICOP", "KRAKEN2"), 
  labels_gp = gpar(col = "white", fontsize = 7, fontface= "bold")))

cols_ho<- list("Sites" = c("1"="#30123BFF","2"="#4454C4FF",
                           "3"= "#4490FEFF", "4"="#1FC8DEFF", 
                           "5"= "#29EFA2FF","6"= "#7DFF56FF",
                           "7"="#C1F334FF","8"="#F1CA3AFF",
                           "9"= "#FE922AFF","10"="#EA4F0DFF",
                           "11"= "#BE2102FF","12"= "#7A0403FF"))


ho = HeatmapAnnotation("Sites" = c(rep(Sites, 4)),
                       which = "col", col = cols_ho,
                       annotation_name_gp = gpar(fontsize=8,
                                                 fontface="bold"),
                       show_legend = F, gp = gpar(
                         col = "white", fontize=12), 
                       simple_anno_size = unit(0.25, "cm"),
                       show_annotation_name = T)
#annotatio row (filas)
#para hccer....cambiar el guidls_all.tsv con la nueva data
guilds<- read_tsv("../Data/guilds_all.txt") %>% group_by(Taxon, Guild, `Trophic Mode`) %>% 
  mutate(Guilds=case_when(
    Guild=="Dung Saprotroph-Undefined Saprotroph-Wood Saprotroph"~"Dung Sap.-Undef Sap.-Wood Sap.",
        Guild=="Ectomycorrhizal-Fungal Parasite"~"Ectomycorrhizal-Fung.Parasit",
    Guild=="Animal Pathogen-Endophyte-Endosymbiont-Epiphyte-Soil Saprotroph-Undefined Saprotroph"~"Animal P-Endoph/symb-Undef. Sap.",
    Guild=="Endophyte-Plant Pathogen-Wood Saprotroph"~"Endophyte-Pathogen-Saprotroph",
    Guild=="Animal Pathogen-Endophyte-Epiphyte-Fungal Parasite-Plant Pathogen-Wood Saprotroph"~"Animal-Plant P-Endophyte-Saprotroph",
    Guild=="Animal
Pathogen-Endophyte-Epiphyte-Undefined Saprotroph" ~"Animal-Plant P-Endophyte-Saprotroph",
Guild=="Animal Pathogen-Endophyte-Epiphyte-Undefined Saprotroph"~"Animal-Plant P-Endophyte-Saprotroph",
    Guild=="Animal Pathogen-Endophyte-Plant Pathogen-Undefined Saprotroph"~"Animal-Plant P-Endophyte-Saprotroph",
    Guild=="Endophyte-Litter Saprotroph-Soil Saprotroph-Undefined Saprotroph"~"Endophyte-Undefined Saprotrop",
    Guild=="Animal Endosymbiont-Animal Pathogen-Plant Pathogen-Undefined Saprotroph"~"Animal-Plant endosymb-P-Undef. Sap.",
Guild=="Endophyte-Plant Pathogen-Undefined Saprotroph"~"Endophyte-Plant Pathogen-Undef. Sap.",
Guild=="Ectomycorrhizal-Undefined Saprotroph"~"Ectomycorrhizal-Undef. Sap.",
Guild=="Animal Pathogen-Fungal Parasite-Undefined Saprotroph"~"Animal P-Fungal Parasite-Undef. Sap.",
    Guild=="Fungal Parasite-Plant Pathogen-Plant Saprotroph"~"Fungal Parasite-Plant Path-Plant Sap.",
Guild=="Animal Pathogen-Endophyte-Plant Pathogen-Soil Saprotroph-Wood Saprotroph" ~"Animal Pathogen-Endoph-Plant P-Soil/Wood Sap", 
Guild=="Ectomycorrhizal-Orchid Mycorrhizal-Root Associated Biotroph" ~"Ectomycorrhizal-Mycorrhizal-Biotroph",
Guild=="Clavicipitaceous Endophyte-Plant Pathogen" ~"Clavicipitaceous Endophyte-Plant Pat.",
Guild=="Dung Saprotroph-Endophyte-Epiphyte-Wood Saprotroph" ~"Dung Sap.-Endo.-Epiph.-Wood Sap.",
    TRUE~as.character(Guild)))# %>% filter(relab>1)
#Dung Saprotroph-Endophyte-Epiphyte-Wood Saprotroph
#%>% #mutate(Guilds=case_when(
  #Guild=="Dung Saprotroph-Undefined Saprotroph-Wood Saprotroph" ~ "Undefined Saprotroph", 
#  TRUE ~ as.character(Guild)))
annotation_rows<- merge_data %>% rownames_to_column(
  var = "Taxon") %>% left_join(
  guilds) %>%dplyr::select(-OTUID,-taxonomy) %>%  distinct()%>%dplyr::select_if(
is.character) %>% replace(
  is.na(.), "Unassigned") %>% distinct() %>% slice(-5) %>% column_to_rownames(
    var = "Taxon") %>% dplyr::rename(Trophic=`Trophic Mode`)

cols_guild <- list('Guild' = c(
"Unassigned"= "#85929e",
"Animal Pathogen-Endophyte-Plant Pathogen-Soil Saprotroph-Wood Saprotroph"="#D95F02",
"Animal Pathogen-Endoph-Plant P-Soil/Wood Sap"="#D95F02",
"Animal Pathogen-Endophyte-Epiphyte-Fungal Parasite-Plant Pathogen-Wood Saprotroph"="#d658c3",
"Animal Pathogen-Soil Saprotroph"="#F08080",
"Animal Endosymbiont-Animal Pathogen-Plant Pathogen-Undefined Saprotroph"="#ca7822",
"Animal Pathogen"="#ba4a00",
"Animal Pathogen-Endophyte-Endosymbiont-Epiphyte-Soil Saprotroph-Undefined Saprotroph"="#C70039",
"Animal P-Endoph/symb-Undef. Sap."="#C70039",
"Animal Pathogen-Undefined Saprotroph"="#c70051",

"Plant Pathogen"="#E7298A",
"Fungal Parasite"="#666666", #no sale
"Animal-Plant P-Endophyte-Saprotroph"="#ff452d",
"Animal-Plant endosymb-P-Undef. Sap."="#f77c00",
"Animal Pathogen-Fungal Parasite-Undefined Saprotroph"="#900C3F",
"Animal P-Fungal Parasite-Undef. Sap."="#ba9194",
"Fungal Parasite-Plant Pathogen-Plant Saprotroph"="#e22b0f",
"Fungal Parasite-Plant Path-Plant Sap."="#e22b0f",
"Plant Pathogen-Undefined Saprotroph"="#b65169",


"Arbuscular Mycorrhizal"="#008000",
"Ectomycorrhizal-Orchid Mycorrhizal-Root Associated Biotroph"="#b4ff68",
"Ectomycorrhizal-Mycorrhizal-Biotroph"="#b4ff68",
"Ectomycorrhizal" = "#7FC97F",
"Ectomycorrhizal-Fungal Parasite"="#58d68d",
"Ectomycorrhizal-Undefined Saprotroph"="#edf2a3",
"Ectomycorrhizal-Undef. Sap."="#edf2a3",
"Endophyte"="#00FFFF",
"Endophyte-Plant Pathogen"="#117a65",
"Epiphyte"="#02f0a5",
"Ericoid Mycorrhizal"="#a2ab16",
"Lichenized"="#DAF7A6",
"Ectomycorrhizal-Orchid"="#0000FF", #no sale
"Endophyte-Plant Pathogen-Undefined Saprotroph" ="#00FF00",
"Endophyte-Plant Pathogen-Undef. Sap." ="#7dcea0",
"Endophyte-Pathogen-Saprotroph"="#0b5345",
"Endophyte-Plant Pathogen-Wood Saprotroph"="#00FF00",
"Endophyte-Litter Saprotroph-Soil Saprotroph-Undefined Saprotroph"="#73c6b6",
"Endophyte-Undefined Saprotrop"="#008080",
"Endophyte-Insect Pathogen"="#00FFFF",
"Clavicipitaceous Endophyte-Plant Pat."="#5e6326",

"Dung Saprotroph"="#FDC086",
"Soil Sparotroph"="#851d01",
"Undefined Saprotroph"="#7d6608",
"Wood Saprotroph"="#E6AB02",
"Plant Pathogen-Wood Saprotroph"="#5c2402",
"Dung Saprotroph-Wood Saprotroph"="#7d5c48",
"Dung Sap.-Endo.-Epiph.-Wood Sap."="#5D3830",
"Dung Sap.-Undef Sap.-Wood Sap."="#FDC086",
"Dung Saprotroph-Undefined Saprotroph-Wood Saprotroph"="#FDC086" ))


cols_tro <- list('Trophic' = c(
"Pathotroph"=   "#D95F02",
"Pathotroph-Saprotroph"=    "#581845",
"Pathotroph-Symbiotroph"="#F08080",
"Saprotroph"=   "#851d01",
"Saprotroph-Symbiotroph"=   "#7d5c48",
"Symbiotroph"=  "#008000",
"Unassigned"= "#85929e",
"Pathotroph-Saprotroph-Symbiotroph"=    "#C70039"))

annguild = HeatmapAnnotation("Guild" = annotation_rows$Guilds, 
                            which = "row", col = cols_guild,
                            show_legend = T,   
                            show_annotation_name = T,
                            annotation_name_gp =gpar(
                              fontsize = 7, fontface="bold"),
                            annotation_legend_param = list(
                              title_gp = gpar(fontsize = 7, 
                                              fontface="bold"),
                              labels_gp = gpar(fontsize = 7),
                             direction ="horizontal",
                            grid_width = unit(0.3, "cm"),
                             grid_height = unit(0.1, "cm")),
                            
                            simple_anno_size = unit(0.3, "cm"),
                            gp = gpar(col = "white"))

anntro = HeatmapAnnotation("Trophic" = annotation_rows$Trophic, 
                             which = "row", col = cols_tro,
                             show_legend = T,   
                           show_annotation_name = T,
                             annotation_name_gp =gpar(
                               fontsize = 7,  fontface="bold"),
                             annotation_legend_param = list(
                               title_gp = gpar(fontsize = 7, 
                                               fontface="bold"),
                               labels_gp = gpar(fontsize =7),
                                  direction ="horizontal",
                               grid_width = unit(0.3, "cm"),
                           grid_height = unit(0.1, "cm")),
                           simple_anno_size = unit(0.3, "cm"),
                           gp = gpar(col = "white"))

#annotation_rows[is.na(annotation_rows)] <- "Unassigned"
  • Ploting heatmap
heats<-ComplexHeatmap::Heatmap(
  merge_data,
  col = my_palette,
   row_dend_width = unit(0.4, "cm"),
  width = ncol(merge_data)*unit(2, "mm"), 
    height = nrow(merge_data)*unit(2.4, "mm"),
  heatmap_legend_param = list(direction = "horizontal",
                          title = "Relative abund(%)",
                             grid_height = unit(0.2, "cm"),
                              legend_height = unit(1, "cm"),
                              labels_gp = gpar(fontsize = 7),
                              title_gp = gpar(fontsize = 6, 
                                              fontface="bold"),
                              at = c(0,1, 10,  50, 100), break_dist = 1),
  rect_gp = gpar(col = "white"), 
  cluster_columns = F, cluster_rows = T,show_row_dend = FALSE,
  show_heatmap_legend = TRUE, top_annotation = c(ha, ho),
  right_annotation = c(anntro, annguild),
  column_order = sort(colnames(merge_data)),
  column_split = split, column_title = NULL,
show_column_names = F,
row_names_gp = gpar(fontsize=7.5, fontface="italic"),
column_title_gp = gpar(
  fill = c("#800000" ,"#808000" ,"#008000", "#D35400", "#2E4053" )))



lgd1 = Legend(at = 1:12, title = "Sites", nrow = 1,
              title_position = "leftcenter",
              legend_gp = gpar(fill = viridis(
  n = 12, option = "H", direction = 1)),
  labels_gp = gpar(fontsize = 8),
  title_gp = gpar(fontsize = 9, fontface="bold"))


lgd2 = Legend(at = sort(unique(annotation_rows$Guild)), 
              legend_gp = gpar(fill = cols_guild$Guild), 
              title = "Guild",  ncol = 2, gap = unit(0.1, "cm"),
              labels_gp = gpar(fontsize = 7),
              title_gp = gpar(fontsize = 7, fontface="bold"))
lgd3 = Legend(at = sort(unique(annotation_rows$Trophic)), 
              legend_gp = gpar(fill = cols_tro$Trophic),
              title = "Trophic", ncol = 1,gap = unit(1, "cm"),
              labels_gp = gpar(fontsize =7),
              title_gp = gpar(fontsize = 7, fontface="bold"))


#draw(heats, heatmap_legend_side = "right",
     #annotation_legend_side = "top", 
     #merge_legend=F,
     #annotation_legend_list = list(lgd1))


heatm<-grid.grabExpr(draw(heats, heatmap_legend_side = "right",
                          annotation_legend_side = "top", 
                          merge_legend=F,
                          annotation_legend_list = list(lgd1)))
                     
heats

ggsave('Figure3_heatmap_grouped.pdf', width = 8, height = 7, dpi = 600, plot =heatm, device = "pdf")

Summaricing data

mean_data<- data_qiime2_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowMeans(.)) %>% dplyr::select(qiime2=all) %>% rownames_to_column(var = "gen") %>% full_join(
  data_single_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowMeans(.)) %>% dplyr::select(single=all) %>% rownames_to_column(var = "gen"))%>% full_join(
    data_paired_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowMeans(.)) %>% dplyr::select(paired=all) %>% rownames_to_column(var = "gen"))%>% full_join(
      data_fungi_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowMeans(.)) %>% dplyr::select(kraken=all) %>% rownames_to_column(var = "gen")) %>% replace(is.na(.), 0)  %>% mutate(gen=case_when(
        gen=="Leptosphaeria maculans species complex" ~ "Leptosphaeria", 
        TRUE ~ as.character(gen)))%>% column_to_rownames(
        var = "gen") %>% mutate(proms=rowMeans(.)) %>% dplyr::arrange(-proms) %>% 
  mutate_if(is.numeric, ~round(., digits = 2))
## Joining with `by = join_by(gen)`
## Joining with `by = join_by(gen)`
## Joining with `by = join_by(gen)`
library(matrixStats)
## Warning: package 'matrixStats' was built under R version 4.3.2
## 
## Attaching package: 'matrixStats'
## 
## The following object is masked from 'package:dplyr':
## 
##     count
sd_data<- data_qiime2_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowSds(as.matrix(.))) %>% dplyr::select(qiime2=all) %>% rownames_to_column(var = "gen") %>% full_join(
  data_single_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowSds(as.matrix(.))) %>% dplyr::select(single=all) %>% rownames_to_column(var = "gen"))%>% full_join(
    data_paired_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowSds(as.matrix(.))) %>% dplyr::select(paired=all) %>% rownames_to_column(var = "gen"))%>% full_join(
      data_fungi_order%>% column_to_rownames(var = "gen") %>% mutate(all=rowSds(as.matrix(.))) %>% dplyr::select(kraken=all) %>% rownames_to_column(var = "gen")) %>% replace(is.na(.), 0)  %>% mutate(gen=case_when(
        gen=="Leptosphaeria maculans species complex" ~ "Leptosphaeria", 
        TRUE ~ as.character(gen)))%>% column_to_rownames(
        var = "gen") %>% mutate(proms=rowSds(as.matrix(.))) %>%
                                  dplyr::arrange(-proms)%>% 
  mutate_if(is.numeric, ~round(., digits = 2))
## Joining with `by = join_by(gen)`
## Joining with `by = join_by(gen)`
## Joining with `by = join_by(gen)`
library(QsRutils)
## Loading required package: phyloseq
tabla1=goods(t(table_qiime2))
tabla2=goods(t(table_single_micop))
tabla3=goods(t(table_paired_micop))
tabla4=goods(t(table_fungi))

mean(tabla1$goods)
## [1] 79.83309
mean(tabla2$goods)
## [1] 99.32011
mean(tabla3$goods)
## [1] 99.94403
mean(tabla4$goods)
## [1] 100

Figure 4. Barplot Guilds

  • Loading packages
library(readxl)
library(tidyverse)
library(ggpubr)
library(RColorBrewer)
library(ggh4x)
  • Loading data and formatting
metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(
  is.numeric, as.factor)
meta<-metadata
guild_colors<- read_csv("../Data/guilds_color_new")
trophic_colors<- read_csv("../Data/trophic_color")

names_col<- read.delim(
  "../Data/tabla_qiime2_blast_OTUS.guilds.txt", 
  check.names = F, row.names = 1)%>% t() %>% 
  as.data.frame() %>% rownames_to_column(
    var = "SampleID") %>% separate(
      SampleID, c(
        "id_metagenome", "R", "unmap", "Paired"), 
      sep = "_")%>% inner_join(meta) %>% dplyr::select(
        SampleID) %>% t() %>% as.vector()
guild_qiime2<- read.delim(
  "../Data/tabla_qiime2_blast_OTUS.guilds.txt", 
  check.names = F, row.names = 1) %>% filter(
  !Guild=="-",! `Confidence Ranking`=="Possible" , !Guild=="NULL") %>% mutate(Method="GENEIOUS+UNITE")

colnames(guild_qiime2)[1:36]<-names_col

guild_qiime2<- guild_qiime2 %>% rownames_to_column(var = "otu")

guild_single<- read.delim("../Data/table_single.guilds.txt", 
                          check.names = F)%>% filter(
  !Guild=="-",! `Confidence Ranking`=="Possible", !Guild=="NULL" ) %>% mutate(Method="MICOP SINGLE")

guild_paired<- read.delim("../Data/table_paired.guilds.txt", 
                          check.names = F)%>% filter(
                            !Guild=="-",! `Confidence Ranking`=="Possible" ) %>% mutate(Method="MICOP PAIRED")

guilds_fungi<- read.delim("../Data/table_kraken.guilds.txt", 
                          check.names = F, row.names = 1)%>% filter(
                            !Guild=="-",! `Confidence Ranking`=="Possible" ) %>% mutate(otu=paste0("otu", rownames(.))) %>% select_at(vars(!starts_with("kraken")))


guild_fungi<- read.delim("../Data/table_fungi_again.guilds.txt", 
                          check.names = F, row.names = 1) %>% filter(
                            !Guild=="-",! `Confidence Ranking`=="Possible" ,   !Guild=="NULL") %>% mutate(otu=paste0("otu", rownames(.))) %>% column_to_rownames(var = "otu")%>% select_if(is.numeric)%>% t() %>% as.data.frame() %>% rownames_to_column(
                                var = "id_sequence") %>% separate(
                                  ., "id_sequence", c(
              "kraken", "fungi", "id_metagenome", "report", "bracken"), 
                                  sep = "_") %>% dplyr::select(
                                    -kraken, -fungi, -report, -bracken) %>% full_join(metadata) %>% dplyr::select(-id_sequence:-Names, -id_metagenome) %>% column_to_rownames(var = "SampleID") %>% t() %>% as.data.frame() %>% rownames_to_column(var = "otu") %>% inner_join(guilds_fungi)%>% mutate(Method="KRAKEN2")

relabunda<- function(x){(as.data.frame(t(t(x)/colSums(x)))*100)}

g1<- guild_qiime2 %>% group_by(Guild) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Guild") %>% relabunda(.) %>% rownames_to_column(var = "Guild") %>% mutate(method="GENEIOUS+UNITE") %>%  mutate(total = rowMeans(across(where(is.numeric)))) %>% top_n(n = 10, wt = total) %>% dplyr::select(-total)

t1<- guild_qiime2 %>% group_by(`Trophic Mode`) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Trophic Mode") %>% relabunda(.) %>% rownames_to_column(var = "Trophic") %>% mutate(method="GENEIOUS+UNITE")

g2<- guild_single %>% group_by(Guild) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Guild") %>% relabunda(.)%>% rownames_to_column(var = "Guild")%>% mutate(method="SINGLE MICOP")%>%  mutate(total = rowMeans(across(where(is.numeric)))) %>% top_n(n = 10, wt = total)%>% dplyr::select(-total)

t2<- guild_single %>% group_by(`Trophic Mode`) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Trophic Mode") %>% relabunda(.)%>% rownames_to_column(var = "Trophic")%>% mutate(method="SINGLE MICOP")

g3<- guild_paired %>% group_by(Guild) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Guild") %>% relabunda(.)%>% rownames_to_column(var = "Guild")%>% mutate(method="PAIRED MICOP")%>%  mutate(total = rowMeans(across(where(is.numeric)))) %>% top_n(n = 10, wt = total)%>% dplyr::select(-total)

t3<- guild_paired %>% group_by(`Trophic Mode`) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Trophic Mode") %>% relabunda(.)%>% rownames_to_column(var = "Trophic")%>% mutate(method="PAIRED MICOP")


g4<- guild_fungi %>% group_by(Guild) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Guild") %>% relabunda(.)%>% rownames_to_column(var = "Guild")%>% mutate(method="KRAKEN2")%>%  mutate(total = rowMeans(across(where(is.numeric)))) %>% top_n(n = 10, wt = total)%>% dplyr::select(-total)

t4<- guild_fungi %>% group_by(`Trophic Mode`) %>% summarise_if(
  is.numeric, sum) %>% column_to_rownames(
    var = "Trophic Mode") %>% relabunda(.)%>% rownames_to_column(var = "Trophic")%>% mutate(method="KRAKEN2")

#guild_all<- rbind(guild_qiime2, guild_paired, guild_single, guild_fungi)
guild_all<- g1 %>% full_join(g2) %>% full_join(g3) %>% full_join(g4) %>%
  filter(!Guild %in% c("Animal Pathogen-Endophyte-Endosymbiont-Epiphyte-Soil Saprotroph-Undefined Saprotroph", "Animal Pathogen-Soil Saprotroph", "Endophyte-Undefined Saprotroph"))
trophic_all<- t1 %>% full_join(t2) %>% full_join(t3) %>% full_join(t4)
  • Guilds barplots
bar_data<- guild_all %>% pivot_longer(cols = -c(Guild,method), names_to = "SampleID", values_to = "relab")%>% mutate(Guilds=case_when(
    Guild=="Dung Saprotroph-Undefined Saprotroph-Wood Saprotroph"~"Dung Sap.-Undef Sap.-Wood Sap.",
        Guild=="Ectomycorrhizal-Fungal Parasite"~"Ectomycorrhizal-Fung.Parasit",
    Guild=="Animal Pathogen-Endophyte-Endosymbiont-Epiphyte-Soil Saprotroph-Undefined Saprotroph"~"Animal P-Endoph/symb-Undef. Sap.",
    Guild=="Endophyte-Plant Pathogen-Wood Saprotroph"~"Endohpyte-Pathogen-Saprotroph",
    Guild=="Animal Pathogen-Endophyte-Epiphyte-Fungal Parasite-Plant Pathogen-Wood Saprotroph"~"Animal-Plant P-Endophyte-Saprotroph",
    Guild=="Endophyte-Litter Saprotroph-Soil Saprotroph-Undefined Saprotroph"~"Endophyte-Undefined Saprotrop",
    Guild=="Animal Endosymbiont-Animal Pathogen-Plant Pathogen-Undefined Saprotroph"~"Animal-Plant endosymb-P-Undef. Sap.",
Guild=="Endophyte-Plant Pathogen-Undefined Saprotroph"~"Endophyte-Plant Pathogen-Undef. Sap.",
Guild=="Ectomycorrhizal-Undefined Saprotroph"~"Ectomycorrhizal-Undef. Sap.",
Guild=="Animal Pathogen-Fungal Parasite-Undefined Saprotroph"~"Animal P-Fungal Parasite-Undef. Sap.",
    Guild=="Fungal Parasite-Plant Pathogen-Plant Saprotroph"~"Fungal Parasite-Plant Path-Plant Sap.",
Guild=="Animal Pathogen-Endophyte-Plant Pathogen-Soil Saprotroph-Wood Saprotroph" ~"Animal Pathogen-Endoph-Plant P-Soil/Wood Sap", 
    TRUE~as.character(Guild))) %>% filter(relab>1)

#write_csv(bar_data, "bar_data.csv")
# %>% filter(!Guild %in% c("Animal Pathogen-Endophyte-Endosymbiont-Epiphyte-Soil Saprotroph-Undefined Saprotroph", "Dung Saprotroph-Undefined Saprotroph-Wood Saprotroph", "Ectomycorrhizal-Undefined Saprotroph", "Dung Saprotroph-Wood Saprotroph" ))
cols_guild<- bar_data %>% inner_join(guild_colors) %>% arrange(Guilds)
col_guild <- as.character(cols_guild$col)
names(col_guild) <- as.character(cols_guild$Guilds)
  
bar_data$method <- factor(
  bar_data$method,levels = c(
    "GENEIOUS+UNITE","SINGLE MICOP","PAIRED MICOP" , "KRAKEN2"))
chose_guild<-unique(cols_guild$Guilds)  

barplot_guild<-bar_data%>% filter(Guilds %in% chose_guild ) %>%
  filter(!Guilds %in%  "Dung Saprotroph") %>% 
  inner_join(metadata) %>% mutate(
    Pol= case_when(
      Poligono==1~ "POL 1",
      Poligono==2~ "POL 2",
      Poligono==3~ "POL 3",
      Poligono==4~ "POL 4",
      Poligono==5~ "POL 5",
      Poligono==6~ "POL 6"),
    Site= case_when(
      Sitio==1~ "S1",
      Sitio==2~ "S2"))%>% ggbarplot(
        x = "Sites", y = "relab",add = "mean",
        facet.by = "method", fill="Guilds", 
        position = position_fill()) +facet_nested(
          .~method, scales = "free_x")+scale_fill_manual(
            name = "Guilds",values =col_guild )+
theme_linedraw()+ylab("Relative abundance")+
    xlab("")+theme(legend.text = element_text(face = "plain"))+
  #  guides(fill = guide_legend(nrow = 30))+
    theme(legend.title = element_text(size = 9),
          #axis.ticks = element_blank(),
          legend.text = element_text(size = 9), 
          axis.text.x = element_text(size = 10),
          legend.key.size = unit(0.6, 'cm'), #change legend key size
          legend.key.height = unit(0.45, 'cm'), #change legend key height
          legend.key.width = unit(0.5, 'cm'),
          strip.text.x = element_text(size = 16),
          legend.box = "vertical")+ theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
  • Trophic barplots
bar_data_t<- trophic_all %>% pivot_longer(cols = -c(Trophic,method), names_to = "SampleID", values_to = "relab")#%>% filter(!Trophic %in% c("Pathotroph-Saprotroph-Symbiotroph" ))

bar_data_t$method <- factor(
  bar_data_t$method,levels = c(
    "GENEIOUS+UNITE","SINGLE MICOP","PAIRED MICOP" , "KRAKEN2"))
cols_trophic<- bar_data_t %>% inner_join(trophic_colors) %>% arrange(Trophic)
chose_trophic<-unique(cols_trophic$Trophic)  
col_trophic <- as.character(cols_trophic$col)
names(col_trophic) <- as.character(cols_trophic$Trophic)

barplot_trophic<-bar_data_t%>% #filter(Trophic %in% chose_trophic ) %>% 
  inner_join(metadata) %>% 
  mutate(
    Pol= case_when(
      Poligono==1~ "POL 1",
      Poligono==2~ "POL 2",
      Poligono==3~ "POL 3",
      Poligono==4~ "POL 4",
      Poligono==5~ "POL 5",
      Poligono==6~ "POL 6"),
    Site= case_when(
      Sitio==1~ "S1",
      Sitio==2~ "S2"))%>% ggbarplot(
        x = "Sites", y = "relab",add = "mean",
        facet.by = "method", fill="Trophic", 
        position = position_fill()) +facet_nested(
          .~method, scales = "free_x")+scale_fill_manual(
            name = "Trophic",values =col_trophic )+
theme_linedraw()+ylab("Relative abundance")+
    xlab("")+theme(legend.text = element_text(face = "plain"))+
  #  guides(fill = guide_legend(nrow = 30))+
    theme(legend.title = element_text(size = 9),
          #axis.ticks = element_blank(),
          legend.text = element_text(size = 9), 
          axis.text.x = element_text(size = 10),
          legend.key.size = unit(0.6, 'cm'), #change legend key size
          legend.key.height = unit(0.45, 'cm'), #change legend key height
          legend.key.width = unit(0.5, 'cm'),
          strip.text.x = element_text(size = 16),
          legend.box = "vertical")+ theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+xlab("Sites")
  • Joinning barplots
library(cowplot)
all<- plot_grid(
  barplot_guild+theme(legend.text = element_text(size = 8.49),   legend.title = element_text(face = "bold")),                  barplot_trophic+theme(legend.text = element_text(size = 8.5),  legend.title = element_text(face = "bold")), nrow = 2, rel_heights = c(1,1))
all

ggsave("Figure4_guilds_finals.pdf",width = 12, height = 7, dpi = 600, plot = all, device = "pdf")

Figure 5 and S2: PCoAs

  • Loading libraries, functions and data
library(tidyverse)
library(RColorBrewer)
library(cowplot)
library(broom)
library(geosphere)
library(reshape2)
library(readxl)
library(qiime2R)
source("../Code/functions_betadiv.R")
library(hilldiv)
library(hillR)


metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)
map<-metadata
table_single_micop<- read.delim("../Data/table_micop_single.txt") 
table_paired_micop<- read.delim("../Data/table_micop_paired.txt")
table_qiime2<- data.frame(read_qza("../Data/clustered_table_filter.qza")$data, 
                          check.names = F) %>% t() %>% as.data.frame(
                                ) %>% rownames_to_column(
                            var = "SampleID") %>% separate(
                              SampleID, c(
                                "id_metagenome", "R", "unmap", "Paired"), 
                              sep = "_")%>% inner_join(
                                metadata) %>% dplyr::select(
                                -id_metagenome:-Paired, 
                                -id_sequence:-id_fisicoq, -Sites, 
                                -Names) %>% column_to_rownames(
                                  var="SampleID") %>% t(
                                  ) %>% as.data.frame() %>% mutate_all(as.numeric)

table_fungi<- read.delim("../Data/table_kraken.txt", 
                        row.names = 1, check.names = F) %>% dplyr::select_if(
                           is.numeric)%>% t() %>% as.data.frame() %>% rownames_to_column(
                             var = "id_sequence") %>% separate(
                               ., "id_sequence", c(
                                 "kraken", "fungi", "id_metagenome", "report","bracken"),
                               sep = "_") %>% dplyr::select(
                                 -kraken, -fungi, -report, -bracken) %>% full_join(
                                 metadata) %>% dplyr::select(
                                   -id_sequence:-Transecto, -id_metagenome,
                                   -Sites, -id_new, -Names,  -id_fisicoq) %>% column_to_rownames(var = "SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)
  • PCoA calculation on list of tables
#make a list of tables
otu <- list(table_qiime2, table_single_micop, table_paired_micop,  table_fungi)
# matching to map to set same order
otu_match<- lapply(otu, otu.match) 
#remove singletons
otu_single<- lapply(otu_match, otu.single) 
#Calculate Horn dissimilaties
dist<- lapply(otu_single, beta_div_dist_hill, q=1)
#Normalize for Bray-curtis distance
otu_norm<- lapply(otu_single, otu.norm)
#Calculate Bray-Curtis dissimilarities
dist2<- lapply(otu_norm, beta_div_dist_bray)
# PCoA Horn
pcoa<- lapply(dist, pcoa_all) 
pcoa.axes <- lapply(dist, pcoa_axes) #obtain pcoa axes
pcoa.eigval <- lapply(dist, pcoa_eigval) #obtain pcoa eigvalues
# PCoA Bray-curtis
pcoa2 <-lapply(dist2, pcoa_all) 
pcoa.axes2 <- lapply(dist2, pcoa_axes) #obtain pcoa axes
pcoa.eigval2 <- lapply(dist2, pcoa_eigval) #obtain pcoa eigvalues
  • perMANOVA and betadisper calculations
#permanova's
set.seed(124)
perm_qiime2<- permanova_beta(dist[[1]], metadata = metadata)
perm_micop_single<- permanova_beta(dist[[2]], metadata = metadata)
perm_micop_paired<- permanova_beta(dist[[3]], metadata = metadata)
perm_fungi<- permanova_beta(dist[[4]], metadata = metadata)

perm_qiime22<- permanova_beta(dist2[[1]], metadata = metadata)
perm_micop_single2<- permanova_beta(dist2[[2]], metadata = metadata)
perm_micop_paired2<- permanova_beta(dist2[[3]], metadata = metadata)
perm_fungi2<- permanova_beta(dist2[[4]], metadata = metadata)

#betadisper
set.seed(125)
permd_qiime2<- permdisp_beta(dist[[1]], metadata = metadata)
permd_micop_single<- permdisp_beta(dist[[2]], metadata = metadata)
permd_micop_paired<- permdisp_beta(dist[[3]], metadata = metadata)
permd_fungi<- permdisp_beta(dist[[4]], metadata = metadata)

permd_qiime22<- permdisp_beta(dist2[[1]], metadata = metadata)
permd_micop_single2<- permdisp_beta(dist2[[2]], metadata = metadata)
permd_micop_paired2<- permdisp_beta(dist2[[3]], metadata = metadata)
permd_fungi2<- permdisp_beta(dist2[[4]], metadata = metadata)
  • PCoA plots Horn and Bray-curtis
qiime2_pcoa <- pcoa_plot(pcoa[[1]])+
  #xlab(paste("PCo1 (", pcoa.eigval[[1]]$Eigval[1], "%)", sep = "")) +
  #ylab(paste("PCo2 (", pcoa.eigval[[1]]$Eigval[2], "%)", sep = "")) +
  ggtitle("GENEIOS+UNITE")+  
 # xlab("DIM1")+
  #ylab("DIM2")+
  labs(title = paste("adonis: F = ", signif(perm_qiime2$F[1], 3), ",",
                     "p-value = ",signif(perm_qiime2$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_qiime2$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_qiime2$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(1, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))

qiime2_pcoa2<- pcoa_plot(pcoa2[[1]])+
  #xlab(paste("PCo1 (", pcoa.eigval[[1]]$Eigval[1], "%)", sep = "")) +
  #ylab(paste("PCo2 (", pcoa.eigval[[1]]$Eigval[2], "%)", sep = "")) +
  ggtitle("GENEIOUS+UNITE")+  
  #xlab("DIM1")+
  #ylab("DIM2")+
  labs(title = paste("adonis: F = ", signif(perm_qiime22$F[1], 3), ",",
                     "p-value = ",signif(perm_qiime22$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_qiime22$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_qiime22$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(1, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))


single_pcoa <- pcoa_plot(pcoa[[2]])+
  xlab(paste("DIM1 ", pcoa.eigval[[2]]$Eigval[1], "%", sep = "")) +
  ylab(paste("DIM2 ", pcoa.eigval[[2]]$Eigval[2], "%", sep = "")) +
  ggtitle("SINGLE MICOP")+
  labs(title = paste("adonis: F = ", signif(perm_micop_single$F[1], 3), ",",
                     "p-value = ",signif(perm_micop_single$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_micop_single$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_micop_single$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(2, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))

single_pcoa2 <- pcoa_plot(pcoa2[[2]])+
   xlab(paste("DIM1 ", pcoa.eigval2[[2]]$Eigval[1], "%", sep = "")) +
   ylab(paste("DIM2 ", pcoa.eigval2[[2]]$Eigval[2], "%", sep = "")) +
  ggtitle("SINGLE MICOP")+
  labs(title = paste("adonis: F = ", signif(perm_micop_single2$F[1], 3), ",",
                     "p-value = ",signif(perm_micop_single2$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_micop_single2$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_micop_single2$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(2, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))

paired_pcoa <- pcoa_plot(pcoa[[3]])+
  xlab(paste("DIM1 ", pcoa.eigval[[3]]$Eigval[2], "%", sep = "")) +
  ylab(paste("DIM2 ", pcoa.eigval[[3]]$Eigval[3], "%", sep = "")) +
#  xlab("DIM1")+
 # ylab("DIM2")+
  ggtitle("PAIRED MICOP")+
  labs(title = paste("adonis: F = ", signif(perm_micop_paired$F[1], 3), ",",
                     "p-value = ",signif(perm_micop_paired$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_micop_paired$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_micop_paired$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(2, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))

  
paired_pcoa2 <- pcoa_plot(pcoa2[[3]])+
  xlab(paste("DIM1 ", pcoa.eigval2[[3]]$Eigval[1], "%", sep = "")) +
    ylab(paste("DIM2 ", pcoa.eigval2[[3]]$Eigval[2], "%", sep = "")) +
 # xlab("DIM1")+
  #ylab("DIM2")+
  ggtitle("PAIRED MICOP")+
  labs(title = paste("adonis: F = ", signif(perm_micop_paired2$F[1], 3), ",",
                     "p-value = ",signif(perm_micop_paired2$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_micop_paired2$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_micop_paired2$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(2, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))




kraken_pcoa <- pcoa_plot(pcoa[[4]])+
#  scale_x_continuous(limits = c(-0.01,0.01))+
 # scale_y_continuous(limits = c(-0.01,0.01))+
  xlab(paste("DIM1 ", pcoa.eigval[[4]]$Eigval[2], "%", sep = "")) +
  ylab(paste("DIM2 ", pcoa.eigval[[4]]$Eigval[3], "%", sep = "")) +
  ggtitle("KRAKEN2")+
  labs(title = paste("adonis: F = ", signif(perm_fungi$F[1], 3), ",",
                     "p-value = ",signif(perm_fungi$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_fungi$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_fungi$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(2, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))

kraken_pcoa2 <- pcoa_plot(pcoa2[[4]])+
  #  scale_x_continuous(limits = c(-0.01,0.01))+
  # scale_y_continuous(limits = c(-0.01,0.01))+
   xlab(paste("DIM1 ", pcoa.eigval2[[4]]$Eigval[2], "%", sep = "")) +
    ylab(paste("DIM2 ", pcoa.eigval2[[4]]$Eigval[3], "%", sep = "")) +
  ggtitle("KRAKEN2")+
  labs(title = paste("adonis: F = ", signif(perm_fungi2$F[1], 3), ",",
                     "p-value = ",signif(perm_fungi2$`Pr(>F)`[1], 5), 
                     "\n betadisper: F = ", signif(permd_fungi2$tab$F[1], 2), ",",
                     "p-value = ",signif(permd_fungi2$tab$`Pr(>F)`[1], 5)))+theme(
                       legend.text = element_text(size = 20), legend.title = element_text(size = 20),
                       axis.title = element_text(size = 16),
                       plot.title = element_text(hjust = 1, size = 12),
                       legend.key.size = unit(2, "cm"))+ guides(
                         fill = guide_legend(override.aes = list(size = 8)))
    

leg<- get_legend(qiime2_pcoa)
leg2<- get_legend(qiime2_pcoa2)


first<-plot_grid(qiime2_pcoa+theme(legend.position = "none")+theme(aspect.ratio =6/10),  
                 single_pcoa+theme(legend.position = "none")+theme(aspect.ratio =6/10), 
                 paired_pcoa+theme(legend.position = "none")+theme(aspect.ratio =6/10),   
                 kraken_pcoa+theme(legend.position = "none")+theme(aspect.ratio =6/10), 
                 ncol = 2, nrow = 2, rel_widths = c(1,1,1,1),
                 align = "v",
                 labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                            "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)
second<-plot_grid(qiime2_pcoa2+theme(legend.position = "none")+theme(aspect.ratio =6/10),  
                 single_pcoa2+theme(legend.position = "none")+theme(aspect.ratio =6/10),
                 paired_pcoa2+theme(legend.position = "none")+theme(aspect.ratio =6/10),   
                 kraken_pcoa2+theme(legend.position = "none")+theme(aspect.ratio =6/10), 
                 ncol = 2, nrow = 2, rel_widths = c(1,1,1,1),
                 align = "v",
                 labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                            "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)

pcoas_plot <- plot_grid(first,leg,ncol = 2, rel_widths = c(.9,.1), align = "hv")
pcoas_plot

pcoas_plot2 <- plot_grid(second,leg,ncol = 2, rel_widths = c(.9,.1), align = "hv")
pcoas_plot2

ggsave("Figure5_pcoas_plot_horn_nolabels.pdf",width =11, height =7, dpi = 600, plot = pcoas_plot, device = "pdf")
ggsave("FigureS2_pcoas_plot_bray_nolabels.png",width =11, height =7, dpi = 600, plot = pcoas_plot2, device = "png")

#partial mantel tests

#environmental data
metadata_secas<- read_excel("../Data/Metadatos.xlsx", sheet = "secas-marzo")
fq_secas<- read_excel("../Data/fisicoq.xlsx", sheet = "seca")
fq_secas2<- read.csv("../Data/fisicoq-la.csv")

meta_fq_secas<- metadata_secas %>% full_join(fq_secas) #%>%  select(Sites:id_new,pH, MO, N, P) %>% mutate(Season="Dry")
## Joining with `by = join_by(id_new)`
meta_fq_secas_all<- metadata_secas %>% full_join(fq_secas) %>% full_join(fq_secas2, by = "SampleID")
## Joining with `by = join_by(id_new)`
env.16S=meta_fq_secas_all
df<- env.16S%>% dplyr::select(SampleID, pH:Mn, moisture, WHC:CONDUC, ARCILLA:ARENA) 
dfs=data.frame(df[1],scale(df[,2:17], center = T, scale = T)) %>% dplyr::select(
  SampleID,P,K,Ca,Mg,moisture,WHC, LIMO) %>% 
 column_to_rownames(var = "SampleID")

envs_dist<- dist(dfs, method = "euclidean")

#vegetation data

veg=read.delim("../Data/vegeta.tsv")

veg_dist<- dist(veg, method = "euclidean")
## Warning in dist(veg, method = "euclidean"): NAs introducidos por coerción
library(geosphere)
coords<- read_csv("../Data//coord.csv")
## Rows: 36 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): place, Names, Type
## dbl (6): pol, Sitio, Transecto, Latitude, Longitude, Site
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
coords_mat<- coords%>% mutate(P=paste0("P",pol),
                              S=paste0("S", Sitio),
                              T=paste0("T", Transecto)
) %>% unite(
  "SampleID", 
  P:T, sep = "") %>% select(
    SampleID, Longitude, Latitude) %>% column_to_rownames(var = "SampleID") %>% as.matrix() 

distance<- distm(coords_mat)/1000
colnames(distance)<- rownames(coords_mat)
rownames(distance)<- rownames(coords_mat)
distance_complete<- distance
# partial mantel tests horn
set.seed(124)
mantel.partial(dist[[1]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[1]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.2606 
##       Significance: 0.003 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.113 0.147 0.172 0.199 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[1]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[1]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: -0.06996 
##       Significance: 0.744 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.129 0.168 0.195 0.253 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[2]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[2]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1825 
##       Significance: 0.032 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.120 0.160 0.194 0.234 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[2]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[2]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1404 
##       Significance: 0.11 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.145 0.198 0.227 0.271 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[3]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[3]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1124 
##       Significance: 0.1 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.110 0.145 0.183 0.210 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[3]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[3]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: -0.08663 
##       Significance: 0.799 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.118 0.151 0.194 0.234 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[4]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[4]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1922 
##       Significance: 0.008 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.107 0.135 0.160 0.178 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist[[4]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist[[4]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1174 
##       Significance: 0.084 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.105 0.148 0.175 0.229 
## Permutation: free
## Number of permutations: 999
# partial mantel tests bray
mantel.partial(dist2[[1]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[1]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r:  0.28 
##       Significance: 0.001 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.104 0.140 0.163 0.204 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[1]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[1]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: -0.03832 
##       Significance: 0.627 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.118 0.151 0.185 0.221 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[2]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[2]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.2034 
##       Significance: 0.013 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.123 0.158 0.177 0.206 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[2]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[2]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.0561 
##       Significance: 0.283 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.137 0.180 0.208 0.244 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[3]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[3]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1642 
##       Significance: 0.049 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.129 0.162 0.185 0.221 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[3]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[3]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: -0.09898 
##       Significance: 0.814 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.135 0.185 0.221 0.249 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[4]], envs_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[4]], ydis = envs_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1968 
##       Significance: 0.008 
## 
## Upper quantiles of permutations (null model):
##    90%    95%  97.5%    99% 
## 0.0996 0.1323 0.1552 0.1900 
## Permutation: free
## Number of permutations: 999
mantel.partial(dist2[[4]], veg_dist, distance_complete, method = "spearman")
## 
## Partial Mantel statistic based on Spearman's rank correlation rho 
## 
## Call:
## mantel.partial(xdis = dist2[[4]], ydis = veg_dist, zdis = distance_complete,      method = "spearman") 
## 
## Mantel statistic r: 0.1784 
##       Significance: 0.024 
## 
## Upper quantiles of permutations (null model):
##   90%   95% 97.5%   99% 
## 0.113 0.144 0.173 0.216 
## Permutation: free
## Number of permutations: 999

hierarchical partitioning

Figures 5 and S6 : Spatial distance

  • Loading packages
library(tidyverse)
library(RColorBrewer)
library(cowplot)
library(broom)
library(geosphere)
library(reshape2)
library(readxl)
library(qiime2R)

source("../Code/functions_betadiv.R")

Calculating distances between points

coords<- read_csv("../Data/coord.csv")

coords_mat<- coords%>% mutate(P=paste0("P",pol),
                              S=paste0("S", Sitio),
                              T=paste0("T", Transecto)) %>% unite("SampleID", 
  P:T, sep = "") %>% dplyr::select(
    SampleID, Longitude, Latitude) %>% column_to_rownames(
      var = "SampleID") %>% as.matrix() 


distance<- distm(coords_mat)/1000
colnames(distance)<- rownames(coords_mat)
rownames(distance)<- rownames(coords_mat)

distance_complete<- distance

distance[upper.tri(distance)] <- NA 

distance_dm<-melt(as.matrix(distance), varnames = c(
  "SampleID.x", "SampleID.y")) %>% drop_na() %>% filter(!value==0)

Loading data of fungi and metadata

map<- read.csv("../Data/coord.csv") %>% mutate_at(
    c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))
metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)
table_single_micop<- read.delim("../Data/table_micop_single.txt") 
table_paired_micop<- read.delim("../Data/table_micop_paired.txt")
table_qiime2<- data.frame(read_qza("../Data/clustered_table_filter.qza")$data, 
                          check.names = F) %>% t() %>% as.data.frame(
                                ) %>% rownames_to_column(
                            var = "SampleID") %>% separate(
                              SampleID, c(
                                "id_metagenome", "R", "unmap", "Paired"), 
                              sep = "_")%>% inner_join(
                                metadata) %>% dplyr::select(
                                -id_metagenome:-Paired, 
                                -id_sequence:-id_fisicoq, -Sites, 
                                -Names) %>% column_to_rownames(
                                  var="SampleID") %>% t(
                                  ) %>% as.data.frame() %>% mutate_all(as.numeric)

table_fungi<- read.delim("../Data/table_kraken.txt", 
                      row.names = 1, check.names = F) %>% dplyr::select_if( is.numeric)%>% t() %>% as.data.frame() %>% rownames_to_column(
                             var = "id_sequence") %>% separate(
                               ., "id_sequence", c("kraken", "fungi", "id_metagenome", "report", "bracken"),  sep = "_") %>% dplyr::select(-kraken, -fungi, -report, -bracken) %>% full_join( metadata) %>% dplyr::select(-id_sequence:-Transecto, -id_metagenome, -Sites, -id_new, -Names,  -id_fisicoq) %>% column_to_rownames( var = "SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)

Formatting data as lists and applying functions of beta diversity

set.seed(12343)
otu <- list(table_qiime2, table_single_micop, table_paired_micop,  table_fungi)
otu_match<- lapply(otu, otu.match) # matching to map
otu_single<- lapply(otu_match, otu.single) #remove singletons
otu_norm<- lapply(otu_single, otu.norm)#Normalize
bc.dist<- lapply(otu_norm, beta_div_dist_bray)#Calculate Bray-Curtis dissimilarities 
bc.dist2<- lapply(otu_single, beta_div_dist_hill, q=1)#Calculate Horn dissimilarities 
bc.dist.tidy.filt<- lapply(bc.dist, bc.dist.tidy.filter)
bc.dist.tidy.filt2<- lapply(bc.dist2, bc.dist.tidy.filter.hill)

cor_test<- lapply(bc.dist.tidy.filt, cor.b)
lm_test<- lapply(bc.dist.tidy.filt, lm.b)
distances=list(distance_complete, distance_complete, distance_complete, distance_complete)

mantel_test = mapply(mantel.b, bc.dist, distances, SIMPLIFY = FALSE)



cor_test2<- lapply(bc.dist.tidy.filt2, cor.b)
lm_test2<- lapply(bc.dist.tidy.filt2, lm.b)
mantel_test2 = mapply(mantel.b, bc.dist2,distances, SIMPLIFY = FALSE)


stats_qiime2 <- data.frame(
  label = paste0("Mantel: r = ",signif(mantel_test[[1]]$statistic,3), 
                ", p-value = ",   signif(mantel_test[[1]]$signif, 3),                                       "\nRegression: slope = ", signif(lm_test[[1]]$estimate, 3)))

stats_single <- data.frame(
  label = paste0("Mantel: r = ", signif(mantel_test[[2]]$statistic,3), 
                 ", p-value = ", signif(mantel_test[[2]]$signif, 3),
                 "\nRegression: slope = ", signif(lm_test[[2]]$estimate, 3)))

stats_paired <- data.frame(
  label = paste0("Mantel: r = ", signif(mantel_test[[3]]$statistic,3), 
                 ", p-value = ", signif(mantel_test[[3]]$signif, 3),
                 "\nRegression: slope = ", signif(lm_test[[3]]$estimate, 3)))

stats_kraken <- data.frame(
  label = paste0("Mantel: r = ", signif(mantel_test[[4]]$statistic,3), 
                 ", p-value = ", signif(mantel_test[[4]]$signif, 3),
                 "\nRegression: slope = ", signif(lm_test[[4]]$estimate, 3)))


stats_qiime22 <- data.frame(
  label = paste0("Mantel: r = ",signif(mantel_test2[[1]]$statistic,3), 
                ", p-value = ",   signif(mantel_test2[[1]]$signif, 3),                                       "\nRegression: slope = ", signif(lm_test2[[1]]$estimate, 3)))

stats_single2 <- data.frame(
  label = paste0("Mantel: r = ", signif(mantel_test2[[2]]$statistic,3), 
                 ", p-value = ", signif(mantel_test2[[2]]$signif, 3),
                 "\nRegression: slope = ", signif(lm_test2[[2]]$estimate, 3)))

stats_paired2 <- data.frame(
  label = paste0("Mantel: r = ", signif(mantel_test2[[3]]$statistic,3), 
                 ", p-value = ", signif(mantel_test2[[3]]$signif, 3),
                 "\nRegression: slope = ", signif(lm_test2[[3]]$estimate, 3)))

stats_kraken2 <- data.frame(
  label = paste0("Mantel: r = ", signif(mantel_test2[[4]]$statistic,3), 
                 ", p-value = ", signif(mantel_test2[[4]]$signif, 3),
                 "\nRegression: slope = ", signif(lm_test2[[4]]$estimate, 3)))
max.sim<-1
qiime2_data<- bc.dist.tidy.filt[[1]] %>% mutate(Method="GENEIOUS+UNITE")
single_data<- bc.dist.tidy.filt[[2]] %>% mutate(Method="MICOP SINGLE")
paired_data<- bc.dist.tidy.filt[[3]] %>% mutate(Method="MICOP PAIRED")
kraken_data<- bc.dist.tidy.filt[[4]] %>% mutate(Method="KRAKEN2")

qiime2_data2<- bc.dist.tidy.filt2[[1]] %>% mutate(Method="GENEIOUS+UNITE")
single_data2<- bc.dist.tidy.filt2[[2]] %>% mutate(Method="MICOP SINGLE")
paired_data2<- bc.dist.tidy.filt2[[3]] %>% mutate(Method="MICOP PAIRED")
kraken_data2<- bc.dist.tidy.filt2[[4]] %>% mutate(Method="KRAKEN2")

joined_data<- rbind(qiime2_data, single_data, paired_data, kraken_data )
joined_data2<- rbind(qiime2_data2, single_data2, paired_data2, kraken_data2 )

joined_data$Method<- factor(joined_data$Method, levels = c(
  "GENEIOUS+UNITE", "MICOP SINGLE", "MICOP PAIRED", "KRAKEN2"))
joined_data2$Method<- factor(joined_data2$Method, levels = c(
  "GENEIOUS+UNITE", "MICOP SINGLE", "MICOP PAIRED", "KRAKEN2"))

ann_text<-data.frame(SpatialDistance=c( 30,30,30,30),
                     Similarity=c(0.8,0.3,0.3,0.3),
                     Distances=c("Spatial Distance (km)", 
                                 "Spatial Distance (km)", 
                                 "Spatial Distance (km)",
                                 "Spatial Distance (km)"),
                     Method=c("GENEIOUS+UNITE", "MICOP SINGLE", "MICOP PAIRED", "KRAKEN2"),
                     label=c(stats_qiime2$label, 
                             stats_single$label, 
                             stats_paired$label, 
                             stats_kraken$label))

ann_text2<-data.frame(SpatialDistance=c( 30,30,30,30),
                     Similarity=c(0.8,0.3,0.3,0.3),
                     Distances=c("Spatial Distance (km)", 
                                 "Spatial Distance (km)", 
                                 "Spatial Distance (km)",
                                 "Spatial Distance (km)"),
                     Method=c("GENEIOUS+UNITE", "MICOP SINGLE", "MICOP PAIRED", "KRAKEN2"),
                     label=c(stats_qiime22$label, 
                             stats_single2$label, 
                             stats_paired2$label, 
                             stats_kraken2$label))
                            
ann_text$Method<- factor(ann_text$Method, levels = c(
  "GENEIOUS+UNITE", "MICOP SINGLE", "MICOP PAIRED", "KRAKEN2"))
ann_text$Distances<- factor(ann_text$Distances,
                            levels = c("Spatial Distance (km)", 
                                       "Environmental Distance", 
                                       "Vegetation Distance"))

ann_text2$Method<- factor(ann_text2$Method, levels = c(
  "GENEIOUS+UNITE", "MICOP SINGLE", "MICOP PAIRED", "KRAKEN2"))
ann_text2$Distances<- factor(ann_text2$Distances,
                            levels = c("Spatial Distance (km)", 
                                       "Environmental Distance", 
                                       "Vegetation Distance"))

d1<-joined_data %>% ggplot(aes(x = SpatialDistance, y =Similarity ))+
  facet_grid(vars(Method), scales = "free_x")+
  geom_point(shape = 16, size = 1, alpha = 0.5, color = "#566573") +
  geom_smooth(method = "lm", color = "black", se = F) +
  ylab("Bray-curtis similarity") +
  ylim(.2, max.sim) +
  theme_linedraw()+theme(legend.position = "none", 
                         axis.text = element_text(size = 12),
                         strip.text = element_text(size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(size = 0.5, 
                                                         linetype = 'solid',
                                                         colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(size = 0.25, 
                                                         linetype = 'solid',
                                                         colour = "#E5E8E8")) +  
  geom_text(data = ann_text,label=ann_text$label, size=3)+xlab("Spatial Distance")



d2<-joined_data2 %>% ggplot(aes(x = SpatialDistance, y =Similarity ))+
  facet_grid(vars(Method), scales = "free_x")+
  geom_point(shape = 16, size = 1, alpha = 0.5, color = "#566573") +
  geom_smooth(method = "lm", color = "black", se = F) +
  ylab("Horn similarity") +
  ylim(.2, max.sim) +
  theme_linedraw()+theme(legend.position = "none", 
                         axis.text = element_text(size = 12),
                         strip.text = element_text(size = 12, face = "bold.italic"),
                         panel.grid.major = element_line(size = 0.5, 
                                                         linetype = 'solid',
                                                         colour = "#E5E8E8"), 
                         panel.grid.minor = element_line(size = 0.25, 
                                                         linetype = 'solid',
                                                         colour = "#E5E8E8")) +  
  geom_text(data = ann_text2,label=ann_text2$label, size=3)+xlab("Spatial Distance")

d1;d2

ggsave("Figure6.spatialdistance-horn_final.pdf",width =4, height = 8, dpi = 300, plot = d2, device = "pdf")
ggsave("FigureS3.spatialdistance-bray_final.png",width =4, height = 8, dpi = 300, plot = d1, device = "png")

Figures S5 and S6 : vegetation and pca

library(tidyverse)
library(readxl)
library(ggpubr)
getwd()
## [1] "C:/Users/HP/Documents/corredor_scripts/Fungal_Communities_PNIP_PNML/Scripts"
veget<- read_excel("../Data/vegetacion.xlsx") %>% dplyr::select(
  -DAP, -CopaNS, -CopaEW,-volumenamdera, -distanciacopas, -diamcopa, -basal_area )

veget2<- veget %>% mutate(SampleID=case_when(
  SampleID=="P6S1T1" ~"P6S2T1",
  SampleID=="P6S1T2" ~"P6S2T2",
  SampleID=="P6S1T3" ~"P6S2T3",
  SampleID=="P6S2T1" ~"P6S1T1",
  SampleID=="P6S2T2" ~"P6S1T2",
  SampleID=="P6S2T3" ~"P6S1T3",
  TRUE~as.character(SampleID)))

metadata_secas<- read_excel("../Data/Metadatos.xlsx", sheet = "secas-marzo")
metadata<- read_excel("../Data/Metadatos.xlsx", sheet = "secas-marzo")


#declare data

veg<-veget2%>% separate(
  Especie, c("Genus", "Specie"), remove =F ) %>%   mutate(
    Genus=case_when(
      Genus=="Quecus"~ "Quercus",
      TRUE ~ as.character(Genus))) %>% mutate(
        Type=case_when(
          Genus=="Pinus"~ "Conifer",
          Genus=="Abies"~ "Conifer",
          Genus=="Juniperus"~ "Conifer",
          Genus=="Quercus"~ "Broadleaf",
          Genus=="Alnus"~ "Broadleaf",
          Genus=="Prunus"~ "Broadleaf",
          Genus=="Salix"~ "Broadleaf",
          Genus=="Arbutus"~ "Broadleaf") ) %>% mutate(
            Dominante=case_when(
              Genus=="Quercus"~ "Broadleaf",
              Genus=="Arbutus"~ "other Broadleaf",
              Genus=="Pinus"~ "Pinus",
              Genus=="Abies"~ "Abies",
              Genus=="Juniperus"~ "other Conifer",
              Genus=="Alnus"~ "other Broadleaf",
              Genus=="Alnus"~ "other Broadleaf",
              Genus=="Prunus"~ "other Broadleaf",
              Genus=="Salix"~ "other Broadleaf")  )

##proportions
prop_n<-veg %>% group_by(SampleID,Type) %>% dplyr::count()
prop_total<- veg %>% group_by(SampleID) %>% dplyr::count() %>% dplyr::rename(total=n)
prop<- prop_n %>% inner_join(prop_total)%>% mutate(
  prop=n/total*100)%>% dplyr::select(-n,-total) %>%  pivot_wider(
    . , names_from = "Type", values_from = "prop")  %>% mutate_if(
      is.numeric, ~round(.,digits = 2))  %>% mutate_if(
        is.numeric, ~replace(., is.na(.), 0)) %>% dplyr::rename(prop_Conif="Conifer",prop_Broadleaf="Broadleaf")

prop_n<-veg %>% group_by(SampleID,Genus) %>% dplyr::count()
prop_total<- veg %>% group_by(SampleID) %>% dplyr::count() %>% dplyr::rename(total=n)
prop_gen<- prop_n %>% inner_join(prop_total)%>% mutate(
  prop=n/total*100)%>% dplyr::select(-n,-total) %>%  pivot_wider(
    . , names_from = "Genus", values_from = "prop")  %>% mutate_if(
      is.numeric, ~round(.,digits = 2))  %>% mutate_if(
        is.numeric, ~replace(., is.na(.), 0))%>% 
  rename_with(~str_c("prop_", .), .cols = -SampleID)
data_prop <- prop %>% inner_join(prop_gen) %>% column_to_rownames(
  var = "SampleID") 


plot_prop<-prop %>% pivot_longer(
  cols = -SampleID, names_to = "type", values_to = "prop") %>% inner_join(
    metadata  ) %>% ggbarplot(
      x = "Sites", y = "prop", fill="type", add = "mean")+
  theme_linedraw()+ylab("Proportion (%)")+
  xlab("Sites")+theme(legend.text = element_text(face = "plain"))+
  #  guides(fill = guide_legend(nrow = 30))+
  theme(legend.title = element_text(size = 9),
        #axis.ticks = element_blank(),
        legend.text = element_text(size = 9), 
        axis.text.x = element_text(size = 10),
        legend.key.size = unit(0.6, 'cm'), #change legend key size
        legend.key.height = unit(0.45, 'cm'), #change legend key height
        legend.key.width = unit(0.5, 'cm'),
        strip.text.x = element_text(size = 16),
        legend.box = "vertical")+ scale_fill_manual(name = "Type of \nvegetation",
                                                      labels = c("Broadleaf", "Conifers"),
                                                        values = c("#ba4a00","#0b5345"))

plot_prop_gen<-prop_gen %>% pivot_longer(
  cols = -SampleID, names_to = "type", values_to = "prop") %>% inner_join(
    metadata  ) %>% ggbarplot(
      x = "Sites", y = "prop", fill="type", add = "mean")+
  theme_linedraw()+ylab("Proportion (%)")+
  xlab("Sites")+theme(legend.text = element_text(face = "plain"))+
  #  guides(fill = guide_legend(nrow = 30))+
  theme(legend.title = element_text(size = 9),
        #axis.ticks = element_blank(),
        legend.text = element_text(size = 9), 
        axis.text.x = element_text(size = 10),
        legend.key.size = unit(0.6, 'cm'), #change legend key size
        legend.key.height = unit(0.45, 'cm'), #change legend key height
        legend.key.width = unit(0.5, 'cm'),
        strip.text.x = element_text(size = 16),
        legend.box = "vertical")+ scale_fill_manual(
          name = "Genera",
          labels = c("Abies", "Alnus", "Arbutus",
                     "Juniperus", "Pinus", "Prunus",
                     "Quercus", "Salix"),
          values = c ("#229954", "#d35400",  "#ca6f1e",
                     "#58d68d", "#0b5345", "#800000", 
                     "#e59866", "#924d42"))+theme(legend.text = element_text(face = "italic"))
library(cowplot)
all<-plot_grid(plot_prop+theme(
  axis.text.x = element_blank(), axis.title.x = element_blank(),
  axis.ticks.x = element_blank(),
  plot.margin = unit(c(0.2, 0.2, 0, 0.2), "cm")),
  plot_prop_gen+ theme(plot.margin = unit(c(0, 0.2, 0.1, 0.2), "cm")), ncol = 1, labels = c("A)", "B)"), label_x = -0.01)
all

ggsave("veg_prop.png",width = 6, height = 6, dpi = 300, plot = all, device = "png")
#pca
envschose<-c( "K", "Ca", "Mg", "P",  "WHC","moisture" ,"Silt", "Fe", "pH", "Cu", "Clay", "N", "OM")


metadata_secas<- read_excel("../Data/Metadatos.xlsx", sheet = "secas-marzo")
fq_secas<- read_excel("../Data/fisicoq.xlsx", sheet = "seca")
fq_secas2<- read.csv("../Data/fisicoq-la.csv")

meta_fq_secas<- metadata_secas %>% full_join(fq_secas) #%>%  select(Sites:id_new,pH, MO, N, P) %>% mutate(Season="Dry")
meta_fq_secas_all<- metadata_secas %>% full_join(fq_secas) %>% full_join(fq_secas2, by = "SampleID")

env.16S=meta_fq_secas_all
df<- env.16S %>% dplyr::rename(Silt=LIMO, Clay=ARCILLA, Sand=ARENA, OM=MO) %>% dplyr::select(SampleID,envschose)
dfs=data.frame(df[1],scale(df[,2:14], center = T, scale = T)) %>% dplyr::select(
  SampleID,envschose) %>% 
  column_to_rownames(var = "SampleID")

#pca environmental

pca_env<- prcomp(dfs, center = F, scale. = F)
#biplot(pca_env)
metadatas_env<- as.data.frame(pca_env$x) %>% rownames_to_column(var = "SampleID") %>% 
  inner_join(metadata)
y<-ggordiplots::gg_ordiplot(pca_env, metadatas_env$Sites, hull = FALSE, 
                            spiders = TRUE,  ellipse = FALSE,   pt.size = 4,
                            plot =FALSE, label = FALSE)
z <- y$plot
a<-z+geom_label(
  data = y$df_mean.ord,
  aes(x = x, y = y, label=Group), 
  label.padding = unit(0.15, "lines"),label.size = 0.4,
)+guides(
  color=guide_legend(title="Sites"))+theme_linedraw() +
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_fill_viridis_d(option ="turbo", name="Sites")+#color of points 
  scale_color_viridis_d(option ="turbo" )+#color of points 
  theme(axis.text = element_text(colour = "black", size = 12),
        axis.title = element_text(colour = "black", size = 12),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 12), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  ggrepel::geom_label_repel(data=data.frame(pca_env$rotation) %>%   #arrows
                              rownames_to_column(var = "Feature.ID")%>%
                              slice(-6) %>% 
                              mutate(a=sqrt(PC1^2+PC2^2)) %>% 
                              mutate(PC1=PC1*8, PC2=PC2*8),
                            aes(x=PC1, y=PC2, label=Feature.ID ),
                            segment.colour = NA, col = 'red', 
                            fill= "#EEEEEE",
                            fontface="bold.italic", size=5) +theme(
                              legend.position = "right")  +
  guides(color = guide_legend(nrow =2 , title = "Sites"))+theme(
    legend.text = element_text(size = 12), legend.title = element_text(size = 14),
    axis.title = element_text(size = 16),
    plot.title = element_text(hjust = 1, size = 12))+
  guides(color = guide_legend(ncol = 1, title = "Sites"))


a

ggsave("pca_env.png",width =8, height = 5, dpi = 300, plot = a, device = "png")

Figure S7: corrplot

  • Loading libraries
library(reshape2)
library(tidyverse)
library(picante)
library(Rmisc)
library(readxl)
source("../Code/functions_beta.R")
  • loading environmental data, and correlation
metadata_secas<- read_excel("../Data/Metadatos.xlsx", sheet = "secas-marzo")
fq_secas<- read_excel("../Data/fisicoq.xlsx", sheet = "seca")
fq_secas2<- read.csv("../Data/fisicoq-la.csv")
meta_fq_secas<- metadata_secas %>% full_join(fq_secas) 
meta_fq_secas_all<- metadata_secas %>% full_join(
  fq_secas) %>% full_join(fq_secas2, by = "SampleID")

env=meta_fq_secas_all
#standardize environmental data
df<- env%>% dplyr::select(
  SampleID, pH:Mn, moisture, WHC:CONDUC, ARCILLA:ARENA) %>% column_to_rownames(var = "SampleID")
#df<-df[-1]
df<- df %>% dplyr::select(-CONDUC, -ARENA, -Mn) #selectig r<0.7
dfs=data.frame(scale(df[,1:13], center = T, scale = T)) 
#dfs$Sites<-NA
#dfs$Sites<- df$Sites

# checking collinearity
#cotable<-cor.table(na.omit(dfs[,1:7]))$r
cors<- dfs %>% dplyr::rename(Humidity=moisture, Silt=LIMO,OM=MO,
                             Clay=ARCILLA) %>% dplyr::select(-Humidity)
corss<- cor(cors, method = "pearson")
  • loading and formatting vegetation data and correlation
map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))
metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)

veget<- read_excel("../Data/vegetacion.xlsx") %>% dplyr::select(
  -DAP, -CopaNS, -CopaEW,-volumenamdera, -distanciacopas, -diamcopa, -basal_area )

#declare data

veg<-veget %>% separate(
  Especie, c("Genus", "Specie"), remove =F ) %>%   mutate(
    Genus=case_when(
      Genus=="Quecus"~ "Quercus",
      TRUE ~ as.character(Genus))) %>% mutate(
        Type=case_when(
          Genus=="Pinus"~ "Conifer",
          Genus=="Abies"~ "Conifer",
          Genus=="Juniperus"~ "Conifer",
          Genus=="Quercus"~ "Broadleaf",
          Genus=="Alnus"~ "Broadleaf",
          Genus=="Prunus"~ "Broadleaf",
          Genus=="Salix"~ "Broadleaf",
          Genus=="Arbutus"~ "Broadleaf") ) %>% mutate(
            Dominante=case_when(
              Genus=="Quercus"~ "Broadleaf",
              Genus=="Arbutus"~ "other Broadleaf",
              Genus=="Pinus"~ "Pinus",
              Genus=="Abies"~ "Abies",
              Genus=="Juniperus"~ "other Conifer",
              Genus=="Alnus"~ "other Broadleaf",
              Genus=="Alnus"~ "other Broadleaf",
              Genus=="Prunus"~ "other Broadleaf",
              Genus=="Salix"~ "other Broadleaf")  )

##proportions
prop_n<-veg %>% group_by(SampleID,Type) %>% dplyr::count()
prop_total<- veg %>% group_by(SampleID) %>% dplyr::count() %>% dplyr::rename(total=n)
prop<- prop_n %>% inner_join(prop_total)%>% mutate(
prop=n/total*100)%>% dplyr::select(-n,-total) %>%  pivot_wider(
    . , names_from = "Type", values_from = "prop")  %>% mutate_if(
      is.numeric, ~round(.,digits = 2))  %>% mutate_if(
      is.numeric, ~replace(., is.na(.), 0)) %>% dplyr::rename(prop_Conif="Conifer",prop_Broadleaf="Broadleaf")

prop_n<-veg %>% group_by(SampleID,Genus) %>% dplyr::count()
prop_total<- veg %>% group_by(SampleID) %>% dplyr::count() %>% dplyr::rename(total=n)
prop_gen<- prop_n %>% inner_join(prop_total)%>% mutate(
  prop=n/total*100)%>% dplyr::select(-n,-total) %>%  pivot_wider(
    . , names_from = "Genus", values_from = "prop")  %>% mutate_if(
      is.numeric, ~round(.,digits = 2))  %>% mutate_if(
      is.numeric, ~replace(., is.na(.), 0))%>% 
  rename_with(~str_c("prop_", .), .cols = -SampleID)

# mean data
means<-veg %>% group_by(SampleID) %>% summarise_if(is.numeric, ~mean(., na.rm = TRUE))%>% 
  rename_with(~str_c("total_mean_", .), .cols = -SampleID)
veg_group<- veg %>% group_by(SampleID,Genus)%>% summarise_if(  is.numeric, ~mean(., na.rm = TRUE)) %>% dplyr::select(-Sites) #%>% column_to_rownames(var = "SampleID")

means_genus<-function(y){veg_group %>% dplyr::select(
  SampleID, Genus,y) %>%  pivot_wider(
  . , names_from = "Genus", values_from = y)  %>% mutate_if(
    is.numeric, ~round(.,digits = 2))  %>% mutate_if(
      is.numeric, ~replace(., is.na(.), 0))%>% 
    rename_with(~str_c(paste0("mean_",y, "_"), .), .cols = -SampleID)}

vect<-c( "Height",   "coverage"    )
mean.list.genus <- vector("list")


for(i in vect) {
  mean.list.genus [[i]] <- means_genus(y = i)
}

mean.df.genus<-   mean.list.genus [[1]] %>% inner_join(
  mean.list.genus [[2]])

data_prop <- prop %>% inner_join(prop_gen) %>% column_to_rownames(
  var = "SampleID") 

data_veg_mean<- means %>% inner_join(mean.df.genus) %>% dplyr::select_at(
  vars(-contains("sites"))) %>%   dplyr::select_at(vars(-contains("volumen")))%>% column_to_rownames(
    var = "SampleID")

data_propt<- data_prop %>% log_norm() #%>% as.matrix() %>%scale(scale = T, center = T) 

vegeta= merge(data_propt, data_veg_mean, by=0)%>%dplyr::rename(
  SampleID="Row.names") %>% column_to_rownames(
    var = "SampleID")  %>% as.matrix() %>%scale(
      scale = T, center = T) %>% as.data.frame() %>% rownames_to_column(
        var = "SampleID") %>% dplyr::select(
          -prop_Conif, -prop_Quercus,
          -mean_Height_Abies, -mean_Height_Arbutus,
          -mean_Height_Juniperus,-mean_Height_Pinus,
          -mean_Height_Quercus,-mean_Height_Prunus,
          -mean_Height_Alnus, -mean_Height_Salix,
          -mean_coverage_Prunus,  -mean_coverage_Salix,
          -mean_coverage_Alnus, -mean_coverage_Abies  )

cor2<- vegeta[-1]
cor2<- cor2 %>% as.data.frame( ) %>% 
   select_all(~str_replace(., "prop_", ""))  %>% 
   select_all(~str_replace(., "mean_", "")) %>% 
   select_all(~str_replace(., "coverage_", "cov_")) 
   
corss2<- cor(cor2, method = "pearson") 

#write_tsv(vegeta,"../Data/vegeta.tsv")
  • Plot pca vegetation
#pca vegeta
vegeta_col<- c("SampleID", "Broadleaf", "Abies", "Pinus", "Salix", "Arbutus",
               "Alnus", "Juniperus", "Prunus", "total_Height", "total_coverage",
               "cov_Pinus", "cov_Arbutus", "cov_Quercus", "cov_Juniperus")
vegeta2<- vegeta
colnames(vegeta2)<-vegeta_col
pca_veg<- prcomp(vegeta2[-1], center = F, scale. = F)

#biplot(pca_env)
metadatas_env<- as.data.frame(pca_veg$x) 
rownames(metadatas_env)<- vegeta$SampleID
metadatas_env<-metadatas_env %>% rownames_to_column(var = "SampleID") %>% inner_join(metadata)

y<-ggordiplots::gg_ordiplot(pca_veg, metadatas_env$Sites, hull = FALSE, 
                            spiders = TRUE,  ellipse = FALSE,   pt.size = 4,
                            plot =FALSE, label = FALSE)
z <- y$plot
a<-z+geom_label(
  data = y$df_mean.ord,
  aes(x = x, y = y, label=Group), 
  label.padding = unit(0.15, "lines"),label.size = 0.4,
)+guides(
  color=guide_legend(title="Sites"))+theme_linedraw() +
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_fill_viridis_d(option ="turbo", name="Sites")+#color of points 
  scale_color_viridis_d(option ="turbo" )+#color of points 
  theme(axis.text = element_text(colour = "black", size = 12),
        axis.title = element_text(colour = "black", size = 12),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 12), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  ggrepel::geom_label_repel(data=data.frame(pca_veg$rotation) %>%   #arrows
                              rownames_to_column(var = "Feature.ID")%>%
                              slice(-6) %>% 
                              mutate(a=sqrt(PC1^2+PC2^2)) %>% 
                              mutate(PC1=PC1*8, PC2=PC2*8),
                            aes(x=PC1, y=PC2, label=Feature.ID ),
                            segment.colour = NA, col = 'black', 
                            fill= "#EEEEEE",
                            fontface="bold.italic", size=5) +theme(
                              legend.position = "right")  +
  guides(color = guide_legend(nrow =2 , title = "Sites"))+theme(
    legend.text = element_text(size = 12), legend.title = element_text(size = 14),
    axis.title = element_text(size = 16),
    plot.title = element_text(hjust = 1, size = 12))+
  guides(color = guide_legend(ncol = 1, title = "Sites"))


a

#ggsave("pca_veg.png",width =8, height = 5, dpi = 300, plot = a, device = "png")
  • plotting
library(corrplot)
png(filename = "cor_both.png", width = 830, height = 430, res = 100)
par(mfrow=c(1,2))    # set the plotting area into a 1*2 array
corrplot(corss,  method = 'circle', type = 'lower', insig='blank',
         addCoef.col ='black', number.cex = 0.6, tl.cex = 0.8,
         order = 'AOE',diag=FALSE)
corrplot(corss2,  method = 'circle', type = 'lower', insig='blank',
        addCoef.col ='black', number.cex = 0.5, tl.cex=0.85,
        order = 'AOE', diag=FALSE)
dev.off()
## png 
##   2

Figures 6 and 7: cca

  • Loading packages and data
knitr::opts_chunk$set(echo = T, results = "hide")
library(reshape2)
library(tidyverse)
library(picante)
library(Rmisc)
library(readxl)
library(vegan)
library(qiime2R)
source("../Code/functions_betadiv.R")

#Environmental data
metadata_secas<- read_excel("../Data/Metadatos.xlsx", sheet = "secas-marzo")
fq_secas<- read_excel("../Data/fisicoq.xlsx", sheet = "seca")
fq_secas2<- read.csv("../Data/fisicoq-la.csv")
meta_fq_secas<- metadata_secas %>% full_join(fq_secas) 
meta_fq_secas_all<- metadata_secas %>% full_join(fq_secas) %>% full_join(fq_secas2, by = "SampleID")
env<-meta_fq_secas_all

metadata<-read_excel("../Data/Metadatos.xlsx") %>% mutate_if(is.numeric, as.factor)


# Vegetation data

veg<- read_tsv("../Data/vegeta.tsv") %>% as.data.frame( ) %>% 
   select_all(~str_replace(., "prop_", ""))  %>% 
   select_all(~str_replace(., "mean_", ""))  %>% 
   select_all(~str_replace(., "coverage_", "cov_")) %>% mutate(SampleID=case_when(
  SampleID=="P6S1T1" ~"P6S2T1",
  SampleID=="P6S1T2" ~"P6S2T2",
  SampleID=="P6S1T3" ~"P6S2T3",
  SampleID=="P6S2T1" ~"P6S1T1",
  SampleID=="P6S2T2" ~"P6S1T2",
  SampleID=="P6S2T3" ~"P6S1T3",
  TRUE~as.character(SampleID))) %>% arrange(SampleID)

# Metagenomic data

table_single<-read.delim("../Data/table_micop_single.txt") 
table_paired<-read.delim("../Data/table_micop_paired.txt") 
table_kraken<-read.delim("../Data/table_kraken.txt", 
                 #  skip = 1,
                   row.names = 1, check.names = F) %>% dplyr::select_if(
                     is.numeric)%>% t() %>% as.data.frame() %>% rownames_to_column(var = "id_sequence") %>% separate(
                         ., "id_sequence", c(
                           "kraken", "fungi", 
                           "id_metagenome", "report", "bracken"), 
                         sep = "_") %>% dplyr::select(
                           -kraken, -fungi, -report, -bracken) %>% full_join(
                           metadata) %>% dplyr::select(-id_sequence:-Transecto, -id_metagenome, -Sites, -id_new, -Names,  -id_fisicoq) %>% column_to_rownames(var = "SampleID") %>% t() %>% as.data.frame() %>% mutate_all(as.numeric)

table_qiime2<-data.frame(read_qza("../Data/clustered_table_filter.qza")$data, 
                   check.names = F) %>% t() %>% as.data.frame(
                   ) %>% rownames_to_column(
                     var = "SampleID") %>% separate(
                       SampleID, c(
                         "id_metagenome", "R", "unmap", "Paired"), 
                       sep = "_")%>% inner_join(
                         metadata) %>% dplyr::select(
                           -id_metagenome:-Paired, 
                           -id_sequence:-id_fisicoq, -Sites, 
                           -Names) %>% column_to_rownames(
                             var="SampleID") %>% t(
                             ) %>% as.data.frame() %>% mutate_all(as.numeric)



table_qiime2_t<-data.frame(t(table_qiime2), check.names = F)
table_single_t<-data.frame(t(table_single), check.names = F)
table_paired_t<-data.frame(t(table_paired), check.names = F)
table_kraken_t<-data.frame(t(table_kraken), check.names = F)
  • Environmental analysis
#select variables that did not show collinearity and order data
set.seed(124)
vars<- c("MO", "Ca", "LIMO", "ARCILLA", "WHC", "Fe", "K", "Mg",
         "pH", "Cu", "P", "N")
#qiime2
mm1<-table_qiime2_t %>% rownames_to_column(var = "SampleID") %>% inner_join(
  env) %>% column_to_rownames(var = "SampleID")
env1=mm1[,vars]
#env1=mm1[,c(3149:3159, 3162,  3165,3167)]
spp1=mm1[,1:3138]

#single
mm2<-table_single_t %>% rownames_to_column(var = "SampleID") %>% inner_join(
  env) %>% column_to_rownames(var = "SampleID")
env2=mm2[,vars]
spp2=mm2[,1:210]

#paired
mm3<-table_paired_t %>% rownames_to_column(var = "SampleID") %>% inner_join(
  env) %>% column_to_rownames(var = "SampleID")
env3=mm3[,vars]
spp3=mm3[,1:234]

#kraken
mm4<-table_kraken_t %>% rownames_to_column(var = "SampleID") %>% inner_join(
  env) %>% column_to_rownames(var = "SampleID")
env4=mm4[,vars]
spp4=mm4[,1:72]


# Hellinger transformation
spp_hell1=decostand(spp1, "hell")
spp_hell2=decostand(spp2, "hell")
spp_hell3=decostand(spp3, "hell")
spp_hell4=decostand(spp4, "hell")



# Transforming environmental data
envscho<-c("MO", "Ca", "Silt", "WHC", "Fe", "K", "Mg", "pH", "Cu", "Clay", "P",  "N")
envst1=data.frame(scale(env1, scale=T, center=F)) %>% dplyr::rename(Silt=LIMO, #Humidity=moisture, 
                                                                  Clay=ARCILLA) %>% dplyr::select(all_of(envscho))
envst2=data.frame(scale(env2, scale=T, center=F))%>% dplyr::rename(Silt=LIMO, #Humidity=moisture, 
                                                                   Clay=ARCILLA) %>% dplyr::select(all_of(envscho))
envst3=data.frame(scale(env3, scale=T, center=F))%>% dplyr::rename(Silt=LIMO, #Humidity=moisture, 
                                                                   Clay=ARCILLA) %>% dplyr::select(all_of(envscho))
envst4=data.frame(scale(env4, scale=T, center=F))%>% dplyr::rename(Silt=LIMO, #Humidity=moisture, 
                                                                   Clay=ARCILLA) %>% dplyr::select(all_of(envscho))

# Forward selection procedure


#selecting using cca (no distance)
set.seed(126)
vares_cca1 <- cca(spp_hell1 ~., data=envst1)
envs1<-envfit(vares_cca1 ~ ., data=envst1)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("QIIME2"=".")

vares_cca2 <- cca(spp_hell2 ~., data=envst2)
envs2<-envfit(vares_cca2 ~ ., data=envst2)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("Single Micop"=".")

vares_cca3 <- cca(spp_hell3 ~.,data=envst3)
envs3<-envfit(vares_cca3 ~ ., data=envst3)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("Paired Micop"=".")

vares_cca4 <- cca(spp_hell4 ~.,data=envst4)
envs4<-envfit(vares_cca4 ~ ., data=envst4)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("Kraken2"=".")

envs<- cbind(envs1, envs2, envs3, envs4)
rownames(envs)
envs

#accounting for abundance
cap.env1=capscale(spp_hell1~.,envst1,distance = "bray")
mod0.env1=capscale(spp_hell1~1,envst1,distance = "bray")
step.env1=ordistep(mod0.env1,scope = formula(cap.env1))
cap1<-step.env1$anova %>% mutate(method="QIIME2") #no significants
meta1<- env1 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

cap.env2=capscale(spp_hell2~.,envst2,distance = "bray")
mod0.env2=capscale(spp_hell2~1,envst2,distance = "bray")
step.env2=ordistep(mod0.env2,scope = formula(cap.env2))
cap2<-step.env2$anova %>% mutate(method="Single Micop") 
meta2<- env2 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)


cap.env3=capscale(spp_hell3~.,envst3,distance = "bray")
mod0.env3=capscale(spp_hell3~1,envst3,distance = "bray")
step.env3=ordistep(mod0.env3,scope = formula(cap.env3))
cap3<-step.env3$anova %>% mutate(method="Paired Micop") 
meta3<- env3 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

cap.env4=capscale(spp_hell4~.,envst4,distance = "bray")
mod0.env4=capscale(spp_hell4~1,envst4,distance = "bray")
step.env4=ordistep(mod0.env4,scope = formula(cap.env4))
cap4<-step.env4$anova %>% mutate(method="Kraken2") 
meta4<- env4 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

#horn
cap.env1_c=capscale(spp_hell1~.,envst1,distance = "horn")
mod0.env1_c=capscale(spp_hell1~1,envst1,distance = "horn")
step.env1_c=ordistep(mod0.env1_c,scope = formula(cap.env1_c))
cap1_c<-step.env1_c$anova %>% mutate(method="QIIME2")

cap.env2_c=capscale(spp_hell2~.,envst2,distance = "horn")
mod0.env2_c=capscale(spp_hell2~1,envst2,distance = "horn")
step.env2_c=ordistep(mod0.env2_c,scope = formula(cap.env2_c))
cap2_c<-step.env2_c$anova %>% mutate(method="Single Micop") 

cap.env3_c=capscale(spp_hell3~.,envst3,distance = "horn")
mod0.env3_c=capscale(spp_hell3~1,envst3,distance = "horn")
step.env3_c=ordistep(mod0.env3_c,scope = formula(cap.env3_c))
#cap3_c<-step.env3_c$anova %>% mutate(method="Paired Micop") 

cap.env4_c=capscale(spp_hell4~.,envst4,distance = "horn")
mod0.env4_c=capscale(spp_hell4~1,envst4,distance = "horn")
step.env4_c=ordistep(mod0.env4_c,scope = formula(cap.env4_c))
cap4_c<-step.env4_c$anova %>% mutate(method="Kraken2")  #no significant
  • Data for plotting and plots #CAPS
library(ggvegan)

library(ggplot2)
map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))


#a1
fdat <- ggplot2::fortify(cap.env1)
map1<- map[match(rownames(spp_hell1), map$SampleID),]
map1_type<- map1 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.env1, groups = map1$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F,  pt.size = 3.5)
z <- y$plot
a1<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.5, CAP2=CAP2*0.5) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
#  geom_label(
 #   data = y$df_mean.ord,
  #  aes(x = x, y = y, label=Group), 
   # label.padding = unit(0.15, "lines"),label.size = 0.5,
    #    size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a2
fdat <- ggplot2::fortify(cap.env2)
map2<- map[match(rownames(spp_hell2), map$SampleID),]
map2_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.env2, groups = map2$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F,  pt.size = 3.5)
z <- y$plot
a2<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.6, CAP2=CAP2*0.6) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
  #  aes(x = x, y = y, label=Group), 
   # label.padding = unit(0.15, "lines"),label.size = 0.5,
       #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))

#a3
fdat <- ggplot2::fortify(cap.env3)
map3<- map[match(rownames(spp_hell3), map$SampleID),]
map3_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.env3, groups = map3$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F,  pt.size = 3.5)
z <- y$plot
a3<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.9, CAP2=CAP2*0.9) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
   geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
  #  label.padding = unit(0.15, "lines"),label.size = 0.5,
   #     size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a4
fdat <- ggplot2::fortify(cap.env4)
map4<- map[match(rownames(spp_hell4), map$SampleID),]
map4_type<- map4 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% dplyr::count()

y<-ggordiplots::gg_ordiplot(cap.env4, groups = map4$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F,  pt.size = 3.5)
z <- y$plot
a4<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.2, CAP2=CAP2*.2) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size =4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
     #   size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


leg<- get_legend(a1)


library(cowplot)
as<-plot_grid(a1+theme(aspect.ratio =6.8/10, legend.position = "none"),
                   a2+theme(aspect.ratio =6.8/10, legend.position = "none"),
                   a3+theme(aspect.ratio =6.8/10, legend.position = "none"),
                   a4+theme(aspect.ratio =6.8/10, legend.position = "none"),
              nrow = 2, ncol = 2,  align = "v", rel_widths = c(1,1,1,1),
              label_size = 15,
                  labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                             "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)

as2<- plot_grid(as,leg,ncol = 2, rel_widths = c(.93,.07), align = "hv")
## Warning: Graphs cannot be vertically aligned unless the axis parameter is set.
## Placing graphs unaligned.
## Warning: Graphs cannot be horizontally aligned unless the axis parameter is
## set. Placing graphs unaligned.
as2

ggsave("CAP_ggplot.jpg",width = 12, height =8.5, dpi = 300, plot = as2, device = "jpg")
library(ggvegan)

map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))


#a1
fdat <- ggplot2::fortify(cap.env1_c)
map1<- map[match(rownames(spp_hell1), map$SampleID),]
map1_type<- map1 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.env1_c, groups = map1$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F , pt.size = 3.5)
z <- y$plot
a1<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.5, CAP2=CAP2*0.5) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a2
fdat <- ggplot2::fortify(cap.env2_c)
map2<- map[match(rownames(spp_hell2), map$SampleID),]
map2_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.env2_c, groups = map2$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a2<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.6, CAP2=CAP2*0.6) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
  #  label.padding = unit(0.15, "lines"),label.size = 0.5,
   # size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))

#a3
fdat <- ggplot2::fortify(cap.env3_c)
map3<- map[match(rownames(spp_hell3), map$SampleID),]
map3_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.env3_c, groups = map3$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F , pt.size = 3.5)
z <- y$plot
a3<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.9, CAP2=CAP2*0.9) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a4
fdat <- ggplot2::fortify(cap.env4_c)
map4<- map[match(rownames(spp_hell4), map$SampleID),]
map4_type<- map4 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% dplyr::count()

y<-ggordiplots::gg_ordiplot(cap.env4_c, groups = map4$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a4<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.2, CAP2=CAP2*0.2) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size =4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


leg=get_legend(a1)

library(cowplot)
as<-plot_grid(a1+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a2+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a3+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a4+theme(aspect.ratio =6.8/10, legend.position = "none"),
              nrow = 2, ncol = 2,  align = "v", rel_widths = c(1,1,1,1),
              label_size = 15,
              labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                         "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)

as2<- plot_grid(as,leg,ncol = 2, rel_widths = c(.93,.07), align = "hv")
## Warning: Graphs cannot be vertically aligned unless the axis parameter is set.
## Placing graphs unaligned.
## Warning: Graphs cannot be horizontally aligned unless the axis parameter is
## set. Placing graphs unaligned.
as2
## Warning: ggrepel: 2 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

ggsave("CAP_horn_ggplot.jpg",width = 12, height =8.5, dpi = 300, plot = as2, device = "jpg")

#CCAS

library(ggvegan)

map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))


#a1
fdat <- ggplot2::fortify(vares_cca1)
map1<- map[match(rownames(spp_hell1), map$SampleID),]
map1_type<- map1 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()
  
y<-ggordiplots::gg_ordiplot(vares_cca1, groups = map1$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a1<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
    ggrepel::geom_label_repel(data = fdat %>% filter(
  score=="biplot") %>%  
      mutate(CCA1=CCA1*1.9, CCA2=CCA2*1.9) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
#  geom_label(
 #   data = y$df_mean.ord,
  #  aes(x = x, y = y, label=Group), 
   # label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))
  

#a2
fdat <- ggplot2::fortify(vares_cca2)
map2<- map[match(rownames(spp_hell2), map$SampleID),]
map2_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(vares_cca2, groups = map2$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a2<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*0.6, CCA2=CCA2*0.6) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
    #aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))
#a3
fdat <- ggplot2::fortify(vares_cca3)
map3<- map[match(rownames(spp_hell3), map$SampleID),]
map3_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(vares_cca3, groups = map3$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a3<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*0.9, CCA2=CCA2*0.9) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size=4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))


#a4
fdat <- ggplot2::fortify(vares_cca4)
map4<- map[match(rownames(spp_hell4), map$SampleID),]
map4_type<- map4 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% dplyr::count()

y<-ggordiplots::gg_ordiplot(vares_cca4, groups = map4$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a4<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*0.1, CCA2=CCA2*0.1) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size =4.5)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
  #  aes(x = x, y = y, label=Group), 
   # label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))




as<-plot_grid(a1+theme(aspect.ratio =6.8/10, legend.position = "none"),
                   a2+theme(aspect.ratio =6.8/10, legend.position = "none"),
                   a3+theme(aspect.ratio =6.8/10, legend.position = "none"),
                   a4+theme(aspect.ratio =6.8/10, legend.position = "none"),
              nrow = 2, ncol = 2,  align = "v", rel_widths = c(1,1,1,1),
              label_size = 15,
                  labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                             "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)
leg=get_legend(a1)

as2<- plot_grid(as,leg,ncol = 2, rel_widths = c(.93,.07), align = "hv")
as2

ggsave("Figure7.cca_ggplot_env_nolabels.pdf",width = 12, height =8.5, dpi = 300, plot = as2, device = "pdf")
taxonomy_qiime2<- data.frame(read_qza("../Data/taxonomy_blast_dfc_0.98.qza")$data, check.names = F) %>% dplyr::select(Feature.ID,Taxon)
taxonomy_single_micop<- read.delim("../Data/table_micop_single.txt") %>% rownames_to_column(var = "Feature.ID") %>% dplyr::select(Feature.ID) %>% mutate(Taxon=Feature.ID)
taxonomy_paired_micop<- read.delim("../Data/table_micop_paired.txt") %>% rownames_to_column(var = "Feature.ID") %>% dplyr::select(Feature.ID) %>% mutate(Taxon=Feature.ID)
taxonomy_fungi<- read.delim("../Data/table_fungi_again.txt",
                            skip = 1, row.names = 1, check.names = F) %>% select_if(is.character) %>% rownames_to_column(
                              var = "#OTU ID") %>% dplyr::select(Feature.ID = "#OTU ID", Taxon= taxonomy)

map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))
  • Vegetation analysis
#qiime2
mm1= veg %>% inner_join(table_qiime2_t %>%rownames_to_column(var = "SampleID"))
veg1=mm1[1:15] %>% column_to_rownames(var = "SampleID")
spp1=mm1[c(1,16:3153)]%>% column_to_rownames(var = "SampleID")

#single
mm2=veg%>% inner_join(table_single_t %>%rownames_to_column(var = "SampleID") )
veg2=mm2[1:15] %>% column_to_rownames(var = "SampleID")
spp2=mm2[c(1,16:225)]%>% column_to_rownames(var = "SampleID")

#paired
mm3=veg %>% inner_join(table_paired_t %>%rownames_to_column(var = "SampleID") )
veg3=mm3[1:15] %>% column_to_rownames(var = "SampleID")
spp3=mm3[c(1,16:249)]%>% column_to_rownames(var = "SampleID")

#kraken
mm4=veg %>% inner_join(table_kraken_t %>%rownames_to_column(var = "SampleID") )
veg4=mm2[1:15] %>% column_to_rownames(var = "SampleID")
spp4=mm4[c(1,16:87)]%>% column_to_rownames(var = "SampleID")


# Hellinger transformation

spp_hell1=decostand(spp1, "hell") 
spp_hell2=decostand(spp2, "hell")
spp_hell3=decostand(spp3, "hell")
spp_hell4=decostand(spp4, "hell")

# Compositional tranformation
#spp_hell1=decostand(otu.single(spp1), "clr", pseudocount=0.5) 
#spp_hell2=decostand(otu.single(spp2),  "clr", pseudocount=0.5)
#spp_hell3=decostand(otu.single(spp3),  "clr", pseudocount=0.5)
#spp_hell4=decostand(otu.single(spp4),  "clr", pseudocount=0.5)

# Transforming environmental data
vegt1=data.frame(scale(veg1, scale=T, center=F)) 
vegt2=data.frame(scale(veg2, scale=T, center=F))
vegt3=data.frame(scale(veg3, scale=T, center=F))
vegt4=data.frame(scale(veg4, scale=T, center=F))

# Forward selection procedure
#accounting for abundance
cap.veg1=capscale(spp_hell1~.,vegt1,distance = "bray")
mod0.veg1=capscale(spp_hell1~1,vegt1,distance = "bray")
step.veg1=ordistep(mod0.veg1,scope = formula(cap.veg1))
cap1v<-step.veg1$anova %>% mutate(method="QIIME2")
meta1<- veg1 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

cap.veg2=capscale(spp_hell2~.,vegt2,distance = "bray")
mod0.veg2=capscale(spp_hell2~1,vegt2,distance = "bray")
step.veg2=ordistep(mod0.veg2,scope = formula(cap.veg2))
cap2v<-step.veg2$anova %>% mutate(method="Single Micop") 
meta2<- veg2 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

cap.veg3=capscale(spp_hell3~.,vegt3,distance = "bray")
mod0.veg3=capscale(spp_hell3~1,vegt3,distance = "bray")
step.veg3=ordistep(mod0.veg3,scope = formula(cap.veg3))
cap3v<-step.veg3$anova %>% mutate(method="Paired Micop") 
meta3<- veg3 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

cap.veg4=capscale(spp_hell4~.,vegt4,distance = "bray")
mod0.veg4=capscale(spp_hell4~1,vegt4,distance = "bray")
step.veg4=ordistep(mod0.veg4,scope = formula(cap.veg4))
cap4v<-step.veg4$anova %>% mutate(method="Kraken2") 
meta4<- veg4 %>% rownames_to_column(var = "SampleID") %>%  inner_join(metadata)

#horn
cap.veg1_c=capscale(spp_hell1~.,vegt1,distance = "horn")
mod0.veg1_c=capscale(spp_hell1~1,vegt1,distance = "horn")
step.veg1_c=ordistep(mod0.veg1_c,scope = formula(cap.veg1_c))
cap1_vc<-step.veg1_c$anova %>% mutate(method="QIIME2")

cap.veg2_c=capscale(spp_hell2~.,vegt2,distance = "horn")
mod0.veg2_c=capscale(spp_hell2~1,vegt2,distance = "horn")
step.veg2_c=ordistep(mod0.veg2_c,scope = formula(cap.veg2_c))
cap2_vc<-step.veg2_c$anova %>% mutate(method="Single Micop") 

cap.veg3_c=capscale(spp_hell3~.,vegt3,distance = "horn")
mod0.veg3_c=capscale(spp_hell3~1,vegt3,distance = "horn")
step.veg3_c=ordistep(mod0.veg3_c,scope = formula(cap.veg3_c))
cap3_vc<-step.veg3_c$anova %>% mutate(method="Paired Micop") 

cap.veg4_c=capscale(spp_hell4~.,vegt4,distance = "horn")
mod0.veg4_c=capscale(spp_hell4~1,vegt4,distance = "horn")
step.veg4_c=ordistep(mod0.veg4_c,scope = formula(cap.veg4))
cap4_vc<-step.veg4_c$anova %>% mutate(method="Kraken2") 

#selecting using cca (no distance)
vares_cca1_veg <- cca(spp_hell1 ~., data=vegt1)
vegs1<-envfit(vares_cca1_veg ~., data=vegt1)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("QIIME2"=".")

vares_cca2_veg <- cca(spp_hell2 ~., data=vegt2)
vegs2<-envfit(vares_cca2_veg ~., data=vegt2)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("Single Micop"=".")

vares_cca3_veg <- cca(spp_hell3 ~.,data=vegt3)
vegs3<-envfit(vares_cca3_veg ~., data=vegt3)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("Paired Micop"=".")

vares_cca4_veg <- cca(spp_hell4 ~.,data=vegt4)
vegs4<-envfit(vares_cca4_veg ~., data=vegt4)$vectors[["pvals"]]%>% as.data.frame() %>% dplyr::select("Kraken2"=".")

vegs<- cbind(vegs1, vegs2, vegs3, vegs4)
rownames(vegs)
  • Plot vegetaion ccas and caps #CAPS
library(ggvegan)
map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))


#a1
fdat <- ggplot2::fortify(cap.veg1)
map1<- map[match(rownames(spp_hell1), map$SampleID),]
map1_type<- map1 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.veg1, groups = map1$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a1<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.5, CAP2=CAP2*0.5) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
   geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
#  geom_label(
 #   data = y$df_mean.ord,
  #  aes(x = x, y = y, label=Group), 
   # label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a2
fdat <- ggplot2::fortify(cap.veg2)
map2<- map[match(rownames(spp_hell2), map$SampleID),]
map2_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.veg2, groups = map2$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a2<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.6, CAP2=CAP2*0.6) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))

#a3
fdat <- ggplot2::fortify(cap.veg3)
map3<- map[match(rownames(spp_hell3), map$SampleID),]
map3_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.veg3, groups = map3$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a3<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.9, CAP2=CAP2*0.9) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE  )+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a4
fdat <- ggplot2::fortify(cap.veg4)
map4<- map[match(rownames(spp_hell4), map$SampleID),]
map4_type<- map4 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% dplyr::count()

y<-ggordiplots::gg_ordiplot(cap.veg4, groups = map4$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a4<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.5, CAP2=CAP2*.5) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
  geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))




library(cowplot)
as<-plot_grid(a1+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a2+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a3+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a4+theme(aspect.ratio =6.8/10, legend.position = "none"),
              nrow = 2, ncol = 2,  align = "v", rel_widths = c(1,1,1,1),
              label_size = 15,
              labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                         "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)

leg=get_legend(a1)

as2<- plot_grid(as,leg,ncol = 2, rel_widths = c(.93,.07), align = "hv")
## Warning: Graphs cannot be vertically aligned unless the axis parameter is set.
## Placing graphs unaligned.
## Warning: Graphs cannot be horizontally aligned unless the axis parameter is
## set. Placing graphs unaligned.
as2

ggsave("CAP_ggplot_veg.jpg",width = 12, height =8.5, dpi = 300, plot = as2, device = "jpg")
map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))


#a1
fdat <- ggplot2::fortify(cap.veg1_c)
map1<- map[match(rownames(spp_hell1), map$SampleID),]
map1_type<- map1 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.veg1_c, groups = map1$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a1<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.5, CAP2=CAP2*0.5) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4,box.padding = 0.1, label.padding = 0.1 )+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a2
fdat <- ggplot2::fortify(cap.veg2_c)
map2<- map[match(rownames(spp_hell2), map$SampleID),]
map2_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.veg2_c, groups = map2$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a2<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.6, CAP2=CAP2*0.6) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
  #  aes(x = x, y = y, label=Group), 
   # label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))

#a3
fdat <- ggplot2::fortify(cap.veg3_c)
map3<- map[match(rownames(spp_hell3), map$SampleID),]
map3_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(cap.veg3_c, groups = map3$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a3<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.9, CAP2=CAP2*0.9) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 
      0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))


#a4
fdat <- ggplot2::fortify(cap.veg4_c)
map4<- map[match(rownames(spp_hell4), map$SampleID),]
map4_type<- map4 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% dplyr::count()

y<-ggordiplots::gg_ordiplot(cap.veg4_c, groups = map4$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a4<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CAP1=CAP1*0.5, CAP2=CAP2*0.5) ,
    aes(x=CAP1, y=CAP2, label= label),
    color="black", segment.color = NA, size =4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
 # geom_label(
  #  data = y$df_mean.ord,
   # aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CAP2")+xlab("CAP1")+
  theme(axis.text = element_text(size = 12))




library(cowplot)
as<-plot_grid(a1+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a2+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a3+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a4+theme(aspect.ratio =6.8/10, legend.position = "none"),
              nrow = 2, ncol = 2,  align = "v", rel_widths = c(1,1,1,1),
              label_size = 15,
             labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                         "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)

leg=get_legend(a1)

as2<- plot_grid(as,leg,ncol = 2, rel_widths = c(.93,.07), align = "hv")
## Warning: Graphs cannot be vertically aligned unless the axis parameter is set.
## Placing graphs unaligned.
## Warning: Graphs cannot be horizontally aligned unless the axis parameter is
## set. Placing graphs unaligned.
as2

ggsave("CAP_horn_ggplot_veg.jpg",width = 12, height =8.5, dpi = 300, plot = as2, device = "jpg")

#CCAS

library(ggvegan)

map<- read.csv("../Data/coord.csv") %>% mutate_at(
  c(1,2,3,7), as.factor) %>% mutate(SampleID= paste0("P",pol, "S", Sitio,"T", Transecto ))


#a1
fdat <- ggplot2::fortify(vares_cca1_veg)
map1<- map[match(rownames(spp_hell1), map$SampleID),]
map1_type<- map1 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(vares_cca1_veg, groups = map1$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a1<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*1.9, CCA2=CCA2*1.9) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
    #aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))


#a2
fdat <- ggplot2::fortify(vares_cca2_veg)
map2<- map[match(rownames(spp_hell2), map$SampleID),]
map2_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(vares_cca2_veg, groups = map2$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a2<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*0.6, CCA2=CCA2*0.6) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size=4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
    #aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))

#a3
fdat <- ggplot2::fortify(vares_cca3_veg)
map3<- map[match(rownames(spp_hell3), map$SampleID),]
map3_type<- map2 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% count()

y<-ggordiplots::gg_ordiplot(vares_cca3_veg, groups = map3$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a3<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*0.9, CCA2=CCA2*0.9) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size=4,box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
    #aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))


#a4
fdat <- ggplot2::fortify(vares_cca4_veg)
map4<- map[match(rownames(spp_hell4), map$SampleID),]
map4_type<- map4 %>% dplyr::select(Site, Type) %>% group_by(Site, Type) %>% dplyr::count()

y<-ggordiplots::gg_ordiplot(vares_cca4_veg, groups = map4$Site, ellipse =  F, 
                            spiders = T, hull = F, plot = F, pt.size = 3.5 )
z <- y$plot
a4<-z+theme_linedraw()+
  geom_vline(xintercept = 0, linetype = 2) +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2) +
  theme_linedraw()+
  scale_color_viridis_d(option ="turbo" )+#color of points +
  ggrepel::geom_label_repel(data = fdat %>% filter(
    score=="biplot") %>%  
      mutate(CCA1=CCA1*0.1, CCA2=CCA2*0.1) ,
    aes(x=CCA1, y=CCA2, label= label),
    color="black", segment.color = NA, size =4, box.padding = 0.1, label.padding = 0.1)+
  theme_linedraw() +
  theme(axis.text = element_text(colour = "black", size = 5),
        axis.title = element_text(colour = "black", size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10), 
        legend.position = "right", 
        legend.box = "vertical",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())+
 geom_vline(xintercept = 0, linetype = 2, color="#88929b") +   #lines-cross
  geom_hline(yintercept = 0, linetype = 2, color="#88929b") +
  #geom_label(
   # data = y$df_mean.ord,
    #aes(x = x, y = y, label=Group), 
    #label.padding = unit(0.15, "lines"),label.size = 0.5,
    #size=5,   check_overlap = TRUE
  #)+
  guides(
    color=guide_legend(title="Sites"))+#ylab("CCA2")+xlab("CCA1")+
  theme(axis.text = element_text(size = 12))




as<-plot_grid(a1+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a2+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a3+theme(aspect.ratio =6.8/10, legend.position = "none"),
              a4+theme(aspect.ratio =6.8/10, legend.position = "none"),
              nrow = 2, ncol = 2,  align = "v", rel_widths = c(1,1,1,1),
              label_size = 15,
         labels = c("A) GENEIOUS+UNITE", "B) SINGLE MICOP",
                         "C) PAIRED MICOP", "D) KRAKEN2"),hjust = 0)

leg=get_legend(a1)

as2<- plot_grid(as,leg,ncol = 2, rel_widths = c(.93,.07), align = "hv")
as2

ggsave("Figure8_cca_ggplot_veg.pdf",width = 12, height =8.5, dpi = 300, plot = as2, device = "pdf")