代码文件备份 | 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)好好学统计。统计可以提高自己分析结果的可信度,我非常需要这个工具。要不然连我自己都不信。(我也好想数学好呀)

    推荐阅读