clusterProfiler使用心得(1)

date: 2017.10.18
author: Jinwen
前言 大家都在诟病DAVID而推荐R包clusterProfiler,所以我也跟风……
clusterProfiler依赖于Bioconductor,如果没有安装过Bioconductor系列包,那么首次安装将会经历漫长的安装过程——还是由于网络墙太厚,本来仅仅几Mb的文件可能跟你耗着。所以安装失败的同学需要注意往前滚动查看文件是否完全下载~
关键参数 如果有兴趣可以好好研究研究clusterProfiler的实例介绍,内容非常详实。这里只是使用过程中的一点儿心得。
GO功能富集分析文中称为GO over-representation test,whatever~然后函数是enrichGO,参数还是有点儿多的,看几个关键的吧:

  • OrgDb
    这个参数是关键,也就是物种相关的数据文件,以org.XX.eg.db形式呈现。通过Bioconductor进行下载,但是到底是哪些物种我从文档中没有看到查询方式~
  • gene
    默认是EntrezID。传入你的基因id,这个ID到底是什么呢,可以是Ensembl ID,也可以是Symbol,或者其他。请查看keytype
  • universe
    默认是EntrezID。传入进行统计计算的全局基因集合,当然可以使用默认的集合
  • keytype
    设置gene以及universe等参数传入的ID类型, 可以通过keytypes(org.XX.eg.db)查看该物种包含了哪些关键字,例如Symbol或Ensembl ID; 另外对ID转换可以用函数bitr
  • readable
    该参数是将ID转化为Symbol,具体是怎么回事儿我也莫琢磨。但当你的输入本来就是Symbol,然后还是设置readable= TRUE,那么将会报错'names' attribute [2] must be the same length as attribute [1]
关于GO level的讨论 当你富集到的GO term过多,那么可以用dropGOgofilter过滤,但这种过滤是以GO level来定义的,也就是只保留某一个level的。
实际上level的划分是不太合理的,就如biostar所讨论的。我们都知道GO实际上是一个树形的结构(有向无环图),包含多个分支,每个分支的层数都不一样,每个GO term可能还被多个分支共享;所以每个GO term并不能简单地通过level(也就是层数)来定义。如果以level来过滤将会损失很多的信息~
所以,一干人等开发了各种衡量GO term相似性的方法,可以参考R包GOSemSim。
另外,clusterProfiler也提供了相应的函数simplify对GO term进行去冗余,输入就是enrichGO的结果。
尾声 【clusterProfiler使用心得(1)】虽然作者文档非常清晰,但是由于太懒太笨,还是花了不少时间去尝试~

    推荐阅读