转录组测序火山图_转录组差异基因筛选标准

转录组测序火山图_转录组差异基因筛选标准利用R包DEseq2进行差异表达分析和可视化count数矩阵在Linux下,通过HISAT2对下载的GSE数据进行比对,FeatureCounts软件进行基因水平定量,得到count数矩阵。之后便可以载入R语言中进行差异分析。差异分析第一次分析RNA-seq数据,走到这一步相对容易了许多。转录组数据分析主要参考了生信技能树Jimmy老师的相关课程及推文。RNA-seq的readcount普遍认为符合泊松分布,但是之前分析过的芯片数据符合正态分布,所以筛选DEGs的方法有一定差别。.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺



首先附上文献中的坚定差异基因的流程图。

在这里插入图片描述

count数矩阵

  • 在Linux下,通过HISAT2 对fastq数据文件进行比对,FeatureCounts软件进行基因水平定量,得到count数矩阵。之后便可以载入R语言中进行差异分析。

差异分析

  • 第一次分析RNA-seq数据,走到这一步相对容易了许多。转录组数据分析主要参考了生信技能树Jimmy老师的相关课程及推文。
  • RNA-seq的read count普遍认为符合泊松分布,但是之前分析过的芯片数据符合正态分布,所以筛选DEGs的方法有一定差别。

1. 安装并载入R包


# 设置R语言镜像
# options(BioC_mirror="http://mirrors.tuna.tsinghua.edu.cn/bioconductor/")
# options("repos" = c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
# 安装R包
# if(!require(c("ggthemes","ggpubr","ggthemes","ggrepel"))) install.packages(c("ggthemes","ggpubr","ggthemes","ggrepel"))
# BiocManager::install("DESeq2")


#载入R包
suppressPackageStartupMessages(library(DESeq2))
suppressPackageStartupMessages(library(ggpubr))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(ggrepel))
suppressPackageStartupMessages(library(ggthemes))

2. count数矩阵导入并对矩阵进行数据处理


exprset <- read.table("RNA-seq_counts_matrix.csv",sep = ",",header = T,check.names = F)
rownames(exprset) <- exprset[,1]
exprset <- exprset[,-1]
exprset <- exprset[apply(exprset,1,function(x) sum(x > 1) > 1),] #先判断值是否为0,得到逻辑值,再取和,判断0的个数是否小于3
dim(exprset)
# 7428    4
head(exprset)


head(exprset)

control1 control2 treat1 treat2
ENSMUSG00000000028 27 0 0 6
ENSMUSG00000000088 124 268 87 313
ENSMUSG00000000094 5 12 2 0
ENSMUSG00000000131 17 5 6 5
ENSMUSG00000000134 23 79 0 1
ENSMUSG00000000142 6 10 0 0

3. 查看样本相关性并采用热图展示


expcor <- cor(exprset, method = "spearman")
head(expcor)
pheatmap::pheatmap(expcor, clustering_method = "average",
                   treeheight_row = 0,treeheight_col = 0,
                   display_numbers = T)


expcor data

control1 control2 treat1 treat2
control1 1.0000000 0.7089970 0.2366665 0.0209855
control2 0.7089970 1.0000000 0.2990182 0.0866515
treat1 0.2366665 0.2990182 1.0000000 0.4533486
treat2 0.0209855 0.0866515 0.4533486 1.0000000


热图展示

通过pheatmap展示相关性分析热图

4. hclust对样本进行聚类分析


# t_exprset <- t(exprset)
# t_exprset <- t_exprset[,names(sort(apply(t_exprset,2,mad),decreasing = T))[1:500]]
# out.dist <- dist(t_exprset,method = 'euclidean')
# out.hclust <- hclust(out.dist,method = 'complete')
# rect.hclust(out.hclust,k=3)
# plot(out.hclust,xlab = "",main = "")

5. 构建原始dds矩阵并保存为Rdata对象


group_list <- factor(c(rep("untrt",2),rep("trt",2))) #因子型变量
group_list
table(group_list)
## group_list
##   trt untrt 
##     2     2
colData <- data.frame(row.names = colnames(exprset),
                        group_list = group_list)
colData
dds <- DESeqDataSetFromMatrix(countData = exprset,
                               colData = colData,
                               design = ~group_list) #~在R里面用于构建公式对象,~左边为因变量,右边为自变量。
head(dds)
## class: DESeqDataSet 
## dim: 6 4 
## metadata(1): version
## assays(1): counts
## rownames(6): ENSMUSG00000000028 ENSMUSG00000000088 ...
##   ENSMUSG00000000134 ENSMUSG00000000142
## rowData names(0):
## colnames(4): control1 control2 treat1 treat2
## colData names(1): group_list
tem_f <- 'RNA-seq_DESeq2-dds.Rdata'


colData

group_list
control1 untrt
control2 untrt
treat1 trt
treat2 trt

6. 原始dds矩阵标准化并保存


if (!file.exists(tem_f)) {
    dds <- DESeq(dds) # 标准化
    save(dds,file = tem_f)
  }
load(file = tem_f)
# 结果用`result()`函数提取
res <- results(dds,
              contrast = c("group_list","untrt","trt")) # 差异分析结果
resOrdered <- res[order(res$padj),] # 对结果按照调整后的p值进行排序
head(resOrdered)
summary(res)
## 
## out of 7428 with nonzero total read count
## adjusted p-value < 0.1
## LFC > 0 (up)       : 465, 6.3%
## LFC < 0 (down)     : 507, 6.8%
## outliers [1]       : 0, 0%
## low counts [2]     : 2160, 29%
## (mean count < 4)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results


head(resOrdered)

baseMean log2FoldChange lfcSE stat pvalue padj
ENSMUSG00000061787 1308.2358 -9.456575 1.564545 -6.044298 0e+00 3.60e-06
ENSMUSG00000064370 1304.1697 -13.689071 2.284209 -5.992916 0e+00 3.60e-06
ENSMUSG00000096745 667.1955 -12.722138 2.066186 -6.157306 0e+00 3.60e-06
ENSMUSG00000096363 320.2598 -11.663243 2.067930 -5.640056 0e+00 2.24e-05
ENSMUSG00000031504 229.8465 -11.184637 2.077845 -5.382805 1e-07 4.24e-05
ENSMUSG00000038900 583.4616 -8.543657 1.597311 -5.348775 1e-07 4.24e-05

7. 提取差异分析的结果


DEG <- as.data.frame(resOrdered)
DESeq2_DEG <- na.omit(DEG)
diff <- subset(DESeq2_DEG,pvalue < 0.05) #先筛选P值
up <- subset(diff,log2FoldChange > 2) #上调
down <- subset(diff,log2FoldChange < -2) #下调
#可利用`write.csv()`函数保存文件

8. 绘制火山图


DEG_data <- DESeq2_DEG
DEG_data$logP <- -log10(DEG_data$padj) # 对差异基因矫正后p-value进行log10()转换
dim(DEG_data)
## [1] 5268    7
#将基因分为三类:not-siginficant,up,dowm
#将adj.P.value小于0.05,logFC大于2的基因设置为显著上调基因
#将adj.P.value小于0.05,logFC小于-2的基因设置为显著上调基因
DEG_data$Group <- "not-siginficant"
DEG_data$Group[which((DEG_data$padj < 0.05) & DEG_data$log2FoldChange > 2)] = "up-regulated"
DEG_data$Group[which((DEG_data$padj < 0.05) & DEG_data$log2FoldChange < -2)] = "down-regulated"
table(DEG_data$Group)
## 
##  down-regulated not-siginficant    up-regulated 
##             336            4659             273
DEG_data <- DEG_data[order(DEG_data$padj),]#对差异表达基因调整后的p值进行排序
#火山图中添加点(数据构建)
up_label <- head(DEG_data[DEG_data$Group == "up-regulated",],1)
down_label <- head(DEG_data[DEG_data$Group == "down-regulated",],1)
deg_label_gene <- data.frame(gene = c(rownames(up_label),rownames(down_label)),
                                label = c(rownames(up_label),rownames(down_label)))
DEG_data$gene <- rownames(DEG_data)
DEG_data <- merge(DEG_data,deg_label_gene,by = 'gene',all = T)
#不添加label
ggscatter(DEG_data,x = "log2FoldChange",y = "logP",
          color = "Group",
          palette = c("green","gray","red"),
          repel = T,
          ylab = "-log10(Padj)",
          size = 1) + 
  theme_base()+
  scale_y_continuous(limits = c(0,8))+
  scale_x_continuous(limits = c(-18,18))+
  geom_hline(yintercept = 1.3,linetype = "dashed")+
  geom_vline(xintercept = c(-2,2),linetype = "dashed")

在这里插入图片描述

#添加特定基因label
ggscatter(DEG_data,x = "log2FoldChange",y = "logP",
          color = "Group",
          palette = c("green","gray","red"),
          label = DEG_data$label,
          repel = T,
          ylab = "-log10(Padj)",
          size = 1) + 
  theme_base()+
  theme(element_line(size = 0),element_rect(size = 1.5))+ #坐标轴线条大小设置
  scale_y_continuous(limits = c(0,8))+
  scale_x_continuous(limits = c(-18,18))+
  geom_hline(yintercept = 1.3,linetype = "dashed")+
  geom_vline(xintercept = c(-2,2),linetype = "dashed")

在这里插入图片描述

9. 简单gene ID转换

  • 对于初学者来说如果要对gene ID进行转换,可利用Ensembl数据库的BioMart工具。因为相对于R包biomaRt,界面化的操作更加易懂,快捷。BioMart网页工具的原始界面如下所示:

      其中左侧菜单栏分别是Dataset--选择相关物种参考基因组;
      Filters--选择数据gene ID的类型,并输入gene ID,也存在其他类型的ID输入;
      Attributes--选择需要输出的ID类型;
      点击Result可以输出结果,并且支持文件下载。
    

在这里插入图片描述


  • 第一次写推文,请大家多提宝贵意见!
  • ##如有侵权请联系作者删除!

参考文件

[1] https://mp.weixin.qq.com/s/uDnFJC0szOHtO2NqREz2wA

[2] https://www.jianshu.com/p/3a0e1e3e41d0

[3] https://www.bioconductor.org/help/workflows/RNAseq123/

[4] https://www.bioconductor.org/help/workflows/rnaseqGene/

[5] http://www.biotrainee.com/forum.phpmod=viewthread&tid=1750#lastpost

[6] https://mp.weixin.qq.com/s/ZYB06Yudck2hD0qWJKJcwQ

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179207.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IE浏览器安装插件(ocx)提示“windows 已经发现此文件有一个问题”怎么办?「建议收藏」

    IE浏览器安装插件(ocx)提示“windows 已经发现此文件有一个问题”怎么办?「建议收藏」当我们在win7操作系统中浏览网页,在有些网页需要登入账号密码需要安装插件才能够输入进去。一般我们只需按步骤下载安装插件就可以了。但是由用户反映,在下载好插件准备运行的时候,发现怎么样都安装不了,这样就无法登入账号了,该怎么办呢?接下来小编给大家介绍下解决方法。步骤:1、打开IE浏览器,在浏览器中点一下“alt”键,然后点击“工具”—“internet选项”;2、在

  • 如何制作rootfs_linux常用文件系统类型

    如何制作rootfs_linux常用文件系统类型rootfs文件系统制作笔记环境:XC2440linux2.32.2红帽5根文件系统有一系列的目录组成,其中包括应用程序、C库、及相关的配置文件。制作根文件系统的步骤如下,下面步骤均在虚拟机终端上操作。一、创建文件系统总目录rootfs【mkdirrootfs】二、创建文件系统目录【cdrootfs】进入rootfs目录,创建下面目录/bin–放置…

  • idea打包jar文件_idea如何打包jar外部包

    idea打包jar文件_idea如何打包jar外部包文章目录项目打包-贪吃蛇为例一.打包为jar1.打开结构2.添加结构3.选择4.设置参数5.添加依赖6.设置完成点击apply后,点击ok7.回到代码页面点击build8.选择建立9.目录会生成所需的包文件10.在文件夹里打开11.在cmd里运行jar即可运行12.在输入java-jarsnake.jar即可运行项目打包-贪吃蛇为例一.打包为jar1.打开结构2.添加结构3.选择因为有好多项目,所以这里需要建立空,如果只有一个目的项目,可以选择根据这个依赖,选择下面一项。4.

  • 网页设计音乐播放器_简洁的音乐播放器

    网页设计音乐播放器_简洁的音乐播放器今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。于是乎用h5audio的加上js简单的播放器完工了。演示地点演示html代码如下` music 这个年纪 七月的风 音乐 `然后就是css`*{ margin:0; padding:0; text-decoration:none; list-…

    2022年10月13日
  • 人人网面试经历「建议收藏」

    人人网面试经历「建议收藏」对于一年开发经验的程序员来说是非常尴尬的,经过一个月的面试总结,也快入职心仪的公司了,差不多算是敲定了工作。所以想到陆续的放出一些互联网公司的面试经验来,虽然面不上,但是可提供给别人参阅,以便你们遇到类似或者同一家的公司能够见招拆招!

  • 通过模板生成Excel表格——XLSTransformer

    通过模板生成Excel表格——XLSTransformer/***根据模版生成保存到指定位置*@parampathTemplateFileName*@paramlist*@parampathResultFileName*@return*/publicstaticbooleancreateExcel(StringpathTemplateFileNam…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号