ClusterProfiler包實現生物信息學數據聚類分析

一、概述

ClusterProfiler是一個R包,主要用於功能富集分析的結果的可視化和解釋。它基於R語言的GOstats和ggplot2包,支持多種物種和GO分支的注釋和富集分析,同時提供了多個圖表來直觀展示結果。

二、基本功能

ClusterProfiler包提供了豐富的功能來支持富集分析,下面列舉一些常用的基本功能:

1. 富集分析

利用clusterProfiler包,可以快速地進行富集分析,根據用戶提供的基因列表,對其進行生物學上的意義分析,並判斷某個生物學過程是否在該基因集中高度富集。下面是一個簡單示例:


library(clusterProfiler)

geneList <- c("ENSG00000149127", "ENSG00000136884", "ENSG00000143322", "ENSG00000000003", "ENSG00000141160")
data(geneList, package="DOSE")
ego <- enrichGO(geneList = geneList,
  OrgDb = org.Hs.eg.db,
  ont = "BP",
  pvalueCutoff = 0.05,
  qvalueCutoff = 0.05)

barplot(ego, showCategory=10, title="GO enrichment")

這段代碼會對一個基因集進行生物學意義分析,並得出這些基因集中與特定生物過程相關的通路。富集分析結果可以使用barplotdotplot等進行可視化展示。

2. 數據聚類

利用ClusterProfiler包內置函數clusterProfiler()可以方便地實現數據聚類分析,該函數提供了多達13種不同生物注釋數據庫,包括 GO, KEGG, Reactome, BioCarta 等。下面是一個簡單的數據聚類的示例:


library(clusterProfiler)

data(geneList)
ego <- enrichGO(geneList,
  OrgDb = org.Hs.eg.db,
  ont = "BP",
  pvalueCutoff = 0.05,
  qvalueCutoff = 0.05)
plotGOgraph(ego, nodeSize=10)

上述代碼實現了對geneList進行注釋與富集分析,並生成了一個GO圖形化展示。通過觀察這個圖,可以看出哪些生物過程(GO term)在geneList中高度富集。

三、高級功能

除了基本功能之外,ClusterProfiler包還提供了許多高級功能,能夠更進一步地發掘生物學意義,下面列舉一些高級功能:

1. 顯示分形結構

ClusterProfiler包提供了多種展示聚類結果的圖表,其中ggplot()最為常用,可以畫出漂亮的結果圖。此外,神經網絡圖也非常有用,可以顯示出聚類結果的分形結構,以便查看不同層次的聚類相關信息。下面是一個示例功能:


library(clusterProfiler)

data(geneList)
ego <- enrichGO(geneList, OrgDb = org.Hs.eg.db, ont = "BP")
head(geneList)

geneSets <- colorValue(
  names(ego),
  ggColors(n = length(names(ego))),
  as.factor(substring(names(ego), 1, 2))
)
head(geneSets)

sunburstR(geneList, fun="enrichKEGG", pvalueCutoff=0.05, qvalueCutoff=0.05, 
         organism="hsa", minGSSize=1, maxGSSize=500,
         pAdjustMethod="BH", showCategory=4, fontSize=4, ggtheme=theme_minimal())

這段代碼會使用絡椮網絡圖展示富集分析的結果。在這個圖中,每個節點代表一個富集分析中的GO term,連接節點的邊代表GO term之間的相似性關係,節點的顏色表示GO term所屬的高層、較寬的生物進程。

2. 模塊可視化

ClusterProfiler包還提供了一個mdsplot()函數,可以用於模塊可視化分析。該函數可以繪製2個樣品之間的距離矩陣,並進行聚類分析,以便比較它們之間的相似性和差異性,並可以利用ggplot等函數對結果進行可視化展示。下面是一個示例:


library(clusterProfiler)

data(geneList, package="DOSE")
data(geneList, package="DOSE")

ego <- enrichGO(geneList, OrgDb = org.Hs.eg.db, ont = "BP")
geneSets <- colorValue(names(ego), ggColors(n=length(names(ego))),as.factor(substring(names(ego),1,1)))

e <- enricher(gene = geneList,
                TERM2GENE = homo.sapiens.db,
                pvalueCutoff = 0.01,
                qvalueCutoff = 0.01,
                ont = "CC",
                onlyEnriched = T)
c_e <- setReadable(cbind(e@result$ID, e@result$Description), org.Hs.egSYMBOL)
ec <- enrichCluster(c_e[,1], pvalueCutoff=0.01, qvalueCutoff=0.05)

mdsplot(ec, showCategory=TRUE, pointSize=6, legendPosition="left", nTop=100)

這段代碼會對輸入數據進行聚類分析,並將聚類結果可視化展示。如果輸入的數據中包含多種展示信息,可以使用不同的顏色來表示,以便更好地區分樣本種類。

3. 模塊比較分析

ClusterProfiler包還提供了一個比較分析功能,比如可以比較2個聚類結果,檢索它們之間的差異。下面是一個示例:


library(clusterProfiler)

data(geneList, package="DOSE")
data(geneList, package="DOSE")

ego <- enrichGO(geneList, OrgDb = org.Hs.eg.db, ont = "BP")
geneSets <- colorValue(names(ego), ggColors(n=length(names(ego))),as.factor(substring(names(ego),1,1)))

e <- enricher(gene = geneList,
                TERM2GENE = homo.sapiens.db,
                pvalueCutoff = 0.01,
                qvalueCutoff = 0.01,
                ont = "CC",
                onlyEnriched = T)
c_e <- setReadable(cbind(e@result$ID, e@result$Description), org.Hs.egSYMBOL)
ec <- enrichCluster(c_e[,1], pvalueCutoff=0.01,qvalueCutoff=0.05)

mc <- compareCluster(ec, goTermSets = geneSets, fun="enrichKEGG", printBy="Term", organism="hsa")
dotplot(mc)

在這個示例中,比較了2個不同樣本之間的聚類結果,並使用dotplot()函數,用柱狀圖表示差異。

四、總結

ClusterProfiler包提供了豐富的功能和工具來進行富集分析,數據聚類分析和模塊可視化分析等生物信息學數據分析任務。它方便實用,支持多種生物學注釋數據庫,可以幫助生物信息學家實現快速,準確的生物學意義分析。

原創文章,作者:LTBBV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/368018.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LTBBV的頭像LTBBV
上一篇 2025-04-02 01:28
下一篇 2025-04-02 01:28

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29

發表回復

登錄後才能評論