###################### # FISH Paper # # R code # # 2026 # ###################### # This R code was used to generate the figures and supplementary figures shown in the manuscript 'Autofluorescence and fluorescence-based detection of anaerobic gut fungi (phylum Neocallimastigomycota)' # Description of the data files: # Autofluorescence_total_Data_for_R.txt --> Total autofluorescence images taken on CLSM, Data analysed with ImageJ following the protocol provided in supplementary # Autofluorescence_Data_lasX_for_R_including_stains.txt --> Lamda scans produced on CLSM, Data analysed with LasX # Mono-labelled FISH, Data analysed with ImageJ --> Mono-labelled FISH with DY480XL-labelled probes, images taken on CLSM, Data analysed with ImageJ following the protocol provided in supplementary # HCR-FISH_data_for_R.txt --> HCR FISH with Cy5-labelled probes, images taken on CLSM, Data analysed with ImageJ following the protocol provided in supplementary # HCR-FISH_data_Cy3.txt --> HCR FISH with Cy3-labelled probes, images taken on an epifluorescence microscope, Data analysed with ImageJ, Data analysed with ImageJ following the protocol provided in supplementary library(tidyverse) library(ggplot2) library(rstatix) library(ggpubr) library(RColorBrewer) packageVersion("tidyverse") # ‘1.3.1’ packageVersion("ggplot2") # ‘3.3.5’ packageVersion("ggpubr") # ‘0.4.0’ packageVersion("rstatix") # ‘0.7.0’ set.seed(2023) ################################ ### Data import and Clean-up ### ################################ ### Total autofluorescence, Data analysed with ImageJ ### AF_data <- read_tsv("Autofluorescence_total_Data_for_R.txt") AF_data$Replicate <- factor(AF_data$Replicate) AF_data$Medium <- factor(AF_data$Medium) AF_data$Strain <- factor(AF_data$Strain, levels = c("Anaeromyces", "Caecomyces", "Pecoramyces", "none")) AF_data$Fixation <- factor(AF_data$Fixation, levels = c("A", "4F", "20F", "37F"), labels = c("acetone", "4% formaldehyde", "20% formaldehyde", "37% formaldehyde")) AF_data$Stain<- factor(AF_data$Stain) AF_data$Laser <- factor(AF_data$Laser, levels = c("405", "488", "561", "633"), labels = c("405 nm", "488 nm", "561 nm", "633 nm")) AF_data$nm <- factor(AF_data$nm) AF_data$LPGain<- factor(AF_data$LPGain) ### Lamda scans, Data analysed with LasX ### LasX_data <- read_tsv("Autofluorescence_Data_lasX_for_R_including_stains.txt") LasX_data$Strain <- factor(LasX_data$Strain, levels = c("Anaeromyces", "Caecomyces", "Pecoramyces", "none", "stains")) LasX_data$Replicate <- factor(LasX_data$Replicate) LasX_data$Medium <- factor(LasX_data$Medium) LasX_data$Fixation <- factor(LasX_data$Fixation, levels = c("acetone", "4% formaldehyde", "20% formaldehyde", "37% formaldehyde")) LasX_data$Stain <- factor(LasX_data$Stain) LasX_data$Laser <- factor(LasX_data$Laser, levels = c("405", "488", "561", "633"), labels = c("405 nm", "488 nm", "561 nm", "633 nm")) ### Mono-labelled FISH, Data analysed with ImageJ ### Mono_data <- read_tsv("Monolabelled-FISH_results.txt") Mono_data$Strain <- factor(Mono_data$Strain, levels = c("ViSuPo", "Pecora"), labels = c("Caecomyces", "Pecoramyces")) Mono_data$Fixation <- factor(Mono_data$Fixation) Mono_data$Formamide <- factor(Mono_data$Formamide, levels = c("20", "30", "40", "50"), labels = c("20% Formamide", "30% Formamide", "40% Formamide", "50% Formamide")) Mono_data$Probes <- factor(Mono_data$Probes, levels = c("nonsense-DY480XL", "GGNL4R-DY480XL")) Mono_data$Stain <- factor(Mono_data$Stain) Mono_data$Laser <- factor(Mono_data$Laser) Mono_data$Detection <- factor(Mono_data$Detection) Mono_data$Replicate <- factor(Mono_data$Replicate) Mono_data$LPGain <- factor(Mono_data$LPGain) ### HCR FISH with Cy5 (confocal microscope), Data analysed with ImageJ ### HCR5_data <- read_tsv("HCR-FISH_data_for_R.txt") HCR5_data$Strain <- factor(HCR5_data$Strain, levels = c("V", "P", "Vws"), labels = c("Caecomyces", "Pecoramyces","Caecomyces on straw")) HCR5_data$Fixation <- factor(HCR5_data$Fixation) HCR5_data$Formamide <- factor(HCR5_data$Formamide, levels = c("00%F", "10%F", "20%F", "30%F", "35%F", "40%F", "45%F", "50%F"), labels = c("0% Formamide", "10% Formamide", "20% Formamide", "30% Formamide", "35% Formamide", "40% Formamide", "45% Formamide", "50% Formamide")) HCR5_data$Additives <- factor(HCR5_data$Additives, levels = c("none", "5µM-initH", "10µM-initH", "1µM-AP", "2.5µM-AP", "10µMinitH-2.5µMAP", "140mM-EDTA", "250mM-EDTA", "250mMEDTA-5µMinitH", "250mMEDTA-10µMinitH", "2mgBSA", "10mgBSA")) HCR5_data$InitiatorH <- factor(HCR5_data$InitiatorH) HCR5_data$Amplifierprobes <- factor(HCR5_data$Amplifierprobes) HCR5_data$Probes <- factor(HCR5_data$Probes, levels = c("none", "initH", "H1H2", "initHH1H2")) HCR5_data$NuclearStain <- factor(HCR5_data$NuclearStain) HCR5_data$Laser <- factor(HCR5_data$Laser) HCR5_data$Detected <- factor(HCR5_data$Detected) HCR5_data$Replicate <- factor(HCR5_data$Replicate) HCR5_data$LPGain <- factor(HCR5_data$LPGain, levels = c("15%900V", "15%800V", "10%900V", "10%800V", "5%900V", "5%650V", "3%800V", "1%900V", "1%700V")) ### HCR FISH with Cy3 (epifluorescence microscope), Data analysed with ImageJ ### HCR3_data <- read_tsv("HCR-FISH_data_Cy3.txt") HCR3_data$Date <- factor(HCR3_data$Date) HCR3_data$ROIs <- factor(HCR3_data$ROIs) HCR3_data$Sample <- factor(HCR3_data$Sample) HCR3_data$Probes <- factor(HCR3_data$Probes, levels = c("none", "initH", "H1", "H2", "H1H2", "initHH1", "initHH2", "initHH1H2", "initHH1-H1H2")) HCR3_data$Stain <- factor(HCR3_data$Stain, levels = c("none", "NucBlue", "CalcofluorWhite")) HCR3_data$Objective <- factor(HCR3_data$Objective) HCR3_data$Replicate <- factor(HCR3_data$Replicate) HCR3_data$Filter_Exposure <- factor(HCR3_data$Filter_Exposure, levels = c("BF", "D_50ms1x", "D_100ms1x", "D_500ms1x", "D_1s1x", "D_2s1x", "D_2s3.4x", "B_500ms1x", "B_1s1x", "B_1s1.8x", "B_2s1x", "B_2s3.4x", "B_5s1x", "B_5s3.4x", "B_5s9.3x", "5_1s1x", "5_2s1x", "5_2s3.4x", "5_5s1x", "5_5s3.4x", "5_5s9.3x")) ###################################### ## Visualize data ## ###################################### ################################################################################################################## ### Total autofluorescence, Data analysed with ImageJ ### ######################################################### #filter data LPG <- AF_data %>% filter (LPGain == "15%800V" & Medium == "Minimal") LPG_nostain <- LPG %>% filter (Stain == "none") #check for outliers: LPG_outliers <- LPG %>% group_by(Laser, Strain, Stain) %>% identify_outliers(Mean) LPG_outliers <- LPG_outliers[,-c(18,19)] LPG_or <- setdiff(LPG, LPG_outliers) LPG_nostain_outliers <- LPG_nostain %>% group_by(Laser, Strain) %>% identify_outliers(Mean) LPG_nostain_outliers <- LPG_nostain_outliers[,-c(18,19)] LPG_nostain_or <- setdiff(LPG_nostain, LPG_nostain_outliers) #filter for each laser line to make separate plots (so the y axis can be adapted) LPG_nostain_or_405 <- LPG_nostain_or %>% filter (Laser == "405 nm") LPG_nostain_or_488 <- LPG_nostain_or %>% filter (Laser == "488 nm") LPG_nostain_or_561 <- LPG_nostain_or %>% filter (Laser == "561 nm") LPG_nostain_or_633 <- LPG_nostain_or %>% filter (Laser == "633 nm") ## Boxplot to check average fluorescence intensity vs. Strain, Laser, Fixation, Stain: ## boxplot <- ggplot(LPG_or, aes(x = Stain, y = Mean, fill = Stain)) + geom_boxplot() + stat_summary(fun.data = function(x) c(y = 195, label = length(x)), geom = "text", size = 4) + facet_wrap(Strain ~ Laser, scales = "fixed", nrow = 3) + coord_cartesian(ylim = c(0, 200)) + theme_bw() + labs(title = "Mean Fluorescence Intensity by Stain and Laser Line", y = "Mean total fluorescence intensity (a.u.)", x = "Fixation") + theme(axis.text.x = element_blank(), legend.position = "right", text = element_text(size = 12), axis.title = element_text(size = 14), strip.text = element_text(size = 14)) boxplot <- boxplot + scale_fill_manual(values = c("grey", "lightblue", "salmon")) ggsave("Boxplot_AFtotal_Fiji.png", plot = boxplot, width = 10, height = 7, dpi = 300) ## Boxplot to check average fluorescence intensity vs. Strain, Laser, Fixation: ## # getting the right colors colors <- brewer.pal(4, "PRGn") boxplot <- ggplot(LPG_nostain_or, aes(x = Fixation, y = Mean, fill = Fixation)) + geom_boxplot() + scale_fill_manual(values = colors) + stat_summary(fun.data = function(x) c(y = 48, label = length(x)), geom = "text", size = 4) + facet_wrap(~ Laser, scales = "fixed", nrow = 1) + coord_cartesian(ylim = c(0, 50)) + theme_bw() + labs(title = "Mean Autofluorescence Intensity by Fixation and Laser Line", y = "Mean total fluorescence intensity (a.u.)", x = "Fixation") + theme(axis.text.x = element_blank(), legend.position = "right", text = element_text(size = 12), axis.title = element_text(size = 12, face = "bold"), strip.text = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5)) ggsave("Total_autofluorescence_Fixations.png", plot = boxplot, width = 10, height = 6, dpi = 300) ggsave("Total_autofluorescence_Fixations.jpeg", plot = boxplot, width = 10, height = 6, dpi = 300) ################################################################################################################## ##################################################### ### Autofluorescence LasX data ### ##################################################### # AvSpectra_AF_perStrain.png: #filter data none <- LasX_data %>% filter(Stain == "none" & Strain != "none") bin_width <- 11 average_spectrum <- none %>% mutate(binned_wavelength = cut(Wavelength, breaks = seq(min(Wavelength), max(Wavelength), by = bin_width))) %>% group_by(Strain, Fixation, Laser, binned_wavelength) %>% summarise(mid_wavelength = mean(Wavelength), mean_intensity = mean(nfi, na.rm = TRUE), .groups = "drop") filtered_spectrum <- average_spectrum %>% filter( (Laser == "405 nm" & mid_wavelength <= 700) | (Laser == "488 nm" & mid_wavelength <= 700) | (Laser == "561 nm" & mid_wavelength >= 500 & mid_wavelength <= 700) | (Laser == "633 nm" & mid_wavelength >= 600 & mid_wavelength <= 700) ) ##### Stain spectra ##### # In the stains rows, the stain name is stored in the Replicate column stain_spectra <- LasX_data %>% filter(Strain == "stains") %>% rename(StainName = Replicate) %>% # make it explicit group_by(StainName, Laser, Wavelength) %>% summarise(mean_intensity = mean(nfi, na.rm = TRUE), .groups = "drop") %>% # apply the same wavelength windows as the autofluorescence data filter( (Laser == "405 nm" & Wavelength <= 700) | (Laser == "488 nm" & Wavelength <= 700) | (Laser == "561 nm" & Wavelength >= 500 & Wavelength <= 700) | (Laser == "633 nm" & Wavelength >= 600 & Wavelength <= 700) ) ##### Vertical lines to indicate laser lines ##### vertical_lines <- data.frame( Laser = c("405 nm", "488 nm", "561 nm", "633 nm"), xintercept = c(405, 488, 561, 633) ) ##### Plot ##### AF_plot <- ggplot(filtered_spectrum, aes(x = mid_wavelength, y = mean_intensity, color = Fixation, linetype = Fixation)) + geom_line(size = 0.8) + # Stain spectra overlaid in each facet column (all Strain rows share the same Laser column) geom_line(data = stain_spectra, aes(x = Wavelength, y = mean_intensity, group = StainName, color = StainName), # separate colour scale entry linetype = "solid", linewidth = 1, inherit.aes = FALSE) + facet_grid(Strain ~ Laser, scales = "free_x") + geom_vline(data = vertical_lines, aes(xintercept = xintercept), linetype = "dashed", color = "black") + scale_color_manual( values = c( # Fixation colours (PRGn palette values preserved) "acetone" = "#762a83", "4% formaldehyde" = "#af7ab3", "20% formaldehyde" = "#7fbf7b", "37% formaldehyde" = "#1b7837", # Stain colours "DAPI" = "lightblue", "NucBlue" = "darkblue", "Cy3" = "darkcyan", "DY480XL" = "darkorange", "Cy5" = "red", "NucRed" = "darkred" ) ) + labs(x = "Wavelength (nm)", y = "Mean normalized fluorescence intensity (a.u.)", title = "Mean Normalized Autofluorescence Emission Spectra", color = "Fixation / Stain") + theme_minimal() + theme( strip.text = element_text(size = 12, face = "bold"), axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.position = "right", panel.spacing = grid::unit(2, "lines") ) ggsave("AvSpectra_AF_perStrain.png", plot = AF_plot, width = 10, height = 6, dpi = 300) ggsave("AvSpectra_AF_perStrain.jpeg", plot = AF_plot, width = 10, height = 6, dpi = 300) ######################################################################################################################### ################################################################################################################## ### Mono-labelled FISH, Data analysed with ImageJ ### ##################################################### #filter data DY480XL <- Mono_data %>% filter (Laser == "488" | Laser == "498") #check for outliers: Mono_outliers <- DY480XL %>% group_by(Strain, Stain, Formamide, Probes) %>% identify_outliers(Mean) Mono_outliers <- Mono_outliers[,-c(17,18)] Mono_or <- setdiff(DY480XL, Mono_outliers) # Calculate n for each group n_labels <- Mono_or %>% group_by(Strain, Formamide, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, .groups = "drop" ) #visualize boxplot <- ggboxplot(Mono_or, x = "Probes", y = "Mean", add = "jitter", color = "Probes", ylab = "Mean fluorescence intensity (a.u.)", xlab = "Probes") + facet_grid(Strain ~ Formamide) + scale_color_manual(values = c("#696969", "#FF7F50")) + coord_cartesian(ylim = c(0, 28)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle( expression( paste("Mono-labelled FISH for ", italic("Neocallimastigomycota"), " using DY480XL-labelled probes") ) ) + theme(axis.text.x = element_blank(), strip.text.y = element_text(face = "italic", size = 11), strip.text.x = element_text(size = 11), axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), panel.spacing = unit(2, "lines")) ggsave("Boxplot_Formamide_Mono.png", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_Formamide_Mono.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300) ################################################################################################################## ################################################################################################################## ### HCR FISH with Cy5 (confocal microscope), Data analysed with ImageJ ### ########################################################################## #check for outliers HCR5_outliers <- HCR5_data %>% group_by(Strain, Formamide, Additives, Probes, NuclearStain, Laser, LPGain) %>% identify_outliers(Mean) HCR5_outliers <- HCR5_outliers[,-c(28,29)] HCR5_or <- setdiff(HCR5_data, HCR5_outliers) #filter data HCR5_none <- HCR5_or %>% filter (Additives == "none") HCR5_none_Cy5 <- HCR5_none %>% filter (Formamide != "45% Formamide" & Formamide != "35% Formamide" & Laser == "633er") HCR5_opt <- HCR5_or %>% filter (Strain == "Caecomyces" & Laser == "633er" & Additives != "none") HCR5_straw <- HCR5_or %>% filter (Strain == "Caecomyces on straw" & Laser == "633er") filtered_data <- HCR5_none_Cy5 %>% filter(!(Strain == "Caecomyces" & LPGain == "10%800V" & Formamide %in% c("50% Formamide", "40% Formamide"))) %>% filter(!(Strain == "Caecomyces" & LPGain == "5%650V" & Formamide %in% c("0% Formamide", "10% Formamide"))) %>% filter(!(Strain == "Caecomyces" & LPGain == "10%800V" & Formamide == "30% Formamide" & Probes %in% c("H1H2", "initHH1H2"))) %>% filter(!(Strain == "Pecoramyces" & LPGain == "5%650V")) # Calculate n for each group n_labels <- filtered_data %>% group_by(Strain, Formamide, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, .groups = "drop" ) #visualize Formamide series boxplot <- ggboxplot(filtered_data, x = "Probes", y = "Mean", add = "jitter", color = "Probes", shape = "LPGain", palette = c("#696969", "#CD0000", "darkred"), ylab = "Mean fluorescence intensity (a.u.)", xlab = "Probes") + facet_grid(Strain ~ Formamide, scales = "free_y") + scale_shape_manual(values = c(21, 25)) + coord_cartesian(ylim = c(0, 250)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle( expression( paste("HCR-FISH for ", italic("Neocallimastigomycota"), " using Cy5-labelled probes") ) ) + theme(axis.text.x = element_blank(), strip.text.y = element_text(face = "italic", size = 11), strip.text.x = element_text(size = 11), axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), panel.spacing = unit(2, "lines")) ggsave("Boxplot_Formamide_HCR-Cy5.png", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_Formamide_HCR-Cy5.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300) ####### visualize HCR FISH for Caecomyces on straw ###### filtered_data2 <- HCR5_straw %>% filter(!(Additives == "10µMinitH-2.5µMAP" & LPGain %in% c("5%650V", "3%800V"))) %>% filter(!(Additives == "250mMEDTA-5µMinitH" & LPGain == "3%800V")) %>% filter(!(Additives == "2mgBSA" & LPGain %in% c("5%650V", "3%800V", "1%700V"))) %>% filter(!(Additives == "10mgBSA" & LPGain %in% c("5%650V", "3%800V", "1%700V"))) # Calculate n for each group n_labels <- filtered_data2 %>% group_by(Strain, Additives, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, # position above the box .groups = "drop" ) # visualize boxplot <- ggboxplot(filtered_data2, x = "Probes", y = "Mean", add = "jitter", color = "Probes", palette = c("#696969", "#CD0000", "darkred"), ylab = "Mean fluorescence intensity (a.u.)", xlab = "Probes") + facet_grid(Strain ~ Additives, scales = "free_y") + coord_cartesian(ylim = c(0, 200)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle( expression( paste("HCR-FISH for ", italic("Caecomyces"), " grown on wheat straw using Cy5-labelled probes") ) ) + theme(axis.text.x = element_blank(), strip.text.y = element_text(face = "italic", size = 11), strip.text.x = element_text(size = 11), axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), panel.spacing = unit(2, "lines")) ggsave("Boxplot_HCR_CaecoStraw.png", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_HCR_CaecoStraw.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300) ####### visualize HCR FISH Optimization ####### #filter data filtered_data3 <- HCR5_opt %>% filter(!(Additives == "5µM-initH" & LPGain %in% c("5%650V", "3%800V"))) %>% filter(!(Additives == "10µM-initH" & LPGain == "5%650V")) %>% filter(!(Additives == "1µM-AP" & LPGain == "5%650V")) %>% filter(!(Additives == "2.5µM-AP" & LPGain == "3%800V")) %>% filter(!(Additives == "250mM-EDTA" & LPGain %in% c("5%650V", "3%800V", "15%800V"))) %>% filter(!(Additives == "250mMEDTA-5µMinitH" & LPGain == "1%700V")) %>% filter(LPGain == "10%800V") # Calculate n for each group n_labels <- filtered_data3 %>% group_by(Strain, Additives, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, .groups = "drop" ) # visualize boxplot <- ggboxplot(filtered_data3, x = "Probes", y = "Mean", add = "jitter", color = "Probes", palette = c("#696969", "#CD0000", "darkred"), ylab = "Mean fluorescence intensity (a.u.)", xlab = "Probes") + facet_grid(Strain ~ Additives) + coord_cartesian(ylim = c(0, 270)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle( expression( paste("Optimization of HCR-FISH for ", italic("Neocallimastigomycota"), " using Cy5-labelled probes") ) ) + theme(axis.text.x = element_blank(), strip.text.y = element_text(face = "italic", size = 11), strip.text.x = element_text(size = 10), axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), panel.spacing = unit(2, "lines")) ggsave("Boxplot_Formamide_HCR_optimization.png", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_Formamide_HCR_optimization.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300) ################################################################################################################## ################################################################################################################## ### HCR FISH with Cy3 (epifluorescence microscope), Data analysed with ImageJ ### ################################################################################# #filter data Cy3_AF <- HCR3_data %>% filter (Sample == "FL1" | Sample == "ViSuPo" & ROIs == "withROIs") Env <- HCR3_data %>% filter (Sample != "FL1" & Sample != "ViSuPo" & ROIs == "noROIs" ) Env_filt <- Env %>% filter (Filter_Exposure == "D_500ms1x" | Filter_Exposure == "B_2s1x" | Filter_Exposure =="5_2s3.4x") Cy3_filt <- Cy3_AF %>% filter (Filter_Exposure == "D_500ms1x" | Filter_Exposure == "B_2s1x" | Filter_Exposure =="5_2s3.4x") Cy3_filt_a <- Cy3_filt %>% filter (Date == "02.05.2023") Cy3_filt_b <- Cy3_filt %>% filter (Date != "02.05.2023" & Date != "17.04.2023") #rename for graphs Cy3_filt_a$Sample <- factor(Cy3_filt_a$Sample, levels = c("ViSuPo", "FL1"), labels = c("Caecomyces", "Neocallimastix")) Cy3_filt_b$Sample <- factor(Cy3_filt_b$Sample, levels = c("ViSuPo", "FL1"), labels = c("Caecomyces", "Neocallimastix")) Env_filt$Sample <-factor(Env_filt$Sample, levels = c("Hundekacke", "Gamskacke"), labels = c("fecal sample dog", "fecal sample chamois")) Cy3_filt_a$Filter_Exposure <- factor(Cy3_filt_a$Filter_Exposure, levels = c("D_500ms1x", "B_2s1x", "5_2s3.4x"), labels = c("NucBlue", "Autofluorescence (B-2A)", "Cy3")) Cy3_filt_b$Filter_Exposure <- factor(Cy3_filt_b$Filter_Exposure, levels = c("D_500ms1x", "B_2s1x", "5_2s3.4x"), labels = c("NucBlue", "Autofluorescence (B-2A)", "Cy3")) Cy3_filt_b$Date <- factor(Cy3_filt_b$Date, levels = c("19.04.2023", "09.05.2023"), labels = c("repeated washing", "washing by 'desalting'")) Env_filt$Filter_Exposure <- factor(Env_filt$Filter_Exposure, levels = c("D_500ms1x", "B_2s1x", "5_2s3.4x"), labels = c("NucBlue", "Autofluorescence (B-2A)", "Cy3")) ####### Cy3 washing optimization experiments ###### #filter for graph Cy3_filt_a_cy3 <- Cy3_filt_a %>% filter (Filter_Exposure == "Cy3") Cy3_filt_b_cy3 <- Cy3_filt_b %>% filter (Filter_Exposure == "Cy3") Env_filt_cy3 <- Env_filt %>% filter (Filter_Exposure == "Cy3") # Calculate n for each group n_labels <- Cy3_filt_b_cy3 %>% group_by(Sample, Date, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, # position above the box .groups = "drop" ) #visualize data boxplot <- ggboxplot(Cy3_filt_b_cy3, x = "Probes", y = "Mean", add = "jitter", color = "Probes", palette = c("#696969", "#8FBC8F", "#008000"), ylab = "Mean fluorescence intentsity (a.u.)", xlab = "Probes") + facet_grid(Sample ~ Date, scales = "free_y") + coord_cartesian(ylim = c(0, 35)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle( expression( paste("HCR-FISH for ", italic("Neocallimastigomycota"), " using Cy3-labelled probes: Optimizing washing steps") ) ) + theme(axis.text.x = element_blank(), strip.text.y = element_text(face = "italic", size = 11), strip.text.x = element_text(size = 10), axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), panel.spacing = unit(2, "lines")) ggsave("Boxplot_Cy3_washing-optimization.png", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_Cy3_washing-optimization.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300) ####### Cy3 environmental samples ###### # Calculate n for each group n_labels <- Env_filt %>% group_by(Sample, Filter_Exposure, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, # position above the box .groups = "drop" ) #visualize data boxplot <- ggboxplot(Env_filt, x = "Probes", y = "Mean", add = "jitter", color = "Probes", palette = c("#696969", "#8FBC8F", "#008000"), ylab = "Mean fluorescence intensity (a.u.)", xlab = "Probes") + facet_grid(Sample ~ Filter_Exposure) + coord_cartesian(ylim = c(0, 115)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle("HCR-FISH with Cy3-labelled probes on environmental samples") + theme(axis.text.x = element_blank(), # Remove x-axis labels strip.text.y = element_text(size = 10), strip.text.x = element_text(size = 10), , axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), # Adjust legend text size panel.spacing = unit(2, "lines")) # Increase spacing between facet panels ggsave("Boxplot_Envsample_noROIs.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_Envsample_noROIs.png", plot = boxplot, width = 14, height = 5, dpi = 300) ####### Cy3 a closer look experiment ###### # Calculate n for each group n_labels <- Cy3_filt_a_cy3 %>% group_by(Sample, Probes) %>% summarise( n = sum(!is.na(Mean)), y = max(Mean, na.rm = TRUE) * 1.05, # position above the box .groups = "drop" ) boxplot <- ggboxplot(Cy3_filt_a_cy3, x = "Probes", y = "Mean", add = "jitter", color = "Probes", shape = "Probes", palette = c("#808080", "#696969", "#8FBC8F", "#3CB371", "#228B22", "#008000", "#556B2F", "#006400" , "black"), ylab = "Mean fluorescence intensity (a.u.)", xlab = "Probes") + facet_wrap(~ Sample) + scale_shape_manual(values = c(21, 22, 23, 24, 25, 21, 22, 23, 24)) + coord_cartesian(ylim = c(0, 27)) + geom_text(data = n_labels, aes(x = Probes, y = Inf, label = paste0("n = ", n)), vjust = 1.5, inherit.aes = FALSE) + ggtitle( expression( paste("HCR-FISH for ", italic("Neocallimastigomycota"), " using Cy3-labelled probes: A closer look") ) ) + theme(axis.text.x = element_blank(), strip.text.x = element_text(face = "italic", size = 12), , axis.title = element_text(size = 12, face = "bold"), plot.title = element_text(size = 16, face = "bold", hjust = 0.5), legend.title = element_text(size = 12), legend.text = element_text(size = 14), panel.spacing = unit(2, "lines")) ggsave("Boxplot_Cy3_probes_a-closer-look.png", plot = boxplot, width = 14, height = 5, dpi = 300) ggsave("Boxplot_Cy3_probes_a-closer-look.jpeg", plot = boxplot, width = 14, height = 5, dpi = 300)