rGREAT | 基因組區(qū)間功能富集

背景

??GREAT(Genomic Regions Enrichment of Annotations Tool)是一種廣泛使用的基因組區(qū)域功能富集工具,該工具于2010年由斯坦福大學(xué)開發(fā)。然而,作為在線工具,其存在注釋數(shù)據(jù)過時、支持的物種和功能基因集數(shù)量少以及用戶不可擴展等局限性。因此,有人就開發(fā)了一個本地實現(xiàn)GREAT算法的R包rGREAT,其默認(rèn)支持600多個物種和大量的功能基因集,同時也支持用戶自備基因集和物種基因組。此外,該包還實現(xiàn)了處理背景區(qū)域的通用方法。

??基因組學(xué)和表觀組學(xué)研究通常會生成許多感興趣的基因組區(qū)域列表,例如來自全基因組或外顯子組測序數(shù)據(jù)的單核苷酸變異(SNV)、ChIP-seq 的特定染色質(zhì)修飾的peak或基因組甲基化測序的差異甲基化區(qū)域 (DMR)。下一步的分析自然是將生物學(xué)功能與這些基因組區(qū)域聯(lián)系起來。一種廣泛使用的方法是首先將基因組區(qū)域注釋到最近的基因,然后針對特定功能的基因集做富集分析。

??GREAT在做基因組區(qū)域富集時,考慮了基因在基因組上的位置分布與長度,采用了不同的策略,如上圖所示。對于給定功能基因集中的基因,首先,將基因的TSS上下游分別延伸5kb和1kb來建立一個基礎(chǔ)結(jié)構(gòu)域;然后,將基礎(chǔ)結(jié)構(gòu)域的上下游再繼續(xù)延申至最大1mb,或者到達(dá)它鄰近基因的基礎(chǔ)結(jié)構(gòu)域,如此每個基因相當(dāng)于被轉(zhuǎn)化成了一個區(qū)間;最后,將這些轉(zhuǎn)化的區(qū)間進行合并形成一個沒有overlap的區(qū)間集,相當(dāng)于將特定生物學(xué)功能相關(guān)的基因集轉(zhuǎn)化為了“功能區(qū)間集”,然后使用二項分布來計算輸入?yún)^(qū)域集是否在功能區(qū)間集中富集。

分析

  1. 使用R包里基因集和注釋數(shù)據(jù)
    ??一般常見物種如人、小鼠等,在R里面都可以找到相應(yīng)基因注釋數(shù)據(jù)庫,如TxDb.Hsapiens.UCSC.hg38.knownGene。功能基因集也可直接使用R數(shù)據(jù)包里面的集合,如GO.db、msigdbr,使用格式為GO:BP、GO:CC、GO:MPmsigdb:H等。
library(rGREAT)
library(ChIPseeker)

peak <- readPeakFile('GSM1233959_peaks.narrowPeak')
res <- great(peak, "GO:BP", "txdb:hg38")
tab <- getEnrichmentTable(res)
head(tab)
          id                                              description
1 GO:1904464          regulation of matrix metallopeptidase secretion
2 GO:1904465 negative regulation of matrix metallopeptidase secretion
3 GO:1990773                        matrix metallopeptidase secretion
4 GO:0043615                                 astrocyte cell migration
5 GO:2000405                  negative regulation of T cell migration
6 GO:2000321  positive regulation of T-helper 17 cell differentiation
  genome_fraction observed_region_hits fold_enrichment p_value p_adjust
1    0.0002162107                   73        5.103134       0        0
2    0.0002162107                   73        5.103134       0        0
3    0.0002162107                   73        5.103134       0        0
4    0.0001482271                   50        5.098400       0        0
5    0.0004188049                  136        4.908158       0        0
6    0.0002992001                   95        4.799027       0        0
  mean_tss_dist observed_gene_hits gene_set_size fold_enrichment_hyper
1         73676                  5             5              1.307880
2         73676                  5             5              1.307880
3         73676                  5             5              1.307880
4         38163                  4             5              1.046304
5         79190                  6             6              1.307880
6         35132                  9             9              1.307880
  p_value_hyper p_adjust_hyper
1    0.26128140      0.5159287
2    0.26128140      0.5159287
3    0.26128140      0.5159287
4    0.66357982      0.8754404
5    0.19976279      0.4453912
6    0.08926921      0.2738572
  1. 手動提供基因集或注釋數(shù)據(jù)
    ??如果想提供自定的功能基因集或者在R里面沒有現(xiàn)成的注釋數(shù)據(jù)包可用時,可使用此方法:
gs <- read_gmt(url("http://dsigdb.tanlab.org/Downloads/D2_LINCS.gmt"))

df <- read.table(url("https://jokergoo.github.io/rGREAT_suppl/data/GREATv4.genes.hg19.tsv"))
tss <- GRanges(seqnames = df[, 2], ranges = IRanges(df[, 3], df[, 3]), strand = df[, 4], gene_id = df[, 5])
head(tss)
GRanges object with 6 ranges and 1 metadata column:
       seqnames    ranges strand |     gene_id
          <Rle> <IRanges>  <Rle> | <character>
   [1]     chr1     69090      + |       OR4F5
   [2]     chr1    367639      + |      OR4F29
   [3]     chr1    622053      - |      OR4F16
   [4]     chr1    861117      + |      SAMD11
   [5]     chr1    894670      - |       NOC2L
   [6]     chr1    895966      + |      KLHL17

tss_ext <- extendTSS(tss, gene_id_type = "SYMBOL")
res <- great(gr, gs, tss)
tab <-  getEnrichmentTable(res)
  1. 設(shè)定背景集
    ??對于背景的設(shè)定,rGREAt提供了兩種模式,分別由backgroundexclude兩個參數(shù)來控制設(shè)定最終的背景集,前者可以直接設(shè)定需要的背景集,而后者是從當(dāng)前使用的背景集中排除一些不想考慮的區(qū)間,即exclude參數(shù)需要配合tss_source參數(shù)來使用。
    ??當(dāng)然,無論使用哪一種方法都可以重新定義背景集,這從上面的原理圖也可以直觀地看到,這意味著富集的結(jié)果將會受到影響。所以,當(dāng)不知道如何設(shè)定合適的背景集時,默認(rèn)的參數(shù)就是最好的選擇。
gap <- getGapFromUCSC("hg38", paste0("chr", c(1:22, "X", "Y")))
# 直接設(shè)定背景集
res1 <- great(peak, "GO:BP", background = paste0("chr", 1:22))
# 去除背景集里面的gap區(qū)域
res2 <- great(peak, "MSigDB:H", "hg38", exclude = gap)

結(jié)束語

??目前對于基因組區(qū)間做富集的軟件,大多都是先基于線性距離將區(qū)間注釋到基因,然后利用超幾何分布來做富集檢驗,這個原理的前提假設(shè)是每個基因獨立且被選取到的概率相同。而GREAT則采用不同的方式,直接從基因組區(qū)間層面來考慮,則前提假設(shè)就是基因組區(qū)間均勻分布在基因組上。然而,由于長度的不同,基因在基因組上并不符合均勻分布。所以,從基因組區(qū)間到基因的轉(zhuǎn)換會導(dǎo)致基因不會以相等的概率被挑選出來。例如,當(dāng)所有區(qū)間都遠(yuǎn)離一個基因時,該基因被挑選的可能性就會很低;然而,當(dāng)一個基因附近有一組區(qū)間時,它就更有可能被挑選出來;當(dāng)基因長度較長時,也更有可能被挑選出來。因而,GREAT采用先將基因轉(zhuǎn)換為特定的區(qū)間,然后使用二項分布來做富集檢驗。
??友情提示:version1.6.0及之前本版是基于在線網(wǎng)站做的分析,不僅基因組本版受限,也不支持自定義背景集。如果想使用rGREAT,可以安裝最新版本來使用。從上面的示例可以看出,用rGREAT來做富集還是挺簡單的,且不僅有二項分布的檢驗結(jié)果,也保留了超幾何分布的檢驗結(jié)果。雖然GREAT的最初目標(biāo)是將生物學(xué)功能與順式調(diào)控元件相關(guān)聯(lián),例如轉(zhuǎn)錄因子結(jié)合位點(TFBS),但是它的算法允許其擴展到任何類型的基因組區(qū)間。一句話形容,great!


往期回顧

利用UCSC預(yù)測啟動子序列可能結(jié)合的轉(zhuǎn)錄因子
Vision | scRNA細(xì)胞相似性 + 差異signature
HiC | contacts vs distance
hdWGCNA | 單細(xì)胞數(shù)據(jù)共表達(dá)網(wǎng)絡(luò)分析
bed基因注釋

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容