Association with MM disease progression and survival

Association with MM disease progression

Here are testing whether the progression signature is associated MM disease progression and patient survival. A public MM gene expression data set GSE6477 is used for this purpose.

rm(list = ls())
library("ggplot2")
source("/sibcb2/bioinformatics/Script/PathwayEnrichment.R")
load("RData/GSE6477_Symbol.RData")
load("RData/rainbowMM_DGE_top.RData")

Enrichment of the signature:

# get mean expression
refMean <- apply(ExS, 1, mean)
ExCentered <- ExS - refMean

# Load expression signature
UP <- sigList$MM1S$UP
DN <- sigList$MM1S$DN

# get Z-score for the enrichment of signatures
M  <- ncol(ExCentered)
zPOS <- rep(0, M)
zNEG <- rep(0, M)

for(i in 1:M){
  
  fcVector <- ExCentered[,i]
  gsList   <- list(UP = UP, DN = DN)
  
  tempZ    <- SimpleRankTest(fcVector, gsList)
  zPOS[i]  <- tempZ[1]
  zNEG[i]  <- tempZ[2]
}
zDIF <- zPOS - zNEG
names(zDIF) <- colnames(ExS)

Dynamics during disease progression:

PvalueV    <- rep(1, 4)
Type       <- sapply(strsplit(colnames(ExS), "_"), function(x) x[2])
PvalueV[1] <- wilcox.test(zDIF[Type == "MGUS"],  zDIF[Type == "NC"])$p.value
PvalueV[2] <- wilcox.test(zDIF[Type == "SmMM"],  zDIF[Type == "NC"])$p.value
PvalueV[3] <- wilcox.test(zDIF[Type == "NewMM"], zDIF[Type == "NC"])$p.value
PvalueV[4] <- wilcox.test(zDIF[Type == "ReMM"],  zDIF[Type == "NC"])$p.value
PvalueV <- signif(PvalueV, 1)

# boxplot
sampleNames <- colnames(ExS)
Type <- factor(sapply(strsplit(colnames(ExS),"_"), function(x) x[2]), levels = c("NC","MGUS","SmMM","NewMM","ReMM"))
FillC <- c("#edf8fb","#b2e2e2","#66c2a4","#2ca25f","#006d2c")

mTable <- data.frame(sampleNames, Type, zDIF)
rownames(mTable) <- NULL
head(mTable)
      sampleNames  Type      zDIF
1  GSM148911_ReMM  ReMM 10.084968
2  GSM148912_MGUS  MGUS -6.183646
3 GSM148914_NewMM NewMM  1.010238
4 GSM148915_NewMM NewMM  1.884659
5  GSM148916_ReMM  ReMM  2.053511
6 GSM148917_NewMM NewMM  1.885458
Boxplot:
options(repr.plot.width=4, repr.plot.height=3, repr.plot.res = 300)
p <- ggplot(mTable, aes(x = Type, y = zDIF)) + ylim(-15, 20)
p <- p + theme_bw() + labs(x = "\nmultiple myeloma stages", y = "Enrichment Z-score", title = "") 
p <- p + geom_boxplot(width = 0.6, outlier.shape=NA,fill = FillC) + theme(legend.position="none")

p <- p + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
p <- p +  annotate("text", label = paste("p =",PvalueV[1]), x = 1.5, y = 6,  size = 3)
p <- p +  annotate("text", label = paste("p =",PvalueV[2]), x = 2.5, y = 10, size = 3)
p <- p +  annotate("text", label = paste("p =",PvalueV[3]), x = 3.5, y = 16, size = 3)
p <- p +  annotate("text", label = paste("p =",PvalueV[4]), x = 4.5, y = 19, size = 3)
p

Association with MM patient survival

Here are testing whether the progression signature is associated MM disease progression and patient survival. A public MM gene expression data set GSE2658 is used for this purpose.

rm(list = ls())
library("survHD")
source("/sibcb2/bioinformatics/Script/Survival_v2.R")
source("/sibcb2/bioinformatics/Script/PathwayEnrichment.R")
load("RData/GSE2658_ExS.Rdata")
load("RData/rainbowMM_DGE_top.RData")

Enrichment in each patient sample:

# Normalize the whole data
Ex     <- log2(ExS + 1)
qt     <- apply(Ex,1, function(x) quantile(x,0.75))
cutoff <- quantile(qt,0.1)
Index  <- qt > cutoff
Ex     <- Ex[Index,]

refMean    <- apply(Ex, 1, mean)
ExCentered <- Ex - refMean

# Load expression signature
UP <- sigList$MM1S$UP
DN <- sigList$MM1S$DN

# get Z-score for the enrichment of signatures
M  <- ncol(ExCentered)
zPOS <- rep(0, M)
zNEG <- rep(0, M)

for(i in 1:M){
  
  fcVector <- ExCentered[,i]
  gsList   <- list(UP = UP, DN = DN)
  
  tempZ    <- SimpleRankTest(fcVector, gsList)
  zPOS[i]  <- tempZ[1]
  zNEG[i]  <- tempZ[2]
}
zDIF        <- zPOS - zNEG
names(zDIF) <- colnames(ExS)

Survival plot:

Numbers   <- 100
highGroup <- names(sort(zDIF, decreasing = T)[1:Numbers])
lowGroup  <- names(sort(zDIF, decreasing = F)[1:Numbers])
group     <- c(rep("High", length(highGroup)), rep("Low", length(lowGroup)))

# test survival
colnames(suvTable) <- c("ID", "survivalTime","death", "CNV")
rownames(suvTable) <- as.character(suvTable$ID)
score = zDIF[rownames(suvTable)]
suvTable = data.frame(suvTable, score)

xTable = suvTable[c(highGroup, lowGroup),]
xTable$group = group
options(repr.plot.width=6, repr.plot.height=5, repr.plot.res = 250)
plotKMStratifyBy("median", y=Surv(xTable$survivalTime, xTable$death), linearriskscore = xTable$score)