假期结束啦!!!!!!!
在将数据导入并完成构建DESeqDataSet 后,我们需要先对数据进行初步过滤和整理,之后才可以根据我们的目的来进行数据挖掘(这个词听起来好高大上啊,哈哈哈)。
Analyzing RNA-seq data with DESeq2(一)
Analyzing RNA-seq data with DESeq2(二)
Analyzing RNA-seq data with DESeq2(三)
Analyzing RNA-seq data with DESeq2(四)
Analyzing RNA-seq data with DESeq2(五)
Pre-filtering
(过滤低count的gene)
首先我们将以是每个gene最低对应10个reads数(这里作为举例)作为最低值对数据进行过滤。
Here we perform a minimal pre-filtering to keep only rows that have at least 10 reads total. Note that more strict filtering to increase power is automatically applied via independent filtering on the mean of normalized counts within the results function.
keep <- rowSums(counts(dds)) >= 10
dds <- dds[keep,]
##过滤掉小于10个reads数的gene
看看初步过滤后变成了什么样子:
> dds
class: DESeqDataSet
dim: 9921 7
metadata(1): version
assays(1): counts
rownames(9921): FBgn0000008 FBgn0000014 ... FBgn0261574 FBgn0261575
rowData names(1): gene
colnames(7): treated1 treated2 ... untreated3 untreated4
colData names(2): condition type
可以看到行数(gene数)由原来的14599个降到9921个
这里需要说明的是:
尽管在使用DESeq2函数前过滤低count的gene并不是必须的,但预过滤数据的好处是,去除那些只有很少reads的行以后,可以减少dds的存储,从而极高程序运行速度。
Note on factor levels
(关于因子水平的说明)
默认情况下,R会根据字母顺序为factor选择参考水平,如果没有事前定义DESeq2函数按照什么顺序进行比较的话(例如谁是对照组、谁是实验组),那将会默认按照字母顺序进行排序。
为了避免这种问题发生我们可以这么做:
##方法一:factor levels:写在前面的level作为参照
dds$condition <- factor(dds$condition, levels = c("untreated","treated"))
##方法二:使用relevel函数
dds$condition <- relevel(dds$condition, ref = "untreated")
> dds$condition
[1] treated treated treated untreated untreated untreated untreated
Levels: untreated treated
另外如果数据中有一组level是没有样品对应的,可以使用droplevels函数去除。
拓展:根据这个功能我们也可以使用该函数来进行子集的选择处理**
dds$condition <- droplevels(dds$condition)
Collapsing(合并) technical replicates
DESeq2提供了一个collapseReplicates函数来把技术重复的样本数据合并到表达矩阵的一个列中。
The term technical replicate implies multiple sequencing runs of the same library.
注意:
对于生物学重复不能使用该方法去除
后面开始真正的大活咯!!!