<- c("fs", "futile.logger", "configr", "stringr", "ggpubr", "ggthemes", "clusterProfiler",
pkgs "vroom", "jhtools", "glue", "openxlsx", "ggsci", "patchwork", "cowplot",
"tidyverse", "dplyr", "Seurat", "harmony", "ggpubr", "GSVA", "EnhancedVolcano")
suppressMessages(conflicted::conflict_scout())
for (pkg in pkgs){
suppressPackageStartupMessages(library(pkg, character.only = T))
}<- "./results/figure6" %>% checkdir
res_dir <- "./data" %>% checkdir
dat_dir <- "./config" %>% checkdir
config_dir
#colors config
<- glue::glue("{config_dir}/configs.yaml")
config_fn <- jhtools::show_me_the_colors(config_fn, "rctd_colors")
rctd_cols
#read in coldata
<- read_rds(glue::glue("{dat_dir}/sce_mac_DNp50_retsne.rds"))
sce_mac <- read_rds(glue::glue("{dat_dir}/spatial_ls_rctd.rds")) spatial_ls
figure6
figure6a
<- DimPlot(sce_mac, reduction = "tsne", group.by = "cell_types2", pt.size = .001,
p label = F, cols = c("DN-mp" = "#BC3C29FF", "Other-mp" = "#0072B5FF"), combine = F)
<- p[[1]] +
p guides(color = guide_legend(keywidth = unit(0, "cm"),
keyheight = unit(0, "cm")),
nrow = 2, byrow = T) +
theme(plot.title = element_blank(),
axis.text = element_blank(),
axis.title = element_text(size = 8),
axis.line = element_blank(),
axis.ticks = element_blank(),
plot.margin = margin(0,0,0,0),
legend.position = c(.05,.9),
legend.text = element_text(size = 6))
print(p)
figure6b
<- FeaturePlot(sce_mac, reduction = "tsne", features = "CD163",
p1 order = T, pt.size = .001, combine = F)
<- p1[[1]] +
p1 guides(color = guide_colourbar(barwidth = unit(.1, "cm"),
barheight = unit(.6, "cm"),
title = "CD163",
title.position = "top")) +
theme(plot.title = element_blank(),
axis.text = element_blank(),
axis.title = element_text(size = 8),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.spacing = unit(0, "mm"),
panel.border = element_rect(fill = NA, colour = NA),
plot.background = element_rect(fill = NA, colour = NA),
plot.margin = margin(0,0,0,0),
legend.position = c(0,.8),
legend.margin = margin(0,0,0,0),
legend.title = element_text(size = 6),
legend.text = element_text(size = 6))
<- FeaturePlot(sce_mac, reduction = "tsne", features = "HLA-DRB5",
p2 order = T, pt.size = .001, combine = F)
<- p2[[1]] +
p2 guides(color = guide_colourbar(barwidth = unit(.1, "cm"),
barheight = unit(.6, "cm"),
title = "HLA-DRB5",
title.position = "top")) +
theme(plot.title = element_blank(),
axis.text = element_blank(),
axis.title = element_text(size = 8),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.spacing = unit(0, "mm"),
panel.border = element_rect(fill = NA, colour = NA),
plot.background = element_rect(fill = NA, colour = NA),
plot.margin = margin(0,0,0,0),
legend.position = c(0,.8),
legend.margin = margin(0,0,0,0),
legend.title = element_text(size = 6),
legend.text = element_text(size = 6))
<- p1|p2
p print(p)
figure6c
<- DotPlot(sce_mac, features = c('PTPRC', 'CD68', 'HLA-DRA', 'HLA-DRB1', 'HLA-DRB5', 'CD163'), scale = F,
p dot.scale = 4.5) + RotatedAxis() + theme_bmbdc() +
scale_colour_gradientn(colours = c("grey", "#ffe5e5", "#ff7f7f", "#ff6666", "#ff0000"),
guide = guide_legend(keywidth = unit(100, "mm")),
values = scales::rescale(x = c(0, 1, 2, 3, 4), from = c(0, 4))) +
guides(size = guide_legend(title = "Percent Expressed", keywidth = unit(1, "cm"),
keyheight = unit(.2, "cm"), nrow = 2, byrow = T)) +
guides(color = guide_colorbar(title = "Expression", barwidth = unit(1, "cm"), barheight = unit(.2, "cm"))) +
theme(axis.text = element_text(size = 6),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.key.size = unit(.2, 'cm'),
axis.text.x = element_text(angle = 30),
axis.text.y = element_text(angle = 50),
axis.line.x = element_line(linewidth = 0.4),
axis.line.y = element_line(linewidth = 0.4),
legend.margin = margin(0,0,0,0),
legend.title = element_text(size=6),
legend.text = element_text(size=6),
legend.position = "top")
print(p)
figure6d
<- read_csv(glue::glue("{dat_dir}/pdac_DNvsOth_de_markers.csv")) %>% dplyr::filter(pct.1 > 0.1)
de_df
<- ifelse(
keyvals $avg_log2FC < -0.5 & de_df$p_val_adj < 10e-10, "#0072B5FF",
de_dfifelse(de_df$avg_log2FC > 0.5 & de_df$p_val_adj < 10e-10, "#BC3C29FF",
"#c7c1c1"))
is.na(keyvals)] <- "#c7c1c1"
keyvals[names(keyvals)[keyvals == "#0072B5FF"] <- "Other-mp"
names(keyvals)[keyvals == "#c7c1c1"] <- "NS"
names(keyvals)[keyvals == "#BC3C29FF"] <- "DN-mp"
<- EnhancedVolcano(de_df,
p lab = de_df$gene,
x = 'avg_log2FC',
y = 'p_val_adj',
pCutoff = 10e-10,
FCcutoff = 0.5,
pointSize = 1.5,
labSize = 1.5,
caption = "",
legendLabSize = 2.5,
legendIconSize = 1.5,
colAlpha = 0.8,
colCustom = keyvals) +
theme_bmbdc() +
theme(plot.title = element_blank(),
plot.subtitle = element_blank(),
text = element_text(size = 6),
axis.text = element_text(size = 6),
axis.title.x = element_text(size = 6),
axis.title.y = element_text(size = 6, vjust = -10),
axis.line.x = element_line(linewidth = 0.4),
axis.line.y = element_line(linewidth = 0.4),
legend.key.size = unit(.2, 'cm'),
legend.title = element_blank(),
legend.text = element_text(size=4),
legend.position = c(.75,.9)) +
guides(colour = guide_legend(ncol = 1))
ggsave(glue::glue("{res_dir}/fig6d_DNmac_pdac_deg_volcano.pdf"), p, width = 3, height = 4)
p
figure6e
<- read_csv(glue::glue("{dat_dir}/goall_gsea_avg_mac.csv"))
gsea_df
<- ggplot(data = gsea_df, aes(y = NES, x = gs_exact_source)) +
p geom_col(fill = "#BC3C29FF") +
geom_text(aes(label = Description,
y = 0.1), size = 2, vjust = 0.5, hjust = 0) +
theme_bmbdc() +
theme(plot.title = element_blank(),
plot.subtitle = element_blank(),
text = element_text(size = 6),
axis.text = element_text(size = 6),
axis.title.y = element_blank(),
axis.title.x = element_text(size = 6),
axis.line.x = element_line(linewidth = 0.4),
axis.line.y = element_line(linewidth = 0.4),
legend.key.size = unit(.2, 'cm'),
legend.title = element_blank(),
legend.text = element_text(size=4),
legend.position = "top") +
coord_flip()
ggsave(glue::glue("{res_dir}/fig6e_DNmac_go_enrich.pdf"), p, height = 3, width = 4)
p
figure6f
<- FeaturePlot(sce_mac, reduction = "tsne", features = "S100A9",
p order = T, pt.size = .001, combine = F)
<- p[[1]] +
p guides(color = guide_colourbar(barwidth = unit(.1, "cm"),
barheight = unit(.6, "cm"),
title = "S100A9",
title.position = "top")) +
theme(plot.title = element_blank(),
axis.text = element_blank(),
axis.title = element_text(size = 8),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.spacing = unit(0, "mm"),
panel.border = element_rect(fill = NA, colour = NA),
plot.background = element_rect(fill = NA, colour = NA),
plot.margin = margin(0,0,0,0),
legend.position = c(0,.8),
legend.margin = margin(0,0,0,0),
legend.title = element_text(size = 6),
legend.text = element_text(size = 6))
print(p)
figure6g
#function
<- function(rctd, deconv,
plot_deconv_pie title = NULL,
my_pal = NULL,
size=0.35) {
= rctd@spatialRNA@coords %>% as_tibble(rownames = "barcodes") %>%
my_table ::mutate(y1= y,
dplyry = max(x) - x,
x = y1) %>% dplyr::select(-y1)
<- deconv %>% as_tibble(rownames = "barcodes")
plot_val <- left_join(my_table, plot_val, by = "barcodes")
my_table
<- ggplot2::ggplot() +
plot ::geom_scatterpie(ggplot2::aes(x = x, y = y), data = my_table, pie_scale = size, col = NA,
scatterpiecols = colnames(deconv)) +
coord_equal() + scale_fill_manual(values = my_pal) +
::theme_classic() #+ coord_flip()
ggplot2if(!is.null(title))
<- plot + ggplot2::ggtitle(title)
plot return(plot)
}
# images
<- SpatialPlot(spatial_ls[["HTA12_25_5"]], alpha = c(0,0), combine = F)
p1 <- p1[[1]] +
p1 coord_fixed() + theme_bmbdc() + theme(title = element_text(size = 6),
axis.text = element_text(size = 6, colour = "black"),
axis.title = element_blank(),
axis.ticks = element_line(colour = "black"),
plot.margin = margin(0.2,0.2,0.2,0.2),
legend.position = "none")
ggsave(glue::glue("{res_dir}/fig6g_image.pdf"), p1, width = 3.5, height = 3)
# deconv plot
<- read_rds(glue::glue("{dat_dir}/HTA12_25_5_RCTD.rds"))
rctd_ss <- read_rds(glue::glue("{dat_dir}/df_decov_norm_HTA12_25_5.rds"))
df_decov_norm
<- plot_deconv_pie(rctd = rctd_ss,
p2 my_pal = rctd_cols,
deconv = df_decov_norm,
title = "HTA12_25_5") +
theme(title = element_text(size = 6),
axis.text = element_text(size = 6, colour = "black"),
axis.title = element_blank(),
axis.ticks = element_line(colour = "black"),
plot.margin = margin(0.2,0.2,0.2,0.2),
legend.margin = margin(0.1,0.1,0.1,0.1),
legend.text=element_text(size = 4),
legend.key.size = unit(.1, "cm"))
# pdf(glue::glue("{res_dir}/fig6g_spatial_deconv_pie.pdf"), width = 4, height = 3)
# print(p2)
# dev.off()
|p2 p1
figure6h
<- read_rds(glue::glue("{dat_dir}/spatial_maconly_seu_obj.rds"))
seu_sub
<- DotPlot(seu_sub, features = c('CD68', 'HLA-DRA', 'HLA-DRB1', 'HLA-DRB5', 'CD163'), scale = F,
p dot.scale = 4.5, group.by = "DN_any") +
RotatedAxis() +
scale_colour_gradientn(colours = c("grey", "#ffe5e5", "#ff7f7f", "#ff6666", "#ff0000"),
values = scales::rescale(x = c(0, 0.5, 1, 1.5, 2), from = c(0, 2))) +
guides(size = guide_legend(title = "Percent Expressed", keywidth = unit(.2, "cm"),
keyheight = unit(.2, "cm"), nrow = 2, byrow = T)) +
guides(color = guide_colorbar(title = "Expression", barwidth = unit(1, "cm"), barheight = unit(.2, "cm"))) +
theme(plot.title = element_text(size = 6, face = "plain"),
axis.text = element_text(size = 6),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.key.size = unit(.2, 'cm'),
axis.text.x = element_text(angle = 30),
axis.text.y = element_text(angle = 50),
axis.line.x = element_line(linewidth = 0.4),
axis.line.y = element_line(linewidth = 0.4),
legend.margin = margin(0,0,0,0),
legend.title = element_text(size=4),
legend.text = element_text(size=4),
legend.position = "top")
p
# pdf(file = glue::glue("{res_dir}/fig6h_seu_maconly_DNmacANY_markers_exp_noscale.pdf"),width = 4, height = 2)
# print(p)
# dev.off()
figure6i
<- read_csv(glue::glue("{dat_dir}/DN_any_sub_macDEGs.csv"))
de_markers
<- ifelse(
keyvals $avg_log2FC < -1 & de_markers$p_val_adj < 10e-10, "#0072B5FF",
de_markersifelse(de_markers$avg_log2FC > 1 & de_markers$p_val_adj < 10e-10, "#BC3C29FF",
"#c7c1c1"))
is.na(keyvals)] <- "#c7c1c1"
keyvals[names(keyvals)[keyvals == "#0072B5FF"] <- "Highly expressed in other-mac & tumor enriched spots"
names(keyvals)[keyvals == "#c7c1c1"] <- "Not significant"
names(keyvals)[keyvals == "#BC3C29FF"] <- "Highly expressed in DN-mac & tumor enriched spots"
<- EnhancedVolcano(de_markers,
p lab = de_markers$gene,
x = 'avg_log2FC',
y = 'p_val_adj',
pCutoff = 10e-10,
FCcutoff = 1,
pointSize = 1.5,
labSize = 1.5,
caption = "",
legendLabSize = 2.5,
legendIconSize = 1.5,
#legendPosition = "top",
colAlpha = 0.8,
colCustom = keyvals) +
theme_bmbdc() +
theme(plot.title = element_blank(),
plot.subtitle = element_blank(),
text = element_text(size = 6),
axis.text = element_text(size = 6),
axis.title.x = element_text(size = 6),
axis.title.y = element_text(size = 6),
axis.line.x = element_line(linewidth = 0.4),
axis.line.y = element_line(linewidth = 0.4),
legend.key.size = unit(.2, 'cm'),
legend.title = element_blank(),
legend.text = element_text(size=6),
legend.position = "top") +
guides(colour = guide_legend(nrow = 3))
ggsave(glue::glue("{res_dir}/fig6i_DNmac_visium_deg_volcano.pdf"), p, width = 3, height = 4)
p