识别无监督类的工具包ConsensusClusterPlus

2022-03-29 09:39:08 浏览数 (2)

导语

GUIDE ╲

一致性聚类(Consensus Clustering)是一个能够确定数据集(微阵列基因表达)中可能聚类的数量和成员的方法。这种方法在癌症基因组学研究中广泛普及,用于发现新的疾病的分子亚型。

方法简介

Consensus Clustering是从一组样本(items)数据(如微阵列)中进行子抽样,并确定指定簇数(k)的簇。对于每个k,计算配对的一致性值consensus values,即两个样本在同一子样本中出现的次数占同一聚类的比例,并存储在一个对称的共识矩阵(consensus matrix)中。共识矩阵汇总在几个图形展示中,使用户能够决定合理的聚类数量和成员

R包介绍

使用ConsensusClusterPlus有三个主要步骤:

①准备输入数据

②运行程序

③计算聚类一致性(cluster-consensus)和样本一致性(item-consensus)。

1. 准备输入数据

输入的是要进行聚类的数据,这些数据可能是一个实验的结果,如mRNA表达芯片或免疫组织化学染色强度。输入数据是一个矩阵,其中列是样本,行是特征,单元格是数值。接下来我们使用ALL包的基因表达数据进行介绍。

代码语言:javascript复制
BiocManager::install("ConsensusClusterPlus")
library(ConsensusClusterPlus)
 
library(ALL)
data(ALL)
d=exprs(ALL) #提取表达数据
d[1:5,1:5]

为了选择信息最丰富的基因进行类的识别,将数据集减少到前5000个最可变(most variable)的基因(通过中位数绝对偏差度量,MAD)。对5000个基因和MAD的选择也可以用其他统计变异筛选方法代替。用户可以决定是否使用筛选方法或使用筛选方法的类型。另一种选择是为取样基因提供权重(方法:weightsFeatures)

代码语言:javascript复制
mads=apply(d,1,mad) #MAD测度
d=d[rev(order(mads))[1:5000],] #提取前5000个基因

如果想要转换或标准化数据,可以很容易地使用其他Bioconductor methods或一个简单语句。该包选择使用皮尔逊相关距离(Pearson correlation distance)的聚类遗传算法为默认设置。

代码语言:javascript复制
d = sweep(d,1, apply(d,1,median,na.rm=T))
#sweep是一个循环函数
#这里首先用apply计算每列的中值
#然后用每个基因在样本中的表达值减中值,是一个标准化方法
d[1:5,1:5]

d矩阵将用于聚类计算

2. 运行 ConsensusClusterPlus

(1)运行

代码语言:javascript复制
title="C:\Users\DELL\Desktop"  #设置输出文件的保存位置
results = ConsensusClusterPlus(
         d,maxK=6, #聚类的最大类数,所以会评估聚2类、3类...6类
         reps=50, #50个重采样
         pItem=0.8,  #重采样样本为80%  
         pFeature=1, #重采样基因为80%  
         title=title, #输出文件的保存位置
         clusterAlg="hc", #聚合层次聚类算法
         distance="pearson", #Pearson 相关距离
         seed=1262118388.71279,
         #设置特定的随机种子,使例子是可重复的
         plot="png")

在我们实际计算时,建议使用更高的reps(如1,000),以及更高的 cluster count(如20)。

ConsensusClusterPlus的输出是一个列表,其中列表中的元素对应于第k个簇的结果,例如results[[2]]就是k=2的结果结果。

(2)结果展示

①例:聚两类时的consensus matrix

②例:聚两类时的hclust对象

③例:聚两类时的样本分类信息

(3)输出聚类图

①第一张图为颜色图例

②第二至六张图为聚类图

③第7张图为一致累积分布函数(Consensus Cumulative Distribution Function,CDF)图

该图展示每一种聚类(不同K)的一致累积分布函数图,以帮助用户确定当CDF达到最大时的k的选择,这样一致性和聚类置信达到最大。

④Delta Area

是CDF曲线比较k和k−1下面积的相对变化,当k = 2时,没有k -1,所以绘制的是曲线下的总面积,而不是相对增加的面积。此帮助用户确定共识的相对增加,以及没有明显增加的k值。

⑤Tracking Plot

此图显示了按颜色对每个k(行)样本(列)的各类分配。经常更改集类(在列中更改颜色)的说明成员关系不稳定。

3. 生成类和样本一致性

(1)计算cluster-consensus and item-consensus

代码语言:javascript复制
icl = calcICL(results,title=title,plot="png")
#icl是两元素的列表,分别是cluster-consensus和item-consensus测度
icl[["clusterConsensus"]]
代码语言:javascript复制
icl[["itemConsensus"]][1:5,]

(2)一致性图示

①聚类一致性图示

这是各类成员之间所有配对一致值的平均值分布。高值表示该类具有高稳定性,低值表示类具有低稳定性。

②样本一致性图示

是一个样本与特定类中的所有样本一致性的平均值。Item-consensus值由条形图的有色部分的高度表示,其颜色对应于通用的配色方案。条形的矩形按从下到上递增的值排列。顶部的星号表示每个样本的consensus cluster。

小编总结

今天介绍的聚类R包可以说是非常方便省事的一款聚类方法了,可以让我们直观的评估出最优的聚类分布,这个包在近期的一些生信分析中是很热门的,大家可以动手操作试试哦!

0 人点赞