菜??日記-轉錄組edgeR分析差異基因及案例演示

菜??的第一次正式上手R,相當于翻譯了 edgeR 這個包的 UserGuide,跑了第一個 case
眼看寫了這么多字,還是發一下比較好,萬一有人看呢

edgeR簡介

edgeR 可以應用于任何可產生基因組特征數據(read counts)的技術,能夠為 RNA-seq 實驗中評估差異表達、ChIP-seq 實驗中差異標記提供統計程序。該R包具備適用于多組實驗的精準統計法,同時還具備廣義線性模型(glms)的統計學方法——適用于不同復雜程度的多因素實驗。有時人們將前者稱為 classic edgeR,將后者稱為 glm edgeR。然而上述兩種方法是互補的,并且時常在數據分析中被結合使用。大多數 glm 函數可以通過函數名稱中的 "glm" 識別,這類函數可利用似然比檢驗或擬似然F檢驗檢測差異表達。edgeR 的功能的一個重要特點是,不論 classic 和 glm 兩種方法,都屬于經驗貝葉斯方法,從而能夠在實驗只具有最小水平的生物學重復時,依然能夠判斷出基因特異的生物學差異。edgeR 可應用于不同水平的差異表達,如基因、外顯子、轉錄本、標簽等,分析外顯子水平時可輕易地檢測出可變剪切或異構體特異性差異表達。

案例分析

RNA-seq —— 口腔腫瘤 vs 對應的正常組織 (RNA-Seq of oral carcinomas vs matched normal)

分析的目的是檢測腫瘤和正常組織對比下差異表達的基因,這個案例可以體現 edgeR 中 GLM 法的工作能力。

1.edgeR 安裝
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("edgeR")
2.數據讀取

下載文章 Tumor Transcriptome Sequencing Reveals Allelic Expression Imbalances Associated with Copy Number Alterations 中的 Table S1。

  • 去除多余列項、重命名列名

    > rawdata <- read.delim("TableS1.txt", check.names=FALSE, stringsAsFactors=FALSE)
    
    > rawdata <- rawdata[,c(1:9)]
    
    > names(rawdata)[1:9]<-c("RefSeqID","Symbol","NbrOfExons","8N","8T","33N","33T","51N","51T")
    

    這里不小心把表格的一二行的行數弄沒了,后面需要注意數字

    結果到DEGList這一步時出現報錯“The count matrix is a data.frame instead of a matrix and the first 6 columns are non-numeric.” 用了as.matrix()后表格里所有內容又都變成了factor...??

    **所以,最后還是直接在excel表格里解決了行名??
    更新:其實這個很好解決,然這是第一次正式,沒錯“正式”,用R....

  • 加載edgeR, 用DEGList構建列表

    > library(edgeR) Loading 
    > y <- DGEList(counts=rawdata[,4:9], genes=rawdata[,1:3]) 
    
3.注釋
  • 篩選轉錄本

    這篇文章發表已經是幾年前了,數據中一些 RefSeq ID 可能和現在一般使用的 RefSeq ID 有出入,所以只需要保留org.HS.eg.db中有的、具有 NCBI 注釋的那部分轉錄本。

    > library(org.Hs.eg.db) 
    > idfound <- y$genes$RefSeqID %in% mappedRkeys(org.Hs.egREFSEQ) 
    > y <- y[idfound,] 
    > dim(y) 
    

    可以看出有15548個基因

  • 將 Entrez Gene ID 加入注釋

    > egREFSEQ <- toTable(org.Hs.egREFSEQ) 
    > head(egREFSEQ) 
    
    > m <- match(y$genes$RefSeqID, egREFSEQ$accession) 
    > y$genes$EntrezGene <- egREFSEQ$gene_id[m] 
    
  • 利用 Entrez Gene ID 更新 gene symbol

    > egSYMBOL <- toTable(org.Hs.egSYMBOL) 
    > head(egSYMBOL) 
    
    > m <- match(y$genes$EntrezGene, egSYMBOL$gene_id) 
    > y$genes$Symbol <- egSYMBOL$symbol[m] 
    
5.篩選及歸一化 (Normalization)
  • 篩選出 count 數最多的轉錄本

    每個 gene symbol 保留一個轉錄本

    > o <- order(rowSums(y$counts), decreasing=TRUE) > y <- y[o,] 
    > d <- duplicated(y$genes$Symbol) 
    > y <- y[!d,] 
    > nrow(y) 
    
  • 重新計算文庫大小

    > y$samples$lib.size <- colSums(y$counts) 
    
  • 將 Use Entrez Gene ID 設為行名

    > rownames(y$counts) <- rownames(y$genes) <- y$genes$EntrezGene 
    > y$genes$EntrezGene <- NULL 
    
  • TMM歸一化 (trimmed mean of M-values normalization)

    > y <- calcNormFactors(y) 
    > y$samples 
    
6.數據挖掘 (Data Exploration)
  • 利用plotMDS繪制MDS (Multidimensional scaling) 圖

    首先應該分析樣本的離群值和其他關系,函數plotMDS能夠生成樣本之間距離與生物差異系數 (biological coefficient of variation, BCV) 相對應的圖表。

    > plotMDS(y) 
    

    圖中橫坐標將腫瘤樣本和正常樣本區分開來(左T右N),縱坐標則大致對應了患者編碼,這些應證了樣本的配對特性??梢钥闯瞿[瘤樣本的分布比正常樣本更不均勻。

7.設計矩陣
  • 檢測差異表達

    在擬合負二項 GLM 之前,需要根據實驗設計優化設計矩陣。接下來需要在同一患者的腫瘤和正常組織樣本中檢測差異表達,即調整患者之間的差異。統計學意義上,這是把患者作為區組因子的一種可加線性模型。

    > Patient <- factor(c(8,8,33,33,51,51)) 
    > Tissue <- factor(c("N","T","N","T","N","T")) 
    > data.frame(Sample=colnames(y),Patient,Tissue)
    
    > design <- model.matrix(~Patient+Tissue) 
    > rownames(design) <- colnames(y)
    > design
    

    這種可加模型適用于成對設計或具批次效應 (batch effect) 的實驗。

8.估計數據分布
  • 估計數據組的負二項分布

    > y <- estimateDisp(y, design, robust=TRUE) 
    > y$common.dispersion 
    

    公共離散值 (common dispersion) 的平方根,即生物差異 (biological variation) 的差異系數 (coefficient of variation),為0.4。

    > plotBCV(y) 
    
9.差異表達
  • 擬合基因層面 GLM

    > fit <- glmFit(y, design) 
    
  • 腫瘤樣本 vs 正常組織,做似然比檢驗,列出差異最為顯著的基因

    > lrt <- glmLRT(fit) 
    > topTags(lrt) 
    

    這個檢驗類似配對t檢驗。排列靠前的標簽/基因的p值、FDR都很小,差異倍數 (FC) 很大。

    進一步地??

  • 單個樣本中這些基因的每百萬 count 數 (counts-per-million)

    ps.根據p值排序

    > o <- order(lrt$table$PValue) 
    > cpm(y)[o[1:10],] 
    

    可以看出,這些基因在腫瘤樣本和正常組織中的變化,在三個患者中是一致。

  • 以 FDR(錯誤發現率)為5%,查看差異表達基因的數量

    > summary(decideTests(lrt)) 
    
  • 繪制 log-FC 與 log-cpm 均值 - 差異圖 (mean-difference plot)
    圖中的藍色橫線代表2倍差異 (2-fold changes)。

    > plotMD(lrt) 
    > abline(h=c(-1, 1), col="blue") 
    
10.GO分析
  • 針對生物學過程 (biological process, BP)做GO分析

    > go <- goana(lrt) 
    > topGO(go, ont="BP", sort="Up", n=30, truncate=30) 
    

    腫瘤中表達上調的基因可能與細胞分化、細胞遷移、組織形態發生相關。

Setup Info

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,748評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,165評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,595評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,633評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,435評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,943評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,035評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,175評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,713評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,599評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,788評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,303評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,034評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,412評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,664評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,408評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,747評論 2 370

推薦閱讀更多精彩內容

  • 這個步驟推薦在R里面做,載入表達矩陣,然后設置好分組信息,統一用DEseq2進行差異分析,當然也可以走走edgeR...
    xuzhougeng閱讀 89,774評論 25 148
  • edgeR 主要是利用了多組實驗的精確統計模型或者適用于多因素復雜實驗的廣義線性模型。 前者叫做“經典edgeR”...
    陳洪瑜閱讀 19,098評論 1 10
  • 轉錄組學習一(軟件安裝) 轉錄組學習二(數據下載) 轉錄組學習三(數據質控) 轉錄組學習四(參考基因組及gt...
    Dawn_WangTP閱讀 61,525評論 9 107
  • 今天,我們從三個方面,給大家分享如何通過“為他人提供價值”,讓自己也從中受益。 一、用戶需求 以客戶需求為導向,打...
    idoixiu閱讀 1,361評論 2 4
  • 問題:一個服務器不可能只搭載一個網站,那么如何才能搭載多個網站呢? 解決:虛擬主機的介入 Apache配置文件中默...
    向禿頂靠近的程序員閱讀 146評論 0 0