Gene Ontology terms分析的二三事:常用、誤用、濫用的例子

 
當The Gene Ontology項目把生命科學中描述語句結構化之後,一切變得可以自動化處理,一夜之間有大量基於GO的分析工具出現。但其中有很多的誤用存在。最常見的錯誤在於不了解GO的特性和結構。
Donald Rumsfeld:『Reports that say that something hasn’t happened are always interesting to me, because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – the ones we don’t known we don’t known
在GO定義名詞時,在於不知道或是找不到相關生物資料上,企圖區分的很細緻,因為not knowning 和knowning that we dont known是不太一樣的。the lack of knowledge是代表lack of the data反之也可能是找不到相關資料。(可能是原本有實驗想證明,但最後失敗!)所以標記ND時代表在那時候已試圖從現有資料找尋,但無果。
ND: no biolofical data available .
基本上,在GO term中會以DAG的方式串起各個詞彙,而每個詞彙會有遞進關係的。
另外,在使用DAG diagram的時候,要注意標記是來於all, BP, MF, CC等,且對於其間的聯繫關係也須敘述清楚。
 
Negative annotations的使用
 
當某個基因本來被認為可能有某個功能,但最後發現沒有,就會用NOT,來標注,而有些工具沒有注意到這點。
 
在詮釋enrichment和p-value時,千萬不能只根據計算出有意義的enrichment就下結論,必須要對應在p-value下才會有意義,可以使用parametric的方法(hypergeometric, x2, fisher’s exact test), bootstrapping approach, functional class scoring approach.
 
one-sided versus two-sided testing
大多數工具只去評估enrichment而沒有去看depleted GO terms.比如在看癌細胞的時候,在apoptosis路徑上,本來就預估會有很多差異表現,但其實在那些特別少的表現的路徑也是有意義的。a strong under-representation of a biological process in a condition could mean that the normal functioning of that process may be necessary for that particular phenotype.只看enrichment就會看不到那些可能很crucial的GO term。
 
挑選的reference set很重要
 
“the reference set should only include the genes that were monitored in the experiment。”大多數軟件都把reference set的gene list以預設方式幫忙設定好,但這是非常危險的,基本上,reference gene list要是“exactly”指定好的!(reference gene set 和 background gene set是不同的!)
 
當我們針對每個GO term做廣泛性的檢定時,要小心multiple comparison
在使用GO 分析前,通常針對想了解的生物現象,可以有兩種問法來規劃分析方向,一種為奠基在特定假設上的(hypothesis-generating query), 比如 “到底在這些基因列表裡面,哪些GO term是有顯著意義的?”,另一種奠基在特定假設上的為hypothesis-drivene query, 比如“自體凋亡的代謝路徑是否在此實驗中有顯著意義?",但實際上,我們都是“貪婪的”,想要一次平行做很多個檢定,以尋求各種可能性,在量很大的時候,就要做針對解決multiple comparison所造成的偽陽性做矯正(correction), 最常用的correction有Bonferroni, FDR這兩種分法。
 
 
根據想了解的生物醫學問題來自訂GO term的結構,提高檢定的power
 
把所有的GO term不分level和可能性全部納入的話,常常會造成multiple correction,而會造成檢定的power不足,經過biological knowledge設計過的實驗,把想了解的問題限縮後,來把GO term客製化的劃分,其實是比較理想的,讓那先認為比較不參與的路徑放入到比較high level就好(可以用來interrogate GO),這樣可以提高檢定的power且降低multiple comparisom的問題。
  1. 將證據已比較有效率的方式分類
  2. 降低parrell 檢定的數量
  3. 聚焦在想了解的路徑上
 
 
Correlation between GO term
 
依據True Path Rule,假如某個基因相關的term有顯著,則其上的parent term基本上應該都要顯著,基本上可以有下面兩種選擇:
  1. A GO analysis with direct annotations only: for each term , Ti, consdier only the genes directly associated to that particular term=>  第一種方法算是比較嚴謹的方式,但常被詬病過於保守,容易錯過,因其很容易因為各de gene被分散,而造成不顯著
  2. A GO analysis with complete propagation: for each term, Ti, consider the gene directly associated to that particular term as well as all genes associated wih any of the descendants of Tis.=> 第二種方法就是相應而生的方式,但會造成容易有gene correlation的問題 (有些decorrelation GO term的方法)
 
下面有幾種演算法用來處理這種GO correlation的問題:
  1. elim: 由Alexa and Grossman發展,其使用bottom-up的方式,針對每個leaf term計算其p-value,假如這個gene在這層的term有顯著,則不在網上propogate
  2. weight:其邏輯是找出某個GO term最代表某個set of genes,他會去計算此term的enrichment score,再去跟child term做比較
  3. parent-child analysis:此方法考慮整體GO的結構,計算conditioning the probability of obsercing the given number of DE genes in a term t, on the event that a random set of the same size would overlap exactly as observed with the set of genes annotated with the parent of the term t.,其中有兩個變形,parent-child-union 和 parent-child-intersect

 

 
 
 
GO slim
  GO slim便是較客製化的go terms,其使用SLIM來降低parallel tests and also focuse the attention of the user to only what is relevatn in the given context, one improve s tht statistical power by reducing the number of parallel tests and also focuses tht attention of the user to only what is relevant in the given context.
 
GO subset
     其實也是類似GO slim,但相對於GO slim為獨立的文件,GO subset是GO term中的相對categories。
 
 
 
相關的GO-based tool
  • 2012 PANTHER – gee list analysis
  • 2013 GOrilla- a tool for identifying enriched GO term
  • 2015 A-DaGO-Fun
  • 2015 GO path

閱讀參考:
Statistics and Data Analysis for Microarrays Using R and Bioconductor, Second Edition

Rhee, S. Y., Wood, V., Dolinski, K., & Draghici, S. (2008). Use and misuse of the gene ontology annotations. Nature Reviews. Genetics, 9(7), 509–15. http://doi.org/10.1038/nrg2363

使用基因功能分類GO(Gene Ontology)分析(二):GO term的結構

GO term定義相當嚴謹,每個GO term間都存在一定的關係,可以使用DAG(Directed Acyclic Graph),即“有向無環”圖表示:

screenshot.png

某個圖中的一個圈圈就是一個GO term,也是一個節點(node),這些點的關係可以用parent和child來解釋,而整組網絡至少會有一個root,和leaf,在此圖來看,root就是A,而leaf為D, E, F,每一個點在網絡中的特性可以尤其所謂的depth 和 height表示,depth為這個節點距離root需要跨過幾個節點,而leaf則是這個節點到整個圖的最後一個時,要經過幾個節點。

另一個重點就是節點和節點的關係,有至少六種關係存在,分別是:regulates, negatively regulates, positively regulates, contribute to , colocalize with, not等等。

一個GO identifier由GO:nnnnnn組成,即GO字串加上七位數字,每個gene都有獨一無二的GO identifier, 但有多個形容此GO identified特性的GO term。

目前有需多使用GO來分析的網路工具UniGene, LocusLink(已不使用), Swiss-Prot, GeneMAPP, KEGG, PathDB. Reactome、DAVID。(遠不止這些…數繁不及備載)

使用基因功能分類GO(Gene Ontology)分析(一):簡介

Gene Ontology(GO) project主要是由The Gene Ontology Consortium所負責,從1998年開展自今,其重點就是將基因做系統性地注釋,不再只用gene的序列來描述,是用更豐富多元的方式來描述基因的性質,且由此計畫發展出許多針對特定物種的資料庫,簡單說,Gene Ontology的基因注釋分類,提供一套能系統性分析基因功能的工具。將每個基因的“屬性”用很結構性的方式儲存呈樹狀資料庫,既然是資料庫的形式儲存,其資料庫的schema設計其實是很仔細,有一套很縝密邏輯存在的。
screenshot.png

其主要的功能就是將每個基因提供三大方向的屬性分類:

  1. Cellular Component:此處的字串描述在細胞裡面組成的位置或是區域
  2. Biological Process:此處的字串用來描述特定生物內的現象,像是訊息傳遞、細胞發育等等
  3. Molecular Function:此處在分子層面上的現象,比如某個受體的催化等等

 

這樣一套系統其實是可以用來做很多用途的,其中當我們手上拿到上百個在特定狀況下表現的基因時,下一步其實就是放到這樣的系統裡來看整個生物體內發生了什麼狀態,就會用到GO所建立的一整套資料和邏輯。

GO的特性:

  1. 其十多年來,建立了一整套很完整的描述生物功能性質的字串,這些字串都是“machine readable”的,所以可以很scalable的提取和進行分析
  2. 其對於單一基因提供了多維和多角度(功能間的關係)的注釋
  3. 其設計為跨物種的,因為其重點是放在gene層面(當然有些特定基因只出現在特定物種)
  4. 除了樹狀的字串定應完整的生物內功能外,還有描述“基因和功能間”互動的關係