美文网首页🍊码农RNA-seq基因注释/富集分析与功能分类
171228 结合clusterProfiler理解GO富集分析

171228 结合clusterProfiler理解GO富集分析

作者: 琼脂糖 | 来源:发表于2017-12-28 11:42 被阅读2155次

    OrgDb库

    1. enrichGO默认gene type是entrezID,但其他OrgDb支持的类型(ENSEMBLE,SYMBOL等)都可以通过参数keyType指定。
    2. gene的ID type不一样,富集的结果也会有稍微的差异。
      原gene list是entrezID,直接通过bitr转换成ensembl和symbol,分别做enrichGO。
      发现entrezedID可能对应多个ENSEMBL的。
      entrezedID和SYMBOL是一一对应的
      image.png
      dim(gene.df[!duplicated(gene.df$ENSEMBL),])

    entrezedID 207
    ENSEMBL 239
    SYMBOL 207

    1)因为ensembl在库中多个ID会对应同一个entrez,因此四个数值都要大一些
    2)entrez和symbol 可能是因为是在db中是一一对应?,因此结果一模一样。
    3)Y叔建议尽量不用SYMBOL做enrichGO。


    entrez
    symbol
    ensemble
    1. bitr其实是使用AnnotationHub的select,将库中的不同类型GeneID重新转换。

    enrichGO

    1. universe:默认不指定,这样就直接使用orgDB的所有基因作为背景。
      如果指定,相当与将universe的基因集和orgDB的基因做交集,作为背景。(因为只有orgDB的基因有注释信息)
      需要和KeyType指定类型相同。
    2. minGSSize和maxGSSize:背景基因注释到某个GO的geneset需要在此范围内才会输出该GO的结果。
      默认范围(10,500)
      以下是默认参数(10,500):4个结果
      参数设为 (0,Inf):40个结果,仅截取部分


      image.png
    3. 阈值的选择
      背景注释到GO的geneset太小,会得到很小的p值,但结果可能不具参考性?
      背景注释到GO的geneset很大,一般p值也会增大。


      image.png

    GO&GOALL

    1. 查询Org.Hs.db的manual
      http://bioconductor.org/packages/release/data/annotation/manuals/org.Hs.eg.db/man/org.Hs.eg.db.pdf
    2. org.Hs.egGO
      entrezID和GOID是一对一对应的。不包含GO下属的其他节点的term
      org.Hs.egGO2ALLEGS
      一个GO和所有相关的entrez GENE(被注释到该GO或者它的child nodes),因此比前者的库要更大,包含更多信息

    分析过程

    orgDb select,将所有entrezID作为query,提取GOALL信息。

    1. CC分类全部Gene ID,即为背景注释到总体数。去重复(因为一个gene可能注释到多个CC类的term)
      cat Hs.db.GO|grep CC|sort -k1,1 -u|wc -l
    2. 某个GO类全部Gene ID,即为背景注释到该GO数(即成功数)
      gene可能有重复
      cat Hs.db.GO|awk '$2=="GO:0005575"{print $1,$2}'|sort -k1,1 -u|wc -l
    3. input genelist中能注释到CC类的数目。
      4.input genelist中每个基因能注释到的GO,并按照每个GO类对gene计数。input genelist里能注释到某个GO类的gene数目。
    4. 结果
    BgRatio : M/N GeneRatio:k/n
    M 背景所有能注释到某个GO的基因 k genelist中能注释到某个GO的基因
    N 背景所有能注释到CC的基因 n genelist中能注释到CC的基因

    CC结果中,n和N不变,M和k随不同的GO类不同。

    结果

    1. pvalue = phyper(k-1,M, N-M, n, lower.tail=FALSE)
    2. p.adj = p.adjust(pvalue, method="BH")
    3. qobj = qvalue(df$pvalue, lambda=0.05, pi0.method="bootstrap")
      qobj$qvalues

    enricher

    1. 用自己的注释信息来做富集分析。
    2. TERM2GENE: df,第一列是term ID(比如GO ID),第二列是mapped gene。
      TERM2NAME :df,第一列是term ID,第二列是相应term name。optional。
      这样背景基因和注释库都可以自己建立。


      image.png
    3. 其他参数同enrichGO。

    参考

    1. use clusterProfiler as an universal enrichment analysis tool
    2. GO analysis using clusterProfiler

    相关文章

      网友评论

      本文标题:171228 结合clusterProfiler理解GO富集分析

      本文链接:https://www.haomeiwen.com/subject/xujmgxtx.html