rnaseq_基因表达的时间序列分析(mfuzz)

mfuzz是用来进行不同时间点转录组数据表达模式聚类分析的R包。它能够识别表达谱的潜在时间序列模式,并将相似模式的基因聚类,以帮助我们了解基因的动态模式和它们功能的联系。

设置工作路径以及加载包

setwd('C:\\Users\\DI\\Desktop\\mfuzz')
library(Mfuzz)
library(RColorBrewer)
library(openxlsx)
library(Deseq2)

读取count矩阵并对其进行标准化

count <- read.csv("C:\\Users\\DI\\Desktop\\PRJNA516151_lnc\\lncRNA_Gastrocnemius_transcript_matrix.csv",header=T,row.names=1)
###### VST标准化##########
## 过滤在所有重复样本中小于1的基因,表达量太低也没研究意义
count <- count[rowMeans(count)>1,]
##载入样本信息
data <- read.table("C:\\Users\\DI\\Desktop\\PRJNA516151_lnc\\sample_data.txt",header = T,row.names = 1)
#一定要变为因子数据,否者用DESeq2包分析时候会出错
data[,1] <- as.factor(data$Type)
all(rownames(data) %in% colnames(count))
all(rownames(data) == colnames(count))
dds <-  DESeqDataSetFromMatrix(countData = count,colData = data,design = ~ Type)
dim(dds)
#过滤
dds <- dds[rowSums(counts(dds)) > 1,]
nrow(dds) 
#方差稳定变换,The variance stabilizing transformation
vsd <- vst(object=dds,blind=T) 
head(assay(vsd),3)
rs <- assay(vsd)
colnames(rs) <- gsub("X", "", colnames(rs))
colnames(rs) <- gsub(".{4}$", "", colnames(rs))
rs <- as.data.frame(rs)
rs <- as.data.frame( # sapply returns a list here, so we convert it to a data.frame
  sapply(unique(names(rs)), # for each unique column name
         function(col) rowMeans(rs[names(rs) == col]) # calculate row means
  )
)
d_1 <- rs[c(1:5)]
d_2 <- rs[c(6,7)]
rs <-  cbind(d_2,d_1)
rs <- as.matrix(rs)

mfuzz时序分析

#####mfuzz######
eset <- new("ExpressionSet",exprs = rs)

boxplot(rs)
eset <- filter.NA(eset, thres = 0.25)
eset <- fill.NA(eset, mode = 'mean')
eset <- filter.std(eset, min.std = 0)
eset <- standardise(eset)
c <- 8 #fuzzy c-means 聚类,需手动定义聚类个数,比方说设置 8 个簇
m <- mestimate(eset) #  评估出最佳的m值
set.seed(1234)
cl <- mfuzz(eset, c = c, m = m) # 聚类
#Color <- colorRampPalette(rev(c("#ff0000", "Yellow", "OliveDrab1")))(1000) ##修改颜色
#mfuzz.plot(eset,cl,mfrow = c(4,4),colo = Color)
mfuzz.plot(eset,cl,mfrow = c(4,4),time.labels = c(6,9,12,18,21,24,27))

得到时序分析图,分为八个cluster

 可以看出,cluster7和cluster8的变化较为显著,于是提取cluster7和cluster8中的基因进行后续分析

cl$size # 查看每个cluster中的基因个数
gene_7 <- cl$cluster[cl$cluster == 7] # 提取某个cluster下的基因
gene_8 <- cl$cluster[cl$cluster == 8] 
cl$membership # 查看基因和cluster之间的membership,用于判断基因所属簇,对应最大值的那个簇
output <- data.frame(DEGs_exp_averp)
output$cluster <- cl$cluster
#write.xlsx(as.data.frame(output),file = "./Mfuzz.xlsx",colNames = TRUE,rowNames=FALSE)

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值