TCGA 數(shù)據分析實戰(zhàn) —— 差異甲基化區(qū)域模體分析

前言

DNA 甲基化在許多細胞進程中扮演重要的角色炸枣,例如胚胎發(fā)育搭伤、基因印跡踊挠、X 染色體失活和維持染色體穩(wěn)定性乍桂。

在哺乳動物中,DNA 甲基化很少見效床,其產生位置分布在整個基因組中的確定的 CpG 序列中睹酌,但是卻很少在 CpG 島上發(fā)生甲基化。

CpG 島(CGI)是富含 GC 堿基的短間隔 DNA 序列剩檀。這些 CpG 島通常位于轉錄起始位置憋沿,它們的甲基化會導致基因沉默。

DNA 甲基化會抑制轉錄沪猴,因此辐啄,對 DNA 甲基化的研究對于理解癌癥中調控基因網絡至關重要。所以运嗜,差異甲基化區(qū)域(DMR)的檢測有助于我們研究調控基因網路壶辜。

差異甲基化分析

1. 樣本甲基化均值

我們首先對 DNA 甲基化數(shù)據進行預處理,450k 平臺的 DNA 甲基化數(shù)據有三種探針:

  • cgCpG 位點
  • ch:非 CpG 位點
  • rsSNP 芯片

最后一種探針可用于識別和跟蹤樣本洗出,應該在差異甲基化分析中被排除士复,所以要刪除 rs 探針图谷。同時為了消除性別的影響翩活,X阱洪、Y 染色體也應該排除在外。最后菠镇,去除包含 NA 值的探針冗荸。

在本示例中,我們分析的是結直腸癌的兩個亞型:

  • 結腸癌:COAD
  • 直腸癌:READ
library(TCGAbiolinks)
library(SummarizedExperiment)
library(tidyverse)

#------------------------------------
# 獲取 DNA 同時檢測甲基化和表達的樣本
#------------------------------------
# 結腸和直腸數(shù)據
coad.samples <- matchedMetExp("TCGA-COAD", n = 10)
read.samples <- matchedMetExp("TCGA-READ", n = 10)
samples <- c(coad.samples, read.samples)

#------------------------------------
# 1 - Methylation
# -----------------------------------
query <- GDCquery(
  project = c("TCGA-COAD", "TCGA-READ"),
  data.category = "DNA methylation",
  platform = "Illumina Human Methylation 450",
  legacy = TRUE,
  barcode = samples
)
GDCdownload(query)
met <- GDCprepare(query, save = FALSE)

# 我們以 chr9 為例
met <- subset(met,subset = as.character(seqnames(met)) %in% c("chr9"))
# 刪除包含 NA 值的探針
met <- subset(met,subset = (rowSums(is.na(assay(met))) == 0))
# 去除重復樣本
met <- met[, substr(colnames(met), 14, 16) != "01B"]

我們根據 project_id 對樣本進行分組利耍,并使用 T 檢驗計算樣本甲基化值之間的差異

TCGAvisualize_meanMethylation(
  met,
  groupCol = "project_id",
  group.legend  = "Groups",
  filename = NULL,
  print.pvalue = TRUE
)
==================== DATA Summary ====================
     groups      Mean    Median       Max       Min
1 TCGA-COAD 0.4670816 0.4682460 0.5076270 0.4222167
2 TCGA-READ 0.4730700 0.4758822 0.4904898 0.4498025

整體看蚌本,兩組樣本之間的 P 值并不顯著

2. 識別差異甲基化 CpG 位點

獲取并處理完數(shù)據之后,我們要識別兩組之間的差異甲基化 CpG 位點隘梨。

我們使用的是 TCGAanalyze_DMR 函數(shù)程癌,該函數(shù)首先計算每個探針在分組之間的平均甲基化值(mean of the beta-value)差異,然后轴猎,使用 wilcoxon 檢驗兩組之間的表達差異嵌莉,并使用 BH 方法矯正 P 值。

默認的最小均值差為 0.15捻脖,FDR 值為 0.05

#-------   識別差異甲基化位點   ----------
res <- TCGAanalyze_DMC(
  met,
  # colData 函數(shù)獲取的矩陣中分組列名
  groupCol = "project_id",
  group1 = "TCGA-COAD",
  group2 = "TCGA-READ",
  p.cut = 0.05,
  diffmean.cut = 0.15,
  save = FALSE,
  legend = "State",
  plot.filename = "~/Downloads/COAD_READ_metvolcano.png",
  cores =  1
)

從這個火山圖的結果中锐峭,我們可以看到有 6 個低甲基化位點

最后,我們使用熱圖來顯示這些探針在所有樣本中的 DNA 甲基化水平

#--------------------------
# DNA Methylation heatmap
#--------------------------
library(ComplexHeatmap)

# 獲取臨床數(shù)據
coad_clin <- GDCquery_clinic(project = "TCGA-COAD", type = "Clinical")
read_clin <- GDCquery_clinic(project = "TCGA-READ", type = "Clinical")

use_cols <- c("bcr_patient_barcode", "disease","gender","vital_status","race")
clinical <- coad_clin %>% 
  dplyr::select(use_cols) %>%
  add_row(dplyr::select(read_clin, use_cols)) %>%
  subset(bcr_patient_barcode %in% substr(samples, 1, 12))


# 獲取 Hypermethylated 和 Hypomethylated 的探針
sig_met <- filter(res, status != "Not Significant")
# 獲取探針的表達值
res_data <- subset(met,subset = (rownames(met) %in% rownames(sig_met)))

# 添加注釋
ta <- HeatmapAnnotation(
  df = clinical[, c("disease", "gender", "vital_status", "race")],
  col = list(
    disease = c("COAD" = "grey", "READ" = "black"),
    gender = c("male" = "blue", "female" = "pink")
  ))
ra <- rowAnnotation(
  df = sig_met$status,
  col = list(
    "status" =
      c("Hypomethylated" = "orange",
        "Hypermethylated" = "darkgreen")
  ),
  width = unit(1, "cm")
)

heatmap  <- Heatmap(
  assay(res_data),
  name = "DNA methylation",
  col = matlab::jet.colors(200),
  show_row_names = FALSE,
  cluster_rows = TRUE,
  cluster_columns = FALSE,
  show_column_names = FALSE,
  bottom_annotation = ta,
  column_title = "DNA Methylation"
) 
# 保存結果
png("~/Downloads/heatmap.png",width = 600, height = 400)
draw(heatmap, annotation_legend_side =  "bottom")
dev.off()

模體分析

在識別出了差異甲基化區(qū)域之后可婶,我們可能希望能從這些區(qū)域中找出某些獨特的特征沿癞。從這些受到累積或缺失 DNA 甲基化作用影響的位點中識別出候選的轉錄因子。

模體(motif)分析的目的是提取隱藏在大部分非功能性基因間序列中的小序列信號矛渴,這些小序列核苷酸信號(6-15bp)可能具有調控基因表達的生物學意義椎扬。這些序列被稱為調控模體。

我們對差異甲基化區(qū)域前后 100 個堿基的序列進行模體分析具温,然后使用 motifStack 包來生成多個具有不同相似性得分的模體

Bioconductor 中的 rGADEM 包為大規(guī)牡两ⅲ基因組序列的數(shù)據分析提供了一種高效的 de novo 模體識別算法。

#---------------------------
#          motif 分析
#---------------------------
library(rGADEM)
library(GenomicRanges)
library(BSgenome.Hsapiens.UCSC.hg19)
library(motifStack)

probes <- rowRanges(res_data)
# 獲取差異的探針并設置 200bp 大小的窗口
sequence <- GRanges(
  seqnames = as.character(seqnames(probes)),
  ranges = IRanges(start = start(ranges(probes)) - 100,
          end = start(ranges(probes)) + 100),
  strand = "*"
)
# 識別模體
gadem <- GADEM(sequence, verbose = FALSE, genome = Hsapiens)

嗯...很不走運桂躏,運行上述代碼钻趋,并沒有找到模體。

# 獲取模體的數(shù)量
> nMotifs(gadem)
[1] 3

由于我們識別出的位點較少剂习,發(fā)現(xiàn)模體的可能性較低蛮位,為了讓我們能夠繼續(xù)下面的步驟,只能換兩種癌型再試試了

我們使用 GBMLGG 兩種癌型各十個樣本鳞绕,運行上述代碼失仁,首先從 DNA 甲基化均值可以看出這兩種癌型的差異具有顯著性

而從下面的火山圖我們也可以看出差異位點明顯增加了很多


從這些差異甲基化位點來尋找模體,看來是很有希望的了

> nMotifs(gadem)
[1] 3

找到了三個们何,再看看這三個模體出現(xiàn)的次數(shù)

> nOccurrences(gadem)
[1] 187 110 143

查看模體的一致性序列

> consensus(gadem)
[1] "nrrAGrrArArrrrrnrArr" "nCTTCCTsn"            "sCCCnsmnCCCn" 

展示模體 logo

pwm <- getPWM(gadem)
pfm  <- new("pfm",mat=pwm[[1]],name="Novel Site 1")
plotMotifLogo(pfm)

一個序列的 logo 圖展示的是多序列比對之后可能的堿基堆積標記萄焦,logo 的高度與序列的保守程度有關,堿基或氨基酸的保守程度越高,字母越高大拂封,每個位置的堿基根據頻率從高到低進行堆疊顯示茬射,可以從序列的頂端讀取一致性序列

序列的 IUPAC codes 對照表

DNA

Protein

rGADEM 獲取到結果之后,還可以使用 MotIV 進行模體配對分析

library(MotIV)

# motif 配對分析
> analysis.jaspar <- motifMatch(pwm)

    Ungapped Alignment
    Scores read
    Database read
    Motif matches : 5
> summary(analysis.jaspar)
    Number of input motifs :  3 
    Input motifs names :  TGGGGTGAGGGGAAGGCGGA TCTTCCTGG CCCCGCCTCCCC 
    Number of matches per motif:  5 
    Matches repartition : 
      SPI1       SPIB       ELF5 EWSR1-FLI1        FEV       IRF1       IRF2       Klf4       Pax4 
         2          2          1          1          1          1          1          1          1 
     PLAG1        SP1      Stat3     TFAP2A 
         1          1          1          1 
    Arguments used : 
      -metric name :  PCC 
      -alignment :  SWU 

繪制配對分析的結果

plot(analysis.jaspar, ncol=2, top=5, rev=FALSE, main="", bysim=TRUE, cex=0.4)

查看比對結果的質量

> alignment <- viewAlignments(analysis.jaspar)
> print(alignment[[1]])
       EWSR1-FLI1              IRF1                   SPIB                   SPI1                  
seq    "NRGAGRNANARRRRNNNARN-" "NRGAGRNANARRRRNNNARN" "NRGAGRNANARRRRNNNARN" "NRGAGRNANARRRRNNNARN"
match  "---GGAAGGAAGGAAGGAAGG" "----NAAANYGAAACC----" "-------ASMGGAA------" "---AGGAAGT----------"
evalue "3.0277e-06"            "1.4371e-03"           "6.4823e-03"           "1.5616e-02"          
       IRF2                   
seq    "NRGAGRNANARRRRNNNARN-"
match  "---SGAAAGYGAAASYNWWNN"
evalue "1.9415e-02" 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末冒签,一起剝皮案震驚了整個濱河市在抛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萧恕,老刑警劉巖刚梭,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異票唆,居然都是意外死亡朴读,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門走趋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磨德,“玉大人,你說我怎么就攤上這事吆视〉涮簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵啦吧,是天一觀的道長您觉。 經常有香客問我,道長授滓,這世上最難降的妖魔是什么琳水? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮般堆,結果婚禮上在孝,老公的妹妹穿的比我還像新娘。我一直安慰自己淮摔,他們只是感情好私沮,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著和橙,像睡著了一般仔燕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魔招,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天晰搀,我揣著相機與錄音,去河邊找鬼办斑。 笑死外恕,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播鳞疲,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罪郊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了建丧?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤波势,失蹤者是張志新(化名)和其女友劉穎翎朱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尺铣,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡拴曲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凛忿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澈灼。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖店溢,靈堂內的尸體忽然破棺而出叁熔,到底是詐尸還是另有隱情,我是刑警寧澤床牧,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布荣回,位于F島的核電站,受9級特大地震影響戈咳,放射性物質發(fā)生泄漏心软。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一著蛙、第九天 我趴在偏房一處隱蔽的房頂上張望删铃。 院中可真熱鬧,春花似錦踏堡、人聲如沸猎唁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胖秒。三九已至,卻和暖如春慕的,著一層夾襖步出監(jiān)牢的瞬間阎肝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工肮街, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留风题,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像沛硅,于是被迫代替她去往敵國和親眼刃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容