柚子快報(bào)邀請(qǐng)碼778899分享:Mfuzz——時(shí)間序列聚類
柚子快報(bào)邀請(qǐng)碼778899分享:Mfuzz——時(shí)間序列聚類
Mfuzz 工具采用模糊 c 均值聚類(Fuzzy C-Means Clustering,F(xiàn)CM)算法,根據(jù)具有時(shí)間序列特征的轉(zhuǎn)錄組、蛋白質(zhì)組數(shù)據(jù)中基因或蛋白表達(dá)的時(shí)間趨勢(shì),對(duì)具有相同表達(dá)模式的基因或蛋白劃分 cluster。
相較于傳統(tǒng)的統(tǒng)計(jì)學(xué)顯著的上下調(diào)基因分組,Mfuzz 可以實(shí)現(xiàn)更為多元的生物學(xué)實(shí)驗(yàn)設(shè)計(jì)的基因聚類,如時(shí)間梯度或者濃度梯度處理的實(shí)驗(yàn)。
迄今為止的聚類大多為硬聚類(K-means 等算法),即將每個(gè)基因或蛋白質(zhì)都完全分配給一個(gè)聚類,但在實(shí)際情況中,基因/蛋白質(zhì)簇經(jīng)常會(huì)出現(xiàn)重疊,且硬聚類算法通常對(duì)噪聲十分敏感。為了克服硬聚類的局限性,Mfuzz 采用了軟聚類的方法,不僅具有了更強(qiáng)的抗噪性,且可以避免對(duì)基因進(jìn)行先驗(yàn)的預(yù)過(guò)濾,防止了生物學(xué)上相關(guān)的基因/蛋白質(zhì)的丟失。
官網(wǎng):http://193.136.227.155/sysbiolab/mfuzz/
安裝
if?(!requireNamespace("BiocManager",?quietly?=?TRUE))
????install.packages("BiocManager")
BiocManager::install("Mfuzz")?????????????????????????????
使用
1. 輸入數(shù)據(jù)
Mfuzz 默認(rèn)提供的數(shù)據(jù)是歸一化之后的表達(dá)量,表達(dá)量必須可以直接在樣本間進(jìn)行比較,對(duì)于 FPKM 和 TPM 可直接使用;對(duì)于 count 需要進(jìn)行歸一化之后使用,可以使用 edgeR 或者 DESeq 得到歸一化后的數(shù)據(jù)
library(Mfuzz)?
##?Mfuzz?聚類要求為?ExpressionSet?類型對(duì)象
#?載入測(cè)試數(shù)據(jù),酵母基因表達(dá)矩陣,行為基因,列為時(shí)間樣本(按時(shí)間順序)
#?后續(xù)分析皆在測(cè)試數(shù)據(jù)上完成,真實(shí)數(shù)據(jù)同理
data(yeast)??#?yeast?為?ExpressionSet?對(duì)象
exprs_data?<-?as.matrix(yeast@assayData$exprs)?#?酵母基因表達(dá)矩陣
#?載入真實(shí)數(shù)據(jù)(示例)
exprs_data?<-?read.delim('mmc2.union_all_protein_exp.txt',?row.names?=?1,?check.names?=?FALSE)
exprs_data?<-?as.matrix(exprs_data)?#?將數(shù)據(jù)框轉(zhuǎn)換為數(shù)值矩陣
mfuzz_data?<-?new('ExpressionSet',exprs?=?exprs_data)?#?構(gòu)建?ExpressionSet?對(duì)象
示例數(shù)據(jù)格式(來(lái)源小明的數(shù)據(jù)分析筆記本)
補(bǔ)充:此處提供了一種歸一化 count 的方法
#?BiocManager::install("edgeR")
library(edgeR)
library(limma)
dat?<-?log2(edgeR::cpm(exprs_data)+1)?#?注意?exprs_data?必須非?NA?且非負(fù)
#?此處?colnames(dat)?應(yīng)為樣本名,同一樣本不同生物學(xué)重復(fù)列名相同
avereps_df??<-?t(limma::avereps(t(dat)?,?ID?=?colnames(dat)))?#?取平均值
#?按時(shí)間順序?qū)α信判?/p>
avereps_df?=?avereps_df[,c(?"time0",?"10min","30min"?,
????????????????????????????"1h"?,???"2h",??"4h"??,??"8h"??,?"12h"?)]
#?此處?avereps_df?即可用于構(gòu)建?ExpressionSet?對(duì)象和后續(xù)分析
2. 數(shù)據(jù)預(yù)處理
2.1 處理NA值
#?排除丟失超過(guò)25%的測(cè)量值的基因,此處缺失值應(yīng)在基因表達(dá)矩陣中用?NA?表示
yeast.r?<-?filter.NA(yeast,?thres=0.25)
#?模糊c均值不允許缺失值,此處需要用相應(yīng)基因的平均值表達(dá)值替換剩余缺失值
#?此處也可以使用(加權(quán))k?最近鄰法?(mode='knn'/'wknn'),性能通常較好,但計(jì)算量大
yeast.f?<-?fill.NA(yeast.r,?mode="mean")
2.2 過(guò)濾低表達(dá)或變化小的基因
迄今大多數(shù)聚類需要根據(jù)標(biāo)準(zhǔn)差的閾值去除低水平表達(dá)或僅顯示表達(dá)微小變化的基因,但由于過(guò)濾閾值的值設(shè)置沒(méi)有嚴(yán)格的標(biāo)準(zhǔn),Mfuzz 避免了對(duì)基因數(shù)據(jù)進(jìn)行任何事先過(guò)濾,以防止可能具有生物學(xué)重要性的基因的丟失
#?根據(jù)標(biāo)準(zhǔn)差去除樣本間差異太小的基因
tmp?<-?filter.std(yeast.f,?min.std=0)
2.3 標(biāo)準(zhǔn)化
聚類時(shí)需要用一個(gè)數(shù)值來(lái)表征不同基因間的距離,Mfuzz中采用的是歐式距離;由于普通歐式距離的定義沒(méi)有考慮不同維度間量綱的不同,所以需要先進(jìn)行標(biāo)準(zhǔn)化
#?在歐幾里得空間中進(jìn)行聚類,因此基因的表達(dá)值為標(biāo)準(zhǔn)化后的平均值為0,標(biāo)準(zhǔn)差為1
yeast.s?<-?standardise(yeast.f)
注意:進(jìn)行歸一化是為了使不同的樣本具有可比性,而標(biāo)準(zhǔn)化(在 Mfuzz 中)是為了使轉(zhuǎn)錄本(或基因或蛋白質(zhì))具有可比性
3. Mfuzz 聚類
3.1 FCM 聚類參數(shù)設(shè)置
對(duì)于 FCM 聚類,模糊參數(shù) m 和聚類數(shù) c 必須預(yù)先選擇,因此 Mfuzz 需要提供兩個(gè)參數(shù):
fuzzifier 值:用小寫(xiě)字母 m 表示,通過(guò)設(shè)置該值可以防止隨機(jī)數(shù)據(jù)聚類,此處可通過(guò)函數(shù)評(píng)估最佳取值;可以使用函數(shù) partcoef 進(jìn)行測(cè)試,是否針對(duì)m的特定設(shè)置對(duì)隨機(jī)數(shù)據(jù)進(jìn)行了聚類 希望最終得到的聚類的個(gè)數(shù):用小寫(xiě)字母 c 表示,由用戶直接指定;設(shè)置聚類 c 的最優(yōu)數(shù)量通常很困難,尤其是對(duì)于短時(shí)間序列和重疊聚類的情況;此處可以通過(guò) cselection 測(cè)試 c 的范圍,此過(guò)程會(huì)出現(xiàn)空聚類(merbership < 0.5);此外聚類質(zhì)心之間的最小距離 Dmin 可以用作聚類有效性指數(shù),D.min 在達(dá)到最優(yōu) c 后下降得更慢;另外可以對(duì)一系列簇?cái)?shù)進(jìn)行聚類,然后對(duì)其生物學(xué)相關(guān)性進(jìn)行評(píng)估選擇最佳簇?cái)?shù),如GO分析
##?m?值設(shè)置
m?<-?mestimate(yeast.s)
##?c?值設(shè)置
#?cselection?函數(shù),repeats?為重復(fù)聚類,visu=TRUE?意味著輸出可視化
tmp??<-?cselection(yeast.s,?m=1.25,?crange=seq(5,40,5),?repeats=5,?visu=TRUE)?#?此處為出現(xiàn)空聚類的示例,由此可確定?c?的范圍
#?Dmin?函數(shù)確定最優(yōu)?c,?D.min?在達(dá)到最優(yōu)?c?后下降得更慢
tmp??<-?Dmin(yeast.s,?m=m,?crange=seq(4,40,4),?repeats=5,?visu=TRUE)
c?<-?12
3.2 聚類
cl?<-?mfuzz(yeast.s,?c=c,?m=m)?
cl?<-?mfuzz(yeast.s,?c=16,?m=1.25)?
##?可視化
#?默認(rèn)可視化
mfuzz.plot(yeast.s,?cl=cl,?mfrow=c(4,4),?time.labels=,?time.labels=seq(0,160,10))
#?自定義顏色
library(RColorBrewer)
color?<-?colorRampPalette(rev(c("#ff0000",?"Yellow",?"OliveDrab1")))(1000)
mfuzz.plot(yeast.s,?cl=cl,?mfrow=c(4,4),?time.labels=,?time.labels=seq(0,160,10),?colo?=?color)
黃色或綠色的線條對(duì)應(yīng)于 membership 值較低的基因;紅色和紫色線對(duì)應(yīng)具有 membership 值較高的基因
3.3 查看聚類結(jié)果
#?在?cl?中保存了聚類的完整結(jié)果,對(duì)于這個(gè)對(duì)象的常見(jiàn)操作如下
cl$size?#?查看每個(gè)cluster中的基因個(gè)數(shù)
cl$cluster[cl$cluster?==?1]?#?提取某個(gè)cluster下的基因
cl$membership?#?查看基因和cluster之間的membership
4. 補(bǔ)充
4.1 membership 值
membership 值指示向量彼此之間的相似性,如果兩個(gè)基因?qū)τ谔囟?cluster 具有較高的 membership 值,則它們通常彼此相似,此處定義 membership 值大于選定閾值的基因?qū)儆诰垲惖?α-core ,要提取屬于聚類核心的基因列表,可以使用 acore 函數(shù)
acore.list?<-?acore(yeast.s,?cl=cl,?min.acore=0.7)
4.2 全局聚類
聚類之間的重疊為軟聚類的特征之一,其表明兩個(gè)簇之間具有共享的基因。重疊度低的 cluster 總體上表現(xiàn)出明顯的差異模式;重疊度大的 cluster 則表現(xiàn)出更為相似的聚類模式,因此重疊度可以衡量成對(duì) cluster 相似性,可以通過(guò) overlap 和 overlap.plot 函數(shù)查看全局聚類的重疊情況
O?<-?overlap(cl)
Ptmp?<-?overlap.plot(cl,over=O,thres=0.05)
參考教程:
使用Mfuzz包做時(shí)間序列分析-騰訊云開(kāi)發(fā)者社區(qū)-騰訊云 (tencent.com)
Mfuzz做轉(zhuǎn)錄變化的時(shí)間趨勢(shì)分析后對(duì)每個(gè)趨勢(shì)分組挑一個(gè)代表性基因-騰訊云開(kāi)發(fā)者社區(qū)-騰訊云 (tencent.com)
Mfuzz包進(jìn)行時(shí)間序列表達(dá)模式聚類 – 王進(jìn)的個(gè)人網(wǎng)站 (jingege.wang)
使用R語(yǔ)言的Mfuzz包進(jìn)行基因表達(dá)的時(shí)間趨勢(shì)分析并劃分聚類群-騰訊云開(kāi)發(fā)者社區(qū)-騰訊云 (tencent.com)
柚子快報(bào)邀請(qǐng)碼778899分享:Mfuzz——時(shí)間序列聚類
文章來(lái)源
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。