MOVICS包的解读(2)

文摘   2024-11-13 14:40   新加坡  

昨天我们搞到了1.5,完成了聚类,并且保存了一个文件

moic.res.list <- append(moic.res.list,
                        list("iClusterBayes" = iClusterBayes.res))

# 保存下结果
save(moic.res.list, file = "moic.res.list.rda")

1.6绘制Consensus图

cmoic.brca <- getConsensusMOIC(moic.res.list = moic.res.list,
                               fig.name      = "CONSENSUS HEATMAP",
                               distance      = "euclidean",
                               linkage       = "average")

使用getConsensusMOIC 函数来生成多组学聚类分析的共识热图(consensus heatmap),以便总结不同算法的聚类结果。getConsensusMOIC 函数结合了多个聚类算法的输出结果,生成一个最终的聚类分群,从而提供更稳健的分型结果。以下是每个参数的解释:

  • moic.res.list = moic.res.list: 这是包含多个聚类算法结果的列表,之前通过 getMOIC 函数生成。moic.res.list 中的结果来自不同的聚类算法(如 SNF、PINSPlus 等),每个算法都生成了自己的聚类分群。
  • fig.name = "CONSENSUS HEATMAP": 指定生成图像的名称。在此,生成的图像会被命名为“CONSENSUS HEATMAP”,方便后续识别。
  • distance = "euclidean": 指定用于生成热图的距离度量方式。在这里使用的是欧几里得距离(Euclidean distance),这是常用的一种测量样本间相似性的方法。可以根据需求选择其他距离度量方式,比如曼哈顿距离(Manhattan)。
  • linkage = "average": 指定聚类算法的连接方法。在这里使用的是平均连接法(average linkage),它在计算聚类时会考虑群内元素之间的平均距离。这种方法生成的树状结构(dendrogram)会比较平滑。getConsensusMOIC 函数的作用是根据不同聚类算法的结果生成一个共识聚类,即将多种算法的结果进行整合,以生成更稳健的分群。最终生成的共识热图展示了样本之间的相似性,帮助评估聚类结果的稳定性。

图的解读

  • 热图矩阵:图的主体部分是一个相似性矩阵,其中每个小方格代表两个样本之间的一致性程度。颜色深浅表示相似性高低,颜色越亮(接近黄色),表示样本在多次聚类中越常被分到同一类。颜色越暗(接近紫色),表示样本间的一致性较低。对角线附近的亮色块通常表示较为一致的聚类群体。
  • 分型(Subtype)标记:图顶端有不同颜色的条带(标记为CS1、CS2、CS3等),表示最终的分型结果。这些颜色代表每个亚型,帮助识别样本属于哪个分型。
  • 层次聚类树(dendrogram):图的顶部和左侧的树状结构显示了样本的层次聚类关系。树状结构可以帮助观察样本如何聚集到不同的分型中,以及每个亚型之间的关系。

从图片中我们可以看到:

  • 分型一致性:如果热图中形成了几个清晰的亮色方块(比如图中的几块较亮区域),说明这些样本在多种算法下都被一致地分到同一组,表示聚类结果的一致性较好。每个亮色方块代表一个亚型。
  • 分型数量的合理性:从分块数量和树状图的层级,可以判断分型数量是否合理。如果看到分型清晰且数量与设定的聚类数(5)一致,说明分型数选择合理;否则,可能需要重新评估聚类数。
  • 亚型的差异:不同颜色代表的分型(CS1、CS2、CS3等)显示了最终的分群结果。可以根据颜色和树状结构来判断不同分型之间的相似性。
  • 相似性度量:图右侧的色条表示相似性强度,从0到1。颜色越亮,表示样本间的一致性越高,这通常是多次聚类后形成的共识结果。

这张热图可以表示可视化样本在多次聚类下的一致性。亮色区域和清晰的分块表示较为一致的聚类结果,暗色区域或无明显分块表示样本分群不够清晰。

图中的5个分型(CS1至CS5)对应于你的聚类数设定(N.clust=5),表明样本可以被合理分为5类。

1.7.接下来我们按照不同的算法进行分析一下数据集

  • 我们首先对选择的数据进行了一个处理。
indata <- mo.data
indata$meth.beta <- log2(indata$meth.beta / (1 - indata$meth.beta))

这里将mo.data 中的 DNA 甲基化数据 meth.beta 从 Beta 值转换为 M 值。M 值的信号更强,转换后的数据更适合用于聚类分析。

接着我们使用R包的内置的函数进行处理:

  • getStdiz 函数用于对多组学数据进行标准化处理:

  • halfwidth = c(2,2,2,NA):为每个数据类型设置数据截断范围。前三种组学数据(mRNA、lncRNA、甲基化)进行截断,第四种(突变)则不截断。

  • centerFlag = c(T,T,T,F):前三种数据进行居中(零中心化),突变数据不进行居中。

  • scaleFlag = c(T,T,T,F):前三种数据进行标准化,突变数据不进行标准化。

这里提取每种组学数据的前10个重要特征,并将它们存储在 annRow 列表中,用于在热图中标记这些特征:

feat1 到 feat4 分别表示 mRNA、lncRNA、甲基化和突变的特征列表。

# 绘制热图
plotdata <- getStdiz(data       = indata,
                     halfwidth  = c(2,2,2,NA), # no truncation for mutation
                     centerFlag = c(T,T,T,F), # no center for mutation
                     scaleFlag  = c(T,T,T,F)) # no scale for mutation
feat   <- iClusterBayes.res$feat.res
feat1  <- feat[which(feat$dataset == "mRNA.expr"),][1:10,"feature"
feat2  <- feat[which(feat$dataset == "lncRNA.expr"),][1:10,"feature"]
feat3  <- feat[which(feat$dataset == "meth.beta"),][1:10,"feature"]
feat4  <- feat[which(feat$dataset == "mut.status"),][1:10,"feature"]
annRow <- list(feat1, feat2, feat3, feat4)

# set color for each omics data
# if no color list specified all subheatmaps will be unified to green and red color pattern
mRNA.col   <- c("#00FF00""#008000""#000000""#800000""#FF0000")
lncRNA.col <- c("#6699CC""white"  , "#FF3C38")
meth.col   <- c("#0074FE""#96EBF9""#FEE900""#F00003")
mut.col    <- c("grey90" , "black")
col.list   <- list(mRNA.col, lncRNA.col, meth.col, mut.col)
  • 为每种组学数据指定不同的颜色:

  • mRNA.col、lncRNA.col、meth.col 和 mut.col 分别为 mRNA、lncRNA、甲基化和突变数据设定颜色。

  • 颜色列表 col.list 用于控制每个子热图的配色。

处理好了数据我们就可以进行画图展示了

# 贝叶斯法分型
getMoHeatmap(data          = plotdata,
             row.title     = c("mRNA","lncRNA","Methylation","Mutation"),
             is.binary     = c(F,F,F,T), # the 4th data is mutation which is binary 
             legend.name   = c("mRNA.FPKM","lncRNA.FPKM","M value","Mutated"), 
             clust.res     = iClusterBayes.res$clust.res, # cluster results 
             clust.dend    = NULL, # no dendrogram
             show.rownames = c(F,F,F,F), # specify for each omics data 
             show.colnames = FALSE, # show no sample names 
             annRow        = annRow, # mark selected features 
             color         = col.list, 
             annCol        = NULL, # no annotation for samples 
             annColors     = NULL, # no annotation color   
             width         = 10, # width of each subheatmap  
             height        = 5, # height of each subheatmap  
             fig.name      = "COMPREHENSIVE HEATMAP OF ICLUSTERBAYES")
  • data = plotdata:标准化后的数据。
  • row.title = c("mRNA","lncRNA","Methylation","Mutation"):为每种组学数据设置标题。
  • is.binary = c(F,F,F,T):表示第4种数据(突变)是二进制数据,其余是连续数据。
  • legend.name = c("mRNA.FPKM","lncRNA.FPKM","M value","Mutated"):为图例设置名称。
  • clust.res = iClusterBayes.res$clust.res:聚类结果,来自 iClusterBayes 分析。
  • clust.dend = NULL:不显示聚类树。
  • show.rownames = c(F,F,F,F):不显示行名。
  • show.colnames = FALSE:不显示列名。
  • annRow = annRow:标记选定的特征。
  • color = col.list:使用指定的颜色。
  • annCol = NULL 和 annColors = NULL:不对样本进行额外的标注。
  • width = 10 和 height = 5:每个子热图的宽度和高度。
  • fig.name = "COMPREHENSIVE HEATMAP OF ICLUSTERBAYES":图的文件名。

通过这段代码得到的就是这个图:

不同组学数据的热图:图中包含 mRNA、lncRNA、甲基化和突变的子热图,分别展示了不同组学数据在各分型(CS1 到 CS5)中的分布和表达情况。

  • 特征标注:每个子热图的右侧列出了选定的特征(如基因名),显示这些特征在不同分型中的表达或状态。
  • 颜色编码:颜色表示表达或甲基化水平的高低(从低到高)或突变状态(0/1),例如红色表示高表达或高甲基化,绿色表示低表达或低甲基化,黑色表示突变。
  • 分型的差异:通过观察颜色的不同,可以直观地看到每个分型(CS1 到 CS5)在不同组学数据上的特征差异,这有助于理解各分型的生物学特征。

1.8通过COCA方法生成热图

# COCA法分型
getMoHeatmap(data          = plotdata,
             row.title     = c("mRNA","lncRNA","Methylation","Mutation"),
             is.binary     = c(F,F,F,T), # the 4th data is mutation which is binary 
             legend.name   = c("mRNA.FPKM","lncRNA.FPKM","M value","Mutated"), 
             clust.res     = moic.res.list$COCA$clust.res, # cluster results 
             clust.dend    = moic.res.list$COCA$clust.dend, # show dendrogram for samples 
             color         = col.list,
             width         = 10, # width of each subheatmap 
             height        = 5, # height of each subheatmap 
             fig.name      = "COMPREHENSIVE HEATMAP OF COCA")
  • data = plotdata: 传入经过标准化的多组学数据,这些数据包含了 mRNA 表达、lncRNA 表达、DNA 甲基化和突变信息。

  • row.title = c("mRNA","lncRNA","Methylation","Mutation"): 为每个子热图指定标题,分别表示 mRNA、lncRNA、甲基化和突变数据的内容。

  • is.binary = c(F,F,F,T): 指定哪些数据是二进制的。这里前三个(mRNA、lncRNA、甲基化)为连续数据,因此设为 F,而突变数据是二进制数据,因此设为 T。

  • legend.name = c("mRNA.FPKM","lncRNA.FPKM","M value","Mutated"): 定义图例名称,帮助解读不同数据类型的单位或含义。

  • mRNA.FPKM 和 lncRNA.FPKM 表示这两种数据的单位是 FPKM(表达量)。

  • M value 表示甲基化数据的 M 值。Mutated 表示突变状态(0 表示无突变,1 表示有突变)。

  • clust.res = moic.res.listclust.res: 使用 COCA 方法生成的聚类结果,表示样本的分型。

  • clust.dend = moic.res.listclust.dend: 样本的层次聚类树状图(dendrogram),显示在热图顶部,用于展示样本间的聚类关系。

  • color = col.list: 指定每种组学数据的颜色方案。

  • col.list 是包含了 mRNA、lncRNA、甲基化和突变颜色方案的列表,分别控制各子热图的颜色显示。

  • width = 10 和 height = 5: 每个子热图的宽度和高度。

  • fig.name = "COMPREHENSIVE HEATMAP OF COCA": 输出图像文件名,设置为 "COMPREHENSIVE HEATMAP OF COCA"。

  • 子热图:图分为多个子图,分别展示了 mRNA 表达、lncRNA 表达、DNA 甲基化和突变信息。这些子图帮助我们观察不同分型在各组学数据中的特征分布。

  • mRNA 子图:绿色到红色的渐变表示不同的表达水平,绿色表示低表达,红色表示高表达。

  • lncRNA 子图:蓝色到红色的渐变表示 lncRNA 的表达水平。

  • Methylation 子图:蓝色到黄色到红色的渐变表示甲基化水平,蓝色表示低甲基化,红色表示高甲基化。

  • Mutation 子图:灰色表示无突变,黑色表示有突变。

  • 层次聚类树(dendrogram):图顶部的树状结构表示样本的层次聚类关系。通过观察树状图的分支,可以了解不同样本在 COCA 分型结果中的相似性。

  • 分型(Subtype)和突变状态:图右侧的图例中显示了分型(CS1 到 CS5)和突变状态(0 和 1)的颜色编码。分型颜色帮助区分不同亚型,突变状态颜色帮助识别突变与分型的关系。

  • 分型差异:不同分型在各组学数据上的颜色分布可能存在明显差异。这些差异可以反映出不同分型的生物学特征。例如,某些分型可能在特定的 mRNA 基因上表现为高表达,或在特定甲基化位点上表现为高甲基化。

该图展示了不同分型(CS1 到 CS5)在 mRNA、lncRNA、甲基化和突变数据中的分布模式。通过对比每个分型在不同组学数据上的表达水平或突变状态,可以帮助理解各分型的特征差异,为进一步分析肿瘤分子亚型提供依据。


生信夜班侠
一个不想搞医疗,想改行搞科研的儿科Dr