在进行上游的转录组分析后,我们会得到基因的计数文件。通过该文件,我们可以进行下游的DEG分析,获得不同样本的差异表达基因,并可以将这些基因富集到不同的生物学过程。
该文以DEseq2为例,进行差异表达分析。参考RNA-seq(7): DEseq2筛选差异表达基因并注释(bioMart)
首先我们需要准备两个文件,一个是countData文件,另一个是colData文件。countData文件可以通过python或者R将每个样本的基因计数信息mix到一起。colData文件可以只包括一种处理,列名和处理名可以自定义。注意,countData的行名和colData的列名要一致。
当我们拿到了这两个文件,便可以进行后续分析了。参考文章中的解释已经相当全面,这里只针对我在学习过程中遇到的一些小问题进行进一步描述。
1 载入数据
> condition <- factor(c(rep("control",2),rep("treat",2)), levels = c("control","treat"))
# 在这串代码中,可以设置多个处理,例如
# condition <- factor(c(rep("control",3),rep("treat1",3), rep("treat2", 3)), levels = c("control","treat1","treat2"))
# 表示一个对照组,两个处理组,分别为3次重复
3 总体结果查看
> resultsNames(dds)
> res = results(dds, contrast=c("condition", "control", "treat"))
# 该处可以手动选择要进行展示的组,可以选择control和treat1或treat2
# res = results(dds, contrast=c("condition", "control", "treat1/2"))
或
# res <- results(dds, name=paste("condition_treat2_vs_control", sep="", collapse = NULL))
# 该处引号内名称一定要与 resultsNames(dds) 结果保持一致
# 数据收缩,避免极端值对log2FC的影响
> res <- lfcShrink(dds, coef = paste("condition_treatment2_vs_control", sep="", collapse = NULL), type = 'apeglm', res = res)
之后按照参考文章中的步骤进行操作,我们便可以获得差异表达的基因。
拿到差异表达基因后,可以根据自己的需求进行数据展示,这里参考RNA-Seq:差异表达分析及可视化
同时,我们可以将这些差异基因进行富集分析,观察其所富集到的过程或途径。在这里我们以clusterProfiler为例进行富集分析。如果进行非模式作物的分析的话,我们需要构建该物种的OrgDB库,参考文章生信 | 构建物种的OrgDb,该文章的描述很全面,直接按照作者的代码进行操作即可。
当然,我们也可以通过网站进行富集分析,例如g:Profiler,只需输入差异基因的ID,选择自己的物种即可。但注意,该网站的物种基因组版本可能不是最新的,要注意你的Gene_ID要与该网站的基因组版本一致,如果不一致的话需要进行ID转换。我们可以借助两个版本的基因组共线性文件进行ID的转换,自己写一个脚本即可。构建OrgDB需要较大的内存,如果内存不够可以在服务器上运行。在服务器上安装R包可能会遇到一些问题,这里可以参考一下我遇到的情况,问题汇总(持续更新)。
以上两种方法均能满足我们的需求。但是,对于没有接触过R语言的人则更推荐第一种方法。第一种方法得到结果之后直接丢到dotplot函数中即可或者完成度较高的图,而第二种方法则需要自己画图,这对不会R语言的人还是不太友好的。
至此,RNA-seq的上下游基本分析流程已经总结完毕。
我自己本身也是一名初学者,该文也是自己在学习的过程中的一个小总结,如有任何错误也请各位大佬及时指出。