談?wù)劚倔w論
為什么需要本體論
作為一位大學(xué)統(tǒng)計(jì)棉花表皮毛的苦逼生物狗,深刻體會什么叫做經(jīng)驗(yàn),也就是人類模式識別能力的強(qiáng)大和不精確性。當(dāng)時(shí)的導(dǎo)師教我如何根據(jù)表皮毛的長短和濃密進(jìn)行基因型的判定,但是我一直糾結(jié)長和短,密和疏之間的分界。在讀研的時(shí)候,師姐會讓我提供基因Genomic序列,這來自于TAIR的定義,此外TAIR還定義了full length cDNA和full length CDS。我經(jīng)常糾結(jié)這些序列和我GFF里面的CDS,mRNA,gene的關(guān)系是什么?直到我把所有序列都拿出來,進(jìn)行多序列聯(lián)配才發(fā)現(xiàn)它們之間的差異。
計(jì)算機(jī)科學(xué)來自于多學(xué)科的交互,比如說數(shù)學(xué),語言學(xué),邏輯學(xué)等。為了保證互聯(lián)網(wǎng)的通信,代碼的復(fù)用,API的調(diào)用等,計(jì)算機(jī)協(xié)會制定了很多協(xié)議進(jìn)行標(biāo)準(zhǔn)化。比如說“意思意思”這句話在中文的語境千變?nèi)f化,但是在計(jì)算機(jī)里面可能就會翻譯成mean of mean。為了能讓計(jì)算機(jī)分析生物數(shù)據(jù),就要生物學(xué)的一些概念進(jìn)行精確定義,而不是“只可意會,不可言傳”
Karen在文章The Sequence Ontology: a tool for the unification of genome annotations就寫了這樣一段話:
Unfortunately, biological terminology is notoriously ambiguous; the same word is often used to describe more than one thing and there are many dialects. For example, does a coding sequence (CDS) contain the stop codon or is the stop codon part of the 3'-untranslated region (3' UTR)?
There really is no right or wrong answer to such questions, but consistency is crucial when attempting to compare annotations from different sources, or even when comparing annotations performed by the same group over an extended period of time.****
也就是說一致性比正確性更加重要,如果雙方各執(zhí)一見,對一個(gè)概念的定義模棱兩可,那么討論只會浪費(fèi)時(shí)間。這就是為什么我們需要建立統(tǒng)一的概念。
本體論是什么
本體論是概念化的詳細(xì)說明,一個(gè)ontology往往就是一個(gè)正式的詞匯表,其核心作用就在于定義某一領(lǐng)域或領(lǐng)域內(nèi)的專業(yè)詞匯以及他們之間的關(guān)系。這一系列的基本概念如同工程一座大廈的基石,為交流各方提供了一個(gè)統(tǒng)一的認(rèn)識。在這一系列概念的支持下,知識的搜索、積累和共享的效率將大大提高,真正意義上的知識重用和共享也成為可能
目前最常見的就是序列本體論(SO)和基因本體論(GO)。當(dāng)然還有許多其他的本體論,都列在http://www.obofoundry.org/. 可以去尋找和自己研究領(lǐng)域相關(guān)的本體論,比如說植物本體論(PO)用于定義植物基因組數(shù)據(jù)中的和解剖,形學(xué),生長發(fā)育相關(guān)的信息。
實(shí)際上,生信本質(zhì)依舊還是序列分析。序列分析比較關(guān)注兩個(gè)內(nèi)容:
- 這個(gè)DNA片段是什么?(注釋或分類)
- 這個(gè)DNA片段做什么?(功能分析)
de novo 基因組組裝就是要構(gòu)建原來的基因組,然后對上面的片段進(jìn)行注釋,判斷是蛋白質(zhì)還是非編碼蛋白。RNA-Seq就是想通過差異表達(dá)的轉(zhuǎn)錄本來解釋表型。RNA-Seq實(shí)驗(yàn)的理想結(jié)果就是找到DNA功能的機(jī)制以及如何產(chǎn)生觀察的表型。
序列本體論(Sequence Ontology)
所謂的序列本體論(SO),其實(shí)就是定義基因組不同區(qū)域的feature。 比如說可以從Sequence Ontology Browser尋找words的定義
例如搜索X_element_combinatorial_repeat就會得到它的定義,還有他的關(guān)系圖。
X element combinatorial repeat
An X element combinatorial repeat is a repeat region located between the X element and the telomere or adjacent Y' element.

PS: 不是所有序列數(shù)據(jù)都遵守SO,如CDS的定義。
如何查看SO數(shù)據(jù)
盡管在日常使用中并不需要接觸原始SO數(shù)據(jù),但是花點(diǎn)時(shí)間理解它是如何組織還是很有必要的
可以在 https://github.com/The-Sequence-Ontology/SO-Ontologies 尋找SO數(shù)據(jù)。
URL=https://raw.githubusercontent.com/The-Sequence-Ontology/SO-Ontologies/master/so-simple.obo
curl $URL > so.obo
# 了解有多少term
grep 'Term' so.obo | wc -l
# 快速查找SO
cat so.obo | grep 'PCR' -B 2 -A 2
當(dāng)你查看GFF文件的時(shí)候,如果好奇里面的mRNA, gene的定義就可以用grep進(jìn)行查找。
Gene Ontology
其實(shí)目前最完善的還是基因本體論,也就是GO。基因本體論(GO)是一個(gè)受控詞匯,用于將每個(gè)基因連接到一個(gè)或多個(gè)功能。
基因本體論用于分類基因產(chǎn)物,而非基因本身。因?yàn)橥粋€(gè)基因可以有不同產(chǎn)物,行使不同的功能。
GO必須知道的幾個(gè)概念
一: GO的組織結(jié)構(gòu)
要記住GO分為三類, CC(細(xì)胞組分), MF(分子功能)和BP(生物學(xué)過程)。分別回答了基因的產(chǎn)物在哪里發(fā)揮功能,如何發(fā)揮功能,以及為什么需要該產(chǎn)物這三個(gè)問題。
二: GO詞條的組織形式
GO本體被構(gòu)造為有向的非循環(huán)圖,其中每個(gè)術(shù)語定義了與同一域中的一個(gè)或多個(gè)其他術(shù)語的關(guān)系,并且有時(shí)與其他域有關(guān)。比如說Golgi Cisterna的GO詞條為(GO:0031985),在Quick GO的展示如下

三: GO數(shù)據(jù)的存儲格式
使用GO的時(shí)候一般需要GO定義文件和GO關(guān)聯(lián)文件。GO定義文件存放GO詞條的定義,而GO關(guān)聯(lián)文件則是不同命名體系與GO詞條的映射關(guān)系。
實(shí)際使用時(shí)并不需要獲取GO的原始數(shù)據(jù),但是能夠了解它儲存內(nèi)容的話有助于從多個(gè)角度理解生物學(xué)??梢詮?GO Download數(shù)據(jù)下載
curl -OL http://purl.obolibrary.org/obo/go.obo
GO詞義文件所包含的內(nèi)容如下:
[Term]
# 編號
id: GO:0000002
# 全稱
name: mitochondrial genome maintenance
# 命名空間,BP, CC OR MF
namespace: biological_process
# 定義
def: "The maintenance of the structure and integrity of
the mitochondrial genome; includes replication and
segregation of the mitochondrial chromosome." [GOC:ai, GOC:vw]
# 從屬關(guān)系
is_a: GO:0007005 ! mitochondrion organization
四: GO數(shù)據(jù)庫更新
由于研究的深入,GO的注釋數(shù)據(jù)庫會不斷地更新。而GO富集分析就和數(shù)據(jù)庫的大小有很大關(guān)系。注意了,當(dāng)公司給你富集分析結(jié)果時(shí),一定要注意他們所用的分析工具及其GO數(shù)據(jù)庫版本。
生信數(shù)據(jù)的功能分析
大部分人學(xué)習(xí)生物信息學(xué),其實(shí)就是為了對數(shù)據(jù)做出合理的解釋,都希望從生物角度獲得新的洞見。但是很尷尬,大家花了大部分時(shí)間用于收集數(shù)據(jù),卻對已有的數(shù)據(jù)的組織和分類及其短視。好像把數(shù)據(jù)丟到數(shù)據(jù)庫,問題就會自動解決一樣。
然而,組織已有的知識是一件非常吃力,但未必討好的工作。并且大家都指望別人能夠搞定這件事情,而不愿意自己動手。于是就導(dǎo)致了”公地悲劇“。一些組織和公司就從中看到了商機(jī),京都基因和基因組百科全書(KEGG)改變授權(quán),對大批量數(shù)據(jù)檢索收費(fèi),商業(yè)公司構(gòu)建了專門的數(shù)據(jù)庫進(jìn)行出售。
因此,商業(yè)就是最大的善。它讓資源得到合理地配置,讓數(shù)據(jù)變得更有價(jià)值,而不是一堆paper。也讓科學(xué)家們意識上,不合理存放已有數(shù)據(jù)會有多大的代價(jià)。
接下來,讓我們聊一塊錢的富集分析,其實(shí)應(yīng)該說通路分析(pathway analysis),更好聽的說法是功能分析(functional analysis)。也就是當(dāng)你得到一堆基因或者蛋白后,最常用的方法。目前有三類算法:

功能分析的算法演化
推薦先去閱讀Ten Years of Pathway Analysis: Current Approaches and Outstanding Challenges
第一代:Over-Representation Analysis
ORA翻譯成中文就是過表征分析,其實(shí)就想看看某類功能或分類和隨機(jī)事件相比是否有更明顯的趨勢。這就好比經(jīng)典統(tǒng)計(jì)學(xué)中的白球和黑球的抽樣問題,如果黑箱中的白球比黑球多,體現(xiàn)在抽樣上就是白球會比黑球更容易被抽到。
ORA分析需要你提供4類輸入,
- 一共有多少個(gè)基因,也就是背景
- 屬于某分類的基因有多少個(gè)
- 樣本一共有多少個(gè)基因
- 樣本屬于某分類的有多少個(gè)基因
之后通過超幾何分布或2X2獨(dú)立表進(jìn)行檢驗(yàn)
ORA是公司標(biāo)準(zhǔn)化流程中必備的一步,因?yàn)檫@個(gè)方法最簡單,當(dāng)然出現(xiàn)的也足夠早。大家總是不太愿意去嘗試新鮮事物,不是嗎?但是ORA其實(shí)是存在很多問題,
- ORA沒有考慮到基因的表達(dá)水平,僅僅關(guān)注基因是否屬于分類
- ORA僅僅使用部分?jǐn)?shù)據(jù),存在主觀臆斷
- 基因和功能被認(rèn)為是相互獨(dú)立。這只是一種統(tǒng)計(jì)學(xué)假設(shè)而已,實(shí)際情況下并非如此。
但是既然ORA還是目前最常用的方法, 我們還是要盡可能保證這個(gè)方法的結(jié)果是可靠的。比如說符合如下要求:
- 公司的結(jié)題報(bào)告中用于富集分析的數(shù)據(jù)庫與時(shí)俱進(jìn),
- 公司的結(jié)題報(bào)告中用于富集分析的數(shù)據(jù)庫一定與時(shí)俱進(jìn),
- 公司的結(jié)題報(bào)告中用于富集分析的數(shù)據(jù)庫必須與時(shí)俱進(jìn),
畢竟2016年,Nature Methods 專門寫了Impact of outdated gene annotations on pathway enrichment analysis 吐槽大家還在用老舊的DAVID。
第二代:Functional Class Scoring (FCS)
由于ORA方法存在很多弊端,于是就出現(xiàn)了FCS算法。它的基本假設(shè)是:雖然單個(gè)基因的巨大改變會對通路有顯著性印象,但是那些功能相關(guān)的類似微效基因累加后也能有顯著效果。換句話說,英雄人物可以在某種程度上改變歷史進(jìn)程,但是人民群眾的力量也是不容小覷。
實(shí)現(xiàn)FCS方法需要三步:
第一步: 通過實(shí)驗(yàn)計(jì)算出單個(gè)基因的基因水平(gene-level)的統(tǒng)計(jì)值,比如說基因差異表達(dá)衡量會用到的ANOVA,Q-statistic, 信噪比, t-test, Z-score等。
第二步: 同一條通路上所有基因的基因水平(gene-level)統(tǒng)計(jì)值聚合成單個(gè)通路水平(pathway-level)的統(tǒng)計(jì)值。可選方法有,Kolmogorov-Smirnov statistic [21,29],基因水平統(tǒng)計(jì)值的和, 均值或中位數(shù), Wilcoxon rank sum, maxmean statistic。
第三步:評估通路水平統(tǒng)計(jì)顯著性。這一步所需要的統(tǒng)計(jì)學(xué)思想是重抽樣(bootstrap)。也就是對于一個(gè)特定通路而言,隨機(jī)排序和按照一定規(guī)則排序是否有差異。
雖然FCS已經(jīng)比ORA有很大提升了,但實(shí)際上依舊有不足。第一,它是單獨(dú)分析每個(gè)通路,而不是多通路組合分析。第二,F(xiàn)CS也只將基因表達(dá)的差異用做給定通路的排序而已。比如說A和B的表達(dá)量分別改變了2倍和20倍,但是對于不同的通路而言,A和B的排名就有可能相同。
第三代: Pathway Topology (PT)-Based Approaches
為了克服第二代方法, 于是有了第三代基于通路拓?fù)鋵W(xué)的方法。但是這類方法需要用到給定通路互作的信息,而目前相關(guān)的數(shù)據(jù)庫不夠,于是這個(gè)方法只是美妙的設(shè)想
富集分析的工具
biostar hanbook里面提到的所有的工具我都不推薦,你也不需要浪費(fèi)時(shí)間去看了。只要知道clusterProfiler就行了,它支持ORA和FCS兩類算法。函數(shù)為
- enrichGO, gseGO: GO富集分析
- enrichKEGG, gseKEGG: KEGG富集分析
- enrichDAVID: DAVID富集分析
劃重點(diǎn): clusterProfiler的KEGG數(shù)據(jù)庫與時(shí)俱進(jìn)。
這個(gè)工具目前唯一的問題就是知道的人還不夠。以及大家習(xí)慣用網(wǎng)頁工具,對代碼的無名恐懼,以至于不敢去嘗試。還有大家用軟件非常害怕去讀文檔。