差异基因 p log2foldchange_拟南芥的基因ID批量转换?差异基因,GO/KEGG数据库注释(转录组直接送你全套流程)...

新手遇到的问题都是类似的,比如批量ID转换

219498666d9d2baa956d34e0b79eb786.png

虽然我写过大量的教程:ID转换大全   不过都需要R基础,因为是大批量转换啊!

但热心肠的植物生物信息学教学大佬还是友善的给出了解决方案

d4241af6b38b03a34359ef2f06e975d5.png

我也狗尾续貂制作了一个网页工具教程:

b692c978e810317d7fd80b8653aaee4d.png

简单的3个步骤,不会代码也可以很容易把ID批量转换啦!

不过有趣的是我搜索电脑资料,看到了2年前写的拟南芥教程。

不过我为什么会花时间写拟南芥教程呢?

10e288a5fb8a3d4f101b282331e80974.png

1 首先加载必要的包

library(ggplot2)
library(stringr)
# source("https://bioconductor.org/biocLite.R")
# biocLite("clusterProfiler")
# biocLite("org.At.tair.db")
library(clusterProfiler)
library(org.At.tair.db)

2 然后导入数据

deg1=read.table('https://raw.githubusercontent.com/jmzeng1314/my-R/master/DEG_scripts/tair/DESeq2_DEG.Day1-Day0.txt')
deg1=na.omit(deg1)
head(deg1)
##              baseMean log2FoldChange    lfcSE      stat       pvalue
## AT3G01430   22.908929      18.989990 2.148261  8.839704 9.597263e-19
## AT1G47405   20.709551      20.958806 2.434574  8.608820 7.381677e-18
## AT2G33830 1938.159722      -2.560609 0.312663 -8.189678 2.619266e-16
## AT5G28627    8.118376     -21.131318 2.875691 -7.348257 2.008078e-13
## AT2G33750    9.789740     -19.989301 2.847513 -7.019915 2.220033e-12
## AT3G54500 2238.314652       2.720430 0.386305  7.042182 1.892517e-12
##                   padj
## AT3G01430 1.858318e-14
## AT1G47405 7.146571e-14
## AT2G33830 1.690562e-12
## AT5G28627 9.720602e-10
## AT2G33750 7.164418e-09
## AT3G54500 7.164418e-09
prefix='Day1-Day0'

3 然后判断显著差异基因

很明显,这个时候用padj来挑选差异基因即可,不需要看foldchange了。

table(deg1$padj<0.05)
## 
## FALSE  TRUE 
## 19166   197
table(deg1$padj<0.01)
## 
## FALSE  TRUE 
## 19303    60
diff_geneList = rownames(deg1[deg1$padj<0.05,])
up_geneList = rownames(deg1[deg1$padj<0.05 & deg1$log2FoldChange >0,])
down_geneList = rownames(deg1[deg1$padj<0.05 & deg1$log2FoldChange <0,])
length(diff_geneList)
## [1] 197
length(up_geneList)
## [1] 89
length(down_geneList)
## [1] 108

3.1 画个火山图看看挑选的差异基因合理与否

colnames(deg1)
## [1] "baseMean"       "log2FoldChange" "lfcSE"          "stat"          
## [5] "pvalue"         "padj"
log2FoldChange_Cutof = 0
## 这里我不准备用log2FoldChange来挑选差异基因,仅仅是用padj即可
deg1$change = as.factor(ifelse(deg1$padj 0.05 & 
                                       abs(deg1$log2FoldChange) > log2FoldChange_Cutof,
                                     ifelse(deg1$log2FoldChange > log2FoldChange_Cutof ,'UP','DOWN'),'NOT'))
this_tile 'Cutoff for log2FoldChange is ',round(log2FoldChange_Cutof,3),
                    '\nThe number of up gene is ',nrow(deg1[deg1$change =='UP',]) ,
                    '\nThe number of down gene is ',nrow(deg1[deg1$change =='DOWN',])
)
g_volcano = ggplot(data=deg1, aes(x=log2FoldChange, y=-log10(padj), color=change)) +
  geom_point(alpha=0.4, size=1.75) +
  theme_set(theme_set(theme_bw(base_size=20)))+
  xlab("log2 fold change") + ylab("-log10 p-value") +
  ggtitle( this_tile  ) + 
  theme(plot.title = element_text(size=15,hjust = 0.5))+
  scale_colour_manual(values = c('blue','black','red'))  ## corresponding to the levels(res$change)
print(g_volcano)
e96217ee483ca1de928c60f72956e324.png

4 GO/KEGG注释

4.1 首先进行KEGG注释

diff.kk <- enrichKEGG(gene         = diff_geneList,organism     = 'ath',pvalueCutoff = 0.99,qvalueCutoff=0.99
)kegg_diff_dt <- as.data.frame(setReadable(diff.kk,org.At.tair.db,keytype = 'TAIR'))up.kk <- enrichKEGG(gene         = up_geneList,organism     = 'ath',pvalueCutoff = 0.99,qvalueCutoff=0.99
)kegg_up_dt <- as.data.frame(setReadable(up.kk,org.At.tair.db,keytype = 'TAIR'))down.kk <- enrichKEGG(gene         = down_geneList,organism     = 'ath',pvalueCutoff = 0.99,qvalueCutoff=0.99
)kegg_down_dt <- as.data.frame(setReadable(down.kk,org.At.tair.db,keytype = 'TAIR'))

4.2 可视化看看KEGG注释结果

## KEGG patheay visulization: 

  down_kegg$pvalue<0.05,];down_kegg$group=-1
  up_kegg$pvalue<0.05,];up_kegg$group=1
  dat=rbind(up_kegg,down_kegg)
  colnames(dat)
##  [1] "ID"          "Description" "GeneRatio"   "BgRatio"     "pvalue"     
##  [6] "p.adjust"    "qvalue"      "geneID"      "Count"       "group"
  dat$pvalue = -log10(dat$pvalue)
  dat$pvalue=dat$pvalue*dat$group 

  dat=dat[order(dat$pvalue,decreasing = F),]

  g_kegg    geom_bar(stat="identity") + 
    scale_fill_gradient(low="blue",high="red",guide = FALSE) + 
    scale_x_discrete(name ="Pathway names") +
    scale_y_continuous(name ="-log10P-value") +
    coord_flip() +
    ggtitle("Pathway Enrichment")
  print(g_kegg)
d3580532a527f9d3fcc2099cc93060ec.png

4.3 接着进行GO注释

for (onto in c('CC','BP','MF')){

  ego                   OrgDb         = org.At.tair.db, 
                  keyType = 'TAIR',
                  ont           =  onto ,
                  pAdjustMethod = "BH",
                  pvalueCutoff  = 0.2,
                  qvalueCutoff  = 0.9)
  ego 'TAIR')
  write.csv(as.data.frame(ego),paste0(prefix,"_",onto,".csv"))
  #ego2 
  ego2=ego
  pdf(paste0(prefix,"_",onto,'_barplot.pdf'))
  p=barplot(ego2, showCategory=12)+scale_x_discrete(labels=function(x) str_wrap(x,width=20))print(p)dev.off() 
}ggsave(filename = paste0(prefix,"_volcano_plot.pdf"),g_volcano)
## Saving 7 x 5 in image
ggsave(filename = paste0(prefix,"_kegg_plot.pdf"),g_kegg)
## Saving 7 x 5 in image
write.csv(x = kegg_diff_dt,file = paste0(prefix,"_kegg_diff.csv"))
write.csv(x = kegg_up_dt,file = paste0(prefix,"_kegg_up.csv"))
write.csv(x = kegg_down_dt,file = paste0(prefix,"_kegg_down.csv"))

5 基因ID注释

library(org.At.tair.db)
ls('package:org.At.tair.db')
##  [1] "org.At.tair"             "org.At.tair.db"         
##  [3] "org.At.tairARACYC"       "org.At.tairARACYCENZYME"
##  [5] "org.At.tairCHR"          "org.At.tairCHRLENGTHS"  
##  [7] "org.At.tairCHRLOC"       "org.At.tairCHRLOCEND"   
##  [9] "org.At.tairENTREZID"     "org.At.tairENZYME"      
## [11] "org.At.tairENZYME2TAIR"  "org.At.tairGENENAME"    
## [13] "org.At.tairGO"           "org.At.tairGO2ALLTAIRS" 
## [15] "org.At.tairGO2TAIR"      "org.At.tairMAPCOUNTS"   
## [17] "org.At.tairORGANISM"     "org.At.tairPATH"        
## [19] "org.At.tairPATH2TAIR"    "org.At.tairPMID"        
## [21] "org.At.tairPMID2TAIR"    "org.At.tairREFSEQ"      
## [23] "org.At.tairREFSEQ2TAIR"  "org.At.tairSYMBOL"      
## [25] "org.At.tair_dbInfo"      "org.At.tair_dbconn"     
## [27] "org.At.tair_dbfile"      "org.At.tair_dbschema"
## Then draw GO/kegg figures:
deg1$gene_id=rownames(deg1)
id2symbol=toTable(org.At.tairSYMBOL) 
deg1=merge(deg1,id2symbol,by='gene_id')
## 可以看到有一些ID是没有gene symbol的,这样的基因,意义可能不大,也有可能是大部分人漏掉了
head(deg1)
##     gene_id   baseMean log2FoldChange     lfcSE       stat    pvalue
## 1 AT1G01010   58.25657     1.13105335 0.8000274  1.4137683 0.1574300
## 2 AT1G01010   58.25657     1.13105335 0.8000274  1.4137683 0.1574300
## 3 AT1G01020  542.64394    -0.05745554 0.3721650 -0.1543819 0.8773086
## 4 AT1G01030   48.77442    -1.09845263 1.2875862 -0.8531100 0.3935983
## 5 AT1G01040 1708.68949     0.32421734 0.2777530  1.1672865 0.2430947
## 6 AT1G01040 1708.68949     0.32421734 0.2777530  1.1672865 0.2430947
##        padj change  symbol
## 1 0.6008903    NOT ANAC001
## 2 0.6008903    NOT  NAC001
## 3 0.9805661    NOT    ARV1
## 4 0.8144858    NOT    NGA3
## 5 0.6992279    NOT    DCL1
## 6 0.6992279    NOT   EMB60

可以看到基因的ID和symbol的对应关系就出来了,根使用网页工具是类似的,感兴趣的朋友可以试试看网页工具和R代码的ID批量转换差别有多大。

■   ■   ■ 

全国巡讲约你

第1-10站北上广深杭,西安,郑州, 吉林,武汉和成都(全部结束)

七月份我们不外出,只专注单细胞!

系统学习单细胞分析,报名生信技能树的线下培训,手慢无a028be6a7cee13a5f88210fbca013ecb.png

一年一度的生信技能树单细胞线下培训班火热招生

全国巡讲第11站-港珠澳专场(生信技能树爆款入门课)

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

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

相关文章

mongoose 批量修改字段_WordPress图片路径批量替换方法

不少数站长在使用WordPress博客或者搬家时&#xff0c;需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题。总结一下WP图片路径批量替换的过程&#xff0c;方便有此类需求的站长们学习。什么情况下批量替换图片路径1、更换了网站域名有许多网站建设初期都随便选择…

python vector_50行Python代码实现经典游戏,不仅是划水神器,更是学习利器!

Free Python Games非常适合学生&#xff0c;它不仅具有高度的组织性和灵活性&#xff0c;而且能够激发人们探索和理解能力。--Terri FurtonFree Python Games在轻松的环境中把游戏和学习结合在一起&#xff0c;从而减轻了编程过程中的压力。--Brett Bymaster...贪吃蛇、迷宫、吃…

laravel框架中文手册_node.js 后端框架star 排名 2020年11月更新,fastify 超 egg

发布时间以首个版本发布&#xff08;0.x&#xff09;为准。第一名&#xff1a; express 50.8k &#xff08;2010年1月发布&#xff09; 目前star 和下载量最高的老牌框架。https://github.com/expressjs/express​github.com第二名&#xff1a;meteor 42.1k &#xff08;2012年…

python音乐下载器交互界面_基于Python实现下载网易音乐代码实例

代码如下 # 爬取网易音乐 import requests from bs4 import BeautifulSoup import urllib.request headers {"origin": "https://music.163.com", "referer": "https://music.163.com/", "user-agent": "Mozilla/5.0 …

java 格式化字符串_Java入门 - 语言基础 - 14.String类

1.概述字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了 String 类来创建和操作字符串。2.创建字符串创建字符串最简单的方式如下:String greeting "光束云";在代码中遇到字符串常量时&#xff0c;这里的值是 "光束…

decimal是什么类型_SQLMysql数据类型

一 前言每个数据库的数据类型从来都不是一个简单的数据结构&#xff0c;特别是使用不同的数据库&#xff0c;不同的引擎&#xff0c;其支持的数据类型也不一样&#xff0c;选择那种数据类型作为字段类型对数据库的性能也是天差地别&#xff0c;故对数据类型有个全面的认知&…

mybatis依赖_Spring Boot2 系列教程(二十一)整合 MyBatis

前面两篇文章和读者聊了 Spring Boot 中最简单的数据持久化方案 JdbcTemplate&#xff0c;JdbcTemplate 虽然简单&#xff0c;但是用的并不多&#xff0c;因为它没有 MyBatis 方便&#xff0c;在 SpringSpringMVC 中整合 MyBatis 步骤还是有点复杂的&#xff0c;要配置多个 Bea…

android获取图片格式,Android得到图片的真实格式——从本地文件或者网络文件流...

ImageFormatFeatures支持从InputStream或者File解析四种格式&#xff1a;jpg 、 png 、 webp 、 gif从文件本身解析格式&#xff0c;而不是从扩展名获取FormatHelper.getFormat(InputStream inputStream)FormatHelper.getFormat(File file)UsageStep 1Step 2解析格式String For…

pagehelper的使用_SpringBoot项目中,如何更规范的使用PageHelper分页?

SpringBoot项目中&#xff0c;如何更规范的使用PageHelper分页&#xff0c;拉勾IT课小编为大家分解一. 开发准备1. 开发工具• IntelliJ IDEA 2020.2.32. 开发环境• Red Hat Open JDK 8u256• Apache Maven 3.6.33. 开发依赖SpringBoot<dependency><groupId>org.s…

python自动输入账号密码_Python如何基于selenium实现自动登录博客园

这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备&#xff1a; 本文章是使用Chrome&#xff0c;所以需要Chormedriver.exe&#xff0c;…

android 模拟长按菜单键_如何采用PLC梯形图实现单键启动程序

“PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。它采用可以编制程序的存储器&#xff0c;用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令&#xff0c;并能通过数字式或模拟式的输入和输出&#xff0c;控制各种类型的机械或生产…

android 日期对话框,Android日期选择器对话框DatePickerDialog使用详解

调用Android原生日期选择器对话框就是DatePickerDialog&#xff0c;具体内容如下在Android4.4系统上效果如图&#xff1a;在Android5.0以上效果如图&#xff1a;1、Activity的onCreate方法中获取当时的年&#xff0c;月&#xff0c;日Calendar ca Calendar.getInstance();mYea…

wp自定义帖子没标签_ofollow标签的作用有重大变化

nofollow标签的历史经典的nofollow标签作用和使用方法以前的帖子写过&#xff0c;详情读者可以参考以前帖子。nofollow标签&#xff08;准确说是属性&#xff0c;不过约定俗成&#xff0c;还是叫标签吧&#xff09;是Google和Yahoo等搜索引擎2005年推出的&#xff0c;目的是告诉…

android电视视频播放器,智能电视如何播放本地视频?当贝市场分享几款播放器...

原标题&#xff1a;智能电视如何播放本地视频&#xff1f;当贝市场分享几款播放器对视频清晰度要求更高的用户普遍会自己下载视频&#xff0c;然后通过本地播放的方式观影&#xff0c;那么&#xff0c;下面就给大家介绍几款智能电视的本地视频播放软件&#xff0c;包你好用。当…

python 三引号_Python 简明教程 --- 4,Python 变量与基本数据类型

微信公众号&#xff1a;码农充电站pro 个人主页&#xff1a;https://codeshellme.github.io任何一个人都会写出能够让机器理解的代码&#xff0c;只有好的程序员才能写出人类可以理解的代码。 —— Martin Fowler 1&#xff0c;什么是变量计算机的本质是处理数据&#xff0c;数…

鸿蒙系统手机9月11日,鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统...

原标题&#xff1a;鸿蒙系统9月11日&#xff0c;将有望正式成为国际第三大手机操作生态系统众所周知&#xff0c;当时华为鸿蒙系统还处于1.0版本的时候&#xff0c;这项技术就已经被运用到了荣耀智能屏上&#xff0c;目前该系统也已经过渡到了华为的手表上&#xff0c;经过这一…

高德地图画带箭头的线_现代汽车把艺术展览搬到线上,邀您逛全景获奖展

Hyundai Blue Prize 2019获奖展“游戏社会&#xff1a;狼、猞猁和蚁群”(Play societies&#xff1a;wolves, lynx and ants)线上展览正式上线。《游戏社会: 狼、猞猁和蚁群》&#xff0c;以 “信息高速公路上的荒原狼”、“猞猁安全岛”和“蚁群游戏厅” 三段隐喻文本展开展览…

ssm 项目cannot resolve package_前端工程化之创建项目

前言在我们团队&#xff0c;刚开始创建项目&#xff0c;是直接使用框架的 cli 进行创建项目&#xff0c;并修改相关配置。随着项目的增多&#xff0c;沉淀了两套模板&#xff0c;平台端及移动端。后来&#xff0c;我们自己写了一个简单的 cli&#xff0c;并提供了 create 及 li…

android_secure写权限,android.permission.WRITE_SECURE_SETTINGS权限报错

在做Android的GPS这一块时&#xff0c;根据原生代码写的Widget&#xff0c;运行时总是会报错说需要android.permission.WRITE_SECURE_SETTINGS权限&#xff0c;于是便在Manifest.xml中添加该权限&#xff0c;但是保存时会报错提示该权限仅用于系统的app查看了很多资料都说需要将…

百度seo排名规则_百度关键词seo优化排名如何上首页

无涯孤客百度关键词seo优化排名快速上首页&#xff0c;是通过使用多种百度算法优化&#xff0c;让网站在搜索引擎上排名更好&#xff0c;我们做百度关键词排名的话&#xff0c;要比市面上绝大公司做的要稳定&#xff0c;也希望各位可以相信我们&#xff0c;我们可以将百度关键词…