This analysis investigates the skin microbiome of Pd-exposed bats, focusing on differences in bacterial taxa between Pd-positive and Pd-negative groups. It identifies protective and pathogenic taxa with the potential for probiotic development.
knitr::opts_chunk$set(warning = FALSE, message = FALSE)
library(dplyr)
library(ggplot2)
library(tidyr)
library(tidyverse)
library(reshape2)
library(readr)
bat_data <- read.csv("META-DATA-FINAL.csv")
head(bat_data)
## Paper Bat.Species Field.Site Country Taxa
## 1 Li et al. 2022 Mu. Leucogaster New Cave China f_Miceococcaceae
## 2 Li et al. 2022 Mu. Leucogaster New Cave China Citrobacter
## 3 Li et al. 2022 Mu. Leucogaster New Cave China f_Pasteurellaceae
## 4 Li et al. 2022 Mu. Leucogaster New Cave China Brackiella
## 5 Li et al. 2022 Mu. Leucogaster New Cave China Corynebacterium
## 6 Li et al. 2022 Mu. Leucogaster New Cave China Staphylococcus
## Relative.Abundance Pd.Positive.or.Negative
## 1 0.016 NEGATIVE
## 2 0.000 NEGATIVE
## 3 0.000 NEGATIVE
## 4 0.029 NEGATIVE
## 5 0.000 NEGATIVE
## 6 0.001 NEGATIVE
#Explanation: The data contains information on bacterial taxa, their relative abundances, and Pd status for each sample. This initial inspection ensures the dataset is loaded correctly.
str(bat_data)
## 'data.frame': 1470 obs. of 7 variables:
## $ Paper : chr "Li et al. 2022" "Li et al. 2022" "Li et al. 2022" "Li et al. 2022" ...
## $ Bat.Species : chr "Mu. Leucogaster" "Mu. Leucogaster" "Mu. Leucogaster" "Mu. Leucogaster" ...
## $ Field.Site : chr "New Cave" "New Cave" "New Cave" "New Cave" ...
## $ Country : chr "China" "China" "China" "China" ...
## $ Taxa : chr "f_Miceococcaceae" "Citrobacter" "f_Pasteurellaceae" "Brackiella" ...
## $ Relative.Abundance : num 0.016 0 0 0.029 0 0.001 0 0 0.077 0.068 ...
## $ Pd.Positive.or.Negative: chr "NEGATIVE" "NEGATIVE" "NEGATIVE" "NEGATIVE" ...
summary(bat_data)
## Paper Bat.Species Field.Site Country
## Length:1470 Length:1470 Length:1470 Length:1470
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Taxa Relative.Abundance Pd.Positive.or.Negative
## Length:1470 Min. :0.0000000 Length:1470
## Class :character 1st Qu.:0.0000290 Class :character
## Mode :character Median :0.0000468 Mode :character
## Mean :0.0219266
## 3rd Qu.:0.0090000
## Max. :0.8200000
unique(bat_data$Pd.Positive.or.Negative)
## [1] "NEGATIVE" "POSITIVE"
unique(bat_data$Bat.Species)
## [1] "Mu. Leucogaster" "R. Pusillus" "R. Ferrumequinum" "M. Petax"
## [5] "E. fuscus"
unique(bat_data$Taxa)
## [1] "f_Miceococcaceae" "Citrobacter"
## [3] "f_Pasteurellaceae" "Brackiella"
## [5] "Corynebacterium" "Staphylococcus"
## [7] "Mycobacterium" "Kaistobacter"
## [9] "Pseudomonas" "Sphingobacterium"
## [11] "f_Brucellaceae" "Flavobacterium"
## [13] "Myroides" "f_Intrasporangiaceae"
## [15] "Arthobacter" "Salinibacterium"
## [17] "Gluconacetobacter" "Brevilbacterium"
## [19] "Yersinia" "Rhodococcus"
## [21] "Pseudarthrobacter" "Clostridium sensu stricto 1"
## [23] "Hafnia-Obesumbacterium" "Klebsiella"
## [25] "Pseudoarthrobacter" "Mycoplasma"
## [27] "Actinobacillus" "Bacillus"
## [29] "Delftia" "Caulobacteraceae Family"
## [31] "Phyllobacterium" "Bordetella"
## [33] "Sediminibacterium" "Stenotrophomonas"
## [35] "Ralstonia" "Sphingomonas"
## [37] "Bosea" "Bradyrhizobium"
## [39] "Bacillaceae Family" "Arthrobacter"
## [41] "Micrococcus" "Lactococcus"
## [43] "Enterococcus" "Rhizobiaceae Family"
## [45] "Labrys" "Afipia"
## [47] "Phreatobacter" "Methylobacterium-Methylorubrum"
## [49] "Enhydrobacter" "Acinetobacter"
## [51] "Paracoccus" "Reyranella"
## [53] "Xanthobacteracae Family" "Aquabacterium"
## [55] "Lachnospiraceae Family" "Lactobacillales Order"
## [57] "Microvirga" "Conexibacter"
## [59] "Quadrisphaera" "JG30-KF_CM45 Family"
## [61] "Modestobacter" "Solirubrobacter"
## [63] "Marmoricola" "Xanthomonadaceae Family"
## [65] "Microbacteriaceae Family" "Sporosarcina"
## [67] "Streptomyces" "Brachybacterium"
## [69] "Curvibacter" "Nosocomiicoccus"
## [71] "Aminobacter" "Micrococcaceae Family"
## [73] "Kocuria" "Qipengyuania"
## [75] "Jeotgalicoccus" "Taonella Family"
## [77] "Knoellia" "Burkholderiaceae"
## [79] "Cloacibacterium" "Romboutsia"
## [81] "Escherichia-Shigella" "Turicibacter"
## [83] "Chryseobacterium" "Williamsia"
## [85] "Brevundimonas" "Luteimonas"
## [87] "Curtobacterium" "Achromobacter"
## [89] "Proteiniphilum" "Jonesia"
## [91] "Carnobacterium" "Blastococcus"
## [93] "Pseudonocardia" "Crossiella"
## [95] "G7-14 Family" "Candidatus Nitrocosmicus"
## [97] "Rubrobacter" "Burkerholderiaceae"
#Explanation: These steps help understand the dataset's variables, identify potential issues (e.g., missing data), and prepare for further analysis.
# Summarize mean abundance by Pd status
taxa_summary <- bat_data %>%
group_by(Taxa, Pd.Positive.or.Negative) %>%
summarise(mean_abundance = mean(Relative.Abundance, na.rm = TRUE)) %>%
pivot_wider(names_from = Pd.Positive.or.Negative, values_from = mean_abundance)
# Filter for taxa present in both Pd-positive and Pd-negative groups
filtered_taxa <- taxa_summary %>%
filter(!is.na(POSITIVE) & !is.na(NEGATIVE) & POSITIVE > 0 & NEGATIVE > 0)
# Add log-fold change column
filtered_taxa <- filtered_taxa %>%
mutate(logFC = log2(POSITIVE + 1) - log2(NEGATIVE + 1))
#Explanation: This analysis focuses only on taxa present in both Pd-positive and Pd-negative groups, preventing skewed results caused by absent taxa or artificially assigned zeros. The logFC column captures fold-change differences, highlighting taxa more abundant in one group versus the other.
Log-fold changes (logFC) highlight proportional differences in taxa abundance between groups (Pd-positive vs. Pd-negative bats). A positive logFC indicates higher abundance in Pd-positive bats (potentially pathogenic taxa), while a negative logFC indicates higher abundance in Pd-negative bats (potentially protective taxa). LogFC is used because it: handles large ranges in abundances effectively, reduces noise from low-abundance taxa, enhances interpretability (e.g., logFC of 1 = 2x increase), and provides a balanced scale for visualization. Note that a pseudocount is added to avoid undefined values for zero abundances.
# Filter for potentially protective taxa (logFC < 0)
protective_taxa <- filtered_taxa %>%
filter(logFC < 0) %>% # Negative log fold-change
arrange(logFC)
# Filter for potentially pathogenic taxa (logFC > 0)
pathogenic_taxa <- filtered_taxa %>%
filter(logFC > 0) %>% # Positive log fold-change
arrange(desc(logFC))
library(stringr)
library(ggplot2)
protective_taxa$Taxa <- str_wrap(protective_taxa$Taxa, width = 15)
ggplot(protective_taxa, aes(x = reorder(Taxa, logFC), y = logFC)) +
geom_bar(stat = "identity", fill = "#3498db", color = "black") +
geom_text(aes(label = round(logFC, 2)), hjust = -0.3, size = 3, fontface = "bold", color = "black") +
coord_flip() +
theme_minimal() +
theme(
axis.text.y = element_text(size = 9, hjust = 1, color = "gray20"),
axis.text.x = element_text(size = 10, color = "gray20"),
axis.title.x = element_text(size = 14, face = "bold", color = "#333333"),
axis.title.y = element_text(size = 14, face = "bold", color = "#333333"),
plot.title = element_text(size = 16, face = "bold", hjust = 0.5, color = "#333333"),
plot.margin = margin(t = 10, r = 10, b = 10, l = 80, unit = "pt"),
panel.grid.major.x = element_line(color = "gray80", linetype = "dotted"),
panel.grid.major.y = element_blank(),
legend.position = "none"
) +
labs(
title = "Potentially Protective Taxa",
x = "Bacterial Taxa",
y = "Log Fold-Change"
)
#Explanation: This plot highlights taxa that are more abundant in Pd-negative bats and may be candidates for probiotic development.
library(stringr)
library(ggplot2)
pathogenic_taxa$Taxa <- str_wrap(pathogenic_taxa$Taxa, width = 15)
ggplot(pathogenic_taxa, aes(x = reorder(Taxa, logFC), y = logFC)) +
geom_bar(stat = "identity", fill = "#e74c3c", color = "black", width = 0.7) +
geom_text(aes(label = round(logFC, 2)),
color = "black",
size = 4, fontface = "bold",
hjust = ifelse(pathogenic_taxa$logFC > 0, -0.2, 1.2),
vjust = 0.5,
nudge_y = ifelse(pathogenic_taxa$logFC > 0, 0.1, -0.1)) +
coord_flip() +
scale_y_continuous(
expand = expansion(mult = c(0.1, 0.2))
) +
theme_minimal(base_family = "Arial") +
theme(
axis.text.y = element_text(size = 10, hjust = 1, color = "gray20"),
axis.text.x = element_text(size = 12, color = "gray20"),
axis.title.x = element_text(size = 14, face = "bold", color = "#333333"),
axis.title.y = element_text(size = 14, face = "bold", color = "#333333"),
plot.title = element_text(size = 16, face = "bold", hjust = 0.5, color = "#333333"),
plot.margin = margin(t = 20, r = 20, b = 20, l = 90, unit = "pt"),
panel.grid.major.x = element_line(color = "gray80", linetype = "dotted"),
panel.grid.major.y = element_blank(),
legend.position = "none"
) +
labs(
title = "Potentially Pathogenic Taxa",
x = "Bacterial Taxa",
y = "Log Fold-Change"
)
#Explanation: This plot identifies taxa that may thrive in Pd-positive environments or contribute to disease susceptibility.
library(kableExtra)
# Select top probiotic candidates
probiotic_candidates <- protective_taxa %>%
arrange(logFC) %>%
head(10)
probiotic_candidates$Taxa <- stringr::str_wrap(probiotic_candidates$Taxa, width = 20)
probiotic_candidates %>%
mutate(logFC = round(logFC, 3),
POSITIVE = round(POSITIVE, 3),
NEGATIVE = round(NEGATIVE, 3)) %>%
kable(
caption = "Top 6 Probiotic Candidates: Protective Taxa with Higher Abundance in Pd-Negative Bats",
col.names = c("Taxa", "Mean Abundance (Pd-Positive)", "Mean Abundance (Pd-Negative)", "Log Fold-Change"),
align = "lccc",
format = "html"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive", "bordered"),
full_width = FALSE,
position = "center"
) %>%
column_spec(1, bold = TRUE) %>%
column_spec(4, color = "red", bold = TRUE) %>%
row_spec(0, bold = TRUE, background = "#ADD8E6") %>%
row_spec(1:nrow(probiotic_candidates), color = "black")
| Taxa | Mean Abundance (Pd-Positive) | Mean Abundance (Pd-Negative) | Log Fold-Change |
|---|---|---|---|
| f_Miceococcaceae | 0.057 | 0.020 | -0.052 |
| f_Intrasporangiaceae | 0.022 | 0.007 | -0.020 |
| f_Brucellaceae | 0.021 | 0.010 | -0.015 |
| Brackiella | 0.033 | 0.023 | -0.014 |
| Citrobacter | 0.008 | 0.002 | -0.009 |
| Salinibacterium | 0.008 | 0.003 | -0.007 |
library(kableExtra)
library(stringr)
pathogenic_candidates <- pathogenic_taxa %>%
arrange(desc(logFC)) %>%
head(10)
pathogenic_candidates$Taxa <- str_wrap(pathogenic_candidates$Taxa, width = 20)
pathogenic_candidates %>%
mutate(logFC = round(logFC, 3),
POSITIVE = round(POSITIVE, 3),
NEGATIVE = round(NEGATIVE, 3)) %>%
kable(
caption = "Top 10 Pathogenic Bacteria: Taxa with Higher Abundance in Pd-Positive Bats",
col.names = c("Taxa", "Mean Abundance (Pd-Positive)", "Mean Abundance (Pd-Negative)", "Log Fold-Change"),
align = "lccc",
format = "html"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive", "bordered"),
full_width = FALSE,
position = "center"
) %>%
column_spec(1, bold = TRUE) %>%
column_spec(4, color = "blue", bold = TRUE) %>%
row_spec(0, bold = TRUE, background = "#F08080") %>%
row_spec(1:nrow(pathogenic_candidates), color = "black")
| Taxa | Mean Abundance (Pd-Positive) | Mean Abundance (Pd-Negative) | Log Fold-Change |
|---|---|---|---|
| Staphylococcus | 0.025 | 0.219 | 0.251 |
| Pseudomonas | 0.087 | 0.252 | 0.204 |
| Flavobacterium | 0.018 | 0.089 | 0.097 |
| Rhodococcus | 0.000 | 0.062 | 0.086 |
| Actinobacillus | 0.000 | 0.057 | 0.079 |
| Klebsiella | 0.002 | 0.050 | 0.068 |
| Clostridium sensu stricto 1 | 0.013 | 0.042 | 0.041 |
| Sphingobacterium | 0.011 | 0.025 | 0.020 |
| Bacillus | 0.016 | 0.030 | 0.019 |
| Arthobacter | 0.023 | 0.034 | 0.016 |
library(stringr)
heatmap_data <- bat_data %>%
group_by(Taxa, Pd.Positive.or.Negative) %>%
summarise(mean_abundance = mean(Relative.Abundance, na.rm = TRUE)) %>%
pivot_wider(names_from = Pd.Positive.or.Negative, values_from = mean_abundance) %>%
filter(!is.na(POSITIVE) & !is.na(NEGATIVE) & POSITIVE > 0 & NEGATIVE > 0) %>%
pivot_longer(cols = c(POSITIVE, NEGATIVE), names_to = "Pd_Status", values_to = "Mean_Abundance")
heatmap_data$Taxa <- str_wrap(heatmap_data$Taxa, width = 15)
ggplot(heatmap_data, aes(x = Pd_Status, y = Taxa, fill = Mean_Abundance)) +
geom_tile(color = "white") +
scale_fill_gradient2(
low = "blue", mid = "white", high = "#228B22",
midpoint = median(heatmap_data$Mean_Abundance, na.rm = TRUE),
name = "Mean Abundance"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
axis.text.y = element_text(size = 8),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
plot.title = element_text(hjust = 0.5, size = 14),
plot.margin = margin(t = 10, r = 10, b = 10, l = 20, unit = "pt")
) +
labs(
title = "Heatmap of Taxa Abundance by Pd Status"
)
library(dplyr)
library(tidyr)
library(ggplot2)
library(stringr)
overall_abundance <- bat_data %>%
group_by(Taxa, Pd.Positive.or.Negative) %>%
summarise(total_abundance = sum(Relative.Abundance, na.rm = TRUE), .groups = "drop") %>%
pivot_wider(names_from = Pd.Positive.or.Negative, values_from = total_abundance) %>%
filter(!is.na(POSITIVE) & !is.na(NEGATIVE) & POSITIVE > 0 & NEGATIVE > 0) %>%
pivot_longer(cols = c(POSITIVE, NEGATIVE), names_to = "Pd_Status", values_to = "Total_Abundance")
overall_abundance$Taxa <- str_wrap(overall_abundance$Taxa, width = 15)
ggplot(overall_abundance, aes(x = reorder(Taxa, Total_Abundance), y = Total_Abundance, fill = Pd_Status)) +
geom_bar(stat = "identity", position = "dodge") +
coord_flip() +
scale_fill_manual(
values = c("NEGATIVE" = "#3498db", "POSITIVE" = "#e74c3c"),
name = "Pd Status"
) +
theme_minimal() +
theme(
axis.text.y = element_text(size = 6),
axis.text.x = element_text(size = 10),
axis.title.x = element_text(size = 12),
axis.title.y = element_text(size = 12),
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
legend.position = "top",
plot.margin = margin(t = 10, r = 10, b = 10, l = 70, unit = "pt")
) +
labs(
title = "Overall Relative Abundance of Bacterial Taxa",
x = "Bacterial Taxa",
y = "Total Relative Abundance"
)
library(dplyr)
library(tidyr)
library(ggplot2)
library(stringr)
# List of selected taxa to include in the plot
selected_taxa <- c("f_Miceococcaceae", "f_Intrasporangiaceae", "f_Brucellaceae", "Staphylococcus", "Pseudomonas", "Flavobacterium", "Rhodococcus", "Actinobacillus", "Clostridium sensu stricto 1")
overall_abundance <- bat_data %>%
group_by(Taxa, Pd.Positive.or.Negative) %>%
summarise(total_abundance = sum(Relative.Abundance, na.rm = TRUE), .groups = "drop") %>%
pivot_wider(names_from = Pd.Positive.or.Negative, values_from = total_abundance) %>%
filter(!is.na(POSITIVE) & !is.na(NEGATIVE) & POSITIVE > 0 & NEGATIVE > 0) %>%
pivot_longer(cols = c(POSITIVE, NEGATIVE), names_to = "Pd_Status", values_to = "Total_Abundance") %>%
filter(Taxa %in% selected_taxa)
overall_abundance$Taxa <- str_wrap(overall_abundance$Taxa, width = 15)
ggplot(overall_abundance, aes(x = reorder(Taxa, Total_Abundance), y = Total_Abundance, fill = Pd_Status)) +
geom_bar(stat = "identity", position = "dodge") +
coord_flip() +
scale_fill_manual(
values = c("NEGATIVE" = "#3498db", "POSITIVE" = "#e74c3c"),
name = "Pd Status"
) +
theme_minimal() +
theme(
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10),
axis.title.x = element_text(size = 12),
axis.title.y = element_text(size = 12),
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
legend.position = "top",
plot.margin = margin(t = 10, r = 10, b = 10, l = 70, unit = "pt")
) +
labs(
title = "Overall Relative Abundance of Selected Taxa",
x = "Bacterial Taxa",
y = "Total Relative Abundance"
)
# Load necessary libraries
library(dplyr)
library(kableExtra)
library(ggplot2)
# Perform Wilcoxon test for each taxon
p_value_results <- bat_data %>%
group_by(Taxa) %>%
summarise(
Positive_Mean_Abundance = mean(Relative.Abundance[Pd.Positive.or.Negative == "POSITIVE"], na.rm = TRUE),
Negative_Mean_Abundance = mean(Relative.Abundance[Pd.Positive.or.Negative == "NEGATIVE"], na.rm = TRUE),
P_Value = tryCatch(
wilcox.test(
Relative.Abundance[Pd.Positive.or.Negative == "POSITIVE"],
Relative.Abundance[Pd.Positive.or.Negative == "NEGATIVE"],
exact = FALSE # Handle ties with asymptotic calculation
)$p.value,
error = function(e) NA # Handle errors for insufficient data
),
.groups = "drop"
) %>%
mutate(
Adjusted_P_Value = p.adjust(P_Value, method = "BH"), # Adjust for multiple comparisons
Significance = case_when(
Adjusted_P_Value < 0.01 ~ "*** (Highly Significant)",
Adjusted_P_Value < 0.05 ~ "** (Significant)",
Adjusted_P_Value < 0.10 ~ "* (Marginally Significant)",
TRUE ~ "Not Significant"
)
)
# Table of results
p_value_results %>%
arrange(Adjusted_P_Value) %>% # Order by adjusted p-values
mutate(
Positive_Mean_Abundance = round(Positive_Mean_Abundance, 3),
Negative_Mean_Abundance = round(Negative_Mean_Abundance, 3),
P_Value = formatC(P_Value, format = "e", digits = 2),
Adjusted_P_Value = formatC(Adjusted_P_Value, format = "e", digits = 2)
) %>%
kable(
caption = "Statistical Significance Levels of Bacterial Taxa Between Pd-Positive and Pd-Negative Bats",
col.names = c("Taxa", "Positive Mean Abundance", "Negative Mean Abundance",
"P-Value", "Adjusted P-Value", "Significance"),
align = "lcccccc",
format = "html"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
) %>%
row_spec(0, bold = TRUE, background = "#DDEBF7") %>% # Style the header row
column_spec(1, bold = TRUE) %>% # Bold taxa names
column_spec(4, color = "blue", bold = TRUE) %>% # Highlight P-Values
column_spec(6, color = "red", bold = TRUE) # Highlight significance levels
| Taxa | Positive Mean Abundance | Negative Mean Abundance | P-Value | Adjusted P-Value | Significance |
|---|---|---|---|---|---|
| Rhodococcus | 0.062 | 0.000 | 1.21e-03 | 1.39e-02 | ** (Significant) |
| Staphylococcus | 0.219 | 0.025 | 9.84e-04 | 1.39e-02 | ** (Significant) |
| Pseudomonas | 0.252 | 0.087 | 1.85e-03 | 1.42e-02 | ** (Significant) |
| Actinobacillus | 0.057 | 0.000 | 9.08e-03 | 5.22e-02 |
|
| Clostridium sensu stricto 1 | 0.042 | 0.013 | 1.44e-02 | 6.65e-02 |
|
| Flavobacterium | 0.089 | 0.018 | 2.59e-02 | 9.94e-02 |
|
| Mycobacterium | 0.010 | 0.000 | 5.93e-02 | 1.95e-01 | Not Significant |
| Corynebacterium | 0.000 | 0.010 | 7.22e-02 | 2.08e-01 | Not Significant |
| Arthobacter | 0.034 | 0.023 | 1.35e-01 | 3.10e-01 | Not Significant |
| Klebsiella | 0.050 | 0.002 | 1.29e-01 | 3.10e-01 | Not Significant |
| Kaistobacter | 0.007 | 0.003 | 4.01e-01 | 8.38e-01 | Not Significant |
| Bacillus | 0.030 | 0.016 | 5.15e-01 | 9.13e-01 | Not Significant |
| Citrobacter | 0.002 | 0.008 | 5.37e-01 | 9.13e-01 | Not Significant |
| f_Miceococcaceae | 0.020 | 0.057 | 5.56e-01 | 9.13e-01 | Not Significant |
| f_Intrasporangiaceae | 0.007 | 0.022 | 6.36e-01 | 9.14e-01 | Not Significant |
| f_Pasteurellaceae | 0.000 | 0.016 | 6.00e-01 | 9.14e-01 | Not Significant |
| Brackiella | 0.023 | 0.033 | 7.23e-01 | 9.24e-01 | Not Significant |
| Gluconacetobacter | 0.010 | 0.009 | 7.22e-01 | 9.24e-01 | Not Significant |
| Salinibacterium | 0.003 | 0.008 | 8.12e-01 | 9.82e-01 | Not Significant |
| Brevilbacterium | 0.008 | 0.003 | 1.00e+00 | 1.00e+00 | Not Significant |
| Myroides | 0.021 | 0.019 | 1.00e+00 | 1.00e+00 | Not Significant |
| Sphingobacterium | 0.025 | 0.011 | 1.00e+00 | 1.00e+00 | Not Significant |
| f_Brucellaceae | 0.010 | 0.021 | 9.05e-01 | 1.00e+00 | Not Significant |
| Achromobacter | NaN | 0.013 | NA | NA | Not Significant |
| Acinetobacter | NaN | 0.001 | NA | NA | Not Significant |
| Afipia | NaN | 0.002 | NA | NA | Not Significant |
| Aminobacter | NaN | 0.000 | NA | NA | Not Significant |
| Aquabacterium | NaN | 0.004 | NA | NA | Not Significant |
| Arthrobacter | NaN | 0.000 | NA | NA | Not Significant |
| Bacillaceae Family | NaN | 0.061 | NA | NA | Not Significant |
| Blastococcus | NaN | 0.001 | NA | NA | Not Significant |
| Bordetella | NaN | 0.057 | NA | NA | Not Significant |
| Bosea | NaN | 0.038 | NA | NA | Not Significant |
| Brachybacterium | NaN | 0.000 | NA | NA | Not Significant |
| Bradyrhizobium | NaN | 0.034 | NA | NA | Not Significant |
| Brevundimonas | NaN | 0.000 | NA | NA | Not Significant |
| Burkerholderiaceae | NaN | 0.000 | NA | NA | Not Significant |
| Burkholderiaceae | NaN | 0.000 | NA | NA | Not Significant |
| Candidatus Nitrocosmicus | NaN | 0.002 | NA | NA | Not Significant |
| Carnobacterium | NaN | 0.001 | NA | NA | Not Significant |
| Caulobacteraceae Family | NaN | 0.071 | NA | NA | Not Significant |
| Chryseobacterium | NaN | 0.001 | NA | NA | Not Significant |
| Cloacibacterium | NaN | 0.000 | NA | NA | Not Significant |
| Conexibacter | NaN | 0.000 | NA | NA | Not Significant |
| Crossiella | NaN | 0.000 | NA | NA | Not Significant |
| Curtobacterium | NaN | 0.005 | NA | NA | Not Significant |
| Curvibacter | NaN | 0.000 | NA | NA | Not Significant |
| Delftia | NaN | 0.230 | NA | NA | Not Significant |
| Enhydrobacter | NaN | 0.002 | NA | NA | Not Significant |
| Enterococcus | NaN | 0.007 | NA | NA | Not Significant |
| Escherichia-Shigella | NaN | 0.001 | NA | NA | Not Significant |
| G7-14 Family | NaN | 0.000 | NA | NA | Not Significant |
| Hafnia-Obesumbacterium | 0.293 | NaN | NA | NA | Not Significant |
| JG30-KF_CM45 Family | NaN | 0.000 | NA | NA | Not Significant |
| Jeotgalicoccus | NaN | 0.000 | NA | NA | Not Significant |
| Jonesia | NaN | 0.014 | NA | NA | Not Significant |
| Knoellia | NaN | 0.000 | NA | NA | Not Significant |
| Kocuria | NaN | 0.000 | NA | NA | Not Significant |
| Labrys | NaN | 0.000 | NA | NA | Not Significant |
| Lachnospiraceae Family | NaN | 0.001 | NA | NA | Not Significant |
| Lactobacillales Order | NaN | 0.001 | NA | NA | Not Significant |
| Lactococcus | NaN | 0.000 | NA | NA | Not Significant |
| Luteimonas | NaN | 0.000 | NA | NA | Not Significant |
| Marmoricola | NaN | 0.000 | NA | NA | Not Significant |
| Methylobacterium-Methylorubrum | NaN | 0.002 | NA | NA | Not Significant |
| Microbacteriaceae Family | NaN | 0.000 | NA | NA | Not Significant |
| Micrococcaceae Family | NaN | 0.000 | NA | NA | Not Significant |
| Micrococcus | NaN | 0.000 | NA | NA | Not Significant |
| Microvirga | NaN | 0.000 | NA | NA | Not Significant |
| Modestobacter | NaN | 0.000 | NA | NA | Not Significant |
| Mycoplasma | 0.073 | NaN | NA | NA | Not Significant |
| Nosocomiicoccus | NaN | 0.002 | NA | NA | Not Significant |
| Paracoccus | NaN | 0.001 | NA | NA | Not Significant |
| Phreatobacter | NaN | 0.001 | NA | NA | Not Significant |
| Phyllobacterium | NaN | 0.071 | NA | NA | Not Significant |
| Proteiniphilum | NaN | 0.014 | NA | NA | Not Significant |
| Pseudarthrobacter | 0.180 | NaN | NA | NA | Not Significant |
| Pseudoarthrobacter | 0.065 | NaN | NA | NA | Not Significant |
| Pseudonocardia | NaN | 0.001 | NA | NA | Not Significant |
| Qipengyuania | NaN | 0.000 | NA | NA | Not Significant |
| Quadrisphaera | NaN | 0.000 | NA | NA | Not Significant |
| Ralstonia | NaN | 0.065 | NA | NA | Not Significant |
| Reyranella | NaN | 0.001 | NA | NA | Not Significant |
| Rhizobiaceae Family | NaN | 0.000 | NA | NA | Not Significant |
| Romboutsia | NaN | 0.002 | NA | NA | Not Significant |
| Rubrobacter | NaN | 0.003 | NA | NA | Not Significant |
| Sediminibacterium | NaN | 0.048 | NA | NA | Not Significant |
| Solirubrobacter | NaN | 0.000 | NA | NA | Not Significant |
| Sphingomonas | NaN | 0.045 | NA | NA | Not Significant |
| Sporosarcina | NaN | 0.000 | NA | NA | Not Significant |
| Stenotrophomonas | NaN | 0.039 | NA | NA | Not Significant |
| Streptomyces | NaN | 0.000 | NA | NA | Not Significant |
| Taonella Family | NaN | 0.001 | NA | NA | Not Significant |
| Turicibacter | NaN | 0.001 | NA | NA | Not Significant |
| Williamsia | NaN | 0.000 | NA | NA | Not Significant |
| Xanthobacteracae Family | NaN | 0.002 | NA | NA | Not Significant |
| Xanthomonadaceae Family | NaN | 0.000 | NA | NA | Not Significant |
| Yersinia | 0.130 | NaN | NA | NA | Not Significant |
# Bar plot of significant taxa
significant_taxa <- p_value_results %>%
filter(Significance != "Not Significant")
ggplot(significant_taxa, aes(x = reorder(Taxa, Adjusted_P_Value), y = -log10(Adjusted_P_Value), fill = Significance)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
labs(
title = "Significant Bacterial Taxa",
x = "Taxa",
y = "-log10(Adjusted P-Value)",
fill = "Significance Level"
) +
scale_fill_manual(values = c(
"*** (Highly Significant)" = "red",
"** (Significant)" = "palegreen3",
"* (Marginally Significant)" = "palegoldenrod"
))
The goal of this analysis was to identify bacterial taxa with significant differences in abundance between Pd-positive and Pd-negative bats. The following steps were used:
This meta-analysis synthesizes data from diverse sources to explore the role of skin microbiomes in Pd-exposed bats. Below are the key details of the dataset:
| Metric | Value |
|---|---|
| Number of Studies | 3.00 |
| Number of Countries | 2.00 |
| Number of Bat Species | 5.00 |
| Number of Unique Taxa | 98.00 |
| Pd-Positive Samples | 111.00 |
| Pd-Negative Samples | 1359.00 |
| Min Relative Abundance | 0.00 |
| Max Relative Abundance | 0.82 |
| Min Log-Fold Change | Inf |
| Max Log-Fold Change | -Inf |
The meta-analysis reveals significant differences in the skin microbiomes of Pd-positive and Pd-negative bats. These findings highlight bacterial taxa potentially contributing to disease susceptibility and suggest promising directions for probiotic development, even though no statistically significant protective taxa were identified.
Taxa with significantly higher abundances in Pd-positive bats were identified as potentially pathogenic or opportunistic. These taxa may exacerbate disease susceptibility in Pd-positive bats:
No bacterial taxa were statistically significantly more abundant in Pd-negative bats. However, exploratory analysis using log-fold changes identified potential candidates for further investigation:
While no statistically significant protective taxa were identified, log-fold change analysis highlighted taxa enriched in Pd-negative bats that warrant further investigation as potential probiotics:
Functional Validation: Investigating the mechanisms through which protective taxa confer resistance.
Probiotic Development: Testing the efficacy of identified protective taxa in experimental settings.
Conservation Applications: Using microbiome-based interventions to enhance the resilience of bat populations to white-nose syndrome.
Call to Action: These findings underscore the potential of microbiome-targeted strategies in wildlife conservation, paving the way for innovative solutions to combat fungal diseases in bats.
This meta-analysis underscores the role of skin microbiomes in disease susceptibility among Pd-exposed bats. The findings emphasize the dominance of pathogenic taxa in Pd-positive bats and suggest exploratory directions for probiotic development, focusing on taxa with trends of enrichment in Pd-negative bats. Future studies should further validate these findings through functional assays and experimental trials.