[转载]DESeq2的使用
(2015-05-09 13:36:12)
标签:
转载 |
分类: RNA-seq |
DESeq2的使用:
R包GenomiAlignments中的summarizeOverlaps函数在“Union”模式下可以以基因方式对align到的reads进行计数,而得到se对象(summarizedExperiment)。命令行中的dds是DESeq2存储read数的数据集,为DESeqDataSet的缩写,是基于se数据集而进一步拓展得到的。与se相比,dds有两点不同:1是dds矩阵中的值必须是非负整数;2是dds有一个相关联的“design
formula”。这个design
formula可以理解为告诉DESeq2实验是如何设计的,也就是指定DESeq2的分析。主要是指明metadata
table(colData)中哪一个变量明确实验设计,以及这些因子在分析中的使用。差异表达分析中最简单的design
formula是“design=~condition”,其中conditon是metadata中的一列,并且注明这些样品分别属于几组中的哪一组。当条件比较多时,design
formula可能会变成这样“design=~conditon_1+conditon_2”。
singleEnd=FALSE/TRUE,
ignore.strand=FALSE/TRUE,
fragments=FALSE/TRUE) ## 生成se对象
fragments默认是FALSE,其作用是以逻辑判断符来表明是否要将配对read未map上的read进行记数,只在双端测序数据中使用。如果fragments=TRUE,那么singleEnd应该选择FALSE。
对于有冗余的片段,可以使用DESeq2包中的collapseReplicates函数进行去冗余。
准备好read
count矩阵之后开始进行差异表达分析:
一般地,大概几十秒的时间就可以完成分析,如果样品量非常大时可以使用并行来加速运算。加载BioParallel包,并申请所用线程数如下:
然后在DESeq命令后添加“parallel=TRUE”,便会使用4线程进行运算。
差异表达分析结束后按照p-value进行排序,summarize等进行分析。之后绘图可视化。
> library("Deseq2")
> dds <- DESeqDataSet(se = se, design =
~condition)
> dds <- DESeq(dds)
> res <- results(dds)
--*设计逻辑*--
首先得到se对象,然后将se对象转换成DESeq2所需要的dds数据对象,在这一步中加入实验信息,之后调用DESeq2程序对dds进行处理,最后得到结果,非常简洁明了。
se对象的生成是需要预处理得到的,有两种方法:1是从map好的bam文件直接由R包来生成;2是从用其他非R软件如cufflinks得到的read
count matrix,再然后使用相应的R包处理生成。这里先以前一种方法为例:
>
library("GenomicFeatures") ##
载入GenomicFeatures包。
> hse <-
makeTranscriptDbFromGFF("path/to/your/genemodel.gtf",format="gtf")
## 生成转录组信息
> exonsByGene <- exonsBy(hse,
by="gene") ## 按照基因来提取exon
> fls <-
list.files("path/to/bam/files",
pattern="bam$",full=TRUE) ##
读入bam文件,这里给到bam文件所在目录,list.files对给定目录进行列表显示,然后pattern是抓取匹配信息。
> library("Rsamtools")
## 载入Rsamtools包
> bamLst <-
BamFileList(fls) ## 生成bam文件
>
library("GenomicAlignments") ##
载入GenomicAlignments包
> se
<-summarizeOverlaps(exonsByGene,bamLst,mode="Union",
(此外,如果我们使用或者已经拥有read
count的矩阵,并以此作为输入,也是可行的。不过需要使用DESeqDataSetFromMatrix函数。)
【添加实验信息:】
【去技术性冗余:】
【差异表达分析:】
> dds <- DESeq(dds)
> res <- results(dds)
> library("BioParallel")
> register(MulticoreParam(4)) ##申请4线程
【结果分析和可视化:】