要保证当前文件夹下面有了742KO1.count等4个文件,就是用htseq对比对的bam文件进行处理后的输出文件。
- library(DESeq)
- #加载数据
- K1=read.table(“742KO1.count”,row.names=1)
- K2=read.table(“743KO2.count”,row.names=1)
- W1=read.table(“740WT1.count”,row.names=1)
- W2=read.table(“741WT2.count”,row.names=1)
- #列名
- data=cbind(K1,K2,W1,W2)
- #如果是htseq的结果,则删除data最后四行
- n=nrow(data)
- data=data
- #如果是bedtools的结果,取出统计个数列和行名
- kk1=cbind(K1$V5)
- rownames(kk1)=rownames(K1)
- K1=kk1
- #差异分析
- colnames(data)=c(“K1″,”K2″,”W1″,”W2″)
- type=rep(c(“K”,”W”),c(2,2))
- de=newCountDataSet(data,type)
- de=estimateSizeFactors(de)
- de=estimateDispersions(de)
- res=nbinomTest(de,”K”,”W”)
- #res就是我们的表达量检验结果
- 到这里,理论上差异基因的分析已经结束啦!后面只是关于R的bioconductor包的一些简单结合使用而已
- library(org.Mm.eg.db)
- tmp=select(org.Mm.eg.db, keys=res$id, columns=c(“ENTREZID”,”SYMBOL”), keytype=”ENSEMBL”)
- #合并res和tmp
- res=merge(tmp,res,by.x=”ENSEMBL”,by.y=”id”,all=TRUE)
- #go
- tmp=select(org.Mm.eg.db, keys=res$ENSEMBL, columns=”GO”, keytype=”ENSEMBL”)
- ensembl_go=unlist(tapply(tmp[,2],as.factor(tmp[,1]),function(x) paste(x,collapse =”|”),simplify =F))
- #为res加入go注释,
- res$go=ensembl_go[res$ENSEMBL]#为res加入一列go
- #写入all——data
- all_res=res
- write.csv(res,file=”all_data.csv”,row.names =F)
- uniq=na.omit(res)#删除无效基因
- sort_uniq=uniq[order(uniq$padj),]#按照矫正p值排序
- #写入排序后的all_data
- write.csv(res,file=”all_data.csv”,row.names =F)
- #标记上下调基因
- sort_uniq$up_down=ifelse(sort_uniq$baseMeanA>sort_uniq$baseMeanB,”up”,”down”)
- #交换上下调基因列位置
- final_res=sort_uniq[,c(12,1:11)]
- #写出最后数据
- write.csv(final_res,file=”final_annotation_gene_bedtools_sort_uniq.csv”,row.names =F)
- #然后挑选出padj值小于0.05的数据来做富集
- tmp=select(org.Mm.eg.db, keys=sort_uniq[sort_uniq$padj<0.05,1], columns=”ENTREZID”, keytype=”ENSEMBL”)
- diff_ENTREZID=tmp$ENTREZID
- require(DOSE)
- require(clusterProfiler)
- diff_ENTREZID=na.omit(diff_ENTREZID)
- ego <- enrichGO(gene=diff_ENTREZID,organism=”mouse”,ont=”CC”,pvalueCutoff=0.05,readable=TRUE)
- ekk <- enrichKEGG(gene=diff_ENTREZID,organism=”mouse”,pvalueCutoff=0.05,readable=TRUE)
- write.csv(summary(ekk),”KEGG-enrich.csv”,row.names =F)
- write.csv(summary(ego),”GO-enrich.csv”,row.names =F)
原文来自:http://www.bio-info-trainee.com/867.html