Mfuzz
能夠識別表達譜的潛在時間序列模式,并將相似模式的基因聚類姊扔,以幫助我們了解基因的動態(tài)模式和它們功能的聯(lián)系。Mfuzz的核心算法是模糊c均值聚類分析占拍,用于識別相似的基因表達譜奶浦。此外兄墅,Mfuzz提供了繪圖功能,除了實現(xiàn)基因表達譜的聚類外财喳,還能繪制時間序列察迟,清晰地為我們呈現(xiàn)基因表達的動力學特征。
圖片出自Immunity. 2020 Sep 15;53(3):685-696.e3.
Mfuzz包的使用
1. 安裝R包耳高,加載演示數(shù)據(jù)集
#Bioconductor 安裝 Mfuzz 包
BiocManager::install('Mfuzz')
library(Mfuzz) #加載
data(yeast) #Mfuzz包內部數(shù)據(jù)集扎瓶,酵母基因表達矩陣,行為基因泌枪,列為時間樣本(按時間順序來)
dat <- as.matrix(yeast@assayData$exprs)
View(dat) #查看表達矩陣
在示例的基因表達矩陣中概荷,每一行是一種基因,列為樣本碌燕。其中误证,第一列為第一個時間點的樣本,第二列為第二個時間點的樣本修壕,以此類推愈捅。
2. 對基因表達矩陣進行標準化處理,并處理缺失值后慈鸠,執(zhí)行聚類分析蓝谨,將具有相似的時間表達模式的基因聚在一類并繪圖。
#構建對象
dat <- new('ExpressionSet',exprs = dat)
#處理 NA 值
dat <- filter.NA(dat, thres = 0.25)
# 49 genes excluded.
dat <- fill.NA(dat, mode = 'mean')
#根據(jù)標準差去除樣本間差異太小的基因
dat <- filter.std(dat, min.std = 0)
#0 genes excluded.
#標準化
dat <- standardise(dat)
Standard deviation of gene expression vectors before standardisation.
#fuzzy c-means 聚類青团,需手動定義聚類個數(shù)譬巫,比方說設置 16 個簇
n <- 16
#評估出最佳的 m 值,防止隨機數(shù)據(jù)聚類
m <- mestimate(dat)
m
# 1.15
#聚類
set.seed(2021)
cl <- mfuzz(dat, c = n, m = m)
#作圖督笆,time.labels 參數(shù)設置時間軸芦昔,和原基因表達數(shù)據(jù)集中的列對應
mfuzz.plot(dat, cl = cl, mfrow = c(4, 4), time.labels = seq(0, 160, 10))
如上過程基于基因表達值進行了聚類,對于每個簇中的基因娃肿,具有相似的時間表達特征咕缎。隨后珠十,即可從圖中識別一些重要的聚類簇,比方說簇中基因隨時間表達趨勢增加或減少凭豪,以及在特定時間出現(xiàn)了更高或更低的表達等宵睦,以建立和觀察的表型的聯(lián)系。
3. 獲取各簇中包含的基因集墅诡。
#每個簇下基因數(shù)量
cl$size
#每個基因所屬簇
head(cl$cluster)
#基因和 cluster 之間的 membership,用于判斷基因所屬簇桐智,對應最大值的那個簇
head(cl$membership)
#整合關系輸出
gene_cluster <- cbind(cl$cluster, cl$membership)
colnames(gene_cluster)[1] <- 'cluster'
write.table(gene_cluster, 'gene_cluster.txt', sep = '\t', col.names = NA, quote = FALSE)
View(gene_cluster)
前兩列就是基因名稱和聚類簇的對應關系
這樣末早,就將基因名稱和其所屬的聚類簇對應起來了。根據(jù)上文的折線圖判斷重要的時間表達模式的基因集说庭,并在該表中進一步篩選出更具體的基因名稱就可以了然磷。
得到時間序列模式后,就可以對不同時間動力學特征基因的功能分析了刊驴。