R语言DESeq找差异基因

一:安装并加装该R包

安装就用source(“http://bioconductor.org/biocLite.R”) ;biocLite(“DESeq”)即可,如果安装失败,就需要自己下载源码包,然后安装R模块。

二.所需要数据

它的说明书指定了我们一个数据

  1. source(“http://bioconductor.org/biocLite.R”) ;
  2. biocLite(“pasilla”)

安装了pasilla这个包之后,在这个包的安装目录就可以找到一个表格文件,就是我们的DESeq需要的文件。

C:\Program Files\R\R-3.2.0\library\pasilla\extdata\pasilla_gene_counts.tsv

说明书原话是这样的

The table cell in the i-th row and the j-th column of the table tells how many reads have been mapped to gene i in sample j.

一般我们需要用htseq-count这个程序对我们的每个样本的sam文件做处理计数,并合并这样的数据

下面这个是示例数据,第一列是基因ID号,后面的每一列都是一个样本。

R语言DESeq找差异基因

  1. de = newCountDataSet( pasillaCountTable, condition )  #根据我们的样本因子把基因计数表格读入成一个cds对象,这个newCountDataSet函数就是为了构建对象!
  2. 对我们构建好的de对象就可以直接开始找差异啦!非常简单的几步即可
  3. de=estimateSizeFactors(de)
  4. de=estimateDispersions(de)
  5. res=nbinomTest(de,”K”,”W”) #最重要的就是这个res表格啦!
  6. uniq=na.omit(res)
  7. 我这里是对4个样本用htseq计数后的文件来做的,贴出完整代码吧
  8. library(DESeq)
  9. #首先读取htseq对bam或者sam比对文件的计数结果
  10. K1=read.table(“742KO1.count”,row.names=1)
  11. K2=read.table(“743KO2.count”,row.names=1)
  12. W1=read.table(“740WT1.count”,row.names=1)
  13. W2=read.table(“741WT2.count”,row.names=1)
  14. data=cbind(K1,K2,W1,W2)
  15. data=data[-c(43630:43634),]
  16. #把我们的多个样本计数结果合并起来成数据框,列是不同样本,行是不同基因
  17. colnames(data)=c(“K1″,”K2″,”W1″,”W2″)
  18. type=rep(c(“K”,”W”),c(2,2))
  19. #构造成DESeq的对象,并对分组样本进行基因表达量检验
  20. de=newCountDataSet(data,type)
  21. de=estimateSizeFactors(de)
  22. de=estimateDispersions(de)
  23. res=nbinomTest(de,”K”,”W”)
  24. #res就是我们的表达量检验结果
  25. library(org.Mm.eg.db)
  26. tmp=select(org.Mm.eg.db, keys=res$id, columns=”GO”, keytype=”ENSEMBL”)
  27. ensembl_go=unlist(tapply(tmp[,2],as.factor(tmp[,1]),function(x) paste(x,collapse =”|”),simplify =F))
  28. #首先输出所有的计数数据,加上go注释信息
  29. all_res=res
  30. res$go=ensembl_go[res$id]
  31. write.csv(res,file=”all_data.csv”,row.names =F)
  32. #然后输出有意义的数据,即剔除那些没有检测到表达的基因
  33. uniq=na.omit(res)
  34. sort_uniq=uniq[order(uniq$padj),]
  35. write.csv(sort_uniq,file=”sort_uniq.csv”,row.names =F)
  36. #然后挑选出padj值小于0.05的差异基因数据来做富集,富集用的YGC的两个包,在我前面的博客已经详细说明了!
  37. tmp=select(org.Mm.eg.db, keys=sort_uniq[sort_uniq$padj<0.05,1], columns=”ENTREZID”, keytype=”ENSEMBL”)
  38. diff_ENTREZID=tmp$ENTREZID
  39. require(DOSE)
  40. require(clusterProfiler)
  41. diff_ENTREZID=na.omit(diff_ENTREZID)
  42. ego
  43. ekk
  44. write.csv(summary(ekk),”KEGG-enrich.csv”,row.names =F)
  45. write.csv(summary(ego),”GO-enrich.csv”,row.names =F)

原文来自:http://www.bio-info-trainee.com/741.html

发表评论

匿名网友

拖动滑块以完成验证
加载失败