### PACKAGES

library(MASS)
library(ggplot2)
library(PerformanceAnalytics)
library(MuMIn)
library(lsmeans)
library(vegan)
library(effects)
library(grid)
library(nnet)
library(lmerTest)
library("lsr")
library(lsr)
library(extrafont)
library(heplots)
library(ltm)
library(DescTools)
library(sjstats)
library(segmented)
library(car)
library(dbstats)
library(betapart)
library(tidyr)
library(otuSummary)
library(raster)
library(ape)
library(pgirmess)
library(igraph)
library(rgl)
library(picante)
library(plyr)
library(lmtest)
library(ZIM)
library(pscl)
require(lattice)

### DATA

data1<-read.table(file="Tarzan(r)_2019.csv",sep=";",header=T,dec=",")
attach(data1)
data1

summary(data1)

### SPECIES COMPOSITION - ALL SPECIES

commu<-read.table("commu_TOT.txt",h=T)
commu1 <- decostand(commu, "total", MARGIN = 1)
commu2 <- log1p(commu1)
commu_matrix<-vegdist(commu2, method="bray")
summary(commu_matrix)
sd(commu_matrix)

PCOA2 <- capscale(commu_matrix ~1, distance="bray")

plot(PCOA2, type="t")

vegan::scores(PCOA2, display="sites")
summary(PCOA2)

DIMS <- as.data.frame(vegan::scores(PCOA2, display="sites"))
head(DIMS)

hist(DIMS[,1])
hist(DIMS[,2])

data1<-cbind(data1, DIMS)
rownames(data1) <- NULL
data1 <- data.frame(data1)
head(data1, 5)
attach(data1)

### SPATIAL AUTOCORRELATION - MORAN'S I - ALL SPECIES - MDS1

dist <- as.matrix(dist(cbind(data1$long, data1$lat)))
dist.inv <- 1/dist
diag(dist.inv) <- 0
dist.inv[is.infinite(dist.inv)] <- 0
dist.inv[1:69, 1:69]

coords<-cbind(data1$long, data1$lat)
res<-correlog(coords,data1$MDS1)
res
plot(res)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

pgi.cor <- correlog(coords, data1$MDS1, method="Moran")
plot(pgi.cor)

summary(pgi.cor)

### SPATIAL AUTOCORRELATION - MORAN'S I - ALL SPECIES - MDS2

coords<-cbind(data1$long, data1$lat)
res<-correlog(coords,data1$MDS2)
res
plot(res)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

pgi.cor <- correlog(coords, data1$MDS2, method="Moran")
plot(pgi.cor)

### SPECIES COMPOSITION - TROGLOBITES

commu<-read.table("commu_TRO.txt",h=T)
commu<-commu[apply(commu[,-1], 1, function(x) !all(x==0)),]
commu1 <- decostand(commu, "total", MARGIN = 1)
commu2 <- log1p(commu1)
commu_matrix<-vegdist(commu2, method="bray")
summary(commu_matrix)

PCOA2 <- capscale(commu_matrix ~1, distance="bray")

plot(PCOA2, type="t")

vegan::scores(PCOA2, display="sites")

DIMS <- as.data.frame(vegan::scores(PCOA2, display="sites"))

head(DIMS)

hist(DIMS[,1])
hist(DIMS[,2])

data1
data2<-data1[data1$S.tr. != 0, ]
data2
names(data2)[names(data2) == "MDS1"] <- "OLD_MDS1"
names(data2)[names(data2) == "MDS2"] <- "OLD_MDS2"
data2
data2<-cbind(data2, DIMS)
rownames(data2) <- NULL
data2 <- data.frame(data2)
data2
attach(data2)

### SPATIAL AUTOCORRELATION - MORAN'S I - TROGLOBITES - MDS1

dist <- as.matrix(dist(cbind(data2$long, data2$lat)))
dist.inv <- 1/dist
diag(dist.inv) <- 0
dist.inv[is.infinite(dist.inv)] <- 0
dist.inv[1:54, 1:54]

coords<-cbind(data2$long, data2$lat)
res<-correlog(coords,data2$MDS1)
res
plot(res)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

pgi.cor <- correlog(coords, data2$MDS1, method="Moran")
plot(pgi.cor)

summary(pgi.cor)

### SPATIAL AUTOCORRELATION - MORAN'S I - TROGLOBITES - MDS2

coords<-cbind(data2$long, data2$lat)
res<-correlog(coords,data2$MDS2)
res
plot(res)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

pgi.cor <- correlog(coords, data2$MDS2, method="Moran")
plot(pgi.cor)

summary(pgi.cor)

### PHYLOGENETIC DISTANCE (MPD) - ALL SPECIES

taxonG<-read.table("taxon_in.txt",h=T)
taxdisG<-taxa2dist(taxonG, varstep=TRUE)
plot(hclust(taxdisG), hang = -1)

comm<-read.table(file="commu_in.txt",header=T)

PhyloDistGeral<-comdist(comm, taxdisG, abundance.weighted=FALSE)
mean(PhyloDistGeral)

PhyloG<-as.data.frame(as.matrix(PhyloDistGeral))
PhyloG[upper.tri(PhyloG)] <- "NA"
PhyloG[upper.tri(PhyloG,diag=TRUE)] <- "NA"
write.table(PhyloG, file="PhyloG_Matrix.txt", row.names=T, col.names=T, sep = "\t")

hc1<-hclust(taxdisG)
plot(as.dendrogram(hc1), cex = 0.6, horiz=T)
plot(as.phylo(hc1), type = "fan")

library(dendextend)
library(circlize)

dend <- as.dendrogram(hc1)

num_clades <- 9

dend <- dend %>% 
  color_branches(k=num_clades, col=rainbow) %>% 
  color_labels(k=num_clades, col=rainbow) %>% 
  set("leaves_pch", 19) %>% 
  set("leaves_cex", 0.7) %>% set("leaves_col", "gray80") %>% 
set("leaves_pch", 19)  %>% 
set("nodes_cex", 0.3)

par(mar = rep(0, 4))
circlize_dendrogram(dend, dend_track_height = 0.8, labels = FALSE) 

### PHYLOGENETIC DISTANCE (MPD) - PROXIES - ALL SPECIES

PCOA4 <- capscale(PhyloDistGeral ~1, distance="euclidean")
summary(PCOA4)

plot(PCOA4, type="t")

vegan::scores(PCOA4, display="sites")

DIMS4 <- as.data.frame(vegan::scores(PCOA4, display="sites"))

head(DIMS4)

data1
names(data1)[names(data1) == "MDS1"] <- "TRO_MDS1"
names(data1)[names(data1) == "MDS2"] <- "TRO_MDS2"
data1
data11<-cbind(data1, DIMS4)
rownames(data11) <- NULL
data11 <- data.frame(data11)
data11
attach(data11)

### SPATIAL AUTOCORRELATION - MORAN'S I - PHYLOGENETIC DISTANCE (MPD) - MDS1

coords<-cbind(data11$long, data11$lat)
res<-correlog(coords,data11$MDS1)
res
plot(res)

pgi.cor <- correlog(coords, data11$MDS1, method="Moran")
plot(pgi.cor)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

### SPATIAL AUTOCORRELATION - MORAN'S I - PHYLOGENETIC DISTANCE (MPD) - MDS2

coords<-cbind(data11$long, data11$lat)
res<-correlog(coords,data11$MDS2)
res
plot(res)

pgi.cor <- correlog(coords, data11$MDS2, method="Moran")
plot(pgi.cor)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

### PHYLOGENETIC DISTANCE (MPD) - TROGLOBITES

taxon<-read.table("taxon_in_TRO.txt",h=T)
taxdis<-taxa2dist(taxon, varstep=TRUE)
plot(hclust(taxdis), hang = -1)

hc<-hclust(taxdis)
plot(as.dendrogram(hc), cex = 0.6, horiz=T)
plot(as.phylo(hc), type = "fan")

colors = c("red", "blue", "green", "yellow", "orange")
clus4 = cutree(hc, 4)
plot(as.phylo(hc), type = "fan", tip.color = colors[clus4],
     label.offset = 1, cex = 0.7, edge.width = 1.5, edge.color = "black")

dend2 <- as.dendrogram(hc)

num_clades2 <- 4

dend2 <- dend2 %>% 
  color_branches(k=num_clades2, col=rainbow) %>% 
  color_labels(k=num_clades2, col=rainbow) %>% 
  set("leaves_pch", 19) %>% 
  set("leaves_cex", 0.7) %>% set("leaves_col", "gray80") %>% 
set("leaves_pch", 19)  %>% 
set("nodes_cex", 1)  %>%
set("branches_lwd", 3)

par(mar = rep(0, 4))
circlize_dendrogram(dend2, dend_track_height = 0.8, labels = T) 

commu

PhyloDist<-comdist(commu, taxdis, abundance.weighted=FALSE)
mean(PhyloDist)

### PHYLOGENETIC DISTANCE (MPD) - PROXIES - TROGLOBITES

PCOA3 <- capscale(PhyloDist ~1, distance="euclidean")

plot(PCOA3, type="t")

vegan::scores(PCOA3, display="sites")

DIMS3 <- as.data.frame(vegan::scores(PCOA3, display="sites"))

head(DIMS3)

hist(DIMS3[,1])
hist(DIMS3[,2])

data2
names(data2)[names(data2) == "MDS1"] <- "C_TRO_MDS1"
names(data2)[names(data2) == "MDS2"] <- "C_TRO_MDS2"
data2
data10<-cbind(data2, DIMS3)
rownames(data10) <- NULL
data10 <- data.frame(data10)
data10
attach(data10)

### SPATIAL AUTOCORRELATION - MORAN'S I - PHYLOGENETIC DISTANCE (MPD) - TROGLOBITES - MDS1

coords<-cbind(data10$long, data10$lat)
res<-correlog(coords,data10$MDS1)
res
plot(res)

pgi.cor <- correlog(coords, data10$MDS1, method="Moran")
plot(pgi.cor)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

### SPATIAL AUTOCORRELATION - MORAN'S I - PHYLOGENETIC DISTANCE (MPD) - TROGLOBITES - MDS2

coords<-cbind(data10$long, data10$lat)
res<-correlog(coords,data10$MDS2)
res
plot(res)

pgi.cor <- correlog(coords, data10$MDS2, method="Moran")
plot(pgi.cor)

a<-data.frame(res)
a$dist.class <- (a$dist.class*550)/0.005
a

##########################################################################################################################################
NOW, WE RUN DISTLM MODELS IN "PRIMER & PERMANOVA 7" TO DETERMINE SIGNIFICANT PREDICTORS FOR EACH SIMILARITY APPROACH
##########################################################################################################################################
THEN WE APPLY PIECEWISE REGRESSION ANALYSIS ON THE SIGNIFICANT VARIABLES IDENTIFIED BY DISTLM MODELS TO DETECT TRENd CHANGES (BREAKPOINTS)
##########################################################################################################################################

### THRESHOLDS - SPECIES COMPOSITION AND PHYLOGENETIC DISTANCE - ALL SPECIES 

# Significant predictor for species composition (DistLM): Hydric features, Forest cover, Minimum humidity, Scarp height, Mean temperature
# Significant predictor for phylogenetic distance (MPD) (DistLM): Distance, Area, Minimum humidity

# First, we transform all data from significant predictors to pairwise matrix among caves

HZ1<-as.data.frame.matrix(table(data1$Caves,data1$Wt))
HZ1<-HZ1[rowSums(HZ1)!=0, ] 
H.MX1 <- as.matrix(dist(HZ1$Perennial))
colnames(H.MX1) <- rownames(H.MX1) <- data1[['Caves']]

ForC.MX1 <- as.matrix(dist(data1$ForC))
colnames(ForC.MX1) <- rownames(ForC.MX1) <- data1[['Caves']]

MinH.MX1 <- as.matrix(dist(data1$MinH))
colnames(MinH.MX1) <- rownames(MinH.MX1) <- data1[['Caves']]

Esc.MX1 <- as.matrix(dist(data1$Esc))
colnames(Esc.MX1) <- rownames(Esc.MX1) <- data1[['Caves']]

Tavg.MX1 <- as.matrix(dist(data1$Tavg))
colnames(Tavg.MX1) <- rownames(Tavg.MX1) <- data1[['Caves']]

dist.MX1 <- as.matrix(dist(cbind(data1$UTM_E, data1$UTM_N)))
colnames(dist.MX1) <- rownames(dist.MX1) <- data1[['Caves']]

MaxH.MX1 <- as.matrix(dist(data1$MaxH))
colnames(MaxH.MX1) <- rownames(MaxH.MX1) <- data1[['Caves']]

Area.MX1 <- as.matrix(dist(data1$Area))
colnames(Area.MX1) <- rownames(Area.MX1) <- data1[['Caves']]

Gran.MX1 <- as.matrix(dist(data1$Gran2))
colnames(Gran.MX1) <- rownames(Gran.MX1) <- data1[['Caves']]

BatG.MX1 <- as.matrix(dist(data1$BatG))
colnames(BatG.MX1) <- rownames(BatG.MX1) <- data1[['Caves']]

Alt.MX1 <- as.matrix(dist(data1$Alt))
colnames(Alt.MX1) <- rownames(Alt.MX1) <- data1[['Caves']]

H.C1<-matrixConvert(H.MX1, colname = c("Caves1", "Caves2", "Wt"))
ForC.C1<-matrixConvert(ForC.MX1, colname = c("Caves1", "Caves2", "ForC"))
MinH.C1<-matrixConvert(MinH.MX1, colname = c("Caves1", "Caves2", "MinH"))
Esc.C1<-matrixConvert(Esc.MX1, colname = c("Caves1", "Caves2", "Esc"))
Tavg.C1<-matrixConvert(Tavg.MX1, colname = c("Caves1", "Caves2", "Tavg"))
dist.C1<-matrixConvert(dist.MX1, colname = c("Caves1", "Caves2", "Dist"))
MaxH.C1<-matrixConvert(MaxH.MX1, colname = c("Caves1", "Caves2", "MaxH"))
Area.C1<-matrixConvert(Area.MX1, colname = c("Caves1", "Caves2", "Area"))
BatG.C1<-matrixConvert(BatG.MX1, colname = c("Caves1", "Caves2", "BatG"))
Gran.C1<-matrixConvert(Gran.MX1, colname = c("Caves1", "Caves2", "Gran"))
Alt.C1<-matrixConvert(Alt.MX1, colname = c("Caves1", "Caves2", "Alt"))

commuG<-read.table("commu_TOT.txt",h=T)
commu1 <- decostand(commuG, "total", MARGIN = 1)
commu2 <- log1p(commu1)
commu_matrixG<-vegdist(commu2, method="bray")
summary(commu_matrixG)

commu_matrixG
commu_matrixG1<-abs(commu_matrixG-1)
commu_matrixG1

SIMI.G<-matrixConvert(commu_matrixG1, colname = c("Caves1", "Caves2", "SIMI"))
PHYLO.G<-matrixConvert(PhyloDistGeral, colname = c("Caves1", "Caves2", "PHYLO"))

data12<-data.frame(From=dist.C1$Caves1, To=dist.C1$Caves2, SIMI.G=SIMI.G$SIMI, PHYLO.G=PHYLO.G$PHYLO, Area=Area.C1$Area, MinH=MinH.C1$MinH, Esc=Esc.C1$Esc, MaxH=MaxH.C1$MaxH, Dist=dist.C1$Dist, Tavg=Tavg.C1$Tavg, ForC=ForC.C1$ForC, Wt=H.C1$Wt)
data12$Wt[data12$Wt == 0] <- "TRUE"
data12$Wt[data12$Wt == 1] <- "FALSE"
data12<-as.data.frame(unclass(data12))
head(data12,5)
summary(data12)
nrow(data12)
attach(data12)

# Then, we proceed to the piecewise regressions

# SIMILARITY (ALL SPECIES) vs. FOREST COVER

m3<-glm(SIMI.G~ForC,data=data12)
summary(m3)

mod.regr(data12$ForC,data12$SIMI.G,nomex="Forest cover",nomey="Simi.G", AICc=TRUE) #load function file avaiable in the folder: "function.aic.segmented1"

seg.mod2 <- segmented(m3, seg.Z = ~ForC, psi=10.670, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = ForC, y = data12$SIMI.G)
attach(dati)
dat2 = data.frame(x = ForC, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Forest cover")+scale_y_continuous("Simi.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 0.7)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=0.7), axis.title.y = element_text(color="black", size=0.7))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=0.7), axis.text.y = element_text(size=0.7))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# SIMILARITY (ALL SPECIES) vs. MINIMUM HUMIDITY

m3<-glm(SIMI.G~MinH,data=data12)
summary(m3)

mod.regr(data12$MinH,data12$SIMI.G,nomex="MinH",nomey="Simi.G", AICc=TRUE)

seg.mod2 <- segmented(m3, seg.Z = ~MinH, psi=20, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = MinH, y = data12$SIMI.G)
attach(dati)
dat2 = data.frame(x = MinH, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("MinH")+scale_y_continuous("Simi.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# SIMILARITY (ALL SPECIES) vs. SCARP HEIGHT

m3<-glm(SIMI.G~Esc,data=data12)
summary(m3)

mod.regr(data12$Esc,data12$SIMI.G,nomex="Scarp height",nomey="Simi.G", AICc=TRUE)

seg.mod2 <- segmented(m3, seg.Z = ~Esc, psi=11, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = Esc, y = data12$SIMI.G)
attach(dati)
dat2 = data.frame(x = Esc, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Scarp height")+scale_y_continuous("Simi.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# SIMILARITY (ALL SPECIES) vs. MEAN TEMPERATURA (SURFACE)

m3<-glm(SIMI.G~Tavg,data=data12)
summary(m3)

mod.regr(data12$Tavg,data12$SIMI.G,nomex="Tavg",nomey="Simi.G", AICc=TRUE)

seg.mod2 <- segmented(m3, seg.Z = ~Tavg, psi=0.308, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = Tavg, y = data12$SIMI.G)
attach(dati)
dat2 = data.frame(x = Tavg, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Mean Temperature")+scale_y_continuous("Simi.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# SIMILARITY (ALL SPECIES) vs. HYDRIC FEATURES

comppar <- interaction(data12$Wt, drop=TRUE)
mc1 <- glm(data12$SIMI.G~comppar)
require(multcomp)
contraste.mc1 <- glht(mc1, mcp(comppar = "Tukey"))
summary(contraste.mc1)

a <- subset(data12, Wt == "TRUE", select = c(SIMI.G))
b <- subset(data12, Wt == "FALSE", select = c(SIMI.G))

group <- factor(rep(0:1, c(1858, 488)))

vetores1 <- data.frame(a)
vetora <- as.vector(vetores1$SIMI.G)
vetores2 <- data.frame(b)
vetorb <- as.vector(vetores2$SIMI.G)

mydata <- data.frame(c(vetora,vetorb), group)
names(mydata) <- c("value", "group")

d1 <- min(ciMean(data12$SIMI.G, conf = 0.95, na.rm = FALSE), na.rm=T)
d2 <- max(ciMean(data12$SIMI.G, conf = 0.95, na.rm = FALSE), na.rm=T)

min.mean.sd.max <- function(x) {
  r <- c(mean(x) - sd(x), min(ciMean(x)), mean(x), max(ciMean(x)), mean(x) + sd(x))
  names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
  r
}

p1 <- ggplot(aes(y = value, x = factor(group)), data = mydata)
p1 <- p1 + geom_jitter(position=position_jitter(width=.2), size=0.7, col = "#FFB6C1", bg = "#FFB6C1", alpha = 0.1) + stat_summary(fun.data = min.mean.sd.max, geom = "boxplot", fill = "deepskyblue",  alpha = 0.6, lwd = 0.1) + 
theme_classic()+ xlab("Hydric features") + ylab("SIMI.G")
p1

# PHYLOGENETIC DISTANCE (ALL SPECIES) vs. DISTANCE

m3<-glm(PHYLO.G~Dist,data=data12)
summary(m3)

mod.regr(data12$Dist,data12$PHYLO.G,nomex="Dist",nomey="PHYLO.G", AICc=TRUE)

seg.mod2 <- segmented(m3, seg.Z = ~Dist, psi=4115.709, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = Dist, y = data12$PHYLO.G)
attach(dati)
dat2 = data.frame(x = Dist, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Distance")+scale_y_continuous("PHYLO.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (ALL SPECIES) vs. AREA

m3<-glm(PHYLO.G~Area,data=data12)
summary(m3)

mod.regr(data12$Area,data12$PHYLO.G,nomex="Area",nomey="PHYLO.G", AICc=TRUE)

seg.mod2 <- segmented(m3, seg.Z = ~Area, psi=97.880, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = Area, y = data12$PHYLO.G)
attach(dati)
dat2 = data.frame(x = Area, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Area")+scale_y_continuous("PHYLO.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (ALL SPECIES) vs. MINIMUM HUMIDITY

m3<-glm(PHYLO.G~MinH,data=data12)
summary(m3)

mod.regr(data12$MinH,data12$PHYLO.G,nomex="MinH",nomey="PHYLO.G", AICc=TRUE)

seg.mod2 <- segmented(m3, seg.Z = ~MinH, psi=16.000, data=data12)
summary(seg.mod2)

model.sel(m3, seg.mod2)

dati <- data.frame(data12, x = MinH, y = data12$PHYLO.G)
attach(dati)
dat2 = data.frame(x = MinH, y = seg.mod2$fit)

br=seg.mod2$psi[2]
br1=seg.mod2$psi[2]+seg.mod2$psi[3]
br2=seg.mod2$psi[2]-seg.mod2$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("MinH")+scale_y_continuous("PHYLO.G")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

### THRESHOLDS - SPECIES COMPOSITION AND PHYLOGENETIC DISTANCE - TROGLOBITES 

# Significant predictor for species composition (DistLM): Distance, Scarp height, Maximum humidity
# Significant predictor for phylogenetic distance (MPD) (DistLM): Area, Granulometry, Mean temperature, Bat guano, Maximum humidity, Altitude, Scarp height, Hydric features

commu_matrix
commu_matrix4<-abs(commu_matrix-1)
commu_matrix4

SIMI<-matrixConvert(commu_matrix4, colname = c("Caves1", "Caves2", "SIMI"))
PhyloDist.C<-matrixConvert(PhyloDist, colname = c("Caves1", "Caves2", "PhyloDist"))

dist.MX <- as.matrix(dist(cbind(data2$UTM_E, data2$UTM_N)))
dist.C<-matrixConvert(dist.MX, colname = c("Caves1", "Caves2", "Dist"))

STR.MX <- as.matrix(dist(data2$S.tr.), labels=TRUE)
colnames(STR.MX) <- rownames(STR.MX) <- data2[['Caves']]

Area.MX <- as.matrix(dist(data2$Area))
colnames(Area.MX) <- rownames(Area.MX) <- data2[['Caves']]

BatG.MX <- as.matrix(dist(data2$BatG))
colnames(BatG.MX) <- rownames(BatG.MX) <- data2[['Caves']]

FZ.MX <- dist(table(data2$Caves,data2$FzC), method = "binary")

Alt.MX <- as.matrix(dist(data2$Alt))
colnames(Alt.MX) <- rownames(Alt.MX) <- data2[['Caves']]

MinH.MX <- as.matrix(dist(data2$MinH))
colnames(MinH.MX) <- rownames(MinH.MX) <- data2[['Caves']]

Esc.MX <- as.matrix(dist(data2$Esc))
colnames(Esc.MX) <- rownames(Esc.MX) <- data2[['Caves']]

MaxH.MX <- as.matrix(dist(data2$MaxH))
colnames(MaxH.MX) <- rownames(MaxH.MX) <- data2[['Caves']]

dist.MX <- as.matrix(dist(cbind(data2$UTM_E, data2$UTM_N)))
colnames(dist.MX) <- rownames(dist.MX) <- data2[['Caves']]

Dpt.MX <- as.matrix(dist(data2$Dpt))
colnames(Dpt.MX) <- rownames(Dpt.MX) <- data2[['Caves']]

MaxT.MX <- as.matrix(dist(data2$MaxT))
colnames(MaxT.MX) <- rownames(MaxT.MX) <- data2[['Caves']]

Tavg.MX <- as.matrix(dist(data2$Tavg))
colnames(Tavg.MX) <- rownames(Tavg.MX) <- data2[['Caves']]

ForC.MX <- as.matrix(dist(data2$ForC))
colnames(ForC.MX) <- rownames(ForC.MX) <- data2[['Caves']]

Smf.MX <- as.matrix(dist(data2$Smf))
colnames(Smf.MX) <- rownames(Smf.MX) <- data2[['Caves']]

Gran.MX <- as.matrix(dist(data2$Gran2))
colnames(Gran.MX) <- rownames(Gran.MX) <- data2[['Caves']]

Srad.MX <- as.matrix(dist(data2$Srad))
colnames(Srad.MX) <- rownames(Srad.MX) <- data2[['Caves']]

FZZ<-as.data.frame.matrix(table(data2$Caves,data2$FzC))
FZZ<-FZZ[rowSums(FZZ)!=0, ] 
FZ.MX <- as.matrix(dist(FZZ$Present))
colnames(FZ.MX) <- rownames(FZ.MX) <- data2[['Caves']]

HZ<-as.data.frame.matrix(table(data2$Caves,data2$Wt))
HZ<-HZ[rowSums(HZ)!=0, ] 
H.MX <- as.matrix(dist(HZ$Perennial))
colnames(H.MX) <- rownames(H.MX) <- data2[['Caves']]

PZ<-as.data.frame.matrix(table(data2$Caves,data2$Plan))
PZ<-PZ[rowSums(PZ)!=0, ] 
Plan.MX <- as.matrix(dist(cbind(PZ$SC_Fn,PZ$SC_Bf,PZ$CC_Ms,PZ$SC_Cv,PZ$SC_Ms, PZ$CC_Sp, PZ$CC_Mx, PZ$SC_Rc, PZ$SC_Rt, PZ$SC_Sc)))
colnames(Plan.MX) <- rownames(Plan.MX) <- data2[['Caves']]

Area.C<-matrixConvert(Area.MX, colname = c("Caves1", "Caves2", "Area"))
BatG.C<-matrixConvert(BatG.MX, colname = c("Caves1", "Caves2", "BatG"))
Alt.C<-matrixConvert(Alt.MX, colname = c("Caves1", "Caves2", "Alt"))
MinH.C<-matrixConvert(MinH.MX, colname = c("Caves1", "Caves2", "MinH"))
Esc.C<-matrixConvert(Esc.MX, colname = c("Caves1", "Caves2", "Esc"))
MaxH.C<-matrixConvert(MaxH.MX, colname = c("Caves1", "Caves2", "MaxH"))
dist.C<-matrixConvert(dist.MX, colname = c("Caves1", "Caves2", "Dist"))
Dpt.C<-matrixConvert(Dpt.MX, colname = c("Caves1", "Caves2", "Dpt"))
MaxT.C<-matrixConvert(MaxT.MX, colname = c("Caves1", "Caves2", "MaxT"))
Tavg.C<-matrixConvert(Tavg.MX, colname = c("Caves1", "Caves2", "Tavg"))
Smf.C<-matrixConvert(Smf.MX, colname = c("Caves1", "Caves2", "Smf"))
ForC.C<-matrixConvert(ForC.MX, colname = c("Caves1", "Caves2", "ForC"))
Gran.C<-matrixConvert(Gran.MX, colname = c("Caves1", "Caves2", "Gran"))
FZ.C<-matrixConvert(FZ.MX, colname = c("Caves1", "Caves2", "FzC"))
H.C<-matrixConvert(H.MX, colname = c("Caves1", "Caves2", "Wt"))
Plan.C<-matrixConvert(Plan.MX, colname = c("Caves1", "Caves2", "Plan"))
Srad.C<-matrixConvert(Srad.MX, colname = c("Caves1", "Caves2", "Srad"))

SIMI.C<-matrixConvert(commu_matrix4, colname = c("Caves1", "Caves2", "SIMI"))
STR.C<-matrixConvert(STR.MX, colname = c("Caves1", "Caves2", "STR"))

data3<-cbind(SIMI=SIMI.C$SIMI, STR=STR.C$STR, Area=Area.C$Area, BatG=BatG.C$BatG, Alt=Alt.C$Alt, MinH=MinH.C$MinH, Esc=Esc.C$Esc, MaxH=MaxH.C$MaxH, Dist=dist.C$Dist, Dpt=Dpt.C$Dpt, MaxT=MaxT.C$MaxT, Tavg=Tavg.C$Tavg, ForC=ForC.C$ForC, Smf=Smf.C$Smf, Gran=Gran.C$Gran, FzC=FZ.C$FzC, Wt=H.C$Wt, Plan=Plan.C$Plan, Srad=Srad.C$Srad)
data3<-data.frame(data3)
data3$FzC[data3$FzC == 0] <- "TRUE"
data3$FzC[data3$FzC == 1] <- "FALSE"
data3$Wt[data3$Wt == 0] <- "TRUE"
data3$Wt[data3$Wt == 1] <- "FALSE"
data3$Plan[data3$Plan == 0] <- "TRUE"
data3$Plan[data3$Plan == 1.4142135623731] <- "FALSE"
data3<-as.data.frame(unclass(data3))
head(data3,5)
summary(data3)
nrow(data3)
attach(data3)

# SIMILARITY - SPECIES COMPOSITION (TROGLOBITES) vs. DISTANCE

m4<-glm(SIMI~Dist,data=data3)
summary(m4)

mod.regr(Dist,data3$SIMI,nomex="Dist ncia",nomey="Similarity_Troglobite", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Dist, psi=4548.583, data=data3)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data3, x = Dist, y = data3$SIMI)
attach(dati)
dat2 = data.frame(x = Dist, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Distance")+scale_y_continuous("Similarity_Troglobites")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# SIMILARITY - SPECIES COMPOSITION (TROGLOBITES) vs. SCARP HEIGHT

m4<-glm(SIMI~Esc,data=data3)

mod.regr(data3$Esc,data3$SIMI,nomex="Esc",nomey="Similarity_Troglobite", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Esc, psi=6.500, data=data3)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data3, x = data3$Esc, y = data3$SIMI)
attach(dati)
dat2 = data.frame(x = data3$Esc, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Scarp Height")+scale_y_continuous("Similarity_Troglobite")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# SIMILARITY - SPECIES COMPOSITION (TROGLOBITES) vs. MAXIMUM HUMIDITY

m4<-glm(SIMI~MaxH,data=data3)
summary(m4)

mod.regr(data3$MaxH,data3$SIMI,nomex="MaxH",nomey="Similarity_Troglobite", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~MaxH, psi=1, data=data3)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data3, x = MaxH, y = data3$SIMI)
attach(dati)
dat2 = data.frame(x = MaxH, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Maximum humidity")+scale_y_continuous("Similarity_Troglobite")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE THRESHOLDS

data9<-data.frame(From=PhyloDist.C$Caves1, To=PhyloDist.C$Caves2, PhyloDist=PhyloDist.C$PhyloDist, Dist=dist.C$Dist,Area=Area.C$Area,BatG=BatG.C$BatG,Tavg=Tavg.C$Tavg,MaxH=MaxH.C$MaxH,Alt=Alt.C$Alt,Esc=Esc.C$Esc,Gran=Gran.C$Gran,Wt=H.C$Wt)
data9$Wt[data9$Wt == 0] <- "TRUE"
data9$Wt[data9$Wt == 1] <- "FALSE"
head(data9, 4)
data9<-as.data.frame(unclass(data9))
summary(data9)

hist(data9$PhyloDist)
count(data9$PhyloDist)
shapiro.test(data9$PhyloDist)

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. DISTANCE

m4<-glm(PhyloDist~Dist,data=data9)
summary(m4)

mod.regr(data9$Dist,data9$PhyloDist,nomex="Dist",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Dist, psi=1609.952, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = Dist, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = Dist, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=1, col = "#FF230044", bg = "#FF230044")+geom_line(data = dat2, color = 'tomato',  lwd=0.8)
gmod1<-gmod1+scale_x_continuous("Distance")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. CAVE AREA

m4<-glm(PhyloDist~Area,data=data9)
summary(m4)

mod.regr(data9$Area,data9$PhyloDist,nomex="Area",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Area, psi=66.59, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = Area, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = Area, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Area")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. MEAN TEMPERATURE (SURFACE)

m4<-glm(PhyloDist~Tavg,data=data9)
summary(m4)

mod.regr(data9$Tavg,data9$PhyloDist,nomex="Tavg",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Tavg, psi=0.567, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = Tavg, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = Tavg, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Tavg")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. BAT GUANO (SQUARE METERS)

m4<-glm(PhyloDist~BatG,data=data9)
summary(m4)

mod.regr(data9$BatG,data9$PhyloDist,nomex="BatG",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~BatG, psi=0.070, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = BatG, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = BatG, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Bat Guano (m2)")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. MAXIMUM HUMIDITY

m4<-glm(PhyloDist~MaxH,data=data9)
summary(m4)

mod.regr(data9$MaxH,data9$PhyloDist,nomex="MaxH",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~MaxH, psi=6.000, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = MaxH, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = MaxH, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Maximum humidity")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. ALTITUDE

m4<-glm(PhyloDist~Alt,data=data9)
summary(m4)

mod.regr(data9$Alt,data9$PhyloDist,nomex="Alt",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Alt, psi=108.000, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = Alt, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = Alt, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Altitude")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. SCARP HEIGHT

m4<-glm(PhyloDist~Esc,data=data9)
summary(m4)

mod.regr(data9$Esc,data9$PhyloDist,nomex="Esc",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Esc, psi=6.500, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = Esc, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = Esc, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Scarp height")+scale_y_continuous("Phylogenetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. GRANULOMETRY

m4<-glm(PhyloDist~Gran,data=data9)
summary(m4)

mod.regr(data9$Gran,data9$PhyloDist,nomex="Gran",nomey="Phylo", AICc=TRUE)

seg.mod1 <- segmented(m4, seg.Z = ~Gran, psi=2, data=data9)
summary(seg.mod1)

model.sel(m4, seg.mod1)

dati <- data.frame(data9, x = Gran, y = data9$PhyloDist)
attach(dati)
dat2 = data.frame(x = Gran, y = seg.mod1$fit)

br=seg.mod1$psi[2]
br1=seg.mod1$psi[2]+seg.mod1$psi[3]
br2=seg.mod1$psi[2]-seg.mod1$psi[3]
interval <- data.frame(xmin=br2, xmax=br1, ymin=-Inf, ymax=Inf)

gmod1<-ggplot(dati, aes(x = x, y = y))+geom_point(size=0.7, col = "#FFB6C1", alpha=0.4, bg = "#CD8C95")+geom_line(data = dat2, color = 'tomato2',  lwd=1)
gmod1<-gmod1+scale_x_continuous("Granulometry")+scale_y_continuous("Phylognetic distance")+theme(axis.line = element_line(colour = "black")+theme_set(theme_gray(base_size = 8)))
gmod1<-gmod1+geom_vline(xintercept = br, linetype = "longdash", col = "blue")
gmod1<-gmod1+theme(axis.title.x = element_text(color="black", size=8), axis.title.y = element_text(color="black", size=8))
gmod1<-gmod1 + theme(axis.text.x = element_text(size=8), axis.text.y = element_text(size=8))
gmod1<-gmod1+theme_classic()
gmod1<-gmod1+ theme(axis.line = element_line(colour = "black",size = 1, linetype = "solid"))
gmod1<-gmod1+ geom_rect(data=interval, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), alpha=0.1, inherit.aes = FALSE)
gmod1

# PHYLOGENETIC DISTANCE (TROGLOBITES) vs. HIDRIC FEATURES

m6<-glm(PhyloDist~Wt,data=data9)

plot(allEffects(m6), ask=FALSE)

comppar <- interaction(data9$Wt, drop=TRUE)
mc1 <- glm(data9$PhyloDist~comppar)
require(multcomp)
contraste.mc1 <- glht(mc1, mcp(comppar = "Tukey"))
summary(contraste.mc1)

a <- subset(data9, Wt == "TRUE", select = c(PhyloDist))
b <- subset(data9, Wt == "FALSE", select = c(PhyloDist))

group <- factor(rep(0:1, c(1063, 368)))

vetores1 <- data.frame(a)
vetora <- as.vector(vetores1$PhyloDist)
vetores2 <- data.frame(b)
vetorb <- as.vector(vetores2$PhyloDist)

mydata <- data.frame(c(vetora,vetorb), group)
names(mydata) <- c("value", "group")

d1 <- min(ciMean(data9$PhyloDist, conf = 0.95, na.rm = FALSE), na.rm=T)
d2 <- max(ciMean(data9$PhyloDist, conf = 0.95, na.rm = FALSE), na.rm=T)

min.mean.sd.max <- function(x) {
  r <- c(mean(x) - sd(x), min(ciMean(x)), mean(x), max(ciMean(x)), mean(x) + sd(x))
  names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
  r
}

p1 <- ggplot(aes(y = value, x = factor(group)), data = mydata)
p1 <- p1 + geom_jitter(position=position_jitter(width=.2), size=0.7, col = "#FFB6C1", bg = "#FFB6C1", alpha = 0.1) + stat_summary(fun.data = min.mean.sd.max, geom = "boxplot", fill = "deepskyblue",  alpha = 0.6, lwd = 0.1) + 
theme_classic()+ xlab("Hydric features") + ylab("Phylogenetic distance")
p1

##########################################################################################################################################
##########################################################################################################################################
APPLYING GRAPH THEORY
##########################################################################################################################################
##########################################################################################################################################

library(igraph)
library(tidyverse)
library(igraph)
library(ggraph)
library(tidygraph)
library(graphlayouts)
library(scales)

Esc.C<-matrixConvert(Esc.MX1, colname = c("Caves1", "Caves2", "Esc"))
MaxH.C<-matrixConvert(MaxH.MX1, colname = c("Caves1", "Caves2", "MaxH"))
dist.C<-matrixConvert(dist.MX1, colname = c("Caves1", "Caves2", "Dist"))

## TROGLOBITE COMPOSITION - EDGES MORAN

dataTM<-data.frame(From=dist.C1$Caves1, To=dist.C1$Caves2, Dist=dist.C1$Dist)
head(dataTM, 4)
summary(dataTM)
dataTM$Dist[dataTM$Dist < 1243.1079] <- 1
dataTM$Dist[dataTM$Dist > 1243.1079] <- 0
head(dataTM, 3)
summary(dataTM)

Mx1 <- xtabs(Dist ~ From + To , data=dataTM)

g <- graph.adjacency(Mx1, mode="undirected", weighted=TRUE, diag=FALSE)

plot(g)

edge_density(g, loops=F)

plot(g, vertex.color="lightskyblue", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=2, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", layout=layout_with_fr(g,dim=2, niter=50))

## TROGLOBITE COMPOSITION EDGES DISTLM

data7<-data.frame(From=dist.C1$Caves1, To=dist.C1$Caves2, Esc=Esc.C1$Esc, MaxH=MaxH.C1$MaxH, Dist=dist.C1$Dist)
head(data7, 4)
summary(data7)
data7$Esc[data7$Esc < 3.500] <- 1
data7$Esc[data7$Esc >= 3.500] <- 0
data7$MaxH[data7$MaxH < 3.999] <- 1
data7$MaxH[data7$MaxH > 3.999] <- 0
data7$Dist[data7$Dist < 4987.399] <- 1
data7$Dist[data7$Dist > 4987.399] <- 0
head(data7, 3)
summary(data7)

Sum<-data7$Esc+data7$MaxH+data7$Dist
data8<-data.frame(From=data7$From, To=data7$To, Total=Sum)
data8$Total[data8$Total < 3] <- 0
data8$Total[data8$Total == 3] <- 1
summary(data8)
head(data8, 3)
data8

Mx2 <- xtabs( Total ~ From + To , data=data8)

g <- graph.adjacency(Mx2, mode="undirected", weighted=TRUE, diag=FALSE)
plot(g)

edge_density(g, loops=F)

plot(g, vertex.color="palegreen", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=.7, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", layout=layout_with_fr(g,dim=2, niter=50))

## TROGLOBITE PHYLOGENETIC EDGES MORAN

dataTPM<-data.frame(From=dist.C1$Caves1, To=dist.C1$Caves2, Dist=dist.C1$Dist)
head(dataTPM, 4)
summary(dataTPM)
dataTPM$Dist[dataTPM$Dist < 745.8867] <- 1
dataTPM$Dist[dataTPM$Dist > 745.8867] <- 0
head(dataTPM, 3)
summary(dataTPM)

Mx3 <- xtabs(Dist ~ From + To , data=dataTPM)

g <- graph.adjacency(Mx3, mode="undirected", weighted=TRUE, diag=FALSE)
plot(g)
edge_density(g, loops=F)

plot(g, vertex.color="lightpink", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=2, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", layout=layout_with_fr(g,dim=2, niter=50))

## TROGLOBITE PHYLOGENETIC EDGES DISTLM

dataTPDLM<-data.frame(From=dist.C1$Caves1, To=dist.C1$Caves2, Esc=Esc.C1$Esc, MaxH=MaxH.C1$MaxH, Area=Area.C1$Area, Gran=Gran.C1$Gran, Tavg=Tavg.C1$Tavg, BatG=BatG.C1$BatG, Alt=Alt.C1$Alt, Wt=H.C1$Wt)
head(dataTPDLM, 15)
summary(dataTPDLM)
dataTPDLM$Area[dataTPDLM$Area < 184.598] <- 1
dataTPDLM$Area[dataTPDLM$Area >= 184.598] <- 0
dataTPDLM$Gran[dataTPDLM$Gran <= 1] <- 1
dataTPDLM$Gran[dataTPDLM$Gran >= 2] <- 0
dataTPDLM$Tavg[dataTPDLM$Tavg > 0.617] <- 3
dataTPDLM$Tavg[dataTPDLM$Tavg <= 0.617] <- 1
dataTPDLM$Tavg[dataTPDLM$Tavg == 3] <- 0
dataTPDLM$BatG[dataTPDLM$BatG > 0.253] <- 3
dataTPDLM$BatG[dataTPDLM$BatG <= 0.253] <- 1
dataTPDLM$BatG[dataTPDLM$BatG == 3] <- 0
dataTPDLM$MaxH[dataTPDLM$MaxH <= 6] <- 1
dataTPDLM$MaxH[dataTPDLM$MaxH > 6] <- 0
dataTPDLM$Alt[dataTPDLM$Alt <= 108] <- 1
dataTPDLM$Alt[dataTPDLM$Alt > 108] <- 0
dataTPDLM$Esc[dataTPDLM$Esc <= 8.500] <- 1
dataTPDLM$Esc[dataTPDLM$Esc > 8.500] <- 0
dataTPDLM$Wt[dataTPDLM$Wt == 0] <- 3
dataTPDLM$Wt[dataTPDLM$Wt == 1] <- 0
dataTPDLM$Wt[dataTPDLM$Wt == 3] <- 1
head(dataTPDLM, 15)
dataTPDLM<-as.data.frame(unclass(dataTPDLM))
summary(dataTPDLM)

Soma2<-dataTPDLM$Area+dataTPDLM$Gran+dataTPDLM$Tavg+dataTPDLM$BatG+dataTPDLM$MaxH+dataTPDLM$Alt+dataTPDLM$Esc+dataTPDLM$Wt
data20<-data.frame(From=dataTPDLM$From, To=dataTPDLM$To, Total=Soma2)
data20$Total[data20$Total < 8] <- 0
data20$Total[data20$Total == 8] <- 1
summary(data20)
head(data20, 15)
data20

Mx4 <- xtabs( Total ~ From + To , data=data20)

g <- graph.adjacency(Mx4, mode="undirected", weighted=TRUE, diag=FALSE)
edge_density(g, loops=F)
plot(g)

plot(g, vertex.color="sienna1", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=.7, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black")

## FINAL GRAPH 

Weight<-dataTM$Dist+data8$Total+dataTPM$Dist+data20$Total
dataFG<-data.frame(From=dataTPDLM$From, To=dataTPDLM$To, Weight=Weight)
summary(dataFG)
head(dataFG, 15)

nodes <- data.frame(data1$Caves,data1$S.tr.)
dataFG1<-dataFG[Weight!=0, ] 
links <- dataFG1

## COMP (pelo menos 1) + PHYLO (pelo menos 1) 

Comp<-dataTM$Dist+data8$Total
Phylo<-dataTPM$Dist+data20$Total
dataFG2<-data.frame(From=dataTM$From, To=dataTM$To, Comp=Comp, Phylo=Phylo)
dataFG2<-dataFG2[Phylo!=0, ]  
summary(dataFG2)
head(dataFG2, 15)

dataFG2<-data.frame(From=dataFG2$From, To=dataFG2$To, Weight=dataFG2$Comp+dataFG2$Phylo)
dataFG2<-dataFG2[apply(dataFG2[c("Weight")],1,function(z) !any(z==1)),] 
summary(dataFG2)
head(dataFG2, 15)

links2 <- dataFG2

net2 <- graph_from_data_frame(d=links2, vertices=nodes, directed=F) 
E(net2)$width <- E(net2)$Weight*2
V(net2)$size <- 1+V(net2)$data1.S.tr.*5
colrs3 <- c("red", "gray80", "moccasin", "red")
plot(net2, edge.color=colrs3[E(net2)$Weight], vertex.label.cex=.7)

coords<-cbind(data1$long, data1$lat, data1$Altitude)
plot(coords)

rglplot(net2, layout=coords, label.degree = -pi/4, label.color = "#FF0000", label.dist = 10, vertex.color = "#228822", vertex.size = 1+V(net2)$data1.S.tr.*5, edge.color = colrs3[E(net2)$Weight], edge.width = E(net2)$Weight*1.2)

edge_density(net2, loops=F)

## WEIGHT 4 GRAPH

net2.link4 <- delete_edges(net2, E(net2)[Weight<4])
plot(net2.link4)
edge_density(net2.link4, loops=F)

plot(net2.link4, vertex.color="palegreen", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=2, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", edge.color="red")

## WEIGHT 3 GRAPH

net2.link3 <- delete_edges(net2, E(net2)[Weight<3|Weight>3])
plot(net2.link3)
edge_density(net2.link3, loops=F)

plot(net2.link3, vertex.color="palegreen", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=2, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", edge.color="moccasin")

## WEIGHT 2 GRAPH

net2.link2 <- delete_edges(net2, E(net2)[Weight>2])
plot(net2.link2)
edge_density(net2.link2, loops=F)

plot(net2.link2, vertex.color="palegreen", vertex.size=1+V(net)$data1.S.tr.*5, vertex.frame.color = "white", vertex.label.cex=2, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", edge.color="gray80", layout=layout_with_fr(net2.link2,dim=2, niter=100000))

## GRAPH METRICS

closeness(net2)
centr_degree(net2, mode = "all")

# Density (The proportion of present edges from all possible edges in the network)

edge_density(net2, loops=F)

# Degree (number of connections for each cave)

DG<-igraph::degree(net2, mode="in")
DG
centr_degree(net2, mode="in", normalized=T)

# SINGULARIY

dataSING<-data.frame(Caves=data1$Caves, Degree=DG, Troglo=data1$S.tr.)
dataSING<-data.frame(Caves=data1$Caves, Degree=DG, Troglo=data1$S.tr., Sigularity=(dataSING$Troglo/9)/(dataSING$Degree/68))
dataSING

net4 <- graph_from_data_frame(d=links2, vertices=nodes, directed=F) 
V(net4)$size <- 1+V(net2)$data1.S.tr.*5
fine = 50
pal = colorRampPalette(c('lightskyblue','gold','orangered3','purple'))
graphCol1 = pal(fine)[as.numeric(cut(dataSING$Sigularity,breaks = fine))]
plot(net4, vertex.color=graphCol1, vertex.frame.color = "white", vertex.label.cex=.7, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black")

plot(net4, vertex.color=graphCol1, vertex.frame.color = "white", vertex.label.cex=2, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black")

# BETWEENNESS (centrality based on a broker position connecting others)

BT<-betweenness(net2, directed=F, weights=NA)
BT
edge_betweenness(net2, directed=F, weights=NA)
centr_betw(net2, directed=F, normalized=T)

dataSING<-data.frame(Caves=data1$Caverna, Degree=DG, Troglo=data1$S.tr., Sigularity=(dataSING$Troglo/9)/(dataSING$Degree/68), Betweeness=BT)
dataSING

net3 <- graph_from_data_frame(d=links2, vertices=nodes, directed=F) 
V(net3)$size <- 7+(dataSING$Degree/2)
fine = 500
pal = colorRampPalette(c('lightskyblue','gold','orangered3','purple'))
graphCol1 = pal(fine)[as.numeric(cut(BT,breaks = fine))]
plot(net3, vertex.color=graphCol1, vertex.frame.color = "white", vertex.label.cex=.7, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black", layout=layout_with_fr)

# Cluster communities (Community detection based on edge betweenness (Newman-Girvan))

ceb <- cluster_edge_betweenness(net2, membership = TRUE, edge.betweenness = TRUE) 

Plot<-dendPlot(ceb, mode="hclust")

h <- hclust(Plot)

plot_dendrogram(ceb, mode="hclust", colbar=NULL, cex=0.7)

colorsCEB=c("lightskyblue","grey80","rosybrown1","palegreen","gold","orange")
plot(net3, layout=coords, vertex.color=colorsCEB[membership(ceb)], vertex.frame.color = "white", vertex.label.cex=.7, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black")

plot(net3, layout=coords, vertex.color=colorsCEB[membership(ceb)], vertex.frame.color = "white", vertex.label.cex=1.5, vertex.label.family="Arial", vertex.label.font=2, vertex.label.color="black")

class(ceb)
length(ceb)
membership(ceb)
modularity(ceb)
crossing(ceb, net2) #High modularity for a partitioning reflects dense connections within communities and sparse connections across communities.   

### INDIVIDUAL GRAPHS FOR CAVES WITH SINGULARITY > 1

nodesMX<-data.frame(Caves=dataSING$Caves, Degree=dataSING$Degree, Troglo=dataSING$Troglo, Sing=dataSING$Sigularity, Priority=NA) 
nodesMX$Priority[nodesMX$Sing >= 1] <- "MX"
nodesMX$Priority[nodesMX$Sing < 1] <- "LOW"

S17F<-subset(dataFG2, From=="ST-0017")
S17T<-subset(dataFG2, To=="ST-0017")
S41F<-subset(dataFG2, From=="ST-0041")
S41T<-subset(dataFG2, To=="ST-0041")
S42F<-subset(dataFG2, From=="ST-0042")
S42T<-subset(dataFG2, To=="ST-0042")
S01F<-subset(dataFG2, From=="ST-0001")
S01T<-subset(dataFG2, To=="ST-0001")
S30F<-subset(dataFG2, From=="ST-0030")
S31T<-subset(dataFG2, To=="ST-0031")
S31F<-subset(dataFG2, From=="ST-0031")
S30T<-subset(dataFG2, To=="ST-0030")
S34F<-subset(dataFG2, From=="ST-0034")
S34T<-subset(dataFG2, To=="ST-0034")
S03F<-subset(dataFG2, From=="ST-0003")
S03T<-subset(dataFG2, To=="ST-0003")
S43F<-subset(dataFG2, From=="ST-0043")
S43T<-subset(dataFG2, To=="ST-0043")
S32F<-subset(dataFG2, From=="ST-0032")
S32T<-subset(dataFG2, To=="ST-0032")
S16F<-subset(dataFG2, From=="ST-0016")
S16T<-subset(dataFG2, To=="ST-0016")
S54F<-subset(dataFG2, From=="ST-0054")
S54T<-subset(dataFG2, To=="ST-0054")
S11F<-subset(dataFG2, From=="ST-0011")
S11T<-subset(dataFG2, To=="ST-0011")
S35F<-subset(dataFG2, From=="ST-0035")
S35T<-subset(dataFG2, To=="ST-0035")
S37F<-subset(dataFG2, From=="ST-0037")
S37T<-subset(dataFG2, To=="ST-0037")
S39AF<-subset(dataFG2, From=="ST-0039A")
S39AT<-subset(dataFG2, To=="ST-0039A")
S56F<-subset(dataFG2, From=="ST-0056")
S56T<-subset(dataFG2, To=="ST-0056")
S61F<-subset(dataFG2, From=="ST-0061")
S61T<-subset(dataFG2, To=="ST-0061")
S13F<-subset(dataFG2, From=="ST-0013")
S13T<-subset(dataFG2, To=="ST-0013")
linksMX<-rbind(S17F,S17T,S41F,S41T,S42F,S42T,S01F,S01T,S30F,S30T,S31F,S31T,S34F,S34T,S03F,S03T,S43F,S43T,S32F,S32T,S16F,S16T,S54F,S54T,S11F,S11T,S35F,S35T,S37F,S37T,S39AF,S39AT,S56F,S56T,S61F,S61T,S13F,S13T)
data.frame(linksMX)
linksMX

netMX <- graph_from_data_frame(d=linksMX, vertices=nodesMX, directed=F) 
plot(netMX)
Isolated <- which(igraph::degree(netMX)==0)
netMX1 <- delete.vertices(netMX, Isolated)
plot(netMX1)
netMX2<-simplify(netMX1, remove.multiple = TRUE, remove.loops = TRUE, edge.attr.comb="max")

E(netMX2)$width <- E(netMX2)$Weight*2
V(netMX2)$size <- 5+V(netMX2)$Troglo*2
V(netMX2)$color <- ifelse(V(netMX2)$Priority == "MX", "purple", "palegreen")
colorsMX<-c("red","gray80","yellow","red")
plot(netMX2, layout=layout_with_fr(netMX2, dim=2, niter=100), vertex.frame.color = "white", vertex.label.cex=.7, vertex.label.family="Arial", vertex.label.font=.7, vertex.label.color="black", edge.color=colorsMX[E(netMX2)$Weight])

coords<-cbind(data1$long, data1$lat, data1$Altitude)
plot(coords)
rglplot(netMX2, layout=coords, label.color = "#FF0000", label.dist = 4, vertex.color = "#228822", vertex.size = 1+V(netMX2)$Troglo*5, edge.color = colorsMX[E(netMX2)$Weight], edge.width = E(netMX2)$Weight*1.2)

## ST-0041

ST41<-rbind(S41F,S41T)
data.frame(ST41)

links3 <- ST41

net41 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net41, layout=coords)
Isolated <- which(igraph::degree(net41)==0)
net41F <- delete.vertices(net41, Isolated)
plot(net41F)
E(net41F)$width <- E(net41F)$Weight*2
V(net41F)$size <- 20+V(net41F)$Sing*5
colrs3 <- c("gray80", "red", "red")
V(net41F)$color <- ifelse(V(net41F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net41F, edge.color=colrs3[E(net41F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

plot(net41F, edge.color=colrs3[E(net41F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=1, vertex.label.cex=.6, vertex.label.color="black")

## ST-0042

ST42<-rbind(S42F,S42T)
data.frame(ST42)

links3 <- ST42

net42 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net42, layout=coords)
Isolated <- which(igraph::degree(net42)==0)
net42F <- delete.vertices(net42, Isolated)
plot(net42F)
E(net42F)$width <- E(net42F)$Weight*2
V(net42F)$size <- 20+V(net42F)$Sing*5
colrs3 <- c("gray80", "red", "red")
V(net42F)$color <- ifelse(V(net42F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net42F, edge.color=colrs3[E(net42F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

plot(net42F, edge.color=colrs3[E(net42F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=1, vertex.label.cex=.6, vertex.label.color="black")

## ST-0017

ST17<-rbind(S17F,S17T)
data.frame(ST17)

links3 <- ST17

net17 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net17, layout=coords)
Isolated <- which(igraph::degree(net17)==0)
net17F <- delete.vertices(net17, Isolated)
plot(net17F)
E(net17F)$width <- E(net17F)$Weight*2
V(net17F)$size <- 20+V(net17F)$Sing*5
colrs3 <- c("gray80", "red", "red")
V(net17F)$color <- ifelse(V(net17F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net17F, edge.color=colrs3[E(net17F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0001

ST01<-rbind(S01F,S01T)
data.frame(ST01)

links3 <- ST01

net01 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net01, layout=coords)
Isolated <- which(igraph::degree(net01)==0)
net01F <- delete.vertices(net01, Isolated)
plot(net01F)
E(net01F)$width <- E(net01F)$Weight*2
V(net01F)$size <- 20+V(net01F)$Sing*5
colrs3 <- c("gray80", "red", "red")
V(net01F)$color <- ifelse(V(net01F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net01F, edge.color=colrs3[E(net01F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0030

ST30<-rbind(S30F,S30T)
data.frame(ST30)

links3 <- ST30

net30 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net30, layout=coords)
Isolated <- which(igraph::degree(net30)==0)
net30F <- delete.vertices(net30, Isolated)
plot(net30F)
E(net30F)$width <- E(net30F)$Weight*2
V(net30F)$size <- 20+V(net30F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net30F)$color <- ifelse(V(net30F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net30F, edge.color=colrs3[E(net30F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0034

ST34<-rbind(S34F,S34T)
data.frame(ST34)

links3 <- ST34

net34 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net34, layout=coords)
Isolated <- which(igraph::degree(net34)==0)
net34F <- delete.vertices(net34, Isolated)
plot(net34F)
E(net34F)$width <- E(net34F)$Weight*2
V(net34F)$size <- 20+V(net34F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net34F)$color <- ifelse(V(net34F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net34F, edge.color=colrs3[E(net34F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0003

ST03<-rbind(S03F,S03T)
data.frame(ST03)

links3 <- ST03

net03 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net03, layout=coords)
Isolated <- which(igraph::degree(net03)==0)
net03F <- delete.vertices(net03, Isolated)
plot(net03F)
E(net03F)$width <- E(net03F)$Weight*2
V(net03F)$size <- 20+V(net03F)$Sing*5
colrs3 <- c("gray80", "red", "red")
V(net03F)$color <- ifelse(V(net03F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net03F, edge.color=colrs3[E(net03F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0043

ST43<-rbind(S43F,S43T)
data.frame(ST43)

links3 <- ST43

net43 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net43, layout=coords)
Isolated <- which(igraph::degree(net43)==0)
net43F <- delete.vertices(net43, Isolated)
plot(net43F)
E(net43F)$width <- E(net43F)$Weight*2
V(net43F)$size <- 20+V(net43F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net43F)$color <- ifelse(V(net43F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net43F, edge.color=colrs3[E(net43F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0032

ST32<-rbind(S32F,S32T)
data.frame(ST32)

links3 <- ST32

net32 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net32, layout=coords)
Isolated <- which(igraph::degree(net32)==0)
net32F <- delete.vertices(net32, Isolated)
plot(net32F)
E(net32F)$width <- E(net32F)$Weight*2
V(net32F)$size <- 20+V(net32F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net32F)$color <- ifelse(V(net32F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net32F, edge.color=colrs3[E(net32F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0039A

ST39A<-rbind(S39AF,S39AT)
data.frame(ST39A)

links3 <- ST39A

net39A <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net39A, layout=coords)
Isolated <- which(igraph::degree(net39A)==0)
net39AF <- delete.vertices(net39A, Isolated)
plot(net39AF)
E(net39AF)$width <- E(net39AF)$Weight*2
V(net39AF)$size <- 20+V(net39AF)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net39AF)$color <- ifelse(V(net39AF)$Priority == "MX", "mediumpurple", "palegreen")
plot(net39AF, edge.color=colrs3[E(net39AF)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0016

ST16<-rbind(S16F,S16T)
data.frame(ST16)

links3 <- ST16

net16 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net16, layout=coords)
Isolated <- which(igraph::degree(net16)==0)
net16F <- delete.vertices(net16, Isolated)
plot(net16F)
E(net16F)$width <- E(net16F)$Weight*2
V(net16F)$size <- 20+V(net16F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net16F)$color <- ifelse(V(net16F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net16F, edge.color=colrs3[E(net16F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0031

ST31<-rbind(S31F,S31T)
data.frame(ST31)

links3 <- ST31

net31 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net31, layout=coords)
Isolated <- which(igraph::degree(net31)==0)
net31F <- delete.vertices(net31, Isolated)
plot(net31F)
E(net31F)$width <- E(net31F)$Weight*2
V(net31F)$size <- 20+V(net31F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net31F)$color <- ifelse(V(net31F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net31F, edge.color=colrs3[E(net31F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0035

ST35<-rbind(S35F,S35T)
data.frame(ST35)

links3 <- ST35

net35 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net35, layout=coords)
Isolated <- which(igraph::degree(net35)==0)
net35F <- delete.vertices(net35, Isolated)
plot(net35F)
E(net35F)$width <- E(net35F)$Weight*2
V(net35F)$size <- 20+V(net35F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net35F)$color <- ifelse(V(net35F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net35F, edge.color=colrs3[E(net35F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0054

ST54<-rbind(S54F,S54T)
data.frame(ST54)

links3 <- ST54

net54 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net54, layout=coords)
Isolated <- which(igraph::degree(net54)==0)
net54F <- delete.vertices(net54, Isolated)
plot(net54F)
E(net54F)$width <- E(net54F)$Weight*2
V(net54F)$size <- 20+V(net54F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net54F)$color <- ifelse(V(net54F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net54F, edge.color=colrs3[E(net54F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0011

ST11<-rbind(S11F,S11T)
data.frame(ST11)

links3 <- ST11

net11 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net11, layout=coords)
Isolated <- which(igraph::degree(net11)==0)
net11F <- delete.vertices(net11, Isolated)
plot(net11F)
E(net11F)$width <- E(net11F)$Weight*2
V(net11F)$size <- 20+V(net11F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net11F)$color <- ifelse(V(net11F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net11F, edge.color=colrs3[E(net11F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0037

ST37<-rbind(S37F,S37T)
data.frame(ST37)

links3 <- ST37

net37 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net37, layout=coords)
Isolated <- which(igraph::degree(net37)==0)
net37F <- delete.vertices(net37, Isolated)
plot(net37F)
E(net37F)$width <- E(net37F)$Weight*2
V(net37F)$size <- 20+V(net37F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net37F)$color <- ifelse(V(net37F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net37F, edge.color=colrs3[E(net37F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0061

ST61<-rbind(S61F,S61T)
data.frame(ST61)

links3 <- ST61

net61 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net61, layout=coords)
Isolated <- which(igraph::degree(net61)==0)
net61F <- delete.vertices(net61, Isolated)
plot(net61F)
E(net61F)$width <- E(net61F)$Weight*2
V(net61F)$size <- 20+V(net61F)$Sing*5
colrs3 <- c("gray80", "darkseagreen1", "lightgoldenrod2", "red")
V(net61F)$color <- ifelse(V(net61F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net61F, edge.color=colrs3[E(net61F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0056

ST56<-rbind(S56F,S56T)
data.frame(ST56)

links3 <- ST56

net56 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net56, layout=coords)
Isolated <- which(igraph::degree(net56)==0)
net56F <- delete.vertices(net56, Isolated)
plot(net56F)
E(net56F)$width <- E(net56F)$Weight*2
V(net56F)$size <- 20+V(net56F)$Sing*5
colrs3 <- c("gray80", "red", "red")
V(net56F)$color <- ifelse(V(net56F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net56F, edge.color=colrs3[E(net56F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")

## ST-0013

ST13<-rbind(S13F,S13T)
data.frame(ST13)

links3 <- ST13

net13 <- graph_from_data_frame(d=links3, vertices=nodesMX, directed=F) 
plot(net13, layout=coords)
Isolated <- which(igraph::degree(net13)==0)
net13F <- delete.vertices(net13, Isolated)
plot(net13F)
E(net13F)$width <- E(net13F)$Weight*2
V(net13F)$size <- 20+V(net13F)$Sing*5
colrs3 <- c("gray80", "lightgoldenrod2", "red")
V(net13F)$color <- ifelse(V(net13F)$Priority == "MX", "mediumpurple", "palegreen")
plot(net13F, edge.color=colrs3[E(net13F)$Weight], vertex.frame.color = "white", vertex.label.family="Arial", vertex.label.font=2, vertex.label.cex=.7, vertex.label.color="black")