cell_6.jpg
跟著 Cell 學作圖 | 6.時間序列分析(Mfuzz包)
“實踐是檢驗真理的唯一標準。”
“復現是學習R語言的最好辦法。”
2021.4.12_1
這篇2020年發表在cell
上關于新冠的組學文章里面有大量的生信內容。今天帶大家復現其中的一個Supplemental Figure
:時間序列分析圖
。
20210425_1
22
本文代碼及示例數據領取:后臺回復“20210426”
時間序列分析
在研究基因表達譜或者蛋白表達譜時,經常會涉及到對時間序列的分析。例如,不同的基因或蛋白表達水平隨時間表現出怎樣的動力學特征,怎樣挖掘潛在的時間特征?Mfuzz
是用來進行不同時間點轉錄組數據表達模式聚類分析的R包。它能夠識別表達譜的潛在時間序列模式,并將相似模式的基因聚類,以幫助我們了解基因的動態模式和它們功能的聯系。本圖中1,2,3,4,分別表示健康、非新冠肺炎、非重度新冠肺炎、重度新冠肺炎。
數據格式
210421_2
注:示例數據僅作展示用,無實際意義!
繪制
#------
title: "Mfuzz"
author: "MZBJ"
date: "2020/4/25"
#-----
setwd("F:/~/mzbj/cell/20210426")
df <- read.csv(file = "df_umap.csv")
df1 <- df[,-1]
#分組求均值
#aggregate用法上一篇原創推文已經介紹過了,不熟悉的可以去回顧一下
df2<-aggregate(df1[,colnames(df1)[2:ncol(df1)]],by=list(df1$label),mean,na.rm= TRUE)
#把第一列設為行名
row.names(df2)<-df6[,1]
df3<-data.frame(t(df2[,-1]))
#第一次使用要下載
BiocManager::install("Mfuzz")
library("Mfuzz")
#構建對象
df3a<-as.matrix(df3)
df3Ex<- ExpressionSet(assayData = df3a)
#排除了超過25%的測量缺失的基因
df3F <- filter.NA(df3Ex,thres = 0.25)
#用相應基因的平均值表達值替換剩余的缺失值
df3F <- fill.NA(df3F,mode = 'mean')
#標準化
df3F <- standardise(df3F)
#聚類
set.seed(2021)
#手動定義聚類個數 c
cl <- mfuzz(df3F,c=8,m=1.25)
#作圖
pdf("mfuzz.pdf")
mfuzz.plot2(df3F, cl=cl,mfrow=c(4,4),centre=TRUE,x11=F,centre.lwd=0.2)
dev.off()
#批量導出每個聚類所包含的基因
dir.create(path="mfuzz",recursive = TRUE)
for(i in 1:8){
potname<-names(cl$cluster[unname(cl$cluster)==i])
write.csv(cl[[4]][potname,i],paste0("mfuzz","/mfuzz_",i,".csv"))
}
出圖:
20210425_2
一模一樣4個字我說累了哈哈哈~
寫在后面:
本系列重在復現,所以有些細節可能講的不是很詳細。大家有問題可以后臺私信,或者在我的B站:
木舟筆記
進行互動!制作不易,謝謝大家多多支持!
往期內容:
跟著Cell學作圖 | 2.柱狀圖+誤差棒+散點+差異顯著性檢驗