GDAS003-Bioconductor與基因組級數(shù)據(jù)分析簡介


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

在這個案例中,我們可以看到:

  1. OrganismDb是一個類(class)嘁扼;
  2. Homo.sapiensOrganismDb這個類的一個實例(instance)信粮;
  3. 某個類的所有方法都可以應(yīng)用到這個類的所有實例中去(methods(class=class(Homo.sapiens))就是查看這個類的方法);
  4. 每個方法的實現(xiàn)是通過R中的函數(shù)進(jìn)行的(我的理解就是趁啸,方法其實本質(zhì)上就是函數(shù))强缘。并且函數(shù)的運行依賴于它自身的參數(shù)。

其中需要特別注意的是juncture(交界區(qū))的方法不傅,即genes旅掂,exonstranscripts访娶,這三個方法輸出基因組基本組成成分的一些信息商虐。上面我們列出的所有方法都可以應(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)建報告的快照

image

在上面的表格中搂誉,一共有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)控的基因隨時間變化的過程繪制出來怕午。

plot of chunk lkycc2

需要注意:

  • 關(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)建它們测萎。

參考資料

  1. HarvardX Biomedical Data Science Open Online Training
  2. Bioconductor for genome-scale data -- quick intro
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市届巩,隨后出現(xiàn)的幾起案子硅瞧,更是在濱河造成了極大的恐慌,老刑警劉巖姆泻,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件零酪,死亡現(xiàn)場離奇詭異,居然都是意外死亡拇勃,警方通過查閱死者的電腦和手機四苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來方咆,“玉大人月腋,你說我怎么就攤上這事“曷福” “怎么了榆骚?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長煌集。 經(jīng)常有香客問我妓肢,道長,這世上最難降的妖魔是什么苫纤? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任碉钠,我火速辦了婚禮纲缓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喊废。我一直安慰自己祝高,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布污筷。 她就那樣靜靜地躺著工闺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓣蛀。 梳的紋絲不亂的頭發(fā)上陆蟆,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機與錄音揪惦,去河邊找鬼遍搞。 笑死,一個胖子當(dāng)著我的面吹牛器腋,可吹牛的內(nèi)容都是我干的溪猿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼纫塌,長吁一口氣:“原來是場噩夢啊……” “哼诊县!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起措左,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤依痊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怎披,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胸嘁,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年凉逛,在試婚紗的時候發(fā)現(xiàn)自己被綠了性宏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡状飞,死狀恐怖毫胜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诬辈,我是刑警寧澤酵使,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站焙糟,受9級特大地震影響口渔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜穿撮,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一缺脉、第九天 我趴在偏房一處隱蔽的房頂上張望瞧哟。 院中可真熱鬧,春花似錦枪向、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至傍衡,卻和暖如春深员,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛙埂。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工倦畅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绣的。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓叠赐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屡江。 傳聞我的和親對象是個殘疾皇子芭概,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容