- 首页 > it技术 > >
代码文件备份 | 3-10(对arraymatrix数据进行初步筛选与分组差异表达分析)
data<-read.table("GSE25219-GPL5175_series_matrix.txt",comment.char = "!",header = T)
row.names(data)<-data[,1]
data<-data[,-1]label<-read.table("label.txt")
region<-read.table("region.txt")
year<-read.table("year.txt")
meta.data<-rbind(label,region,year)
rownames(meta.data)<-meta.data[,1]
meta.data<-meta.data[,-1]
#到现在两方面的数据就已经上传完了#注释数据#数据集
##################################################################################
#我想看看每一个region以及时期有多少
table(as.character(meta.data[3,]))
table(as.character(meta.data[2,]))
#从数据集的标签上看,分类还是比较模糊的尤其是一些M1C&S1C不明的样本,脑区间样本比较不均
#考虑如何进行比较比较科学合理
#发现可能是发育上的缘故,一些发育早期的样本,脑区界限划分不明
meta.data[,which(meta.data[2,]%in%c("TC","VF","URL","PC","OC"))]
meta.data[,which(meta.data[3,]%in%c("10PMonth"))]
#了解到上述信息之后,想要看看能不能从原始的数据中取出一些子集,用于自己的下游分析
#在做之前,需要知道这些数据是什么特征
##################################################################################
boxplot(data[,c(1:10)])
boxplot(data[c(1:2),])#通过上述验证,可以比较确认的一点是,样本之间经过了归一化的处理,使得基因整体的表
#达值都稳定的分布在6附近
##################################################################################
#对数据进行进一步的筛选:只选择年龄大于等于2Y的数据
filter_data<-meta.data[,which(!meta.data[3,]%in%c("10PMonth","12PCW","13PCW","16PCW","17PCW","19PCW",
"21PCW","22PCW","25PCW","35PCW",
"37PCW","4PMonth","5.7PCW",
"6PCW","6PMonth",
"8PCW","9PCW"))]
table(as.character(filter_data[2,]))
filter_sample<-as.character(filter_data[1,])
#这个数据样本基本上是持平了
#接下来就是按照这个标准,对原始的数据进行筛选
subdata<-data[,which(colnames(data)%in%filter_sample)]
#上述筛选完成,接下来就在subdata、以及filter_data的基础上进行操作
#先将我们筛选过的结果保存一下
write.csv(subdata,"subdata.csv")
write.csv(filter_data,"filter_sample.csv")
#################################################################################
subdata<-read.csv("subdata.csv",header = T,row.names = 1)
filter_data<-read.csv("filter_sample.csv",header = T,row.names = 1)
table(as.character(filter_data[2,]))
#################################################################################
#接下来就是构思如何进行差异表达分析了
#不使用现成的方法#考虑使用limma或者DEseq包进行操作
library(limma)
#构造样本数据集
filter_data<-rbind(filter_data,c(1:634))
rownames(filter_data)[4]<-"order"
group<-filter_data[2,]
design<-model.matrix(~0+factor(group))
colnames(design)=levels(factor(group))
rownames(design)=colnames(subdata)contrast.matrix<-makeContrasts("AMY",levels=design)
#不过这里的正负是我不知道的#有何意义
contrast.matrix[which(rownames(contrast.matrix)=="AMY"),1]=-1
contrast.matrix[which(rownames(contrast.matrix)!="AMY"),1]=1
##step1
fit <- lmFit(subdata,design)
##step2
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
##step3
tempOutput = topTable(fit2,adjust.method ="BH",coef=1, n=Inf)
nrDEG = na.omit(tempOutput)
table(nrDEG$adj.P.Val<0)##好的,放弃
#################################################################################
##决定使用wilcox test检验进行检测
#突然想起来自己之前的那个祖传的差异表达基因分析的方法
#说白了就是把两组数提取出来
#首先判断分布一不一样,记录P值
#求两组表达的mean值,求fold-change
#现在还是自己来重新写一下吧#虽然也会用不少时间
#决心好好整理一下自己的代码
dim(subdata)#subdata_test<-subdata[1:10,]
#region<-"AMY"
#geneexprSet<-subdata_test
TTest<-function(geneexprSet,filter_data,region){case<-as.numeric(filter_data[4,which(filter_data[2,]%in%region)])
control<-as.numeric(filter_data[4,which(!filter_data[2,]%in%region)])
P_value<-c()
Foldchange<-c()
len<-dim(geneexprSet)[1]
for(n in 1:len){
controlsample<-as.numeric(geneexprSet[n,control])
casesample<-as.numeric(geneexprSet[n,case])
res<-wilcox.test(controlsample,casesample,paired = FALSE) #这里删去paired=TRUE
meanControl<-mean(controlsample)
meanCase<-mean(casesample)
fold<-meanCase/meanControl
p<-res$p.value
P_value<-append(P_value,p)
Foldchange<-append(Foldchange,fold)
}
#这里相对Pvalue进行校正
P_adj<-p.adjust(P_value,method = "fdr")
finalexprSet<-cbind(geneexprSet,Pvalue=https://www.it610.com/article/P_adj,Foldchange=Foldchange)
geneexprSet<-finalexprSet[order(finalexprSet$Pvalue), ]
diffresult<-subset(geneexprSet,geneexprSet$Pvalue<0.05&log2(Foldchange)>0.25,select = c(Pvalue,Foldchange))
filename=paste(region,"diffresult.csv",sep = "_")
write.csv(diffresult,file=filename,col.names = T,row.names = T)}#subdata_test<-subdata[1:1000,]
region<-"A1C"
TTest(subdata,filter_data,region)#趁着程序运行的过程,我们写个循环,批量的让他跑着
regions<-c("CBC","DFC","HIP","IPC","ITC","M1C","MD","MFC","OFC","S1C","STC","STR","V1C","VFC")
lenR<-length(regions)
for (i in 1:lenR) {
TTest(subdata,filter_data,regions[i])}
【代码文件备份 | 3-10(对arraymatrix数据进行初步筛选与分组差异表达分析)】明天的任务:
(1)还是希望能够把富集分析的思路弄明白(写一篇文献笔记)。单纯的依靠差异表达基因的数量对数据进行富集,毛病还很多。
(2)分析单细胞的数据,按照师兄的marker进行基础的分类。看看结果是否可以重新复现。
(3)想想怎么更好的把自己的结果,用好看直观的图表示(有些图很复杂,不够直观,也很无聊)。
(4)好好学统计。统计可以提高自己分析结果的可信度,我非常需要这个工具。要不然连我自己都不信。(我也好想数学好呀)
推荐阅读