分享

基因或蛋白表达谱的时间趋势分析---从趋势寻找规律

 TS的美梦 2021-11-08

近日,在做蛋白数据分析的时候看到一篇文章,里面进行了表达趋势的分析。感觉很有用,举个例子,尤其是与时间发育或者疾病进程相关的表达谱,通过趋势分析可以找到一些规律,看出不同表达模式的基因是如何变化的,也方便自己对数据解读,寻找有意义的结果!

其实,之前有公司转录组数据的基本分析中会自带这项分析,但是后来不知怎么就基本不包含了。

不过无所谓,Mfuzz包就是专门做这个的。Mfuzz的原理可以简单的理解为聚类,相似表达趋势的基因聚到一起。接下来我们看看具体如何操作。

数据来源:自己创造的,无具体生物学意义,仅演示使用!

数据用的是表达矩阵,行名为基因,列名为样本

在做之前,输入的数据格式是每个基因在每个组的平均表达量,很显然,我们每组有四个重复。要么用Excel手动计算,那样太费劲,还是直接读入R中计算吧。不过需要受累手动添加一行label,转置一下:

然后入读数据,转置一下,并计算平均表达量

setwd("C:/Users/Desktop")sample <- read.csv("sample.csv", row.names = 1)

求平均值用aggregate函数

dim(sample)#[1] 16 12399sample1<-aggregate(sample[,2:12399],by=list(sample$label),mean,na.rm= TRUE)

计算完数据如下:

设置新行名

row.names(sample1)<-sample1[,1]sample1<-data.frame(t(sample1[,-1]))

最终数据结构如下:

接着,开始进行具体分析,第一次使用,需要安装Mfuzz包

BiocManager::install("Mfuzz")library("Mfuzz")library(Mfuzz)

构建对象

sample1<-as.matrix(sample1)sample1<- ExpressionSet(assayData = sample1)

处理缺失值和异常值

sample1 <- filter.NA(sample1, thres = 0.25)#排除超过25%的测量缺失的基因sample1 <- fill.NA(sample1, mode = 'mean')sample1 <- filter.std(sample1, min.std = 0)

标准化处理

sample1 <- standardise(sample1)

设置随机种子,设置需要展示的cluster的数量,然后聚类

set.seed(123)cluster_num <- 10sample1_cluster <- mfuzz(sample1, c = cluster_num, m = mestimate(sample1))

画图,具体的参数调整,颜色,坐标轴等等详情访问?Mfuzz了解

mfuzz.plot2(sample1, cl = sample1_cluster, mfrow = c(2, 5), time.labels = colnames(sample1),centre=TRUE,x11=F)

效果如下:

如果想要到处每个cluster中具体的基因,使用下述代码批量导出

dir.create(path="mfuzz",recursive = TRUE)for(i in 1:10){ potname<-names(sample1_cluster$cluster[unname(sample1_cluster$cluster)==i]) write.csv(sample1_cluster[[4]][potname,i],paste0("mfuzz","/mfuzz_",i,".csv"))}

结果还可以,如果需要的可以使用,分析看看!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多