免费JIZZ大全

ConsensusClusterPlus 包對基因表達數據進行一致性聚類

ConsensusClusterPlus 包對基因表達數據進行一致性聚類

Consensus Clustering(一致性聚類)是一種無監督聚類方法,是一種常見的癌癥亞型分類研究方法,可根據不同組學數據集將樣本區分成幾個亞型,從而發現新的疾病亞型或者對不同亞型進行比較分析。這類文章一般會對基因表達量(芯片數據或者RNA-seq數據)或甲基化等數據進行聚類分析,選出最優聚類數;對聚出的類組進行差異化表達分析得到DEGs,差異表達基因做GO、pathway,PPI等一系列分析,在分析一下與生存的關系、免疫細胞豐度的區別,等等。找出了分之間免疫細胞有區別、生存有區別,一篇揭示XX癌免疫應答異質性的文章就來了。


Consensus Clustering 的基本原理假設:從原數據集不同的子類中提取出的樣本構成一個新的數據集,并且從同一個子類中有不同的樣本被提取出來,那么在新數據集上聚類分析之后的結果,無論是聚類的數目還是類內樣本都應該和原數據集相差不大。因此所得到的聚類相對于抽樣變異越穩定,我們越可以相信這一樣的聚類代表了一個真實的子類結構。重采樣的方法可以打亂原始數據集,這樣對每一次重采樣的樣本進行聚類分析然后再綜合評估多次聚類分析的結果給出一致性(Consensus)的評估。總結,一致聚類通過基于重采樣的方法來驗證聚類合理性,其主要目的是評估聚類的穩定性,可用于確定最佳的聚類數目K。。


相比其他聚類方法一致性聚類的優勢:

不能提供“客觀的”分類數目的標準和分類邊界,例如Hierarchical Clustering。

需要預先給定一個分類的數目,且沒有統一的標準去比較不同分類數目下分類的結果,例如K-means Clustering。

聚類結果的合理性和可靠性無法驗證。


R實現一致性聚類

ConsensusClusterPlus則將Consensus Clustering在 R 中實現了。

#安裝包

if (!requireNamespace("BiocManager", quietly = TRUE))
? install.packages("BiocManager")
BiocManager::install("ConsensusClusterPlus")


主要方法:

(1)ConsensusClusterPlus 方法用于一致性聚類,

ConsensusClusterPlus(d=NULL, maxK = 3, reps=10, pItem=0.8,?
? ? ? ? ? ? ? pFeature=1, clusterAlg="hc",
? ? ? ? ? ? ? title="untitled_consensus_cluster",
? ? ? ? ? ? ? innerLinkage="average",?
? ? ? ? ? ? ? finalLinkage="average",?
? ? ? ? ? ? ? distance="pearson", ml=NULL,
? ? ? ? ? ? ? tmyPal=NULL,seed=NULL,
? ? ? ? ? ? ? plot=NULL,writeTable=FALSE,weightsItem=NULL,
? ? ? ? ? ? ? weightsFeature=NULL,verbose=F,corUse="everything")

常用參數:

d

提供的需要聚類的數據矩陣,其中列是樣本,行是features,可以是基因表達矩陣。

maxK

聚類結果中分類的最大數目,必須是整數。

reps

重抽樣的次數

pItem

樣品的抽樣比例,如?pItem=0.8 表示采用重抽樣方案對樣本的80%抽樣,經過多次采樣,找到穩定可靠的亞組分類。

pFeature

Feature的抽樣比例

clusterAlg

使用的聚類算法,“hc”用于層次聚類,“pam”用于PAM(Partioning Around Medoids)算法,“km”用于K-Means算法,也可以自定義函數。


title

設置生成的文件的路徑

distance

計算距離的方法,有pearson、spearman、euclidean、binary、maximum、canberra、minkowski。

tmyPal

可以指定一致性矩陣使用的顏色,默認使用白-藍色

seed

設置隨機種子。

plot

不設置時圖片結果僅輸出到屏幕,也可以設置輸出為'pdf', 'png', 'pngBMP' 。

writeTable

若為TRUE,則將一致性矩陣、ICL、log輸出到CSV文件

weightsItem

樣品抽樣時的權重

weightsFeature

Feature抽樣時的權重

verbose

若為TRUE,可輸出進度信息在屏幕上

corUse

設置如何處理缺失值:

all.obs:假設不存在缺失數據——遇到缺失數據時將報錯

everything:遇到缺失數據時,相關系數的計算結果將被設為missing

complete.obs:行刪除

pairwise.complete.obs:成對刪除,pairwisedeletion

(2)calcICL函數:
用法:

calcICL(res,title="untitled_consensus_cluster",plot=NULL,writeTable=FALSE)


參數:

res

consensusClusterPlus的結果

title

設置生成的文件的路徑

plot

不設置時圖片結果僅輸出到屏幕,也可以設置輸出為'pdf', 'png', 'pngBMP' 。

writeTable

若為TRUE,則將一致性矩陣、ICL、log輸出到CSV文件


數據分析

首先收集用于聚類分析的數據,比如 mRNA 表達微陣列或免疫組織化學染色強度的實驗結果數據。輸入數據的格式應為矩陣。下面以 ALL 基因表達數據為例進行操作。



##使用ALL示例數據library(ALL)data(ALL)d=exprs(ALL)d[1:5,1:5]  #共128個樣品,12625個探針數據
# 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
##對這個芯片表達數據進行簡單的normalization,取在各個樣品差異很大的那些gene或者探針的數據來進行聚類分析 mads=apply(d,1,mad) #計算每個基因的標準差 d=d[rev(order(mads))[1:5000],]
#sweep函數減去中位數進行標準化 d = sweep(d,1, apply(d,1,median,na.rm=T)) #也可以對這個d矩陣用DESeq的normalization 進行歸一化,取決于具體情況


聚類分析


title="F:/ConsensusClusterPlus"  #設置圖片輸出路徑

results <- ConsensusClusterPlus(dataset, maxK = 6,
                                reps = 50, pItem = 0.8,
                                pFeature = 0.8,
                                clusterAlg = "hc",
                                seed=100,
                                distance = "pearson",
                                title = title,
                                plot = "png")

#結果將會輸出k從2-6各個情況下的分型情況,聚類的方法用的是 hc ,抽樣比例為0.8,最后輸出png圖#這里設置的maxK=6、reps=50,但是實際上需要更高的reps(如1000)和更高的maxK(如20)


結果展示與說明;


(1)k = 2, 3, 4, 5, 6 時的矩陣熱圖:矩陣的行和列表示的都是樣本,一致性矩陣的值按從0(不可能聚類在一起)到1(總是聚類在一起)用白色到深藍色表示,一致性矩陣按照一致性分類(熱圖上方的樹狀圖)來排列。樹狀圖和熱圖之間的長條即分出來的類別。注意第一張為圖例;



attachments-2021-05-cIUqoEEA60aa502da99d4.png(2)一致性累積分布函數(CDF)圖:此圖展示了k取不同數值時的累積分布函數,用于判斷當k取何值時,CDF達到一個近似最大值,此時的聚類分析結果最可靠。即考慮CDF下降坡度小的k值。


attachments-2021-05-vcpTIJNP60aa506330efc.png(3)Delta Area Plot:此圖展示的是 k 和 k-1 相比CDF曲線下面積的相對變化。當k=2時,因為沒有k=1,所以第一個點表示的是k=2時CDF曲線下總面積,而非面積的相對變化值。當k=6時,曲線下面積僅小幅增長,故5為合適的k值。



attachments-2021-05-T7hBhylL60aa50a372b93.png


分類樹及結果:

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")


(1)Tracking Plot:此圖下方的黑色條紋表示樣品,展示的是樣品在k取不同的值時,歸屬的分類情況,不同顏色的色塊代表不同的分類。取不同k值前后經常改變顏色分類的樣品代表其分類不穩定。若分類不穩定的樣本太多,則說明該k值下的分類不穩定。


attachments-2021-05-dKBAtotV60aa51179e4c4.png


(2)Cluster-Consensus Plot:此圖展示的是不同k值下,每個分類的cluster-consensus value(該簇中成員pairwise consensus values的均值)。該值越高(低)代表穩定性越高(低)。可用于判斷同一k值下以及不同k值之間cluster-consensus value的高低。



attachments-2021-05-OhsyOagw60aa5133e013b.png(3)item-Consensus Plot:縱坐標代表Item-consensus values。k值不同時,每個樣本都會有一個對應不同簇的item-consensus values。豎條代表每一個樣本,豎條的高度代表該樣本的總item-consensus values。每個樣本的上方都有一個小叉叉,小叉叉的顏色代表該樣本被分到了哪一簇。從這張圖,可以看到每個樣本的分類是否足夠“純凈”,從而幫助決定k值,例如當k=6時,樣本的分類變得沒有那么純凈,說明k=5才是合適的。


attachments-2021-05-fo4KtcAx60aa5167a201d.png



  • 發表于 2021-05-23 20:44
  • 閱讀 ( 6113 )
  • 分類:TCGA

你可能感興趣的文章

相關問題

0 條評論

請先 登錄 后評論
omicsgene
omicsgene

生物信息

560 篇文章

作家榜 ?

  1. omicsgene 560 文章
  2. 安生水 257 文章
  3. Daitoue 167 文章
  4. 生物女學霸 120 文章
  5. 紅橙子 78 文章
  6. CORNERSTONE 72 文章
  7. 生信老頑童 50 文章
  8. landy 37 文章