--- title: "Adult scRNAseq datasets analysis" subtitle: "Gene Onotology" author: "Renaud Mevel" output: html_document: self_contained: yes toc: true toc_float: true df_print: paged number_sections: false editor_options: chunk_output_type: console --- ```{r setup, echo=FALSE, message=FALSE, results='hide'} library(knitr) knitr::opts_chunk$set(cache=TRUE, error=FALSE, cache.lazy = TRUE) ``` ## Objective Perform gene ontology analysis. Directories need to be adapted throughout the scripts. ## Prepare the environment ```{r , warning=FALSE, message=FALSE} # Data wrangling library(plyr) library(dplyr) library(tidyverse) library(data.table) # Plots library(gridExtra) library(ggpubr) # sc library(Seurat) library(sctransform) library(MAST) library(org.Mm.eg.db) library(DoubletFinder) # GO library(gprofiler2) # Palettes library(pals) pal25 <- as.character(pals::cols25(n=25)) pal.trt <- c("#a1e186", "#b9006e") pal.rfp <- c("#ea4749", "#479bea") pal.runs <- c("#ec0016", "#ffc554", "#20a4ff") pal.lobe = c("#272873", "#45A5A7", "#cb5155") pal.pop <- c( "#7a0177", "#dd3497", # cas AP "#f768a1", "#fa9fb5", # cas DLP "#fc9272", "#cb181d", # cas "#CC6677", "#AA4466", # cas VP "#081d58", "#225ea8", # hn AP "#7fcdbb", "#7fb8cd", # hn DLP "#67a9cf", "#b2d3e7" # hn VP ) pal.cl <- c( "#B2B8E0", #LumA "#4A6FE3", #LumB "#1037AA", #LumC "#D33F6A", #LumD "#EF9708", #LumE "#F0B98D", #LumF "#8DD593" #Basal ) # Directories setwd(dir = "~/set-directory/") pdf.dir <- "~/set-directory/" fig.dir <- "~/set-directory/" # Functions source("Adult_functions.R") # Seed set.seed(1) ``` ## Load data ```{r} sce <- readRDS(file.path("r_save/sce.sc.umap.rds")) ``` ## FindMarkers ### Epithelial clusters Load if exists already ```{r, eval=FALSE} epi.markers <- readRDS(file.path("r_save/epi.markers.rds")) ``` Use **MAST** algorithm otherwise. ```{r, eval=FALSE} epi.markers <- FindAllMarkers( sce, test.use = "MAST", assay = "RNA", min.pct = 0.25, logfc.threshold = 0.25, only.pos = FALSE) saveRDS(epi.markers, file = file.path("r_save/epi.markers.rds")) ``` ```{r, eval=FALSE} # Top positive markers top5.epi <- epi.markers %>% group_by(cluster) %>% filter(avg_logFC>0) %>% top_n(n=5, wt=avg_logFC) top10.epi <- epi.markers %>% group_by(cluster) %>% filter(avg_logFC>0) %>% top_n(n=10, wt=avg_logFC) ``` ### ABC vs D ```{r} D_vs_ABC <- FindMarkers( sce, ident.1 = c("Lum-D"), ident.2 = c("Lum-A", "Lum-B", "Lum-C"), test.use = "MAST", assay = "RNA", min.pct = 0.25, logfc.threshold = 0.25, only.pos = FALSE) write.table(x = D_vs_ABC, file = paste0("r_export/", "D_vs_ABC.txt"), sep="\t", quote=FALSE, row.names=FALSE, col.names=TRUE) ``` #### EF vs D ```{r} D_vs_EF <- FindMarkers( sce, ident.1 = c("Lum-D"), ident.2 = c("Lum-E", "Lum-F"), test.use = "MAST", assay = "RNA", min.pct = 0.25, logfc.threshold = 0.25, only.pos = FALSE) write.table(x = D_vs_ABC, file = paste0("r_export/", "D_vs_EF.txt"), sep="\t", quote=FALSE, row.names=FALSE, col.names=TRUE) ``` ## Number of DEG Upregulated only ```{r} stat <- epi.markers %>% group_by(cluster) %>% summarise(count = n()) ggplot(stat, aes(x = fct_rev(cluster), y = count, fill = cluster)) + geom_col() + geom_text(aes(y = count + sign(count) * max(abs(count)) * 0.07, label = abs(count)), size = 6, colour = "grey25") + coord_flip() + scale_fill_manual(values = pal.cl) + ggtitle("Number of DE genes identified per cluster") + theme_minimal() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text.x = element_blank(), legend.position = "bottom") ``` ```{r} plot_data <- epi.markers %>% mutate(IsUp = avg_logFC > 0) %>% group_by(cluster) %>% summarise(Up = sum(IsUp), Down = sum(!IsUp)) %>% mutate(Down = -Down) %>% gather(key = "Direction", value = "Count", -cluster) %>% mutate(Cluster = factor(cluster)) ggplot(plot_data, aes(x = fct_rev(cluster), y = Count, fill = Direction)) + geom_col() + geom_text(aes(y = Count + sign(Count) * max(abs(Count)) * 0.07, label = abs(Count)), size = 6, colour = "grey25") + coord_flip() + scale_fill_manual(values = c("#377eb8", "#e41a1c")) + ggtitle("Number of identified genes") + theme_minimal() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text.x = element_blank(), legend.position = "bottom") ``` ## GO: Gene Ontology ### Individual clusters (up) Lum-A ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Lum-A" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.LA <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Lum-A") #plot g.LA <- ggplot(go.LA %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value), label = term_id, hjust=0)) + #scale_fill_viridis_c(alpha = 1, begin = 0.5, end = 1, option = "magma") + scale_fill_manual(values = c(rep(pal.cl[1],8))) + scale_y_continuous(limits=c(0,20)) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.LA ggsave(g.LA, filename = file.path(fig.dir, "5_go_terms/GO_Lum_A.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.LA+t, filename = file.path(fig.dir, "5_go_terms/GO_Lum_A_nolegend.png"), device = "png", width = 4, height = 2.5, dpi = 300) ``` Lum-B ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Lum-B" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.LB <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Lum-B") #plot g.LB <- ggplot(go.LB %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=1.0)) + scale_fill_manual(values = c(rep(pal.cl[2],8))) + scale_y_continuous(limits=c(0,20)) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.LB ggsave(g.LB, filename = file.path(fig.dir, "5_go_terms/GO_Lum_B.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.LB+t, filename = file.path(fig.dir, "5_go_terms/GO_Lum_B_nolegend.png"), device = "png", width = 4, height = 2.5, dpi = 300) ``` Lum-C ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Lum-C" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.LC <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Lum-C") #plot g.LC <- ggplot(go.LC %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + scale_fill_manual(values = c(rep(pal.cl[3],8))) + scale_y_continuous(limits=c(0,20)) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.LC ggsave(g.LC, filename = file.path(fig.dir, "5_go_terms/GO_Lum_C.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.LC+t, filename = file.path(fig.dir, "5_go_terms/GO_Lum_C_nolegend.png"), device = "png", width = 4, height = 2.5, dpi = 300) ``` Lum-D ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Lum-D" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.LD <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Lum-D") #plot g.LD <- ggplot(go.LD %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + scale_fill_manual(values = c(rep(pal.cl[4],8))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,20)) + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.LD ggsave(g.LD, filename = file.path(fig.dir, "5_go_terms/GO_Lum_D.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.LD+t, filename = file.path(fig.dir, "5_go_terms/GO_Lum_D_nolegend.png"), device = "png", width = 4, height = 2.5, dpi = 300) ``` Lum-E ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Lum-E" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.LE <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Lum-E") #plot g.LE <- ggplot(go.LE %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + scale_fill_manual(values = c(rep(pal.cl[5],8))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,20)) + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.LE ggsave(g.LE, filename = file.path(fig.dir, "5_go_terms/GO_Lum_E.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.LE+t, filename = file.path(fig.dir, "5_go_terms/GO_Lum_E_nolegend.png"), device = "png", width = 4, height = 2.5, dpi = 300) ``` Lum-F ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Lum-F" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.LF <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Lum-F") #plot g.LF <- ggplot(go.LF %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + scale_fill_manual(values = c(rep(pal.cl[6],8))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,20)) + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.LF ggsave(g.LF, filename = file.path(fig.dir, "5_go_terms/GO_Lum_F.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.LF+t, filename = file.path(fig.dir, "5_go_terms/GO_Lum_F_nolegend.png"), device = "png", width = 4, height = 0.7, dpi = 300) ``` Basal ```{r} go <- gost(query = epi.markers %>% filter(cluster == "Bas" & avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.Bas <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "Bas") #plot g.Bas <- ggplot(go.Bas %>% top_n(n=-8, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=1)) + scale_fill_manual(values = c(rep(pal.cl[7],8))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,22)) + theme( axis.title.y=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.Bas ggsave(g.Bas, filename = file.path(fig.dir, "5_go_terms/GO_Bas.png"), device = "png", width = 6, height = 2.5, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.Bas+t, filename = file.path(fig.dir, "5_go_terms/GO_Bas_nolegend.png"), device = "png", width = 4, height = 2.5, dpi = 300) ``` ### Cluster groups #### D vs ABC D vs ABC - Upregulated ```{r} go <- gost(query = D_vs_ABC %>% tibble::rownames_to_column(var="gene") %>% filter(avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.D_vs_ABC_up <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "D_vs_ABC_up") #plot g.D_vs_ABC <- ggplot(go.D_vs_ABC_up %>% top_n(n=-15, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=1)) + scale_fill_manual(values = c(rep("#E67DA2",15))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,20)) + theme( axis.title.y=element_blank(), axis.title.x=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.D_vs_ABC ggsave(g.D_vs_ABC, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_ABC_up.png"), device = "png", width = 6, height = 4, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.D_vs_ABC+t, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_ABC_up_nolegend.png"), device = "png", width = 4, height = 4, dpi = 300) ``` D vs ABC - Downregulated ```{r} go <- gost(query = D_vs_ABC %>% tibble::rownames_to_column(var="gene") %>% filter(avg_logFC < -0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.D_vs_ABC_down <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "D_vs_ABC_down") #plot g.D_vs_ABC <- ggplot(go.D_vs_ABC_down %>% top_n(n=-15, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + scale_fill_manual(values = c(rep("#77D9DE",15))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,20)) + theme( axis.title.y=element_blank(), axis.title.x=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.D_vs_ABC ggsave(g.D_vs_ABC, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_ABC_down.png"), device = "png", width = 6, height = 4, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.D_vs_ABC+t, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_ABC_down_nolegend.png"), device = "png", width = 4, height = 4, dpi = 300) ``` #### D vs EF D vs EF - Upregulated ```{r} go <- gost(query = D_vs_EF %>% tibble::rownames_to_column(var="gene") %>% filter(avg_logFC > 0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.D_vs_EF_up <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "D_vs_EF_up") #plot g.D_vs_EF <- ggplot(go.D_vs_EF_up %>% top_n(n=-15, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=term_name)) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_fill_manual(values = c(rep("#E67DA2",15))) + scale_y_continuous(limits=c(0,10)) + theme( axis.title.y=element_blank(), axis.title.x=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.D_vs_EF ggsave(g.D_vs_EF, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_EF_up.png"), device = "png", width = 6, height = 4, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.D_vs_EF+t, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_EF_up_nolegend.png"), device = "png", width = 4, height = 4, dpi = 300) ``` D vs EF - Downregulated ```{r} go <- gost(query = D_vs_EF %>% tibble::rownames_to_column(var="gene") %>% filter(avg_logFC < -0.5) %>% pull(gene), organism = "mmusculus", significant = TRUE) gostplot(go, capped = FALSE, interactive = TRUE) go.D_vs_EF_down <- go$result %>% filter(source == "GO:BP") %>% dplyr::select(p_value, term_id, source, term_name, parents) %>% arrange(p_value) %>% dplyr::mutate(Cluster = "D_vs_EF_down") #plot g.D_vs_EF <- ggplot(go.D_vs_EF_down %>% top_n(n=-15, wt=p_value), aes(x=reorder(term_name, -p_value) , y=-log10(p_value), fill=-log10(p_value))) + geom_bar(stat = "identity", width = 0.7) + geom_text(aes(y=-log10(p_value) ,label = term_id, hjust=0)) + scale_fill_manual(values = c(rep("#77D9DE",15))) + geom_hline(yintercept = -log10(0.05), color="grey30", linetype="dashed") + scale_y_continuous(limits=c(0,10)) + theme( axis.title.y=element_blank(), axis.title.x=element_blank(), legend.position = "none", panel.grid.minor = element_blank(), panel.grid.major = element_blank(), panel.background = element_blank(), panel.border = element_rect(colour = "grey30", fill=NA, size=0.5), strip.background = element_rect(fill="white", colour = "white") ) + rotate() g.D_vs_EF ggsave(g.D_vs_EF, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_EF_down.png"), device = "png", width = 6, height = 4, dpi = 300) t <- theme(axis.title.x=element_blank(), axis.text.y=element_blank()) ggsave(g.D_vs_EF+t, filename = file.path(fig.dir, "5_go_terms/GO_D_vs_EF_down_nolegend.png"), device = "png", width = 4, height = 4, dpi = 300) ``` ## Session Information ```{r} sessionInfo() ```