Switch to side-by-side view

--- a
+++ b/FigS6E_CoMMpass_CGA_heatmap.R
@@ -0,0 +1,187 @@
+
+# Plot heatmap of CGA expression in CoMMpass data (Figure S6E)
+
+library(ComplexHeatmap)
+library(circlize)
+library(RColorBrewer)
+library(grid)
+library(dplyr)
+
+# load data
+load("MM_COMPASS_FM.Rdata")
+load("GSVA_MM_COMPASS_scores.Rdata")
+
+# read correlation results
+cor <- read.table("TableS6_CoMMpass_MM_nCGA_correlations.tsv", sep = "\t", header = TRUE)
+
+# only samples with gexp data
+fm <- fm[, !is.na(fm["N:GEXP:KRAS",])]
+
+# order fm by subtype
+subtypes <- rep("CCND1", length(fm))
+subtypes[fm["B:SAMP:cancermap_subtypes_WHSC1_FGFR3_Ig",]==1] <- "FGFR3"
+subtypes[fm["B:SAMP:cancermap_subtypes_Hyperdiploid",]==1] <- "Hyperdiploid(gain(11q)"
+subtypes[fm["B:SAMP:cancermap_subtypes_Hyperdiploid_amp1q",]==1] <- "Hyperdiploid/gain(1q)"
+subtypes[fm["B:SAMP:cancermap_subtypes_MAF_Ig",]==1] <- "MAF"
+subtypes[fm["B:SAMP:cancermap_subtypes_TRAF3_Aberrated",]==1] <- "TRAF3"
+subtypes[fm["B:SAMP:cancermap_cluster_CGA_Prolif",]==1] <- "CGA/Proliferative"
+
+subtypes_order <- order(subtypes, fm["N:SAMP:nCGA",])
+fm <- fm[,subtypes_order]
+
+# create matrix with selected alterations
+cga <- as.character(read.table("cga.txt")[,1])
+
+feats <- paste0("N:GEXP:", cga)
+mat <- fm[feats,]
+mat <- mat[!is.na(mat[,1]),] # remove CGA genes not found
+
+mat_scaled <- t(apply(mat, 1, scale))
+colnames(mat_scaled) <- colnames(mat)
+rownames(mat_scaled) <- gsub("N:GEXP:", "", rownames(mat_scaled))
+
+
+# create heatmap annotations
+annot <- data.frame(subtype = subtypes[subtypes_order])
+
+ha1 <- HeatmapAnnotation(df = annot, col = list(subtype = structure(brewer.pal(length(unique(annot$subtype)), "Set1"), 
+                                                                                             names = as.character(unique(annot$subtype)))),
+                                                  
+                          CGA = anno_barplot(as.numeric(fm["N:SAMP:nCGA",]), 
+                                                  bar_width = 0.75, 
+                                                  border = FALSE, 
+                                                  axis = TRUE,
+                                                  axis_param = list(gp = gpar(fontsize = 5, lwd = 0.5)),
+                                                  gp = gpar(col = NA, fill = "#a52a2a"),
+                                                  ylim = c(0, 13)),
+                         
+                         Proliferation = anno_barplot(as.numeric(fm["N:CLIN:Prolif_Index",]), 
+                                               bar_width = 0.75, 
+                                               border = FALSE, 
+                                               axis = TRUE,
+                                               axis_param = list(gp = gpar(fontsize = 5, lwd = 0.5)),
+                                               gp = gpar(col = NA, fill = "grey20")),
+                         
+                         Mutations = anno_barplot(as.numeric(fm["N:CLIN:NS_Non_IG_Variants",]), 
+                                              bar_width = 0.75, 
+                                              border = FALSE, 
+                                              axis = TRUE,
+                                              axis_param = list(gp = gpar(fontsize = 5, lwd = 0.5)),
+                                              gp = gpar(col = NA, fill = "grey20"),
+                                              ylim = c(0, 900)),
+                         
+                                           gap = unit(0.75, "mm"),
+annotation_legend_param = list(subtype = list(title = "Subtype", title_gp = gpar(fontsize = 5), 
+                                                labels_gp = gpar(fontsize = 5), grid_height = unit(0.2, "cm"), grid_width = unit(2, "mm"))),
+height = unit(1.5, "cm"),
+simple_anno_size_adjust = T,
+show_annotation_name = F
+)
+
+alt <- data.frame(ccnd1 = as.character(fm["B:CNVR:RNASeq_CCND1_Ig_translocation",]),
+                  fgfr3 = as.character(fm["B:CNVR:RNASeq_WHSC1_Ig_translocation",]),
+                  hyperdiploid = as.character(fm["B:CNVR:Hyperdiploid_Call",]),
+                  maf = as.character(fm["B:CNVR:RNASeq_MAF_Ig_translocation",]),
+                  traf3 = as.character(fm["B:GNAB:TRAF3",]),
+                  nras = as.character(fm[c("B:GNAB:NRAS"),]),
+                  traf3_cnv = as.numeric(fm["N:CNVR:TRAF3",]),
+                  gain11q = as.numeric(fm["N:CNVR:11q23",]),
+                  gain1q =  as.numeric(fm["N:CNVR:1q21",])
+                  )
+
+green <- structure(c("darkgreen", "#EDEDED", "grey50"), names = c("1", "0", "NA"))
+blackgrey <- structure(c("black", "#EDEDED", "grey50"), names = c("1", "0", "NA"))
+ramp <- colorRamp2(seq(-1, 1, length.out = 11), rev(brewer.pal(11, "PuOr")))
+
+ha2 = HeatmapAnnotation(df = alt, col = list(ccnd1 = green,
+                                             fgfr3 = green,
+                                             hyperdiploid = green,
+                                             maf = green,
+                                             traf3 = blackgrey,
+                                             nras = blackgrey,
+                                             traf3_cnv = ramp,
+                                             gain11q = ramp,
+                                             gain1q = ramp),
+                        height = unit(1.75, "cm"),
+                        simple_anno_size_adjust = T,
+                        show_legend = F,
+                        show_annotation_name = F,
+                        gap = unit(0, "mm"))
+
+# make heatmap
+ht <- Heatmap(mat_scaled,
+              name = "heatmap",
+              col = colorRamp2(seq(-3, 3, length.out = 11), rev(brewer.pal(11, "RdBu"))),
+              use_raster = T,
+              top_annotation = ha1, 
+              bottom_annotation = ha2,
+              row_names_side = "right",
+              row_names_gp = gpar(fontsize = 5),
+              show_column_names = FALSE, 
+              show_column_dend = FALSE,
+              cluster_columns = FALSE,
+              cluster_rows = TRUE,
+              show_row_dend = FALSE,
+              row_title_gp = gpar(fontsize = 5),
+              show_heatmap_legend = T,
+              heatmap_legend_param = list(title = "Expression (log2)\nZ-score",
+                                          title_gp = gpar(fontsize = 5),
+                                          labels_gp = gpar(fontsize = 5),
+                                          grid_height = unit(0.2, "cm"),
+                                          grid_width = unit(2, "mm"))
+)
+
+
+# print heatmap
+pdf("FigureS6E_CoMMpass_CGA_heatmap.pdf", height = 3.25, width = 5)
+draw(ht)
+decorate_annotation("CGA", {
+  grid.text("CGAs expressed", unit(0, "npc") + unit(0.15, "cm"), 0.5, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("Proliferation", {
+  grid.text("Prolif. index", unit(0, "npc") + unit(0.15, "cm"), 0.5, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("Mutations", {
+  grid.text("Mutations", unit(0, "npc") + unit(0.15, "cm"), 0.5, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("ccnd1", {
+  grid.text("CCND1", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("fgfr3", {
+  grid.text("FGFR3/MMSET", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("hyperdiploid", {
+  grid.text("Hyperdiploid", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("maf", {
+  grid.text("MAF", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("traf3", {
+  grid.text("TRAF3", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("nras", {
+  grid.text("NRAS", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("traf3_cnv", {
+  grid.text("TRAF3", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("gain11q", {
+  grid.text("11q23", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+decorate_annotation("gain1q", {
+  grid.text("1q21", unit(0, "npc") + unit(7.1, "cm"), 0.1, 
+            default.units = "npc", just = c("left", "bottom"), gp = gpar(fontsize = 5))
+})
+
+dev.off()