首页 > 其他分享 >23-有参转录组实战9-差异基因GO富集分析

23-有参转录组实战9-差异基因GO富集分析

时间:2024-03-19 15:58:44浏览次数:21  
标签:差异基因 23 eg db library Ptri GO org

#这里需要对非模式物种制作ORG.DB包,如果是模式物种,“https://bioconductor.org/packages/release/BiocViews.html#___OrgDb”该网站有自带的成熟的包,自行下载使用就行。

#对上一个教程中得到的out.emapper.annotations文件,对表头修整下:

#windows上的R运行

library(dplyr)
library(stringr)
library(clusterProfiler)
library(AnnotationForge)
library(tidyr)
options(stringsAsFactors = F)#keep character but not factor conversion
emapper <- read.delim("out.emapper.annotations")
emapper[emapper=="-"] <- NA#change "-" to "NA"
emapper <- emapper[-(49584:49586),]#remove the final 3 rows
gene_info <- dplyr::select(emapper, GID=query, Gene_Name=seed_ortholog)%>%
  dplyr::filter(!is.na(Gene_Name))

#gene_info表格

#提取GO信息

gene2go <- dplyr::select(emapper,GID=query, GO=GOs)%>%
  filter(!is.na(GO))%>%
  mutate(EVIDENCE='IEA')%>%
  separate_rows(GO, sep = ',', convert = F)

#gene2go表格,其实和实战8中,TBTOOLS做出来的是一样的。

#构建orgdb包

AnnotationForge::makeOrgPackage(gene_info=gene_info,
                                go=gene2go,
                                maintainer = 'LJH',
                                author = 'LJH',
                                outputDir = "./",
                                tax_id = 0000,
                                genus = 'P',
                                species = 'tri',
                                goTable = "go",
                                version = "1.0")

#对新生成的org.Ptri.eg.db包中的DESCRIPTION,进行修改,Maintainer: LJH <[email protected]>,

#打包

pkgbuild::build('./org.Ptri.eg.db', dest_path = './')

#生成org.Ptri.eg.db_1.0.tar.gz将这个R包放到平时R包安装的路径中,本地安装

install.packages('your_path', repos = NULL)
library(org.Ptri.eg.db)

#将实战5中的差异基因自行excel修改下基因名,使其与gene_info中的GID相对应,我加尾缀.1吧,先看看效果如何,只做一列就行,加表头GID。

#差异分析
DE <- read.delim("DE_genes_filter.txt")
ego <- enrichGO(gene = DE$GID,
                OrgDb = org.Ptri.eg.db,
                keyType = 'GID',
                ont = 'ALL',
                pvalueCutoff = 0.05,
                qvalueCutoff = 0.05)
#以下是自带的clusterprofiler的画图函数
dotplot(ego)
barplot(ego)
cnetplot(ego)

#这个富集文件要自己用EXCEL修改,我自己选了15条BP-4条CC-15条MF。GeneRatio自己做成百分比。
#以下是用GGPLOT2画条形图了,各种函数,自己调节参数即可。
write.table(ego, file = "Ptri_GO_test",sep = '\t',quote = F)
ego2 <- read.delim("Ptri_GO_test")

library(ggplot2)

library(GOplot)

ggplot(ego2, aes(Description, -log10(p.adjust))) +

  geom_col(aes(fill = ONTOLOGY), width = 0.5, show.legend = FALSE) +

  scale_fill_manual(values = c('#D06660', '#5AAD36', '#6C85F5')) +

  facet_grid(ONTOLOGY~., scale = 'free_y', space = 'free_y') +

  theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent')) +

  scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +

  coord_flip() +

  labs(x = '', y = '-log10(p.adjust)')

#GGPLOT2画气泡图
pp <- ggplot(ego2, aes(GeneRatio, Description))
pp + geom_point() +
  geom_point(aes(size = Count)) +
  geom_point(aes(size = Count, color = -1 * log10(qvalue))) +
  scale_colour_gradient(low = "green", high = "red") +
  labs(color = expression(-log[10](Qvalue)), size = "Gene Number", x = "Rich Factor", y = "Pathway Name", title = "Top 30 of Pathway Enrichment") +
  theme_bw()
##########图片自己微调吧#######

 

 

#小林家的龙女仆

标签:差异基因,23,eg,db,library,Ptri,GO,org
From: https://www.cnblogs.com/liangjinghui/p/18083158

相关文章

  • LY1169 [ 20230328 CQYC省选模拟赛 T1 ] 传奇特级超空间
    题意设\(f_{n,m}\)表示\(m\)维空间能被\(n\)个\(m-1\)维空间划分的最大区域数。求\(\sum_{i=0}^mf_{n,i}\)\(n,m\le10^{18},p\le2\times10^7\)Sol注意到:\(f_{n,m}=f_{n-1,m-1}+f_{n-1,m}\)。不难想到\(f\)应该是组合数的前缀......
  • MongoDB 入门篇
    原文链接: https://www.cnblogs.com/clsn/p/8214194.html1.1数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统1.1.1什么是数据?数据(英语:data),是指未经过处理的原始记录。一般而言,数据缺乏组织及分类,无法明确的表达事物代表的意义,它可能是......
  • GO 批量修改 + 事务
    packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql"//引入你的数据库驱动)funcmain(){//建立数据库连接db,err:=sql.Open("mysql","user:password@/dbname")iferr!=nil{......
  • go使用HTTP代理和SOCKS5代理的代码示例
    本文档为获取到代理IP后使用代理的代码样例,供开发者参考。代码样例直接运行无法得到正确的结果,因为代码中的代理地址/端口和应用账号密码等信息都是虚构的,您替换成自己真实的就可以正常运行了。如何获取代理地址/端口和设置代理授权?请参考:接入指南-快速入门使用前提:......
  • 算法训练营第10天|栈与队列基础知识总结 LeetCode 232.用栈实现队列 225.用队列实现栈
    栈与队列基础知识总结 首先要明白栈和队列不同的地方在于,栈是先入后出的结构,队列是先入先出的结构。栈的基本操作栈的定义: stack<int>s;入栈元素:intx;s.push(x);出栈元素:s.pop();返回栈顶元素:s.top();判断栈是否为空:s.empty();队列的基本操作:队列和栈的基本......
  • 解决go项目引进etcd/clientv3的一个报错grpc版本过高的两个方法
    在使用etcd做服务注册和发现,编译时提示下列错误:#github.com/coreos/etcd/clientv3/balancer/pickerF:\Go\pkg\mod\github.com\coreos\[email protected]+incompatible\clientv3\balancer\picker\err.go:37:44:undefined:balancer.PickOptionsF:\Go\pkg\mod\github.com\coreos\e......
  • mongoose
    挖坑:集合CURD,文档CURD[数据库连接]连接一个不存在的数据库,不会立即创建该数据库,只有执行到文档对象的save等方法时,才会去创建该数据库constmongoose=require('mongoose')//这里捕获的是链接过程中发生的异常constdb=mongoose.connect('mongodb://host:p......
  • Golang案例开发之gopacket监听网卡抓包(2)
    文章目录前言二、实践监听网卡抓包1.代码2.知识点OpenLive方法SetBPFFilter断言总结前言本节实战,监听指定网卡,进行网络抓包,根据分层,解析不同分层包的内容。二、实践监听网卡抓包1.代码代码如下(示例):packagemainimport( "fmt" "log" "......
  • django版本区别
     """1.django1.X路由层使用的是url方法而在django2.Xhe3.X版本中路由层使用的是path方法url()第一个参数支持正则path()第一个参数是不支持正则的写什么就匹配什么如果你习惯使用path那么也给你提供了另外一个方法fromdjango.urlsi......
  • CVE-2023-48409 Mali GPU 整数溢出导致堆越界写
    CVE-2023-48409MaliGPU整数溢出导致堆越界写https://github.com/0x36/Pixel_GPU_Exploit漏洞原语:假设分配的大小为0x3004​,会执行copy_from_user(ptr-0x4000,from,0x7004),导致越界写由于CONFIG_HARDENED_USERCOPY如果to是slab中的地址,copy_from_user会确保拷......