GO和KEGG富集分析

news2024/10/4 14:55:44

写在前面

我们《复现SCI文章系列教程》专栏现在是免费开放,推出这个专栏差不多半年的时间,但是由于个人的精力和时间有限,只更新了一部分。后续的更新太慢了。因此,最终考虑后还是免费开放吧,反正不是什么那么神秘的东西。原本就是一个套路的文章,此外,这篇文章也相对比较简单。在此章节以前,还有一个WGCNA的分析,你若需要可以看**WGCNA分析 | 全流程分析代码**

目前全部开放链接:

  1. SCI文章复现 | GEO文章套路,数据下载和批次效应处理
  2. 差异分析和PPI网路图绘制教程

原付费:复现SCI文章系列教程文章

  1. 订阅《复现SCI文章系列教程》须知
  2. 复现SCI文章系列 | 第一篇文章复现:1. 文章讨论与文章分析套路讲解
  3. 2.1 材料与方法 (IF 7.3)
  4. 2.2 数据集下载 (IF 7.3)
  5. 2.3 数据去重和标准化(附送去批次效应)
  6. 2.4 差异分析
  7. 2.5 加权基因共表达分析(WGCNA)
  8. 2.6 PPI网络分析

本期推文内容

2.7.1 章节总结

在前的教程中,我们已经获得差异基因(2.4 差异分析)和获得与纤维化相关的模块基因。此教程,我们做功能富集分析。但是,此数据问题依旧是很大的影响因素,严重影响后续的分析。

2.7.2 文章结果内容

  1. GO和KEGG富集分析结果
  2. 分析结果图

2.7.3 取交集

根据文章分析流程,将DEGs和WGNCA分析获得的结果去交集,获得的交集基因进行后续分析。

在差异分析中,我们获得600多个DEGs,在WGCNA分析中,与纤维化相关的模块为“yellow”

共有200多个基因。

WGCNA分析全部结果。

2.7.4 获得交集并绘制韦恩图

汇总数据

绘制vennplot,可以是哟TBtools绘制韦恩图,很是方便。或是直接使用我们前提教程进行绘制,基于R语言绘制VennPlot图 | 可以绘制大于等于7个类别的码.


根据筛选出来的关键模块,采用GS>0.2,MM>0.8筛选高度关联基因并与差异基因取交集。我们在自己做分析时,或在写论文时,其实这些参数可以写进论文中,对读者是比较友好的。

但是这里的结果真的是出乎我的意料。我们继续往下看。

绘制维恩图代码

setwd("E:\\小杜的生信筆記\\2023-复现期刊文章系列教程\\复现文章一分析\\05.功能富集分析")
library(VennDiagram) 
library(ggplot2) 
library(venn) 
library(RColorBrewer) 

readFlie=function(input,type,row=T,header=T){ 
  # input 为读入文件的路径,type为读入文件的类型,格式为‘.txt’或‘.csv’,row=T,将文件的第一列设置为列名 
  library(data.table,quietly = TRUE) 
  if(type=='txt'){ 
    dat = fread(input,header = header,sep='\t',stringsAsFactors = F,check.names = F) 
    if(row){ 
      dat = as.data.frame(dat,stringsAsFactors = F) 
      rownames(dat) = dat[,1] 
      dat = dat[,-1] 
    }else{ 
      dat = as.data.frame(dat,stringsAsFactors = F) 
    } 
  }else{ 
    dat = fread(input,header = header,sep=',',stringsAsFactors = F,check.names = F) 
    if(row){ 
      dat = as.data.frame(dat,stringsAsFactors = F) 
      rownames(dat) = dat[,1] 
      dat = dat[,-1] 
    }else{ 
      dat = as.data.frame(dat,stringsAsFactors = F) 
    } 
  } 
  return(dat) 
} 

## 绘制venn图 
wn_venn=function(list,col='black'){ 
  # 定义颜色体系 
  library(RColorBrewer,quietly = TRUE) 
  #corlor = brewer.pal(8,'Dark2') 
  corlor = brewer.pal(8,"Accent") 
  # 绘制Venn图 
  library(VennDiagram, quietly=TRUE) 
  library(venn,quietly = TRUE) 
  if(length(list)<=11){ 
    if(length(list)<=4){ 
      graphics=venn.diagram(list,filename=NULL,fill = corlor[1:length(list)], 
                            col = col,alpha = 0.5, cat.cex = 1.5,rotation.degree = 0) 
      grid.draw(graphics) 
    }else if(length(list)==5){ 
      graphics=venn(list, zcolor = corlor[1:length(list)],box=F,ellipse =TRUE,cexil = 1, cexsn = 1) 
    }else{ 
      graphics=venn(list, zcolor = corlor[1:length(list)],box=F,cexil = 1, cexsn = 1) 
    } 
    return(graphics) 
  }else{ 
    print('The function only supports data of dimension 7 and below.') 
  } 
} 
## 保存图片,只支持ggplot对象 
savePlots=function(path,plot,type=c('pdf','png','tiff')[1],width=10,height=8,dpi=300){ 
  # path表示保存图片路径,需要加上相应的文件扩展名称 
  library(ggplot2) 
  if(type=='pdf'){ 
    ggsave(filename = path,plot = plot,width = width,height = height,device = 'pdf') 
  }else if(type=='png'){ 
    ggsave(filename = path,plot = plot,width = width,height = height,device = 'png',dpi = dpi) 
  }else{ 
    ggsave(filename = path,plot = plot,width = width,height = height,device = 'tiff',dpi = dpi) 
  } 
} 


df <- readFlie("03_DEG_WGCNA交集数据.txt", type = "txt", row = F)
head(df)

df_list = list('DEGs'=sample(df$DEGs),'WGCNA'=sample(df$WGCNA)) 

# 绘制venn图 
## 4维veen图 
venn_2 = wn_venn(df_list[1:2]) 

# 保存图片
savePlots(path = 'DEGs_WGCNA_VennPlot.jpg',plot = venn_2,type = 'jpg',width = 8,height = 8,dpi = 300)

结果


所以基因无任何交集。这个是什么原因呢???

现在我们又重新回去做分析。

WGNCA重新分析代码

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三

  • WGCNA分析 | 全流程分析代码 | 代码四

  • WGCNA分析 | 全流程分析代码 | 代码五(最新版本)


寻找方案一

我们开始做WGCNA分析时,有过滤数值。

  1. 使不过滤的数据进行WGCNA分析。

寻找方案二

WGCNA分析,不去离散样本,所有样本进行分析。

我们这里不在坐重复演练,大体的流程就是这样。我们只需要学会这个思路就可以,不需要和文章一模一样的结果。

正常结果应该是这样的,一定会有交集。我们的只需要调整相关的参数即可。但是更具前面的分析就是离谱。

猜测

  1. 数据问题
    我有仔细回去看了原文作者使用的数据,这是count值吗?但是这个数据怎么能这么小?以及与我们获得表达量直接是不对等,若是原文作者将FPKM值转换成count值,但依旧是不对等。
  2. 数据标准化或归一化的原因
    自己认为,我们原始获得数据,已经是进行标准化后的数据了,应该是作者上传时就已经处理过。最大值在13…,但是原文作者依旧是进行标准化处理,那么我们也进行处理吧。
  3. 不知道,能力有限的原因??????

GO富集分析

setwd("E:\\小杜的生信筆記\\2023-复现期刊文章系列教程\\复现文章一分析\\05.功能富集分析")
library(stringr)
library(ggplot2)
library(clusterProfiler)
library(org.Hs.eg.db)
diffSig <- read.table("关键基因ID.txt",header=F,sep="\t",row.names=1)
DEG.gene_symbol = as.character(rownames(diffSig))
DEG.entrez_id = mapIds(x = org.Hs.eg.db,keys = DEG.gene_symbol,
                       keytype = "SYMBOL",column = "ENTREZID")
gene = bitr(DEG.gene_symbol, fromType="SYMBOL", toType="ENTREZID", OrgDb="org.Hs.eg.db")
DEG.entrez_id = na.omit(DEG.entrez_id)
DEG.entrez_id
write.csv(gene, "01_78.gene.SYMBOL_WNTREZID.csv")
#write.table(DEG.entrez_id,"DEG.entrez_id.txt",sep="\t")

##  GO 富集分析
ego <- enrichGO(
  gene  = gene$ENTREZID,
  keyType = "ENTREZID",
  OrgDb   = org.Hs.eg.db,
  ont     = "all",
  pAdjustMethod = "BH",
  pvalueCutoff  = 0.05,
  readable      = TRUE)

pdf(file = "GO.pdf", width = 10, height = 9)
barplot(ego, drop = TRUE, showCategory = 10,split="ONTOLOGY") +
  scale_y_discrete(labels=function(x) str_wrap(x, width=80))+
  facet_grid(ONTOLOGY~., scale='free')
dev.off()
#
dotplot(ego, showCategory = 10)
# 导出GO数据
write.csv(ego, "05.GO.result.csv")

## KEGG 富集分析
ekegg <- enrichKEGG(
  gene = gene$ENTREZID,
  keyType = "kegg",
  organism  = 'hsa',
  pvalueCutoff  = 0.05,
  pAdjustMethod  = "BH")

pdf(file = "KEGG_bar.pdf", width = 9, height = 8)
barplot(ekegg, showCategory = 10)
dev.off()
pdf(file = "KEGG_dotplot.pdf", width = 9, height = 8)
dotplot(ekegg, showCategory = 10)
dev.off()
## 导出KEGG富集分析数据
write.csv(ekegg, "06.KEGG.result.csv")


往期文章:

1. 复现SCI文章系列专栏

2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。

3. 最全WGCNA教程(替换数据即可出全部结果与图形)

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三

  • WGCNA分析 | 全流程分析代码 | 代码四

  • WGCNA分析 | 全流程分析代码 | 代码五(最新版本)


4. 精美图形绘制教程

  • 精美图形绘制教程

5. 转录组分析教程

转录组上游分析教程[零基础]

一个转录组上游分析流程 | Hisat2-Stringtie

小杜的生信筆記,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1457238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于数据结构的定义以及基本的数据结构

在计算机科学中&#xff0c;数据结构是指用于组织和存储数据的方式或方法。它涉及到在计算机内存中存储、管理和操作数据的技术和原则。数据结构不仅仅是简单地存储数据&#xff0c;还可以提供高效的数据访问和操作方式&#xff0c;以满足特定的需求。 以下是每个数据结构的详细…

mkcert安装教程

1、下载 官方文档&#xff1a;https://github.com/FiloSottile/mkcert#mkcert 下载链接&#xff1a;https://github.com/FiloSottile/mkcert/releases 2、安装&#xff0c;该文件目录下打开cmd&#xff08;可以把文件复制到别的文件夹&#xff09;&#xff0c;执行命令 //命令…

开源模型应用落地-工具使用篇-向量数据库进阶(四)

一、前言 通过学习"开源模型应用落地"系列文章&#xff0c;我们成功地建立了一个完整可实施的AI交付流程。现在&#xff0c;我们要引入向量数据库&#xff0c;作为我们AI服务的二级缓存。本文将继续基于上一篇“开源模型应用落地-工具使用篇-向量数据库&#xff08;三…

FreeRTOS移植到GD32

目录 一、GD32基础工程创建&#xff1a; 1、创建如下文件夹 2、在keil5创建工程 3、在工程添加相关.c文件和头文件路径 4、实例&#xff1a;实现LED闪烁功能 二、在基础工程添加FreeRTOS&#xff1a; 1、FreeRTOS中的文件: 2、添加的源文件: 3、添加的头文件路径: 4、…

机器人常用传感器分类及一般性要求

机器人传感器的分类 传感技术是先进机器人的三大要素&#xff08;感知、决策和动作&#xff09;之一。根据用途不同&#xff0c;机器人传感器可以分为两大类&#xff1a;用于检测机器人自身状态的内部传感器和用于检测机器人相关环境参数的外部传感器。 内部传感器 内部传感…

【JavaEE】_HTML常用标签

目录 1.HTML结构 2. HTML常用标签 2.1 注释标签 2.2 标题标签&#xff1a;h1~h6 2.3 段落标签&#xff1a;p 2.4 换行标签&#xff1a;br 2.5 格式化标签 2.6 图片标签&#xff1a;img 2.7 超链接标签&#xff1a;a 2.8 表格标签 2.9 列表标签 2.10 表单标签 2.10…

航班进出港|航班进出港管理系统|基于springboot航班进出港管理系统设计与实现(源码+数据库+文档)

航班进出港管理系统目录 目录 基于springboot航班进出港管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 5、航班信息管理 &#xff08;1&#xff09; 航班信息管理 &#xff08;2&#xff09;起飞降落申请管理 &#xff08;3&#xff09;公告管理 &…

辽宁博学优晨教育科技有限公司视频剪辑培训专业之选

随着数字时代的到来&#xff0c;视频剪辑技术已成为各行各业不可或缺的一项技能。为了满足市场需求&#xff0c;辽宁博学优晨教育科技有限公司&#xff08;以下简称“博学优晨”&#xff09;推出了专业的视频剪辑培训课程&#xff0c;旨在为广大学员提供系统、高效的学习机会。…

AMD FPGA设计优化宝典笔记(4)复位桥

高亚军老师的这本书《AMD FPGA设计优化宝典》&#xff0c;他主要讲了两个东西&#xff1a; 第一个东西是代码的良好风格&#xff1b; 第二个是设计收敛等的本质。 这个书的结构是一个总论&#xff0c;加上另外的9个优化&#xff0c;包含的有&#xff1a;时钟网络、组合逻辑、触…

面试系列之《Spark》(持续更新...)

1.job&stage&task如何划分&#xff1f; job&#xff1a;应用程序中每遇到一个action算子就会划分为一个job。 stage&#xff1a;一个job任务中从后往前划分&#xff0c;分区间每产生了shuffle也就是宽依赖则划分为一个stage&#xff0c;stage这体现了spark的pipeline思…

picker选择器-年月日选择

从底部弹起的滚动选择器。支持五种选择器&#xff0c;通过mode来区分&#xff0c;分别是普通选择器&#xff0c;多列选择器&#xff0c;时间选择器&#xff0c;日期选择器&#xff0c;省市区选择器&#xff0c;默认是普通选择器。 学习一下日期选择器 平台差异说明 日期选择默…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(三)

3.19.切换RKE用户,并做免密登录(三台机器相互免密) su rke cd~ ssh-keygen[rke@master.ssh]$ssh-copy-id rke@slaver2 [rke@master.ssh]$ssh-copy-id rke@slaver1 [rke@master.ssh]$ssh-copy-id rke@master3.20.搭建RKE集群 为了方便理解,我们把通RKE部署的Kubernetes集群称…

浏览网页记录工具,企业如何查看员工网页浏览记录

随着信息技术的飞速发展&#xff0c;网络已成为企业日常运营和员工工作中不可或缺的一部分。然而&#xff0c;随之而来的是网络安全和员工上网行为管理的挑战。在这种情况下&#xff0c;浏览网页记录工具成为了企业监控员工上网行为的重要手段之一。 一、浏览网页记录工具的重要…

MySQL 基础知识(十)之 MySQL 架构

目录 1 MySQL 架构说明 2 连接层 3 核心业务层 3.1 查询缓存 3.2 解析器 3.3 优化器 3.4 执行器 4 存储引擎层 5 参考文档 1 MySQL 架构说明 下图是 MySQL 5.7 及其之前版本的逻辑架构示意图 MySQL 架构大致可分为以下三层&#xff1a; 连接层&#xff1a;负责跟客户…

unity学习(29)——GameInfo角色信息

1.把GameInfo.cs PlayerModel.cs Vector3.cs Vector4.cs PlayerStateConstans.cs GameState.cs依次粘到model文件夹中&#xff0c;此时项目没有错误&#xff0c;如下图所示&#xff1b; 对应处所修改的代码如下&#xff1a; case LoginProtocol.LOGIN_SRES://1 {Debug.Log(&qu…

软件工程师,AI手机元年到来,我们怎么办

概述 OPPO创始人、总裁、CEO陈明永在2024年2月18日发表了名为《开启AI手机新时代》的内部信。陈明永认为&#xff1a;“2024年是AI手机元年。未来五年&#xff0c;AI对手机行业的影响&#xff0c;完全可以比肩当年智能手机替代功能机”。他预测AI手机时代将成为继功能机、智能手…

docker jenkins 报错:script.sh.copy: 1: mvn: not found

找不到mvn,一般是没配置环境变量的问题。点开系统配置&#xff0c;设置环境变量即可

Python教程(27)——如何使用Python中的上下文管理器

当我们在编写代码时&#xff0c;经常会遇到需要管理资源的情况&#xff0c;比如打开和关闭文件&#xff0c;如果遇到了一些异常情况&#xff0c;我们需要关闭资源&#xff0c;不然会导致资源泄露&#xff0c;虽然我们可以通过手动的方式来关闭&#xff0c;但如果有多个异常情况…

(十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)

简述 操作路径如下: 作用:通过逐步增加线程数来模拟用户并发访问。配置:设置This group will start、First,wait for 、Then start、Next , add等参数。使用场景:模拟逐步增长的并发访问,观察应用程序的性能变化。优点:适用于测试应用程序在逐步增加负载下的性能表现。…

【STM32 物联网】AT指令的介绍

文章目录 前言一、什么是AT指令二、使用AT指令需要注意什么 三、AT指令的分类和提示信息3.1 AT指令的分类3.2 是否保存到Flash的含义3.3 提示信息 总结 前言 本系列STM32物联网使用的为esp8266-01S作为通信模块 在物联网&#xff08;IoT&#xff09;应用中&#xff0c;通信模…