介紹
一致性聚類是一種為確定數據集中可能的聚類的數量和成員提供定量證據的方法,例如作為微陣列基因表達。這種方法在癌癥基因組學中得到了廣泛應用,在那里發現了新的疾病分子亞類。
一致性聚類方法包括從一組項目中進行次抽樣,例如微陣列,并確定特定簇計數(k)的簇。然后,對共識值,兩個項目占在同一子樣本中發生的次數中有相同的聚類,計算并存儲在每個k的對稱一致矩陣中。
ConsensusClusterPlus
是我見過比較簡單的包了,基本上只有一步就可以對基因進行聚類。
對于這類算法我們比較頭疼的是K值的確定,可以使用一些其他算法輔助K值的確定。
代碼
首先導入數據并進行預處理,之后一步ConsensusClusterPlus
函數出圖
##使用ALL示例數據
library(ALL)
data(ALL)
d=exprs(ALL)
d[1:5,1:5]
01005 01010 03002 04006 04007
1000_at 7.597323 7.479445 7.567593 7.384684 7.905312
1001_at 5.046194 4.932537 4.799294 4.922627 4.844565
1002_f_at 3.900466 4.208155 3.886169 4.206798 3.416923
1003_s_at 5.903856 6.169024 5.860459 6.116890 5.687997
1004_at 5.925260 5.912780 5.893209 6.170245 5.615210
#篩選前5000標準差的基因
mads=apply(d,1,mad)
d=d[rev(order(mads))[1:5000],]
#sweep函數減去中位數進行標準化
d = sweep(d,1, apply(d,1,median,na.rm=T))
#一步完成聚類
library(ConsensusClusterPlus)
title=tempdir()
results = ConsensusClusterPlus(d,maxK=6,reps=50,pItem=0.8,pFeature=1,
title=title,clusterAlg="hc",distance="pearson",seed=1262118388.71279,plot="png")
之后進行提取基因集等后續操作,ConsensusClusterPlus的輸出是一個列表,其中列表對應于來自KTH集群的結果,例如,results[[2]]是結果k=2。consensusMatrix輸出一致矩陣。
#輸出K=2時的一致性矩陣
results[[2]][["consensusMatrix"]][1:5,1:5]
[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 1.0000000 0.8947368 1.0000000 1.000000
[2,] 1.0000000 1.0000000 0.9142857 1.0000000 1.000000
[3,] 0.8947368 0.9142857 1.0000000 0.8857143 0.969697
[4,] 1.0000000 1.0000000 0.8857143 1.0000000 1.000000
[5,] 1.0000000 1.0000000 0.9696970 1.0000000 1.000000
#hclust選項
results[[2]][["consensusTree"]]
Call:
hclust(d = as.dist(1 - fm), method = finalLinkage)
Cluster method : average
Number of objects: 128
#樣本分類
results[[2]][["consensusClass"]][1:5]
01005 01010 03002 04006 04007
1 1 1 1 1
#計算聚類一致性 (cluster-consensus) 和樣品一致性 (item-consensus)
icl <- calcICL(results, title = title,
plot = "png")
## 返回了具有兩個元素的list,然后分別查看一下
dim(icl[["clusterConsensus"]])
[1] 20 3
icl[["clusterConsensus"]]
dim(icl[["itemConsensus"]])
[1] 2560 4
icl[["itemConsensus"]][1:5,]
部分結果展示