利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2

前情提要:实现Stingtie与DEseq2的无缝连接
RNA-seq数据分析下文是将StringTie产生的数据利用DESeq2进行处理。

DEseq2是转录组R统计分析的重要步骤,有广泛的适用性,可以与大多数的上游软件进行连接,在前文章中stringtie已经生成了数据:
gene_count_matrix.csv,
PHENO_DATA:geuvadis_phenodata.csv,
原始数据:ftp://ftp.ccb.jhu.edu/pub/RNAseq_protocol

数据转化

我们就以此为例进行分析。首先是将生成的数据转化为DESeq2所需要的文件,colData,和countData

> countData <- as.matrix(read.csv("gene_count_matrix.csv", row.names="gene_id"))
> colData <- read.csv("geuvadis_phenodata.csv", row.names=1)
  • colData:是给每个样本进行标签化,如图所示分别有sex和population两个标签。下图为colData的内容:

    利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2_第1张图片
    countData

  • countData:countData是反映了基因的表达量。MSTRG*为基因名,ERR*为样本名,数字代表样本每个基因的表达量。下图为countData的格式:

    利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2_第2张图片
    colData

进入R,并载入DESeq2的包
> R
 >library("DESeq2") 
由countData,colData生成差异表达数据:
> dds <- DESeqDataSetFromMatrix(countData = countData, colData = colData, design = ~ population)

生成的dds文件的内容,dds是一个类,其对生成表格的各个方面进行了描述:

class: DESeqDataSet
dim: 728 12 
metadata(1): version
assays(4): counts mu H cooks
rownames(728): MSTRG.5 MSTRG.1 ... MSTRG.589 MSTRG.662
rowData names(22): baseMean baseVar ... deviance maxCooks
colnames(12): ERR188044 ERR188104 ... ERR188454 ERR204916
colData names(3): sex population sizeFactor
表达量的筛选

countData文件里,将每个基因所有的表达量加起来大于10的留下来,并输入到dds文件中。

> keep <- rowSums(counts(dds)) >= 10
> dds <- dds[keep,]
将dds进行DESeq处理

resultsNames是输出默认的比对的顺序。在Fold Change的计算中需要比对的顺序,在这里默认的比对顺序为:

> dds <- DESeq(dds)
> resultsNames(dds)
DESeq处理内容如下:
estimating dispersions
found already estimated dispersions, replacing these
gene-wise dispersion estimates
mean-dispersion relationship
final dispersion estimates
fitting model and testing

输出的内容:

[1] "Intercept"             "population_YRI_vs_GBR"
pvalue与adjust pvalue(padj)的转换

通过规定alpha的值,来进行转换,值越小,筛选越严格,默认的alpha值为0.1,这里可以用res05输出alpha的值为0.05时的adjust pvalue。
contrast规定Fold Change的比对顺序。

> res <- results(dds)
> res <- results(dds, alpha=0.1,) 
> contrast=c("population","GBR","YRI"))
> res05 <- results(dds, alpha=0.05)

生成res内容如下:


利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2_第3张图片
res
adjust pvalue进行排序

将pvalue或者是padj进行排序,方便进一步的筛选的有意义的差异表达。

# 对res里padj的大小进行排序;
> resOrdered <- res[order(res$padj),]
#对res进行了描述;
> summary(res)
#查看resOrdered的前五行的信息
> head(resOrdered)
#查看p-values>0.1的基因个数;
> sum(res$padj < 0.1, na.rm=TRUE)
#查看p-values>0.05的基因个数;
> sum(res05$padj < 0.05, na.rm=TRUE)
#对padj进行排序。
> res05Ordered <- res05[order(res05$padj),]

开始进行作图

1. MA-plot

利用一下命令可以做出相应的MA图:

plotMA(res, ylim=c(-2,2))

MA-plot表示了基因丰度和表达变化之间的关系,横坐标为基因表达量,纵坐标为基因的差异表达的大小。每个点是代表转录本。红色的点为要取的点,黑色的点为不好的点。生成的图标如下:


利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2_第4张图片
MA plot

[图片上传中...(plot Counts.png-2283c9-1542618060107-0)]

2. Plot counts

此图是为了表达在不同的条件下基因的表达量的差异,横坐标为不同的条件,纵坐标为表达量,如下图所示,两组条件下,基因的表达量差异性比较大


利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2_第5张图片
plot Counts

将结果以CSV的格式文件输出。

write.csv(as.data.frame(resOrdered), 
          file="population_GBR_results.csv")

官方命令附件:https://bioconductor.org/packages/release/bioc/vignettes/DESeq2/inst/doc/DESeq2.R

你可能感兴趣的:(利用DESeq2来分析RNA-seq的数据Analyzing RNA-seq data with DESeq2)