<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          GO、GSEA富集分析一網(wǎng)打進

          共 1391字,需瀏覽 3分鐘

           ·

          2020-04-26 23:21



          GO、KEGG、GSEA富集分析,已經(jīng)注釋好的數(shù)據(jù),自己注釋的數(shù)據(jù),都在這里

          NGS系列文章包括NGS基礎(chǔ)、轉(zhuǎn)錄組分析?Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這、ChIP-seq分析?ChIP-seq基本分析流程單細胞測序分析?(重磅綜述:三萬字長文讀懂單細胞RNA測序分析的最佳實踐教程 (原理、代碼和評述))、DNA甲基化分析、重測序分析、GEO數(shù)據(jù)挖掘典型醫(yī)學設(shè)計實驗GEO數(shù)據(jù)分析 (step-by-step) - Limma差異分析、火山圖、功能富集等內(nèi)容。



          富集分析是生物信息分析中快速了解目標基因或目標區(qū)域功能傾向性的最重要方法之一。其中代表性的計算方式有兩種:

          一是基于篩選的差異基因,采用超幾何檢驗判斷上調(diào)或下調(diào)基因在哪些GO或KEGG或其它定義的通路富集。假設(shè)背景基因數(shù)目為m,背景基因中某一通路pathway中注釋的基因有n個;上調(diào)基因有k個,上調(diào)基因中落于通路pathway的數(shù)目為l。簡單來講就是比較l/k是否顯著高于n/m,即上調(diào)基因中落在通路pathway的比例是否高于背景基因在這一通路的比例。(實際計算時,是算的odds ratio的差異,l/(k-l) vs (n-l)/(m-k-n+l))。這就是常說的GO富集分析或KEGG富集分析,可以做的工具很多,GOEAST是其中一個最好用的在線功能富集分析工具,數(shù)據(jù)庫更新實時,操作簡單,并且可以直接用之前介紹的方法繪制DotPlot

          另一種方式是不硬篩選差異基因,而是對其根據(jù)表達量或與表型的相關(guān)度排序,然后判斷對應(yīng)的基因集是否傾向于落在有序列表的頂部或底部,從而判斷基因集合對表型差異的影響和篩選有影響的基因子集。這叫GSEA富集分析,注釋信息可以是GO,KEGG,也可以是其它任何符合格式的信息。GSEA富集分析 - 界面操作詳細講述了GSEA分析的原理、可視化操作和結(jié)果解讀 (一文掌握GSEA,超詳細教程)。

          R包clusterProfiler囊括了前面提到的兩種富集分析方法。并且不只支持GO、KEGG數(shù)據(jù)庫,還支持Disease Ontology、MsEH enrichment analysis、Reactome通路分析等。具體可見軟件的文檔頁 https://guangchuangyu.github.io/clusterProfiler/。

          這么強大的工具,學習起來的路子卻不是一帆風順,最開始的攔路虎是軟件的安裝,系統(tǒng)較老配合上軟件包更新較快(作者勤快也是問題),導致經(jīng)常安裝的是舊版本,用起來會遇到不少坑。直到有了conda,安裝再也不是問題。解決了動態(tài)庫依賴后,可以在Github安裝最新的開發(fā)版本。

          另外一個是文檔較少,在R終端,直接使用help命令查看到的使用提示信息較少,寥寥幾句,看過總覺得不踏實。~在線文檔頁內(nèi)容少、更新慢。這是最開始學習時遇到的問題,這次秉著負責的精神,又重新讀了文檔頁,發(fā)覺不需要再寫一遍了,內(nèi)容挺全的,但有幾個地方需要更新下。自己對著文檔頁核對了下之前寫的程序,再補充幾點。

          GO富集分析

          首先還是列一個完整的例子。輸入最好是用ENTREZ ID,值比較固定,不建議使用GeneSymbol,容易匹配出問題 (Excel改變了你的基因名,30% 相關(guān)Nature文章受影響,NCBI也受波及)。

          entrezID_text <- "4312
          8318
          10874
          55143
          55388
          991
          6280
          2305
          9493
          1062
          3868
          4605
          9833
          9133
          6279
          10403
          8685
          597
          7153
          23397"


          entrezID <- read.table(text=entrezID_text, header=F)
          head(entrezID)
          V1 ? ? ? ? ? ?
          1 ? ?4312 ? ? ? ? ? ?
          2 ? ?8318 ? ? ? ? ? ?
          3 ? ?10874 ? ? ? ? ? ?
          4 ? ?55143 ? ? ? ? ? ?
          5 ? ?55388 ? ? ? ? ? ?
          6 ? ?991

          轉(zhuǎn)換為向量

          entrezID <- entrezID$V1
          head(entrezID)
          [1] 4312 8318 10874 55143 55388 991
          # 這里的ENTREZ ID是從clusterProfiler里面提取是,是人的,

          # 所以用了人的注釋庫, org.Hs.eg.db# 這個庫半年左右更新一次,也有可能漏更新,還是自己準備數(shù)據(jù)的靠譜

          library(org.Hs.eg.db)

          開始富集分析

          # readable=T: 原文檔無這個參數(shù),使用的是setReadble函數(shù)
          MF <- enrichGO(entrezID, "org.Hs.eg.db", ont = "MF", keytype = "ENTREZID",
          ? ? ? ? ?pAdjustMethod = "BH", pvalueCutoff ?= 0.05,
          ? ? ? ? ?qvalueCutoff ?= 0.1, readable=T)
          head(summary(MF))

          4f9ae9befa5ddc99c14fe5ae83e39d3a.webp

          去除冗余度高的條目?

          (參考http://guangchuangyu.github.io/2015/10/use-simplify-to-remove-redundancy-of-enriched-go-terms/)

          result <- simplify(MF, cutoff=0.7, by="p.adjust", select_fun=min)

          # 去除前
          dim(MF)
          # [1] 367 9

          # 去除后
          dim(result)
          [1] 142 9

          繪制泡泡圖 (這里還有一個可以直接在線繪制泡泡圖的網(wǎng)站:http://www.ehbio.com/ImageGP/)

          dotplot(result, showCategory = 10)

          繪制網(wǎng)絡(luò)圖 (邊的寬度代表兩個富集的Term共有的基因數(shù)目,點大小代表條目內(nèi)基因數(shù)目多少,顏色代表P-value,值越小越紅;如果想改變網(wǎng)絡(luò)布局,參考igraph文檔)

          enrichMap(result, vertex.label.cex=1.2, layout=igraph::layout.kamada.kawai)

          另外一種網(wǎng)絡(luò)圖由cnetplot函數(shù)獲得,可以映射基因的表達量。

          # geneList為一個vector,每個元素的名字為基因名,值為FoldChange,用于可視化點。
          # > str(geneList)
          # Named num [1:12495] 4.57 4.51 4.42 4.14 3.88 ... - attr(*, "names")= chr [1:12495] "4312" "8318" "10874" "55143" ...

          # 這個geneList怎么獲得的,會在后面的GSEA分析時提到
          cnetplot(result, foldChange=geneList)

          自己嘗試了下,展示的有些亂,需要調(diào)整字體和顯示的條目多少。故盜圖展示如下便于解釋,基因與其被注釋的條目連線,點的顏色代表表達變化,圈的大小代表對應(yīng)注釋內(nèi)基因數(shù)目多少。

          6f61ac9d809011253c300a1793fbb239.webp如果想自己調(diào)整圖的布局,還是建議把輸出結(jié)果轉(zhuǎn)換為Cytoscape(點擊查看視頻教程)可以識別的兩列表格形式(如下),再賦值不同的屬性就可以了。

          awk 'BEGIN{OFS=FS="\t"}{if(FNR==1) print "Gene\tTerm"; else {split($8,geneL,"/"); for(i in geneL) print geneL[i],$2}}' MF | head
          Gene ? ?Term
          PRDX6 ? ?cell adhesion molecule binding
          MFGE8 ? ?cell adhesion molecule binding
          FSCN1 ? ?cell adhesion molecule binding
          ATXN2L ? ?cell adhesion molecule binding
          YWHAZ ? ?cell adhesion molecule binding
          CTNNA2 ? ?cell adhesion molecule binding
          ADAM15 ? ?cell adhesion molecule binding
          LDHA ? ?cell adhesion molecule binding
          PKM ? ?cell adhesion molecule binding

          KEGG富集分析

          輸入Gene ID的格式和類型與enrichGO一致。參考

          http://guangchuangyu.github.io/2015/02/kegg-enrichment-analysis-with-latest-online-data-using-clusterprofiler/。

          # clusterProfiler3.4.4版本是沒有readable參數(shù)的,原文檔有
          kk <- enrichKEGG(entrezID, organism="hsa", pvalueCutoff=0.05, pAdjustMethod="BH",
          ? ? ? ? ? ? ? ? qvalueCutoff=0.1)

          輸出結(jié)果的格式和可視化方式與上面GO富集一致,不再贅述。

          另外一個沒有解決的問題是setReadable函數(shù)的使用 (用測試文檔提供的數(shù)據(jù)集報出如下錯誤)

          setReadable(kk, "org.Hs.eg.db")
          Error in EXTID2NAME(OrgDb, genes, keytype) : keytype is not supported...

          # 即便是如下操作也沒有作用

          a = bitr_kegg(names(geneList), fromType = 'ncbi-geneid', toType="kegg", organism="hsa")
          # Warning message:
          # In bitr_kegg(names(geneList), fromType = "ncbi-geneid", toType = "kegg", ?:
          # ?0.77% of input gene IDs are fail to map...

          kk <- enrichKEGG(a$kegg, organism="hsa", keyType="kegg", pvalueCutoff=0.05, pAdjustMethod="BH",
          ? ? ? ? ? ? ? ? ?qvalueCutoff=0.1)

          setReadable(kk, org.Hs.eg.db, key)

          # ?Error in EXTID2NAME(OrgDb, genes, keytype) : keytype is not supported...

          經(jīng)過多次嘗試發(fā)現(xiàn),可以這么解決

          setReadable(kk, ?org.Hs.eg.db, keytype="ENTREZID")

          為什么會有這個問題呢?setReadable中自動判斷keytype的語句是

          if (keytype == "auto") {
          ? ?keytype <- x@keytype
          ? ?if (keytype == "UNKNOWN") {
          ? ? ? ?stop("can't determine keytype automatically; need to set 'keytype' explicitly...")
          ? ? ? ?}
          }

          根據(jù)富集結(jié)果中定義的keytype,也就是enrichKEGG函數(shù)中設(shè)定的keyType的值來定的。而setReadable不支持默認的keyType=kegg。

          沒有測試小鼠,可能需要設(shè)置不同的keytype值。

          另外對擬南芥來說,分析之前需要先把Entrez ID轉(zhuǎn)換為kegg再用上述命令做富集分析

          entrezID <- bitr_kegg(entrezID, fromType='ncbi-geneid', toType='kegg', organism="ath")
          kk <- enrichKEGG(entrezID$kegg, organism="ath", pvalueCutoff=0.05, pAdjustMethod="BH",
          ? ? ? ? ? ? ? ? qvalueCutoff=0.1)
          # 這個setreadble是可以轉(zhuǎn)換成功的
          result <- setReadable(kk, "org.At.tair.db", keytype="TAIR")

          GSEA分析

          GSEA的解釋和介紹見GSEA富集分析 - 界面操作。

          注意讀入的基因列表是要按照表達差異降序排列 (升序也可以,相當于樣品做了對調(diào))。這里排序方式可以是表達差異,也可以是其它方式,只要方便解釋即可,即從上到下,或從前到后,基因?qū)Ρ硇偷呢暙I有一致的變化趨勢就好。不同的排序參數(shù)和排序方式需要不同的對結(jié)果的解釋。

          id_with_fc = "ID;FC
          4312;2
          8318;3
          10874;4
          55143;5
          55388;6
          991;7"


          id_with_fc <- read.table(text=id_with_fc, header=T, sep=";")

          id_with_fc2 <- id_with_fc[,2]
          names(id_with_fc2) <- id_with_fc[,1]

          # 排序是必須的,記住排序方式
          id_with_fc2 <- sort(id_with_fc2, decreasing=T)

          gsecc <- gseGO(geneList=id_with_fc2, ont="CC", OrgDb=org.Hs.eg.db, verbose=F)

          # 昨天測試了其它數(shù)據(jù),參數(shù)無問題。這里沒有實際運行,盜用數(shù)據(jù),每列的解釋見本段開頭的文章
          head(as.data.frame(gsecc))

          ## ? ? ? ? ? ? ? ? ? ?ID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Description setSize
          ## GO:0031982 GO:0031982 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?vesicle ? ?2880
          ## GO:0031988 GO:0031988 ? ? ? ? ? ? ? ? membrane-bounded vesicle ? ?2791
          ## GO:0005576 GO:0005576 ? ? ? ? ? ? ? ? ? ? extracellular region ? ?3296
          ## GO:0065010 GO:0065010 extracellular membrane-bounded organelle ? ?2220
          ## GO:0070062 GO:0070062 ? ? ? ? ? ? ? ? ? ?extracellular exosome ? ?2220
          ## GO:0044421 GO:0044421 ? ? ? ? ? ? ? ?extracellular region part ? ?2941
          ## ? ? ? ? ? ?enrichmentScore ? ? ? NES ? ? ?pvalue ? p.adjust ? ?qvalues
          ## GO:0031982 ? ? ?-0.2561837 -1.222689 0.001002004 0.03721229 0.02816364
          ## GO:0031988 ? ? ?-0.2572169 -1.226003 0.001007049 0.03721229 0.02816364
          ## GO:0005576 ? ? ?-0.2746489 -1.312485 0.001009082 0.03721229 0.02816364
          ## GO:0065010 ? ? ?-0.2570342 -1.222048 0.001013171 0.03721229 0.02816364
          ## GO:0070062 ? ? ?-0.2570342 -1.222048 0.001013171 0.03721229 0.02816364
          ## GO:0044421 ? ? ?-0.2744658 -1.310299 0.001014199 0.03721229 0.02816364

          # 繪制GSEA圖
          gseaplot(gsecc, geneSetID="GO:0000779")

          自定義數(shù)據(jù)集分析

          如果想用clusterProfiler的函數(shù)對自己注釋的數(shù)據(jù)進行功能富集分析或GSEA分析,需要提供如下格式的注釋數(shù)據(jù)。后續(xù)分析就類似了。

          self_anno <- "ont;gene
          KEGG_GLYCOLYSIS_GLUCONEOGENESIS;gene1
          KEGG_GLYCOLYSIS_GLUCONEOGENESIS;gene2
          KEGG_GLYCOLYSIS_GLUCONEOGENESIS;gene3
          KEGG_GLYCOLYSIS;gene1
          KEGG_GLYCOLYSIS;gene4
          KEGG_CYP;gene5"


          self_anno <- read.table(text=self_anno, header=T, sep=";", quote="")

          # 沒具體看代碼怎么寫的,保險期間,設(shè)置跟示例一樣的列名字
          colnames(self_anno) <- c("ont", "gene")

          geneL <- c("gene1", "gene2", "gene4")

          # self_enrich與之前enrichGO的輸出結(jié)果格式一致
          self_enrich <- enricher(geneL, TERM2GENE=self_anno)

          # self_gsea與之前gseGO的輸出結(jié)果格式一致
          self_gsea <- GSEA(geneL, TERM2GENE=self_anno, verbose=F)

          Reference

          1. https://guangchuangyu.github.io/clusterProfiler/

          2. http://guangchuangyu.github.io/2016/01/go-analysis-using-clusterprofiler/

          3. http://igraph.org/c/doc/igraph-Layout.html


          你可能還想看


          往期精品(點擊圖片直達文字對應(yīng)教程)

          f97d03f6c2574f607636746efe54e434.webp

          3bb4b15a880f0d726b57af6d2cae89f6.webp

          a81dbe5e7f7c8810fcadd715f3137fba.webp

          18fb29637415112a4b74958ec2fc1ebc.webp

          d98602927313233b39e5520aab1e3e0f.webp

          ec84f535b55fc3c117cd33644da5e015.webp

          815ceb983408c3e5fa33090a025463c4.webp

          52843843f39e8fb5772c3cfe3677b45c.webp

          becdcd2452a99310e74d7406e6cd884f.webp

          ee86e65ebef47348b01ec270b2453b2f.webp

          a2746bcece7d2bcd88a86a0e2a6d94b8.webp

          7d74dcd2f1700b4014ffb99ccc1d20bb.webp

          9077b4f3b73e23f8acba9c68892bd681.webp

          c94845950f547a581f9ae1b215b39df3.webp

          feccf19b0a63e2d033d28449b5591a51.webp

          297d61753eb31829af5cb0b4e8a5b588.webp

          c6128cf9c1d4845530a6569de2974c91.webp

          cfe7785ffbd58408b32bdac9ef5ec673.webp

          266404aa0de873230b8c5362564ad3fc.webp

          d5e71636613ba33a1c3a22a11cdd83ff.webp

          22a1604a86277f2aa1a1c7bb4bd9a5bb.webp

          4061e289e59fdab1c4218508c618a90a.webp

          eccf9626c1252753b38486844c234c71.webp

          afe95f8793550cbb8a242230d0fb2086.webp

          5322e5c67451fca8c53d455efd807fbf.webp

          3c6179f4662105fe126102350a60caf1.webp

          ca6afd2cf5b3994d6372798a7ea96f46.webp

          2fee4bc67bd53f679281fa292b61e255.webp


          后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集

          6979ca3a4ee04c70c6c499e9012e9d89.webp


          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本无码成人片在线播放 | 国产——内射 | av天天看 | 国产精品久久久久久爽爽爽麻豆色哟哟 | 欧美综合社区 |