原标题:GO富集分析(R包GOseq)

前面已经讲述了R包用clusterProfiler做GO富集分析clusterProfiler的GO富集分析方法,本篇继续演示R包goseq的GO富集分析。

相比clusterProfiler中的GO富集分析方法,goseq的特别之处在于,不再使用超几何分布(Hyper-geometric distribution)检验,而是使用了Wallenius non-central hyper-geometric分布。除了背景基因的数量外,它还同时考虑了基因长度信息,认为从某个类别中抽取个体的概率与从某个类别之外抽取一个个体的概率是不同的,这种概率的不同是通过对基因长度的偏好性进行估计得到的,从而其认为能更为准确地计算出 GO term被差异基因富集的概率。

goseq包的安装

对于goseq的安装也很简单,一般情况下,直接通过Bioconductor安装goseq就可以了。

!!!**************************************************

#bioconductor 安装

#install.packages('BiocManager') #需要首先安装 BiocManager,如果尚未安装请先执行该步

BiocManager::install('goseq')

!!!**************************************************

goseq的GO富集分析(有参向)

这里均对于有参考基因组的情况而言的,无参分析暂不涉及。

就以人类转录组数据为例展示GO分析的过程吧。

1、准备输入数据

需要准备两类数据。

(1)待分析的基因名称,例如这里以人类参考基因组hg38版本的ensembl id为例。把基因名称以一列的形式排开,放在一个文本文件中(例如命名“gene_select.txt”)。Excel中查看,就是如下示例这种样式。

输入数据,基因名称李列表

(2)所有基因长度信息,既包含待分析的基因,也要包含背景基因,根据所选择的参考基因组定义。例如这里统计了人类参考基因组hg38版本的所有基因长度,第一列是基因名称,第二列是基因长度,放在一个文本文件中(例如命名“gene_length.all.txt”)。Excel中查看,就是如下示例这种样式。

输入数据,基因长度信息

2、goseq的GO富集分析

首先读取基因列表和长度文件,预处理数据。

!!!**************************************************

#读取待GO分析的基因名称,该示例来自人参考基因组 hg38 的基因名称

de_gene

#读取人类 hg38 的所有基因长度信息

gene_list

#设置待富集的基因为 1,背景基因为 0

genes

names(genes)

genes[de_gene]

head(genes) #处理后的待分析数据

!!!**************************************************

结果获得一组向量结构在R中存储。向量中记录了所有基因的名称,以及其是作为背景基因存在(0)还是作为富集基因存在(1)。

随后加载包goseq,并使用goseq的内部函数enrichGO()即可完成GO富集分析。

!!!**************************************************

library(goseq)

#根据基因长度加权

pwf

head(pwf)

#GO 富集分析

#hg38 是内置的人类 hg38 基因组参考库

#ensGene 意为基因名称使用 ensembl id 作匹配进行富集

pvals

head(pvals)

#手动对 P 值作个校正,例如 FDR 校正

pvals$FDR

pvals

head(pvals)

!!!**************************************************

goseq的GO富集分析结果表格

对于各列内容:

category,富集到的GO id;

over_represented_pvalue,富集的p值;

FDR,p调整值;

numDEInCat和numInCat,分别为富集到该GO条目中的基因数目,以及该条目中背景基因总数目;

term,富集到的GO的描述信息;

ontology,GO分类BP(生物学过程)、CC(细胞组分)或MF(分子功能)。

3、手动添加基因名称

我们看到,上述goseq的默认输出中,只统计了富集到该GO条目中的基因数量,并未把具体的基因名称展示出来。如果需要,基因名称我们来手动匹配下。

!!!**************************************************

#添加基因,参考方案

#https://www.biostars.org/p/355247/

getGeneLists

gene2cat

cat2gene

unlist(gene2cat, use.names = FALSE))

out

for(term in goterms){

tmp

tmp 0, ])

out[[term]]

}

out

}

goterms

goList

#默认将富集到GO的基因名称添加在最后一列,然后输出到本地

pvals$Ensembl_ID

write.table(pvals, 'goseq.txt', sep = '\t', row.names = FALSE, quote = FALSE)

!!!**************************************************

添加了带富集基因名称的输出表格

内容格式见上文,最后一列添加了富集到该条目的基因名称信息。

由于输入文件使用的ensembl id,因此最后展示的也是ensembl id。如果期望使用其它的基因名称,如通俗的symbol id等类型,除了更改输入文件为使用symbol id的基因名称做分析外,还可以通过基因名称转换的方式对ensembl id和symbol id作个匹配转换。

注:!!!*******之间为R脚本内容。

搜索微信公众号“纪伟讲测序”,关注我们,可获得更多实用内容返回搜狐,查看更多

责任编辑:

linux下的go富集分析,GO富集分析(R包GOseq)相关推荐

  1. Linux下使用Iptraf进行网络流量的分析

    Linux下使用Iptraf进行网络流量的分析 Posted on 2011/06/15 下面的教程我个人安装的时候,总是失败,在/usr/local/bin目录里没有iptraf这个文件,没有办法直 ...

  2. Linux下C/C++实现(网络流量分析-NTA)

    网络流量分析(NTA - Network Traffic Analysis) 就是捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议.流量.分析.统计等,协助发现网络运行过程中出现的问题. ...

  3. Linux下电骡aMule Kademlia网络构建分析2

    读代码读到现在,补充一点关于Kademlia网络的理论知识. Kademlia网络的基本原理 Kademlia 是一种结构化的覆盖网络(Structured Overlay Network).所谓覆盖 ...

  4. Linux下电骡aMule Kademlia网络构建分析3

    将本节点加入Kademlia网络 连接请求的发起 aMule在启动的时候,会起一些定时器,以便于定期的执行一些任务.其中比较重要的就是core_timer,相关code如下(amule-2.3.1/s ...

  5. Linux下电骡aMule Kademlia网络构建分析4

    aMule中联系人的管理 aMule中主要通过CContact,CRoutingBin和CRoutingZone这样几个类来管理它的联系人. CContact表示一个联系人,它包含了与一个联系人有关的 ...

  6. Linux下电骡aMule Kademlia网络构建分析5 —— 资源的发布

    资源发布请求消息的发送 在aMule中,主要用CSharedFileList class来管理共享给其它节点的文件.如我们前面在 Linux下电骡aMule Kademlia网络构建分析3 一文中分析 ...

  7. Microbiome:animalcules-交互式微生物组分析和可视化的R包

    animalcules-交互式微生物组分析和可视化的R包 animalcules: interactive microbiome analytics and visualization in R Mi ...

  8. LINUX下的tty,console与串口分析

    1.LINUX下TTY.CONSOLE.串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的? 2.printk函数是把信息发送到控制台上吧?如何让PRINTK把信息通过串口送出?或者 ...

  9. linux获取网卡协议地址,读取linux下的网络设备的mac地址与发送原始数据包 (2011-11-23 20:11)...

    一:linux下的网络设备 linux的网络设备信息都在/proc/net/dev,从这里我们可以得到所有网卡的名字,如eth0, eth1等等 root@dlrc-desktop:/home/dlr ...

最新文章

  1. 360金融携手上海交大共建AI实验室,开启人才战略新布局
  2. 动态规划系列---求数组中两个元素差的最大值
  3. docker 删除所有容器和镜像的命令
  4. linux 操作系统中的谷歌浏览器google chrome打不开怎么解决
  5. Ubuntu Linux 16.04 xfce下最漂亮的系统字体------文鼎粗钢笔楷体安装记录
  6. jpa配置映射包_JPA – Hibernate –包级别的类型映射
  7. 清除浮动塌陷的4种经典套路
  8. mybatis集成 c3p0数据源
  9. 管理感悟:绝不容忍有问题没行动
  10. 偶然的相遇【我与51CTO的故事】
  11. 汪文君Google Guava实战视频教程
  12. react录制mp3格式音频,输出二进制数据流向后台请求音频的url
  13. 问佛__如果浮躁了,静下来看看,慢慢体会下
  14. 漫画英语作文怎么写 计算机,漫画英文作文怎么写
  15. 可视化入门:从 0 到 1 开发一个图表库
  16. linux在防火墙上打开1521端口
  17. 英文小论文写作流程整理
  18. (function($){...})(jQuery)是什么意思
  19. 办公使用NAS服务器的作用,NAS存储服务器的作用有哪些?可以有哪些骚操作
  20. lat什么意思_lat是什么意思_lat怎么读_lat翻译_用法_发音_词组_同反义词_1940年前拉脱维亚的货币单位-新东方在线英语词典...

热门文章

  1. Spring之面向切面编程AOP(八)
  2. shui0418笔记
  3. DataGridView中某一行的某一列及当前行的选取方法(C#实现)
  4. 单点登录(SSO)、CAS介绍
  5. 2022年全球新冠病毒自我检测试剂盒行业调研及趋势分析报告
  6. 基于深度卷积神经网络(D-CNN)的图像去噪方法
  7. C语言写的一个简单的计算器
  8. 【C语言循环结构题】迭代法求平方根
  9. 【ML】Naive Bayes
  10. 微信小程序高度自适应布局