想用无监督聚类预测分子亚型?确定不考虑ConsensusClusterPlus包吗?
点击蓝字 关注我们
最近大海哥发现很多小伙伴都通过基因表达数据来对样本进行聚类,划分为多个分子亚型来展开分析,并且都发了高分SCI,这让其他的小伙伴纷纷表示,我也要试一下这个方法,但是要怎么操作呢?别担心,大海哥来替你排忧解难!今天大海哥将介绍一个R包,叫做ConsensusClusterPlus,名字真长,好用也是真好用。这个R包是专门用于无监督一致性聚类,其可根据不同组学数据集将样本区分成几个亚型,从而发现新的疾病亚型或者对不同亚型进行比较分析,为了简化过程,这个R包把所有的步骤都封装到了一个函数里,所以使用起来非常简单,只需要三步
1、 加载R包
2、 导入数据
3、 运行聚类的函数
是不是和徒手劈榴莲一样简单?是不是也正好符合你的想法?那就让我们开始吧!
#首先安装R包,需要使用BiocManager来安装哦
# if (!require("BiocManager", quietly = TRUE))
# install.packages("BiocManager")
# BiocManager::install("ConsensusClusterPlus")
#安装过程中会安装官方依赖包“ALL”
#本次分析使用的样例数据来源于官方提供的ALL包中的探针表达数据
#导入R包
library(ALL)
library(ConsensusClusterPlus)
#导入数据
data(ALL)
d=exprs(ALL)
#要求行为基因,列为样本,行列相反的小伙伴用t()进行转置哦
d[1:5,1:5]
#这里为了让效果更佳,我们对数据进行一些预处理
#取中位数绝对偏差(Median Absolute Deviation)较大的前5000个探针
mads=apply(d,1,mad)
df=d [rev(order(mads))[1:5000],]
# order(mads):从小到大排序,返回索引
# rev(order(mads):从大到小排序
#计算每个值减去每行的中位数
df = sweep(df,1, apply(d,1,median,na.rm=T))
#处理结束,看一下数据
df[1:5,1:5]
#然后我们定义一下输出文件夹的名字
outdir="clusterResult"
#开始聚类!
results = ConsensusClusterPlus(df,maxK=6,reps=50,pItem=0.8,pFeature=1,
title=outdir,clusterAlg="hc",distance="pearson",
seed=1213,plot="pdf")
#这里大海哥稍微介绍一下函数中包含的参数
df:就是我们的数据,要求行为基因,列为样本
maxK:聚类的最大簇数,要求为整数
reps:重采样的次数
pItem:抽样比例
pFeature:样本特征的比例,一般就是1
title:指定输出文件夹名以及输出文件的前缀
clusterAlg:聚类采用的算法,默认是“hc”指层次聚类,还可以选择“km”指K-means聚类,或者一个返回聚类的函数
distance:计算基因距离的方式,有pearson、spearman、euclidean、binary、maximum、canberra、minkowski等,大家自行选择
seed:随机的程度,就随意设置就好了
plot:可以选择png或者pdf,还有pngBMP
#主要就是这些参数,更多参数大家可以上官网瞧瞧哦!
#运行完上面那行代码,就可以得到基本的聚类结果了,我们来看看吧
#下面为主要的聚类结果图
#上图中consensus matrix为样本聚类热图,一共有5张,大海哥这里展示了3张,一般杂乱线条越少说明聚类结果越好;
#consensus CDF为累计分布图,我们一般看consensus CDF的那个曲线于X轴更平行,就选k为几,或者通过手肘法观察Delta area来确定,然后选择输出结果中的对应k为几的表格文件就好了
#tracling plot中行为样本,列为每个K,一般用于定性评估不稳定的聚类和不稳定的样本
#有的小伙伴还想看看组间一致性和组类一致性,就用下面的代码
icl = calcICL(results,title=outdir,plot="pdf")
#然后就可以得到下面的图
#选择合适的k值后,可以得到对应聚类结果的数据框
sample_cluster <- results[[6]]$consensusClass
sample_cluster_df <- data.frame(sample = names(sample_cluster), cluster = sample_cluster)
head(sample_cluster_df)
点击“阅读原文”进入网址