GO和KEGG富集倍数(Fold Enrichment)如何计算
时间:2022-07-28
本文章向大家介绍GO和KEGG富集倍数(Fold Enrichment)如何计算,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面我们简单介绍过ggplot2画KEGG富集柱形图,其实GO富集结果的展示相对于KEGG来说要复杂一点点,因为GO又进一步可以划分成三个类。
BP:biological process,生物学过程。
MF:molecular function,分子功能。
CC:cellular component, 细胞成分。
因此在画图的时候,我们需要将这三类给区分开来。下面分别用了三种不同的方式来展示GO富集分析的结果。
图1:横轴为富集到每个GO条目上面的基因数目
图2: 横轴为GeneRatio
图3:横轴为Fold enrichment(富集倍数)
下面我们结合富集分析的结果表,来分别解释一下这三张图中横坐标的具体含义。
首先来看看这张表中每一列所代表的含义
ONTOLOGY:区分是BP,MF还是CC
ID:具体的GO条目的ID号
Description:GO条目的描述
GeneRatio:这里是一个分数,分子是富集到这个GO条目上的gene的数目,
分母是所有输入的做富集分析的gene的数目,可以是差异表达
分析得到的gene
BgRatio:Background Ratio. 这里也是一个分数,分母是人的所有编码蛋白的
基因中有GO注释的gene的数目,这里是19623个,分子是这19623个
gene中注释到这个GO条目上面的gene的数目
pvalue:富集的p值
p.adjust:校正之后的p值
qvalue:q值
geneID:输入的做富集分析的gene中富集到这个GO条目上面的具体的
gene名字
Count:输入的做富集分析的gene中富集到这个GO条目上面的gene的数目
这张表里面没有提到富集倍数(fold enrichment)
fold enrichment = GeneRatio / BgRatio
那么我们就很容易理解上面三张图的横坐标了,分别为Count,GeneRatio和Fold enrichment。
那么问题来了,既然这张表里面没有Fold enrichment,那么我们如何计算富集倍数呢?
下面小编给大家介绍三种方法来计算Fold enrichment,任君挑选
1.利用eval直接做计算
kegg=read.csv("KEGG-enrich.csv",stringsAsFactors = F)
enrichment_fold=apply(kegg,1,function(x){
GeneRatio=eval(parse(text=x["GeneRatio"]))
BgRatio=eval(parse(text=x["BgRatio"]))
enrichment_fold=round(GeneRatio/BgRatio,2)
enrichment_fold
})
2.利用strsplit按/分割成分子和分母
kegg=read.csv("KEGG-enrich.csv",stringsAsFactors = F)
fenshu2xiaoshu<-function(ratio){
sapply(ratio,function(x) as.numeric(strsplit(x,"/")[[1]][1])/as.numeric(strsplit(x,"/")[[1]][2]))
}
enrichment_fold=fenshu2xiaoshu(kegg$GeneRatio)/fenshu2xiaoshu(kegg$BgRatio)
enrichment_fold=as.numeric(enrichment_fold)
3. 利用gsub替换,得到分子和分母
kegg=read.csv("KEGG-enrich.csv",stringsAsFactors = F)
fenshu2xiaoshu2<-function(ratio){
sapply(ratio,function(x) as.numeric(gsub("/.*$","",x))/as.numeric(gsub("^.*/","",x)))
}
enrichment_fold=fenshu2xiaoshu2(kegg$GeneRatio)/fenshu2xiaoshu2(kegg$BgRatio)
enrichment_fold=as.numeric(enrichment_fold)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Kafka集群搭建及必知必会
- Python 技术篇-打开指定文件夹、目录、路径方法,运行指定文件演示
- Python 技巧篇-同一个方法多次引用不同效果功能实现,可选参数设置方法
- Kafka核心API——Connect API
- PyQt5 技术篇-设置alignment对齐方式。Qt Designer设置文本对齐方式。居中、左对齐、右对齐、上对齐、下对齐。
- Nginx部署Vue项目以及解决刷新页面404
- Kafka核心API——Stream API
- Kafka核心API——Consumer消费者
- Kafka核心API——Producer生产者
- Linux Lab v0.5 正式发布,功能强大,用法简单
- Kafka核心API——AdminClient API
- PyQt5 技术篇-调用颜色对话框(QColorDialog)获取颜色,调色板的调用。
- Kafka的安装与配置
- PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
- PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。