导语
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包可以说是非常方便省事的一款聚类方法了,可以让我们直观的评估出最优的聚类分布,这个包在近期的一些生信分析中是很热门的,大家可以动手操作试试哦!