《生物信息学生R入门教程》读书笔记 Chapter 3

这一章主要是介绍RNA-seq的基本知识,以及简单的差异分析

RNA-seq

我们分析RNA-seq数据的时候,往往按照线图的步骤进行分析



欧老师在书中就RNA-seq是否去除dup,提出了争议,欧老师倾向于不去。
但我认为,具体情况得看你的QC报告以及你的实验目的了

目前在上游分析中:
1.mapping常用的软件有tophat(逐渐被淘汰了),hisat,STAR(这个速度很快),其中STAR我比较推荐,因为STAR用的是k-mer进行mapping的,并且错误率比较低,直接输出排好序的bam文件

2.计数上的主流软件有htseq-count,cufflinks里面的featureCount,steingtie,salmon(比较精确)
当然R里面也可以计数

library(Rsubread)
library(SCLCBam) ##bam文件
fl <- dir(getPathBamFolder(), "bam$", full.names = TRUE)
cnt <- featureCounts(files=fl, annot.inbuilt = "mm10")
##选取注释

3差异分析的R包主流的有三个edgeR,DESeq2和limma,当然也可以自己建立混合线性模型计算

差异表达分析

我们先来看edgeR

#载入edgeR。
library(edgeR)
# 载入数据
load(url("http://qiubio.com/bioconductor/RNA-seq/ds1.Rdata"))

#提取分组信息
grp <- as.factor(substr(colnames(counts), 1, 2))

#绘制样品间相关情况
o <- order(grp)
pairs(log2(1+counts[,o[1:7]]), pch=".",lower.panel=NULL)
#建立对象
d <- DGEList(counts=counts, group=grp)
d <- calcNormFactors(d)
#以cpm作为计数单位
cps <- cpm(d) ## count per million
k <- rowSums(cps>=1) > 2
d <- d[k,]

#MDS降维
cols <- as.numeric(d$samples$group)
plotMDS(d,col=cols)

接下来我饿么看下生物学重复所带的变异

plotBCV(d)


我们说的生物学重复是经过相同处理的不同生物学个体
这个表示生物学重复间的CV值与表达量之间的关系,每个点表示每个基因在每个生物学重复的表达
其中,表达量低的,在(同样处理)的生物学重复中的变异会增大,导致数据差异很大

DESeq2

library(DESeq2)
##我们载入与上一例相同的数据。
load(url("http://qiubio.com/bioconductor/RNA-seq/ds1.Rdata"))
ls()
head(counts[, 1:7], 3)
grp <- as.factor(substr(colnames(counts), 1, 2)) ##substr截取列名的前两个字母
dds <- DESeqDataSetFromMatrix(counts, colData=data.frame(grp), design=formula(~-1+grp)) ##这里的colData必须是一个DataFrame或者data.frame。每一行都对应着counts中的一列。design中的公式和limma中的方法一致。
design(dds)
## ~-1 + grp
dds <- DESeq(dds) ##一步到位,不需要太多步骤
res <- results(dds) ##得到结果
res
mcols(res, use.names=TRUE) ##结果中各例的意义
plotMA(res)
plotDispEsts(dds)
write.csv(as.data.frame(res), file="results.csv") ##输出结果

limma

library(limma)
v <- voom(d, mm, plot=TRUE) ##这里的d就是edgeR中的d,下面就是标准的limma流程了。
vf <- lmFit(v,mm)            # 'mm' 前文定义了
cf <- contrasts.fit(vf,con)  # 'con' 前文定义了
cf <- eBayes(cf)
topTable(cf)    

你可能感兴趣的:(《生物信息学生R入门教程》读书笔记 Chapter 3)