By default, hdWGCNA (and WGCNA) assign each module a unique color, and often modules are referred to by this color. In this tutorial, we show how we can rename the hdWGCNA modules, and assign a new color to the hdWGCNA modules.
First, we load the required libraries and the dataset.
# single-cell analysis package library(Seurat) # plotting and data science packages library(tidyverse) library(cowplot) library(patchwork) # co-expression network analysis packages: library(WGCNA) library(hdWGCNA) # using the cowplot theme for ggplot theme_set(theme_cowplot()) # set random seed for reproducibility set.seed(12345) # load the Zhou et al snRNA-seq dataset seurat_obj <- readRDS('data/Zhou_control.rds')
hdWGCNA includes the ResetModuleNames
function, which assigns a new name to each
module. The new_name
parameter takes a string as the base name for each module,
and a number is then appended to this name. The modules will be re-named in the
entire hdWGCNA experiment, so all subsequent plots etc will show the updated names.
The following code shows how to rename the hdWGCNA modules.
seurat_obj <- ResetModuleNames( seurat_obj, new_name = "Renamed-M" # the base name for the new modules ) # print out the new module names modules <- GetModules(seurat_obj) print(levels(modules$module))
[1] "Renamed-M1" "Renamed-M2" "Renamed-M3" "Renamed-M4" "Renamed-M5" [6] "Renamed-M6" "Renamed-M7" "Renamed-M8" "Renamed-M9" "Renamed-M10" [11] "grey" "Renamed-M11" "Renamed-M12" "Renamed-M13" "Renamed-M14" [16] "Renamed-M15" "Renamed-M16" "Renamed-M17" "Renamed-M18"
Alternatively, we can supply a named list to rename selected modules.
rename_list <- list( "Renamed-M1" = 'Charlie', # "old_module_name" = "new_module_name" "Renamed-M2" = "Mac", "Renamed-M3" = "Dennis" ) seurat_obj <- ResetModuleNames( seurat_obj, new_name = rename_list ) # print out the new module names modules <- GetModules(seurat_obj) print(levels(modules$module))
[1] "Charlie" "Mac" "Dennis" "Renamed-M4" "Renamed-M5" [6] "Renamed-M6" "Renamed-M7" "Renamed-M8" "Renamed-M9" "Renamed-M10" [11] "grey" "Renamed-M11" "Renamed-M12" "Renamed-M13" "Renamed-M14" [16] "Renamed-M15" "Renamed-M16" "Renamed-M17" "Renamed-M18"
Finally, we can supply a character vector with a new name for each module rather than a named list.
# how many non-grey modules are there? n_mods <- length(levels(modules$module)) - 1 seurat_obj <- ResetModuleNames( seurat_obj, new_name = as.character(1:n_mods) ) # print out the new module names modules <- GetModules(seurat_obj) print(levels(modules$module))
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" [11] "grey" "11" "12" "13" "14" "15" "16" "17" "18"
In the next section, we will re-make some of the hdWGCNA visualizations so we can see that the module names have been updated.
Here we demonstrate how to assign new colors to the hdWGCNA modules using the
ResetModuleColors
function. This function takes a list of new colors to
replace the old colors, or a named list in order to change the colors selected modules.
The ordering of the colors depends on the factor level
of the hdWGCNA modules themselves. Additionally, this function ensures that the
"grey moddule", which contains genes that did not get assigned to a co-expression
module, remains grey.
In this example, we use the
MetBrewer
package to select a
new color scheme for our modules. First, we can make a table to show the
original module-color pairings.
# get the module table modules <- GetModules(seurat_obj) mods <- unique(modules$module) # make a table of the module-color pairings mod_colors_df <- dplyr::select(modules, c(module, color)) %>% distinct %>% arrange(module) rownames(mod_colors_df) <- mod_colors_df$module # print the dataframe mod_colors_df
Output
module color INH-M1 INH-M1 lightgreen INH-M2 INH-M2 lightyellow INH-M3 INH-M3 blue INH-M4 INH-M4 cyan INH-M5 INH-M5 black INH-M6 INH-M6 green INH-M7 INH-M7 brown INH-M8 INH-M8 purple INH-M9 INH-M9 salmon INH-M10 INH-M10 turquoise INH-M11 INH-M11 greenyellow INH-M12 INH-M12 yellow INH-M13 INH-M13 tan INH-M14 INH-M14 lightcyan INH-M15 INH-M15 grey60 INH-M16 INH-M16 midnightblue INH-M17 INH-M17 red grey grey grey INH-M18 INH-M18 magenta INH-M19 INH-M19 pink INH-M20 INH-M20 royalblue
Next, we will use ResetModuleColors
to change all of the module-color pairings.
# load MetBrewer color scheme pakckage library(MetBrewer) # get a table of just the module and it's unique color mod_color_df <- GetModules(seurat_obj) %>% dplyr::select(c(module, color)) %>% distinct %>% arrange(module) # the number of unique modules (subtract 1 because the grey module stays grey): n_mods <- nrow(mod_color_df) - 1 # using the "Signac" palette from metbrewer, selecting for the number of modules new_colors <- paste0(met.brewer("Signac", n=n_mods)) # reset the module colors seurat_obj <- ResetModuleColors(seurat_obj, new_colors)
Now we will test some of the different visualization functions to check that the colors were successfully modified.
Code
PlotDendrogram(seurat_obj, main='Recolored Dendrogram')
Code
# make a featureplot of hMEs for each module plot_list <- ModuleFeaturePlot(seurat_obj) # stitch together with patchwork wrap_plots(plot_list, ncol=6)
Code
ModuleUMAPPlot( seurat_obj, edge.alpha=0.15, sample_edges=TRUE, edge_prop=0.2, label_hubs=2 )
In this example, we will change the colors of only two modules rather than all of them.
We need to supply ResetModuleColors
with a named list detailing which modules
we want to change, and which color to change them to. We will make a FeaturePlot
before and after changing the colors to test if they were properly changed.
# make a featureplot before changing colors pl1 <- ModuleFeaturePlot(seurat_obj, module_names = c('INH-M5', 'INH-M12', 'INH-M16')) # set new colors new_colors <- list('INH-M12' = 'darksalmon', 'INH-M5' = 'deeppink') seurat_obj <- ResetModuleColors(seurat_obj, new_colors) # make a featureplot after changing colors pl2 <- ModuleFeaturePlot(seurat_obj, module_names = c('INH-M5', 'INH-M12', 'INH-M16')) # stitch together with patchwork wrap_plots(c(pl1, pl2), ncol=3)
We successfully changed the color of modules INH-M5 and INH-M12, while leaving all of the other module colors as they were.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.