Here are the analyses for the revision of the submitted paper “Single Cell Spatial Analysis Reveals the Topology of Immunomodulatory Purinergic Signaling in Glioblastoma”.
1- Use of published transcriptomic markers lists of immune cell populations on TCGA bulk full-length RNA-seq data from GBM to characterize their immune tumor microenvironment.
2- Use of published transcriptomic markers lists of inflammation-related processes on TCGA bulk full-length RNA-seq data from GBM to characterize their inflammation.
We use the RNA-seq data from TCGA processed by Tatlow and Piccolo, Sc Rep, 2016 using Kallisto and Gencode annotation.
require(RColorBrewer)
library(gridExtra)
library(edgeR)
library(gplots)
#--> Import TCGA GBM count matrix produced by Piccolo's lab w Kallisto and Gencode tools
GBM_TCGA_RNAseq_annot.count.mat <- read.csv(paste0(projDir, "/data/TCGA/RNAseq/Kallisto_Gencode_Tatlow_Piccolo/TCGA_GBM_counts.tsv"),
header = TRUE, sep = "\t", row.names = 1)
dim(GBM_TCGA_RNAseq_annot.count.mat) #199169 175
[1] 199169 175
#--> Only keep protein coding rows
GBM_TCGA_RNAseq_annot.count.mat <- GBM_TCGA_RNAseq_annot.count.mat[grep("protein_coding",
rownames(GBM_TCGA_RNAseq_annot.count.mat)), ]
dim(GBM_TCGA_RNAseq_annot.count.mat) #79930 175
[1] 79930 175
#--> Change rownames to only keep HUGO symbols
rownames.list <- strsplit(rownames(GBM_TCGA_RNAseq_annot.count.mat), "\\|")
rownames.tmp <- unlist(lapply(rownames.list, `[[`, 6))
rows.dup <- duplicated(rownames.tmp)
GBM_TCGA_RNAseq_annot.count.mat <- GBM_TCGA_RNAseq_annot.count.mat[!rows.dup, ] #only keep one row per gene name (first occurrence)
rownames(GBM_TCGA_RNAseq_annot.count.mat) <- rownames.tmp[!rows.dup]
dim(GBM_TCGA_RNAseq_annot.count.mat) #19594 175
[1] 19594 175
#--> Transform to a numeric matrix
GBM_TCGA_RNAseq_annot.count.mat <- data.matrix(GBM_TCGA_RNAseq_annot.count.mat)
#--> Remove X put before sample names beginning w a number
colnames(GBM_TCGA_RNAseq_annot.count.mat) <- gsub("^X", "", colnames(GBM_TCGA_RNAseq_annot.count.mat))
#--> Import metadata
metadata.GBM.TCGA.RNAseq <- read.table(paste0(projDir, "/data/TCGA/RNAseq/Kallisto_Gencode_Tatlow_Piccolo/TCGA_Metadata.csv"),
header = TRUE, sep = ",")
# metadata.GBM.TCGA.RNAseq <- t(metadata.GBM.TCGA.RNAseq)
# metadata.GBM.TCGA.RNAseq <- data.frame(metadata.GBM.TCGA.RNAseq)
dim(metadata.GBM.TCGA.RNAseq) #11373 10
[1] 11373 10
#--> Only keep GBM metadata
metadata.GBM.TCGA.RNAseq <- metadata.GBM.TCGA.RNAseq[grep("GBM", metadata.GBM.TCGA.RNAseq$b_disease),
]
dim(metadata.GBM.TCGA.RNAseq) #175 10
[1] 175 10
#--> Change metadata rownames so it matches the format of the counts matrix colnames
metadata.GBM.TCGA.RNAseq$old_rownames <- rownames(metadata.GBM.TCGA.RNAseq)
rownames(metadata.GBM.TCGA.RNAseq) <- metadata.GBM.TCGA.RNAseq$a_AliquotBarcode
#--> Change expr mat colnames (sample names) to match metadata rownames
metadata.GBM.TCGA.RNAseq$a_CGHubAnalysisID_2 <- gsub("-", ".", metadata.GBM.TCGA.RNAseq$a_CGHubAnalysisID)
colnames(GBM_TCGA_RNAseq_annot.count.mat) <- rownames(metadata.GBM.TCGA.RNAseq)[match(colnames(GBM_TCGA_RNAseq_annot.count.mat),
metadata.GBM.TCGA.RNAseq$a_CGHubAnalysisID_2)]
#--> Re-order metadata so it matches the expression matrix column order
metadata.GBM.TCGA.RNAseq <- metadata.GBM.TCGA.RNAseq[colnames(GBM_TCGA_RNAseq_annot.count.mat),
]
dim(metadata.GBM.TCGA.RNAseq) #175 12
[1] 175 12
#--> Import purity data from Aran et al, Nat Comm, 2015
purity_Aranetal <- read.table(paste0(projDir, "/data/41467_2015_BFncomms9971_MOESM1236_ESM.txt"),
header = TRUE, sep = "\t")
head(purity_Aranetal)
dim(purity_Aranetal) #9364 8
[1] 9364 8
#--> Only keep GBM rows
purity_Aranetal <- purity_Aranetal[grep("^GBM$", purity_Aranetal$Cancer.type), ]
dim(purity_Aranetal) #628 8
[1] 628 8
#--> Remove samples TCGA-06-0156-01A not sure what they correspond to in purity table
GBM_TCGA_RNAseq_annot.count.mat <- GBM_TCGA_RNAseq_annot.count.mat[, -grep("TCGA-06-0156-01A",
colnames(GBM_TCGA_RNAseq_annot.count.mat))]
dim(GBM_TCGA_RNAseq_annot.count.mat) #19594 173
[1] 19594 173
metadata.GBM.TCGA.RNAseq <- metadata.GBM.TCGA.RNAseq[-grep("TCGA-06-0156-01A", rownames(metadata.GBM.TCGA.RNAseq)),
]
dim(metadata.GBM.TCGA.RNAseq) #173 12
[1] 173 12
purity_Aranetal <- purity_Aranetal[-grep("TCGA-06-0156-01A", purity_Aranetal$Sample.ID),
]
dim(purity_Aranetal) #627 8
[1] 627 8
#--> New metadata rownames so they match the purity data Sample.ID
rname_1 <- lapply(strsplit(rownames(metadata.GBM.TCGA.RNAseq), "-"), `[[`, 1)
rname_2 <- lapply(strsplit(rownames(metadata.GBM.TCGA.RNAseq), "-"), `[[`, 2)
rname_3 <- lapply(strsplit(rownames(metadata.GBM.TCGA.RNAseq), "-"), `[[`, 3)
rname_4 <- lapply(strsplit(rownames(metadata.GBM.TCGA.RNAseq), "-"), `[[`, 4)
new_rshortnames <- paste(rname_1, rname_2, rname_3, rname_4, sep = "-")
rownames(metadata.GBM.TCGA.RNAseq) <- new_rshortnames
# Subset
metadata.GBM.TCGA.RNAseq <- merge(metadata.GBM.TCGA.RNAseq, purity_Aranetal, by.x = "row.names",
by.y = "Sample.ID", all = FALSE)
rownames(metadata.GBM.TCGA.RNAseq) <- metadata.GBM.TCGA.RNAseq$Row.names
dim(metadata.GBM.TCGA.RNAseq) #168 20
[1] 168 20
metadata.GBM.TCGA.RNAseq <- metadata.GBM.TCGA.RNAseq[, -1]
dim(metadata.GBM.TCGA.RNAseq) #168 19
[1] 168 19
#--> New expression matrix colnames so they match the purity data Sample.ID
cname_1 <- lapply(strsplit(colnames(GBM_TCGA_RNAseq_annot.count.mat), "-"), `[[`,
1)
cname_2 <- lapply(strsplit(colnames(GBM_TCGA_RNAseq_annot.count.mat), "-"), `[[`,
2)
cname_3 <- lapply(strsplit(colnames(GBM_TCGA_RNAseq_annot.count.mat), "-"), `[[`,
3)
cname_4 <- lapply(strsplit(colnames(GBM_TCGA_RNAseq_annot.count.mat), "-"), `[[`,
4)
new_cshortnames <- paste(cname_1, cname_2, cname_3, cname_4, sep = "-")
# purity_Aranetal[match(new_cshortnames, purity_Aranetal$Sample.ID),
# 'Sample.ID']
colnames(GBM_TCGA_RNAseq_annot.count.mat) <- new_cshortnames
dim(GBM_TCGA_RNAseq_annot.count.mat) #19594 173
[1] 19594 173
#--> Only keep the samples that are present in metadata
GBM_TCGA_RNAseq_annot.count.mat <- GBM_TCGA_RNAseq_annot.count.mat[, rownames(metadata.GBM.TCGA.RNAseq)]
dim(GBM_TCGA_RNAseq_annot.count.mat) #19594 168
[1] 19594 168
#--> Import clinical data from TCGA
gbm_tcga_pan_can_atlas_2018_clinical_data <- read.table(paste0(projDir, "/data/TCGA/Clinical_data/gbm_tcga_pan_can_atlas_2018_clinical_data.tsv"),
sep = "\t", header = TRUE)
dim(gbm_tcga_pan_can_atlas_2018_clinical_data) #592 6
[1] 592 6
rownames(gbm_tcga_pan_can_atlas_2018_clinical_data) <- gbm_tcga_pan_can_atlas_2018_clinical_data$Sample.ID
head(gbm_tcga_pan_can_atlas_2018_clinical_data)
# ## Samples present in metadata.GBM.TCGA.RNAseq to match TCGA clinical table
# samples_present_metadata <- gsub('[A-C]$', '',
# rownames(metadata.GBM.TCGA.RNAseq)) length(samples_present_metadata)
# length(unique(samples_present_metadata))
# samples_present_metadata[duplicated(samples_present_metadata)] #Subset TCGCA
# clinical data to only keep the samples we have
# gbm_tcga_pan_can_atlas_2018_clinical_data <-
# gbm_tcga_pan_can_atlas_2018_clinical_data[samples_present_metadata, ]
# dim(gbm_tcga_pan_can_atlas_2018_clinical_data) #168 6
# length(rownames(gbm_tcga_pan_can_atlas_2018_clinical_data))
# length(unique(gbm_tcga_pan_can_atlas_2018_clinical_data$Sample.ID)) #162
# samples_present_metadata[grep('NA',
# rownames(gbm_tcga_pan_can_atlas_2018_clinical_data))]
# Add column to metadata.GBM.TCGA.RNAseq w short ID names (without terminal
# letter)
metadata.GBM.TCGA.RNAseq$SampleID <- gsub("[A-C]$", "", rownames(metadata.GBM.TCGA.RNAseq))
# Add column to metadata.GBM.TCGA.RNAseq to keep rownames
metadata.GBM.TCGA.RNAseq$FullSampleID <- rownames(metadata.GBM.TCGA.RNAseq)
# Merge metadata.GBM.TCGA.RNAseq and TCGA clinical data
metadata.GBM.TCGA.RNAseq <- merge(metadata.GBM.TCGA.RNAseq, gbm_tcga_pan_can_atlas_2018_clinical_data,
by.x = "SampleID", by.y = "row.names", all.x = TRUE)
dim(metadata.GBM.TCGA.RNAseq) #168 26
[1] 168 27
rownames(metadata.GBM.TCGA.RNAseq) <- metadata.GBM.TCGA.RNAseq$FullSampleID
#--> Samples ending by 02X are recurrent samples
for (n in which(is.na(metadata.GBM.TCGA.RNAseq$Sample.Type))) {
if (endsWith(metadata.GBM.TCGA.RNAseq[n, "FullSampleID"], "02A")) {
metadata.GBM.TCGA.RNAseq[n, "Sample.Type"] <- "Recurrence"
}
}
table(metadata.GBM.TCGA.RNAseq$Sample.Type)
Primary Recurrence 155 13
library(reshape2)
library(ggplot2)
#--> Plot NT5E and ENTPD1 expression
exprs_int_genes <- GBM_TCGA_RNAseq_annot.count.mat[c("NT5E", "ENTPD1"), ]
exprs_int_genes_melt <- melt(exprs_int_genes, varnames = c("Gene", "Sample"))
gg_exprs <- ggplot(exprs_int_genes_melt, aes(x = Gene, y = log2(value), fill = Gene)) +
geom_boxplot() + theme_bw() + ggtitle("Genes expression (log2 counts)") + theme(plot.title = element_text(size = 14,
face = "bold"))
gg_exprs
pdf(paste0(projDir, "/results/GBM/exprs_levels/GBM_NT5E_ENTPD1_gene_exprs_log2.pdf"),
width = 8, height = 6)
gg_exprs
dev.off()
quartz_off_screen 2
#### NT5E ####
#--> Top and bottom samples with highest and lowest NT5E expression
# quantile(exprs_int_genes['NT5E', ], 0.25)
firstquartile_limit_NT5E <- as.numeric(summary(exprs_int_genes["NT5E", ])[2])
firstquartile_samples_NT5E <- colnames(exprs_int_genes)[exprs_int_genes["NT5E", ] <
firstquartile_limit_NT5E]
length(firstquartile_samples_NT5E)
[1] 42
bottomsamples.NT5E.table <- data.frame(Samplename = firstquartile_samples_NT5E, NT5Egroup = rep("NT5E_25_low",
length(firstquartile_samples_NT5E)))
# quantile(exprs_int_genes['NT5E', ], 0.75)
fourthquartile_limit_NT5E <- as.numeric(summary(exprs_int_genes["NT5E", ])[5])
fourthquartile_samples_NT5E <- colnames(exprs_int_genes)[exprs_int_genes["NT5E",
] > fourthquartile_limit_NT5E]
length(fourthquartile_samples_NT5E)
[1] 42
topsamples.NT5E.table <- data.frame(Samplename = fourthquartile_samples_NT5E, NT5Egroup = rep("NT5E_25_high",
length(fourthquartile_samples_NT5E)))
#--> Gather the two tables
NT5E.table.samples <- rbind(bottomsamples.NT5E.table, topsamples.NT5E.table)
rownames(NT5E.table.samples) <- NT5E.table.samples$Samplename
#--> NT5E expression of the kept top and bottom samples
NT5E.exprs <- as.matrix(exprs_int_genes["NT5E", rownames(NT5E.table.samples)])
#--> Add expression data
NT5E.table <- merge(NT5E.table.samples, NT5E.exprs, by = "row.names")
colnames(NT5E.table)[4] <- "NT5E_exprs"
rownames(NT5E.table) <- NT5E.table$Row.names
NT5E.table <- NT5E.table[, -1]
#### ENTPD1 ####
#--> Top and bottom samples with highest and lowest ENTPD1 expression
# quantile(exprs_int_genes['ENTPD1', ], 0.25)
firstquartile_limit_ENTPD1 <- as.numeric(summary(exprs_int_genes["ENTPD1", ])[2])
firstquartile_samples_ENTPD1 <- colnames(exprs_int_genes)[exprs_int_genes["ENTPD1",
] < firstquartile_limit_ENTPD1]
bottomsamples.ENTPD1.table <- data.frame(Samplename = firstquartile_samples_ENTPD1,
ENTPD1group = rep("ENTPD1_25_low", length(firstquartile_samples_ENTPD1)))
# quantile(exprs_int_genes['ENTPD1', ], 0.75)
fourthquartile_limit_ENTPD1 <- as.numeric(summary(exprs_int_genes["ENTPD1", ])[5])
fourthquartile_samples_ENTPD1 <- colnames(exprs_int_genes)[exprs_int_genes["ENTPD1",
] > fourthquartile_limit_ENTPD1]
topsamples.ENTPD1.table <- data.frame(Samplename = fourthquartile_samples_ENTPD1,
ENTPD1group = rep("ENTPD1_25_high", length(fourthquartile_samples_ENTPD1)))
#--> Gather the two tables
ENTPD1.table.samples <- rbind(bottomsamples.ENTPD1.table, topsamples.ENTPD1.table)
rownames(ENTPD1.table.samples) <- ENTPD1.table.samples$Samplename
#--> ENTPD1 expression of the kept top and bottom samples
ENTPD1.exprs <- as.matrix(exprs_int_genes["ENTPD1", rownames(ENTPD1.table.samples)])
#--> Add expression data
ENTPD1.table <- merge(ENTPD1.table.samples, ENTPD1.exprs, by = "row.names")
colnames(ENTPD1.table)[4] <- "ENTPD1_exprs"
rownames(ENTPD1.table) <- ENTPD1.table$Row.names
ENTPD1.table <- ENTPD1.table[, -1]
##### METADATA CREATION #####
nonannotsamples.NT5E <- setdiff(colnames(GBM_TCGA_RNAseq_annot.count.mat), NT5E.table$Samplename)
nonannot.NT5E.table <- data.frame(Samplename = nonannotsamples.NT5E, NT5Egroup = "NT5E_mid",
NT5E_exprs = NA)
rownames(nonannot.NT5E.table) <- nonannot.NT5E.table$Samplename
full.NT5E.table <- rbind(NT5E.table, nonannot.NT5E.table)
full.NT5E.table <- full.NT5E.table[colnames(GBM_TCGA_RNAseq_annot.count.mat), ] #same order than expr mat
dim(full.NT5E.table)
[1] 168 3
nonannotsamples.ENTPD1 <- setdiff(colnames(GBM_TCGA_RNAseq_annot.count.mat), ENTPD1.table$Samplename)
nonannot.ENTPD1.table <- data.frame(Samplename = nonannotsamples.ENTPD1, ENTPD1group = "ENTPD1_mid",
ENTPD1_exprs = NA)
rownames(nonannot.ENTPD1.table) <- nonannot.ENTPD1.table$Samplename
full.ENTPD1.table <- rbind(ENTPD1.table, nonannot.ENTPD1.table)
full.ENTPD1.table <- full.ENTPD1.table[colnames(GBM_TCGA_RNAseq_annot.count.mat),
]
dim(full.ENTPD1.table)
[1] 168 3
### Add exprs for mid samples
full.ENTPD1.table$ENTPD1_exprs_full <- GBM_TCGA_RNAseq_annot.count.mat["ENTPD1",
rownames(full.ENTPD1.table)]
full.NT5E.table$NT5E_exprs_full <- GBM_TCGA_RNAseq_annot.count.mat["NT5E", rownames(full.NT5E.table)]
GBM_TCGA_metadata <- merge(full.NT5E.table, full.ENTPD1.table, by = "row.names")
dim(GBM_TCGA_metadata) #173 7
[1] 168 9
rownames(GBM_TCGA_metadata) <- GBM_TCGA_metadata$Row.names
GBM_TCGA_metadata <- GBM_TCGA_metadata[, -1] #remove Row.names colors
dim(GBM_TCGA_metadata) #173 6
[1] 168 8
# add column combining NT5E and ENTPD1 groups
GBM_TCGA_metadata$Combined_groups <- paste0(GBM_TCGA_metadata$NT5Egroup, ";", GBM_TCGA_metadata$ENTPD1group)
GBM_TCGA_metadata$Combined_groups <- gsub("_25", "", GBM_TCGA_metadata$Combined_groups)
GBM_TCGA_metadata$Combined_groups <- factor(GBM_TCGA_metadata$Combined_groups)
GBM_TCGA_metadata$NT5Egroup <- factor(GBM_TCGA_metadata$NT5Egroup)
GBM_TCGA_metadata$ENTPD1group <- factor(GBM_TCGA_metadata$ENTPD1group)
dim(GBM_TCGA_metadata) #175 8
[1] 168 9
head(GBM_TCGA_metadata)
table(GBM_TCGA_metadata$Combined_groups)
NT5E_high;ENTPD1_high NT5E_high;ENTPD1_low NT5E_high;ENTPD1_mid NT5E_low;ENTPD1_high NT5E_low;ENTPD1_low NT5E_low;ENTPD1_mid NT5E_mid;ENTPD1_high NT5E_mid;ENTPD1_low NT5E_mid;ENTPD1_mid 13 8 21 5 19 18 24 15 45
#--> Add purity info
GBM_TCGA_metadata <- merge(GBM_TCGA_metadata, metadata.GBM.TCGA.RNAseq, by = "row.names")
dim(GBM_TCGA_metadata) #168 27
[1] 168 37
rownames(GBM_TCGA_metadata) <- GBM_TCGA_metadata$Row.names
GBM_TCGA_metadata <- GBM_TCGA_metadata[, -1] #remove Row.names column
dim(GBM_TCGA_metadata) #168 26
[1] 168 36
GBM_TCGA_metadata$ABSOLUTE <- gsub(",", ".", GBM_TCGA_metadata$ABSOLUTE)
GBM_TCGA_metadata$ABSOLUTE <- as.numeric(GBM_TCGA_metadata$ABSOLUTE)
GBM_TCGA_metadata$CPE <- gsub(",", ".", GBM_TCGA_metadata$CPE)
GBM_TCGA_metadata$CPE <- as.numeric(GBM_TCGA_metadata$CPE)
#--> Add classes of ABSOLUTE purity
GBM_TCGA_metadata$ABSOLUTEclasses <- GBM_TCGA_metadata$ABSOLUTE
GBM_TCGA_metadata[which(GBM_TCGA_metadata$ABSOLUTE <= 0.25), "ABSOLUTEclasses"] <- "[0;0.25]"
GBM_TCGA_metadata[which(GBM_TCGA_metadata$ABSOLUTE <= 0.5 & GBM_TCGA_metadata$ABSOLUTE >
0.25), "ABSOLUTEclasses"] <- "]0.25-0.5]"
GBM_TCGA_metadata[which(GBM_TCGA_metadata$ABSOLUTE <= 0.75 & GBM_TCGA_metadata$ABSOLUTE >
0.5), "ABSOLUTEclasses"] <- "]0.5-0.75]"
GBM_TCGA_metadata[which(GBM_TCGA_metadata$ABSOLUTE <= 1 & GBM_TCGA_metadata$ABSOLUTE >
0.75), "ABSOLUTEclasses"] <- "]0.75-1]"
GBM_TCGA_metadata[, c("ABSOLUTE", "ABSOLUTEclasses")]
#--> Add classes of CPE purity
GBM_TCGA_metadata$CPEclasses <- GBM_TCGA_metadata$CPE
GBM_TCGA_metadata[which(GBM_TCGA_metadata$CPE <= 0.25), "CPEclasses"] <- "[0;0.25]"
GBM_TCGA_metadata[which(GBM_TCGA_metadata$CPE <= 0.5 & GBM_TCGA_metadata$CPE > 0.25),
"CPEclasses"] <- "]0.25-0.5]"
GBM_TCGA_metadata[which(GBM_TCGA_metadata$CPE <= 0.75 & GBM_TCGA_metadata$CPE > 0.5),
"CPEclasses"] <- "]0.5-0.75]"
GBM_TCGA_metadata[which(GBM_TCGA_metadata$CPE <= 1 & GBM_TCGA_metadata$CPE > 0.75),
"CPEclasses"] <- "]0.75-1]"
GBM_TCGA_metadata[, c("CPE", "CPEclasses")]
#--> Order metadata
# GBM_TCGA_metadata_ordered <-
# GBM_TCGA_metadata[order(GBM_TCGA_metadata$NT5Egroup), ]
GBM_TCGA_metadata_ordered <- GBM_TCGA_metadata[with(GBM_TCGA_metadata, order(NT5Egroup,
ENTPD1group, Sample.Type)), ]
# rownames(GBM_TCGA_metadata_ordered) <- GBM_TCGA_metadata_ordered$Samplename
write.table(GBM_TCGA_metadata_ordered, paste0(projDir, "/data/GBM_TCGA_metadata_ordered.txt"),
sep = "\t", col.names = NA, row.names = TRUE, quote = FALSE)
library(reshape2)
library(ggplot2)
library(gridExtra)
library(ggsignif)
# CD39=ENTPD1 CD73=NT5E
#--> Plot NT5E and ENTPD1 expression
exprs_int_genes <- GBM_TCGA_RNAseq_annot.count.mat[c("NT5E", "ENTPD1"), ]
exprs_int_genes_melt <- melt(exprs_int_genes, varnames = c("Gene", "Sample"))
exprs_int_genes_melt <- merge(exprs_int_genes_melt, metadata.GBM.TCGA.RNAseq[, c("Sample.Type",
"Overall.Survival.Status")], by.x = "Sample", by.y = "row.names")
gg_exprs <- ggplot(exprs_int_genes_melt, aes(x = Sample.Type, y = log2(value), fill = Sample.Type)) +
geom_violin() + scale_fill_manual(values = c(Primary = "#f86474", Recurrence = "#08c4b4")) +
facet_wrap(~Gene) + theme_bw() + ggtitle("Genes expression (log2 counts)") +
theme(plot.title = element_text(size = 14, face = "bold")) + geom_signif(comparisons = list(c("Primary",
"Recurrence")), test = "wilcox.test")
gg_exprs
pdf(paste0(projDir, "/results/GBM/exprs_levels/GBM_NT5E_ENTPD1_gene_exprs_primrec_log_violin.pdf"),
width = 8, height = 4)
gg_exprs
dev.off()
quartz_off_screen 2
gg_exprs2 <- ggplot(exprs_int_genes_melt, aes(x = Sample.Type, y = log2(value), fill = Sample.Type)) +
geom_boxplot() + scale_fill_manual(values = c(Primary = "#f86474", Recurrence = "#08c4b4")) +
facet_wrap(~Gene) + theme_bw() + ggtitle("Genes expression (log2 counts)") +
theme(plot.title = element_text(size = 14, face = "bold")) + geom_signif(comparisons = list(c("Primary",
"Recurrence")), test = "wilcox.test")
gg_exprs2
pdf(paste0(projDir, "/results/GBM/exprs_levels/GBM_NT5E_ENTPD1_gene_exprs_primrec_log_boxplot.pdf"),
width = 8, height = 4)
gg_exprs2
dev.off()
quartz_off_screen 2
sessionInfo()
R version 4.0.4 (2021-02-15) Platform: x86_64-apple-darwin17.0 (64-bit) Running under: macOS Big Sur 10.16
Matrix products: default BLAS: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale: [1] fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8
attached base packages: [1] grid stats graphics grDevices utils datasets methods base
other attached packages: [1] viridis_0.6.2 viridisLite_0.4.0 circlize_0.4.13 ComplexHeatmap_2.6.2 ggsignif_0.6.3 ggplot2_3.3.5 reshape2_1.4.4 gplots_3.1.1 edgeR_3.32.1
[10] limma_3.46.0 gridExtra_2.3 RColorBrewer_1.1-2 knitr_1.36
loaded via a namespace (and not attached): [1] Rcpp_1.0.8 locfit_1.5-9.4 lattice_0.20-41 png_0.1-7 gtools_3.9.2 assertthat_0.2.1 digest_0.6.28 utf8_1.2.2 R6_2.5.1
[10] plyr_1.8.6 stats4_4.0.4 evaluate_0.14 highr_0.9 pillar_1.6.4 GlobalOptions_0.1.2 rlang_0.4.12 jquerylib_0.1.4 magick_2.7.3
[19] S4Vectors_0.28.1 GetoptLong_1.0.5 rmarkdown_2.11 labeling_0.4.2 stringr_1.4.0 munsell_0.5.0 compiler_4.0.4 xfun_0.26 BiocGenerics_0.36.1 [28] pkgconfig_2.0.3 shape_1.4.6 htmltools_0.5.2 tidyselect_1.1.1 tibble_3.1.6 IRanges_2.24.1 codetools_0.2-18 matrixStats_0.61.0 fansi_0.5.0
[37] crayon_1.4.2 dplyr_1.0.7 withr_2.4.3 bitops_1.0-7 jsonlite_1.7.2 gtable_0.3.0 lifecycle_1.0.1 DBI_1.1.1 magrittr_2.0.1
[46] formatR_1.11 scales_1.1.1 KernSmooth_2.23-18 stringi_1.7.6 farver_2.1.0 bslib_0.3.1 ellipsis_0.3.2 generics_0.1.1 vctrs_0.3.8
[55] rjson_0.2.20 tools_4.0.4 Cairo_1.5-12.2 glue_1.5.1 purrr_0.3.4 parallel_4.0.4 fastmap_1.1.0 yaml_2.2.1 clue_0.3-60
[64] colorspace_2.0-2 cluster_2.1.0 caTools_1.18.2 sass_0.4.0