title: GDAS003-Bioconductor與基因組級數(shù)據(jù)分析簡介
date: 2019-09-03 12:0:00
type: "tags"
tags:
- Bioconductor
categories: - Genomics Data Analysis Series
前言
本篇筆記主要是介紹了Bioconductor與基因組級數(shù)據(jù)分析的關(guān)系。
R語言幅骄,R包與倉庫(repositories)
學(xué)習(xí)這一系列課程的前提是你已經(jīng)有了一定的R語言基因寞埠。并且我們推薦使用RStudio作為R語言的使用環(huán)境。如果你跳過前面的1x-4x部分梢灭,直接進(jìn)入5x,可以先參考一下其它的R語言教程,例如 Try R 哪工。
Why R?
Bioconductor的基礎(chǔ)就是R斋攀。使用R有3個原因:
- 許多統(tǒng)計學(xué)家與生物統(tǒng)計學(xué)家使用R語言已卷,并且他們使用R語言設(shè)計了許多算法可以幫助我們理解復(fù)雜的實驗數(shù)據(jù)。
- R語言有著高度的互操作性(interoperable)淳蔼,促進(jìn)了使用其它語言編寫軟件組件的重用侧蘸。
- R可移植到在各種計算機上的操作系統(tǒng)里(Linux、MacOSX鹉梨、Windows)讳癌,初學(xué)者可以使用這些平臺中的任一個來學(xué)習(xí)。
總之存皂,R的易用性和在統(tǒng)計學(xué)和“數(shù)據(jù)科學(xué)”中扮演著核心角色晌坤,因此當(dāng)生物學(xué)家和統(tǒng)計學(xué)家面對基因組級的實驗數(shù)據(jù)時,選擇R作為處理工具就是自然而然的事情了旦袋。Bioconductor項目開始于2001年骤菠,自那以后,它就與基因組級生物學(xué)中不斷增長的數(shù)據(jù)量和復(fù)雜性保持著同步疤孕。
函數(shù)式面向?qū)ο蟪绦蛟O(shè)計
R語言是一種混合了函數(shù)式編程與面向?qū)ο蟮幕旌闲驼Z言商乎。
在R中進(jìn)行函數(shù)式編程時,如下所示:
square = function(x) x^2
上面就是一個典型的函數(shù)式編程祭阀。我們定義了一個函數(shù)square()
鹉戚,它會計算輸入的數(shù)據(jù)字的平方,即^2
专控,例如當(dāng)我們輸入3時抹凳,結(jié)果就是在R中,所有的計算都是通過函數(shù)進(jìn)行的踩官。
在進(jìn)行面向?qū)ο蟮木幊虝r却桶,我們所關(guān)注的生就是構(gòu)建數(shù)據(jù)結(jié)構(gòu),定義能夠操作這些結(jié)構(gòu)化數(shù)據(jù)的方法。這是一種接近于人正常思維的編程思想颖系。最早出現(xiàn)在20世紀(jì)90年代⌒崞剩現(xiàn)在我們以Bioconductor中的一個案例說明一下:
library(Homo.sapiens)
class(Homo.sapiens)
methods(class=class(Homo.sapiens))
結(jié)果如下所示:
> library(Homo.sapiens)
> class(Homo.sapiens)
[1] "OrganismDb"
attr(,"package")
[1] "OrganismDbi"
> methods(class=class(Homo.sapiens))
[1] asBED asGFF cds cdsBy
[5] coerce<- columns dbconn dbfile
[9] disjointExons distance exons exonsBy
[13] extractUpstreamSeqs fiveUTRsByTranscript genes getTxDbIfAvailable
[17] intronsByTranscript isActiveSeq isActiveSeq<- keys
[21] keytypes mapIds mapToTranscripts metadata
[25] microRNAs promoters resources select
[29] selectByRanges selectRangesById seqinfo show
[33] taxonomyId threeUTRsByTranscript transcripts transcriptsBy
[37] tRNAs TxDb TxDb<-
see '?methods' for accessing help and source code
在這個案例中,我們可以看到:
-
OrganismDb
是一個類(class
)嘁扼; -
Homo.sapiens
是OrganismDb
這個類的一個實例(instance)信粮; - 某個類的所有方法都可以應(yīng)用到這個類的所有實例中去(
methods(class=class(Homo.sapiens))
就是查看這個類的方法); - 每個方法的實現(xiàn)是通過R中的函數(shù)進(jìn)行的(我的理解就是趁啸,方法其實本質(zhì)上就是函數(shù))强缘。并且函數(shù)的運行依賴于它自身的參數(shù)。
其中需要特別注意的是juncture(交界區(qū))的方法不傅,即genes
旅掂,exons
,transcripts
访娶,這三個方法輸出基因組基本組成成分的一些信息商虐。上面我們列出的所有方法都可以應(yīng)用于OrganismDb
類定義的一些實例,也就是一些模式生物崖疤,例如小鼠(Mus musculus)秘车,酒釀酵母(S. cerevisiae)和秀麗隱桿線蟲(C. elegans)。
R包劫哼,模塊化與持續(xù)集成(Continuous* *Integration)
這一部分在閱讀的時候可以跳過叮趴。
R包的結(jié)構(gòu)
我們可以通過編寫R代碼來用R執(zhí)行面向?qū)ο蟮暮瘮?shù)式編程。一種基本的方法就是創(chuàng)建“腳本”权烧,用于定義數(shù)據(jù)的導(dǎo)入和分析的基本流程眯亦。當(dāng)腳本以僅定義函數(shù)和數(shù)據(jù)結(jié)構(gòu)的方式編寫時,我們就可以將這些腳本打包般码,從而方便地發(fā)布搔驼,供其他有類似數(shù)據(jù)處理問題的用戶使用。
R軟件的打包協(xié)議規(guī)定了如何將R和其他語言的源代碼與元數(shù)據(jù)以及文檔一起組織起來侈询,以促進(jìn)簡便的測試和發(fā)布的流程。例如糯耍,它義些文檔的包的早期版本具有如下的目錄和文件布局:
├── DESCRIPTION (文本文件扔字,用于說明提供的元數(shù)據(jù),授權(quán)信息)
├── NAMESPACE (定義輸入與輸出)
├── R (文件夾温技,包含了一些R代碼)
├── README.md (可選革为,Github上的說明內(nèi)容)
├── data (文件夾,含有示例數(shù)據(jù))
├── man (文件夾舵鳞,包的詳細(xì)文檔)
├── tests (文件夾震檩,正式軟件測試代碼)
└── vignettes (文件夾,含有高質(zhì)量的文檔)
├── biocOv1.Rmd
├── biocOv1.html
打包協(xié)議文檔“Writing R Extensions”提供了完整的詳細(xì)信息。使用R命令 R CMD build [foldername]
將對程度包文件夾的內(nèi)容進(jìn)行打包抛虏,從而創(chuàng)建可使用R CMD install[archivename]
添加到R安裝的文件博其。不過現(xiàn)在都使用R Studio來完成這些任務(wù)。
模塊化與包的相互依賴
打包協(xié)議可以幫助我們隔離執(zhí)行有限操作集的軟件迂猴,并識別隨時間固有變化的程序集合的版本慕淡。沒有客觀的方法來確定一組操作是否適合打包。一些非常有用的包僅執(zhí)行少量任務(wù)沸毁,而其他包則具有非常廣泛的應(yīng)用范圍峰髓。重要的是打包的概念允許軟件的模塊化。這在兩個方面很重要:范圍和時間息尺。范圍的模塊化對于允許并行獨立開發(fā)解決不同問題的軟件工具非常重要携兵。時間上的模塊化對于識別行為穩(wěn)定的軟件版本是很重要的。
持續(xù)集成:測試包的正確性和互操作性
下列的圖片就是開發(fā)Bioconductor分支的一個構(gòu)建報告的快照:
在上面的表格中搂誉,一共有6列徐紧,其中最后1列標(biāo)明了“Installed Pkgs”,其中2000表示用于Linux平臺勒葱,這個數(shù)據(jù)在不同平臺之間有所不同浪汪,并且通常會伴隨著開發(fā)分支的時間而增加。
匯總
Bioconductor的核心開發(fā)者小組致力于開發(fā)數(shù)據(jù)結(jié)構(gòu)凛虽,使用戶能夠方便地處理基因組和基因組規(guī)模的數(shù)據(jù)死遭。用于設(shè)計的結(jié)構(gòu)是為了支持基因組規(guī)模生物學(xué)實驗的主要目標(biāo):
- 解析由微陣列或測序儀產(chǎn)生的大規(guī)模數(shù)據(jù)集。
- 對(相對)原始數(shù)據(jù)進(jìn)行預(yù)處理凯旋,以支持可靠的統(tǒng)計解釋呀潭。
- 將分析量化與樣本信息數(shù)據(jù)進(jìn)行結(jié)合,用于檢驗分子過程和生物體水平特征(例如生長至非、疾病狀態(tài))之間關(guān)系的假設(shè)钠署。
- 在本課程里,我們將回顧你可以在自己的研究中用于執(zhí)行這些相關(guān)任務(wù)的無明和功能荒椭。
5x的基因前提和概述
你知道如何使用R來操作和分析數(shù)據(jù)后谐鼎,并且還對統(tǒng)計建模有不錯的理解后。Bioconductor項目就會證明趣惠,在進(jìn)行基因組級規(guī)模的計算生物操作時(但非所有)狸棍,R是一個有效的工具。
將Bioconductor與處理基因組數(shù)據(jù)的其它軟件系統(tǒng)的不同之處在于:
- 使用面向?qū)ο蟮脑O(shè)計理解統(tǒng)一了基因組實驗中出現(xiàn)的不同數(shù)據(jù)類型味悄;
- 致力于基因組注釋的可互操作結(jié)構(gòu)草戈,從核苷酸到人口規(guī)模;
- 發(fā)布和開發(fā)周期的持續(xù)集成原則侍瑟,在多個廣泛使用的計算平臺上進(jìn)行日常測試唐片。我們這個為期四周的模塊化學(xué)習(xí)目標(biāo)旨在針對基因組規(guī)模數(shù)據(jù)分析的方方面面建立起對該系統(tǒng)使用的專業(yè)能力丙猬。
525.5x課程主要為了四個主要部分,每部分花費一周時間來學(xué)習(xí)费韭,內(nèi)容如下:
- 動機和技術(shù):我們?yōu)槭裁匆獧z測茧球,以及如何檢測數(shù)據(jù),以及我們?nèi)绾问褂肦語言來管理數(shù)據(jù)揽思。
- 基因組注釋:尤其是要注意基因組坐標(biāo)中的區(qū)間(ranges袜腥,有的譯為“范圍”)在識別基因組結(jié)構(gòu)方面的作用。
- 基因組級數(shù)據(jù)的預(yù)處理概念钉汗,重要如何通過Bioconductor來實現(xiàn)羹令。
- 使用Bioconductor來做基因組級數(shù)據(jù)的假設(shè)檢驗。
Some of the fundamental concepts that distinguish Bioconductor from other software systems addressing genome-scale data are
本章的不同小節(jié)將簡要描述一下這些概念损痰,以及說明如何進(jìn)行計算福侈。
動機與技術(shù)
“What we measure and why”這個視頻(這個視頻位于Youtube上)給出了基本生物過程的示意圖,我們可以通過計算來研究這些過程卢未。我們注意到肪凛,對有機體的生命過程至關(guān)重要的所有蛋白質(zhì)的編碼序列都位于有機體的基因組DNA中。研究生物體之間的差異辽社, 以及生物體內(nèi)的某些變化(例如腫瘤的發(fā)展)伟墙,通常涉及基因組DNA序列的計算。
Bioconductor提供了處理許多生物體基因組DNA序列的工具滴铅。一種處理序列的基本方法計算就是給定一個“參考序列”戳葵,然后我們計算另外一條序列與參考序列之間的差異。
參考序列的獲取
使用Bioconductor很容易處理人類(Homo sapiens)的參考序列『撼祝現(xiàn)在我們來看一下17號染色體拱烁,如下所示:
library(BSgenome.Hsapiens.UCSC.hg19)
Hsapiens$chr17
## 81195210-letter "DNAString" instance
## seq: AAGCTTCTCACCCTGTTCCTGCATAGATAATTGC...GGTGTGGGTGTGGTGTGTGGGTGTGGGTGTGGT
我們注意到:
- 我們通過了一個R包來提供了序列。
- 包的名稱表明了這個是來源于UCSC的參考基因組hg19噩翠。
- 我們使用美元符號
$
提取了染色體的序列戏自。
表示DNA突變體
與參考序列有單個偏離的標(biāo)準(zhǔn)表示方法就是使用VCF格式的文件( Variant Call Format)。VariantAnnotation
包就含有這樣一個案例伤锚。我們有兩個某些DNA突變體的兩個高質(zhì)量表示方法(high-level representations)擅笔,即VCF內(nèi)容中的摘要,以及突變體本身在基因組上的地址屯援,如下所示:
fl <- system.file("extdata", "ex2.vcf", package="VariantAnnotation")
vcf <- readVcf(fl, "hg19")
vcf
## class: CollapsedVCF
## dim: 5 3
## rowRanges(vcf):
## GRanges with 5 metadata columns: paramRangeID, REF, ALT, QUAL, FILTER
## info(vcf):
## DataFrame with 6 columns: NS, DP, AF, AA, DB, H2
## info(header(vcf)):
## Number Type Description
## NS 1 Integer Number of Samples With Data
## DP 1 Integer Total Depth
## AF A Float Allele Frequency
## AA 1 String Ancestral Allele
## DB 0 Flag dbSNP membership, build 129
## H2 0 Flag HapMap2 membership
## geno(vcf):
## SimpleList of length 4: GT, GQ, DP, HQ
## geno(header(vcf)):
## Number Type Description
## GT 1 String Genotype
## GQ 1 Integer Genotype Quality
## DP 1 Integer Read Depth
## HQ 2 Integer Haplotype Quality
rowRanges(vcf)
## GRanges object with 5 ranges and 5 metadata columns:
## seqnames ranges strand | paramRangeID
## <Rle> <IRanges> <Rle> | <factor>
## rs6054257 20 [ 14370, 14370] * | <NA>
## 20:17330_T/A 20 [ 17330, 17330] * | <NA>
## rs6040355 20 [1110696, 1110696] * | <NA>
## 20:1230237_T/. 20 [1230237, 1230237] * | <NA>
## microsat1 20 [1234567, 1234569] * | <NA>
## REF ALT QUAL FILTER
## <DNAStringSet> <DNAStringSetList> <numeric> <character>
## rs6054257 G A 29 PASS
## 20:17330_T/A T A 3 q10
## rs6040355 A G,T 67 PASS
## 20:1230237_T/. T 47 PASS
## microsat1 GTC G,GTCT 50 PASS
## -------
## seqinfo: 1 sequence from hg19 genome
我們需要注意:
- 演示中的數(shù)據(jù)已經(jīng)包含在了包中剂娄,它僅用于說明和測試
- 變量
vcf
向用戶簡潔地展示了信息 - 使用
rowRanges
函數(shù)提取了突變體在hg19基因組中的位置,并與標(biāo)簽一同顯示
檢測基因表達(dá)
我們將以觀察模式生物釀酒酵母(Sacchomyces Cerevisiae)中基因表達(dá)的檢測數(shù)值來結(jié)束這一部分的討論⌒海現(xiàn)在我們來看一個實驗,這個實驗檢測了釀酒酵母生殖周期中一系列時間點上的全基因組mRNA豐度和二。我們會使用R包來管理這些數(shù)據(jù)徘铝,并且我們使用特殊的Bioconductor定義 的數(shù)據(jù)結(jié)構(gòu)來訪問有關(guān)的實驗和結(jié)果信息,如下所示:
library(yeastCC)
data(spYCCES)
spYCCES
## ExpressionSet (storageMode: lockedEnvironment)
## assayData: 6178 features, 77 samples
## element names: exprs
## protocolData: none
## phenoData
## sampleNames: cln3_40 cln3_30 ... elu_390 (77 total)
## varLabels: syncmeth time
## varMetadata: labelDescription
## featureData: none
## experimentData: use 'experimentData(object)'
## pubMedIds: 9843569
## Annotation:
experimentData(spYCCES)
## Experiment data
## Experimenter name: Spellman PT
## Laboratory: Department of Genetics, Stanford University Medical Center, Stanford, California 94306-5120, USA.
## Contact information:
## Title: Comprehensive identification of cell cycle-regulated genes of the yeast Saccharomyces cerevisiae by microarray hybridization.
## URL:
## PMIDs: 9843569
##
## Abstract: A 150 word abstract is available. Use 'abstract' method.
經(jīng)過一段時間的學(xué)習(xí),你就會在接下來的幾周內(nèi)成為這方面的高手惕它,你可以將整個細(xì)胞周期中參與調(diào)控的基因隨時間變化的過程繪制出來怕午。
需要注意:
- 關(guān)于實驗的元數(shù)據(jù)已經(jīng)綁定到R包的數(shù)據(jù)中(通過
experimentData
可以可看PubmedID和摘要); - 我們使用簡單的語法就能選擇這些復(fù)雜實驗設(shè)計中的信息淹魄;在這個案例中郁惜,我們使用
spYCCES[, spYCCES$syncmeth=="alpha"]
就能提取出控制alpha pheromone的基因; - R的繪圖工具支持通用的繪圖注釋與增強功能 (plot annotation and enhancemetn)甲锡;
- 統(tǒng)計模型工具能夠直接幫我們區(qū)分周期與非周期的基因兆蕉。
結(jié)束語
你即將學(xué)習(xí)一些關(guān)于基因組結(jié)構(gòu)和檢測它們的分子生物學(xué)技術(shù)的高水平講座。當(dāng)你遇到這些概念時缤沦,請你記住那些與理解結(jié)構(gòu)以及數(shù)據(jù)處理過程相關(guān)的計算思路與方法虎韵。在Bioconductor中找到相應(yīng)的計算工具,并熟練掌握這些工具缸废。如果你找不到它們包蓝,請通知我們,或者是如果滿足某些需求的工具不存在企量,你也可以選擇構(gòu)建它們测萎。