最近一直在处理蛋白质组的数据。遇到一个比较棘手的问题。
一共有3个处理,每个里面有3个重复。我们scale后聚类,发现相同处理的重复不能聚在一起。说明样本数据需要处理一下。
怎么处理呢?
首先我们要明确:
- 产生的原因可能是加样量不准。
- 一般来说不同处理之间,每个样品只有10%-20%的蛋白量是变化的。剩余80%不变。
- 一个样品内部的蛋白量应该服从正态分布。
所以,我们希望使用均值调整的方式来使得数据ok。采用以下方式:
1.每个样本内部,计算sd,删除前20%sd的数据,重新计算均值。(其实均值差异不会很大,但我们还是做一下) - 调整样本均值,也就是拉成同一个值。如果log过了,就加减,没log过,乘除。
- 之后,我们用了anova,limma,ttest分别计算。取前200画热图。(差异大才好聚类呀)
#t test find differently expressed genes between CAL and KO
ttest_fun<-function(x)
{
factor_ttest = c(rep("cal",3),rep("ko",3))
data.ttest=data.frame(y=x,group=factor(factor_aov))
fit<-t.test(x~group,data=data.ttest)
pval<-fit$p.value
}
ttest_pvalues<-apply(data_all_recal[,1:6],1,ttest_fun)
data_draw_ttest<-data_all_recal[order(ttest_pvalues,decreasing = FALSE)[1:200],]
heatmap.2(as.matrix(data_draw_ttest), col="redblue", scale="row",tracecol="blue",dendrogram ="column",trace = "none",density.info = "none")
dev.off()
#limma
library(limma)
factors<-c(rep("cal",3),rep("ko",3))
design<-model.matrix(~0+factors)
colnames(design)<-gsub("factors","",colnames(design))
contr.matrix<-makeContrasts(
calvsko=cal-ko,
levels=colnames(design)
)
vfit<-lmFit(data_all_recal[,1:6],design)
vfit<-contrasts.fit(vfit,contrasts = contr.matrix)
efit<-eBayes(vfit)
plotSA(efit)
limma_pvalues<-efit$p.value
data_draw_limma<-data_all_recal[order(limma_pvalues,decreasing = FALSE)[1:200],]
heatmap.2(as.matrix(data_draw_limma), col="redblue", scale="row",tracecol="blue",dendrogram ="column",trace = "none",density.info = "none")
dev.off()
#anova
anova_fun<-function(x)
{
factor_aov = c(rep("cal",3),rep("ko",3),rep("neg",3))
data.anova=data.frame(y=x,group=factor(factor_aov))
fit<-(aov(x~group,data=data.anova))
fit_summary<-summary(fit)
res1<-fit_summary[[1]]$`Pr(>F)`[1]
#T_posthoc<-TukeyHSD(fit)
}
anova_pvalue<-apply(data_all_recal,1,anova_fun)
write.csv(anova_pvalue,file = "pvalues.csv")
#anova_pvalue<-apply(data_all_recal,1,anova_fun)
data_draw<-data_all_recal[order(anova_pvalue,decreasing = FALSE)[1:300],]
heatmap.2(as.matrix(data_draw), col="redblue", scale="row",tracecol="blue",dendrogram ="column",trace = "none",density.info = "none")
dev.off()
网友评论