转录组分析丨一套完整的操作流程简单案例(下)

简介: 转录组分析丨一套完整的操作流程简单案例(下)

6. 基因差异表达分析

利用DESeq2软件基于样本的原始reads数目计算差异表达基因,利用run-featurecounts.R脚本对每个样本的reads数进行定量,然后利用abundance_estimates_to_matrix.pl脚本合并所有的定量结果,最后利用DESeq2进行差异表达基因的分析。

首先,将所需的脚本文件全部拷贝到工作目录下,同时将样本信息相关文件也拷贝保存。

cp -r xxx/script_featurecounts .
cp -r xxx/script-mergecounts .
cp xxx/RNA-Seq_Practice/contrast.txt .
cp xxx/RNA-Seq_Practice/sampleinfo.txt .

新建一个文件夹,运行R语言脚本,对样本进行表达定量分析,以PR1为例,输入文件为02文件夹中生成的bam文件和基因组注释文件,生成输出文件PR1,其他的几个样本按照同样的方法进行处理。

mkdir R-featurecounts
Rscript script_featurecounts/run-featurecounts.R 
-b ../02_hisat2Mapping/PR1.srt.bam  #输入文件
-g ../Ref/Ref.gtf.gz  #基因组注释文件
-o R-featurecounts/PR1  #输出文件

运行结束后,在输出文件夹内将会生成count文件和log文件,利用perl语言脚本abundance_estimates_to_matrix.pl合并所有样本的定量结果。

perl script-mergecounts/abundance_estimates_to_matrix.pl 
     --est_method featureCounts R-featurecounts/*.count

利用trinity 软件中的DESeq2分析差异表达基因,输入文件有counts矩阵、所选方法DESeq2、样本信息表sampleinfo.txt、分组信息contrasts.txt。

perl xxx/run_DE_analysis.pl 
--matrix matrix.counts.matrix   
--method DESeq2 --samples_file sampleinfo.txt  #样本信息表文件
--contrasts contrasts.txt   #这里需要注意文件名称是否正确

上述流程输出的结果存放在随机文件夹中,进入该文件夹后,可以看到生成的差异表达基因结果matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results文件,然后利用awk命令提取出满足条件(同时满足:|log2FoldChange| > 1,且padj < 0.05)的差异表达基因,生成新的输出文件件PRvsSR_DEGs

drwxr-xr-x 307 Nov 29 09:54 DESeq2.197264.dir  #随机新目录
$ ls -f  #查看新目录下文件列表
matrix.counts.matrix.PR_vs_SR.DESeq2.Rscript
matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results  #差异表达基因结果文件
matrix.counts.matrix.PR_vs_SR.DESeq2.count_matrix
matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results.MA_n_Volcano.pdf
awk 'sqrt($7*$7)>1 && $11 <0.05 {print $0}'  
./matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results > PRvsSR.DESeq2_DEGs  
#利用awk命令提取满足条件的指定数据

将最终得出的差异表达基因数据文件PRvsSR.DESeq2_DEGs保存到电脑,进行GO富集和KEGG富集分析。绘制火山图时使用的是matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results

7. GO富集分析

利用在线网站(http://shiny.host.ugeneyun.cn/GOmaize/)进行GO富集分析,输入文件为差异表达基因的ID信息表,此处不进行显著性过滤,原因是前期已经进行筛选了。提交运行后生成GOenrich结果,共有270条Term,下图随机展示5条,可以得出GO编号、功能描述、显著性和分类信息。然后,利用网站的绘图功能制作GO富集气泡图,保存到本地GO.pdf。

8. KEGG分析

在R语言(4.2.2)中使用clusterProfiler、KEGG.db、ggplot2三个R包进行KEGG富集分析,先构建一个OrgDb本地索引库,然后利用enrichKEGG函数进行富集分析,利用在线网站(https://www.maizegdb.org/gene_center/gene)将基因ID转换为GenBank Gene类型,保存为文件gene.txt,输出文件为pathway数据表gene.pathway.csv 和KEGG富集结果gene.pathway .pdf

remotes::install_github("YuLab-SMU/createKEGGdb",force = TRUE)
createKEGGdb::create_kegg_db('zma')  
#首先使用该软件制作玉米KEGG富集包
library(clusterProfiler) 
library(ggplot2)   # 绘图需用R包
library(KEGG.db)   # 该步骤需要手动在Rstudio中安装KEGG.db包
file="gene.txt"  #输入文件,包含18条差异表达的基因信息
gene <- read.delim("gene.txt",header = F,row.names = 1)
> head(gene,2)
               GenBank.Gene
Zm00001d0218    1036647
Zm00001d0234    1002408
kk <- enrichKEGG(gene= gene$GenBank.Gene,organism= 'zma',
                 pvalueCutoff = 1,
                 qvalueCutoff = 1,
                 use_internal_data =T)  #进行KEGG富集分析
write.csv(kk,file = paste0("gene.pathway.csv"),row.names = F)
p=dotplot(kk);p  #绘制点图,并输出plot查看
ggsave(p,filename = "gene.pathway.pdf"),width = 8,height = 7) #保存图片

9. 差异表达基因火山图

通过ggplot2软件绘制基因差异表达火山图,使用DESeq2软件生成的matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results为输入文件,该文件内geneid、sampleA、sampleB、baseMeanA、baseMeanB、baseMean、log2FoldChange、lfcSE、stat、pvalue、padj等信息,将其导入R语言中,提取1,6,7,8,9,10,11列,然后设置数据的行列名称

library(ggplot2)  # 载入R包
res <- read.table("matrix.counts.matrix.PR_vs_SR.DESeq2.DE_results")
res <- res[,c(1,6,7,8,9,10,11)]           
#筛选数据,提取指定列
rownames(res) <- res$V1                    
#命名数据框的行名为基因ID
colnames(res) <- c("geneid","baseMean",   
"log2FoldChange","lfcSE","stat","pvalue","padj")  # 修改列名
deseq_res <- as.data.frame(res[order(res$padj), ]) # 按照p值大小排序
write.table(deseq_res, 'DESeq2-test.txt', row.names = FALSE, 
sep = '\t', quote = FALSE)             
#保存差异表达基因数据

设置差异表达分类sig,最后利用ggplot函数绘制火山图,保存为'volcano.svg'

deseq_res <- read.delim('DESeq2-test.txt', sep = '\t')
deseq_res[which(deseq_res$log2FoldChange >= 1 & deseq_res$padj <
 0.05),'sig'] <- 'up (p.adj < 0.05, log2FC >= 1)'        
#上调基因
deseq_res[which(deseq_res$log2FoldChange <= -1 & deseq_res$padj <
     0.05),'sig'] <- 'down (p.adj < 0.05, log2FC <= -1)'     
#下调基因
deseq_res[which(abs(deseq_res$log2FoldChange) < 1 | deseq_res$padj >= 0.05),'sig'] <- 'no diff'        
#无显著差异
p <- ggplot(deseq_res, aes(log2FoldChange, -log(padj, 10))) +
  geom_point(aes(color = sig), alpha = 0.6, size = 1) +
  scale_color_manual(values = c('blue2', 'gray30', 'red2')) +
  theme(panel.grid = element_blank(), 
        panel.background = element_rect(color = 'black') 
        legend.position = c(0.26, 0.92)) +
  theme(legend.title = element_blank(), 
        legend.key = element_rect(fill = 'transparent'), 
        legend.background = element_rect(fill = 'transparent')) +
  geom_vline(xintercept = c(-1, 1), color = 'gray', size = 0.25) +
  geom_hline(yintercept = -log(0.05, 10), color = 'gray') +
  labs(x = 'log2 Fold Change', y = '-log10 p-value', color = NA) +
  xlim(-5, 5)
ggsave('volcano.svg', p, width = 4, height = 3)     
# 保存火山图


参考资料:
[1] Brown J, Pirrung M, McCue L A. FQC Dashboard: integrates FastQC results into a web-based, interactive, and extensible FASTQ quality control tool[J]. Bioinformatics, 2017, 33(19): 3137-3139.
[2] Bolger A M, Lohse M, Usadel B. Trimmomatic: a flexible trimmer for Illumina sequence data[J]. Bioinformatics, 2014, 30(15): 2114-2120.
[3] Kim D, Paggi J M, Park C, et al. Graph-based genome alignment and genotyping with HISAT2 and HISAT-genotype[J]. Nature biotechnology, 2019, 37(8): 907-915.
[4] Liao Y, Smyth G K, Shi W. featureCounts: an efficient general purpose program for assigning sequence reads to genomic features[J]. Bioinformatics, 2014, 30(7): 923-930.
[5] Love M I, Huber W, Anders S. Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2[J]. Genome biology, 2014, 15(12): 1-21.
[6] Yu G, Wang L G, Han Y, et al. clusterProfiler: an R package for comparing biological themes among gene clusters[J]. Omics: a journal of integrative biology, 2012, 16(5): 284-287.
[7] Wickham H. Data analysis[M]//ggplot2. Springer, Cham, 2016: 189-201.

END

© 素材来源于网络,侵权请联系后台删除

往期推荐:

文献丨群体转录组分析锁定关键转录因子

文献丨转录组RNA seq——青年阶段!

文献丨多组学TRN+GWAS挖掘关键转录调控

笔记丨ggplot2热图入门学习笔记

笔记丨PCA分析基本知识和数学原理

资料丨R语言必刷课配套学习资料一键直达

绘图丨GraphPad Prism零代码绘制SCI配图

相关文章
|
7月前
|
人工智能 搜索推荐 测试技术
让智能体像孩子一样观察别人学习动作,跨视角技能学习数据集EgoExoLearn来了
【4月更文挑战第11天】EgoExoLearn是一个大规模数据集,用于模拟人类通过观察视频学习任务的能力,包含120小时的日常生活和实验室场景视频,重点是第一人称视角和注视数据。该数据集提供多模态注释,设有跨视角动作理解等基准测试,旨在推动AI模仿人类行为的研究。尽管有挑战,如视角转换和多样性问题,但EgoExoLearn为AI学习和融入人类环境开辟了新途径。
67 1
让智能体像孩子一样观察别人学习动作,跨视角技能学习数据集EgoExoLearn来了
|
7月前
|
网络协议 网络架构
综合实验案例配置
综合实验案例配置
39 0
|
数据采集 存储 索引
转录组分析丨一套完整的操作流程简单案例(上)
转录组分析丨一套完整的操作流程简单案例
|
搜索推荐 数据挖掘 BI
78 网站点击流数据分析案例(网站流量分析过程)
78 网站点击流数据分析案例(网站流量分析过程)
233 0
|
数据挖掘 Go
文献丨转录组分析流程和常用软件
文献丨转录组分析流程和常用软件
|
数据可视化 数据挖掘 Go
RNA-seq丨转录组分析标准流程与常用工具
RNA-seq丨转录组分析标准流程与常用工具
|
数据可视化 数据挖掘 Linux
转录组下游分析丨利用limma包进行差异表达分析,结果可视化绘制火山图和热图
转录组下游分析丨利用limma包进行差异表达分析,结果可视化绘制火山图和热图
|
算法 安全 数据挖掘
谈谈转录组测序基础知识及常见问题
转录组学(Transcriptomics),是一门在真整体水平上研究细胞中基因转录的情况及转录调控规律的学科,从RNA水平研究基因的表达情况。转录组测序是通过二代测序平台快速全面地获得某一物种特定细胞或组织在某一状态下的几乎所有的转录本及基因序列,可以用来研究基因表达量、基因功能、结构、可变剪接和预测新的转录本等等。转录组(transcriptome),是指特定生长阶段某组织或细胞内所有转录产物的集合,狭义上指所有mRNA的集合。
2071 0
|
Linux Windows Perl
没有生物学重复的转录组数据怎么进行差异分析?
设置生物学重复这个环节也是你实验设计很重要的一part,设置的好对你下游分析也有利,通常我们做转录组测序,需要的样本量每组至少为3个生物学重复,这个处理起来就很合理,并且现在流行的差异分析软件DEseq2,limma,edgeR等等都是针对有重复的数据去做的,但有时候会不幸碰到样品测序失败不能用,导致每组就给你剩一个重复时候该怎么办,之前我有批数据就是这样,但是办法总比困难多不能放过任何实验数据,搜了搜其实还是有一些方法可以去解决的,在这里介绍下我搜到的几种方法。
1039 0
|
数据挖掘 BI 开发者
房源画像实验演示(下)|学习笔记
快速学习房源画像实验演示(下)
322 0
房源画像实验演示(下)|学习笔记