Illumina甲基化芯片分析工具SeSAMe教程第二篇之?dāng)?shù)據(jù)預(yù)處理
瀏覽次數(shù):1415 發(fā)布日期:2023-9-20
來源:Illumina因美納公眾號
點擊圖片立即回顧
上一期我們給您介紹了因美納目前提供的三種主要的甲基化芯片產(chǎn)品,這一期我們來聊一聊甲基化芯片在腫瘤和遺傳領(lǐng)域的典型應(yīng)用,以及如何利用甲基化芯片分析工具SeSAMe進(jìn)行芯片數(shù)據(jù)的預(yù)處理。
組織病理學(xué)診斷對中樞神經(jīng)系統(tǒng)腫瘤亞型判斷存在困境——上百種CNS亞型,組織學(xué)表現(xiàn)相似,病理學(xué)家對罕見腫瘤類別難下結(jié)論。為了解決這個問題,DKFZ (德國癌癥研究中心)的研究人員利用Methylation EPIC芯片分析了2,800余例癌癥樣本的甲基化特征,涵蓋了上百種CNS腫瘤類型 (根據(jù)WHO的分類以及臨床診斷結(jié)果)。DKFZ構(gòu)建的甲基化譜分類器,可明確區(qū)分82種基于甲基化指紋的CNS腫瘤類別。在千余例臨床樣本驗證中,甲基化譜分類器提供了額外的、臨床相關(guān)的分型信息,對26.9% 的病例做出了新的分類診斷,指導(dǎo)患者進(jìn)行最佳治療方案選擇。2016年版WHO CNS分類指南中已經(jīng)引入了分子學(xué)特征進(jìn)行腫瘤分類, 2021年WHO CNS5作為最新版腦和脊髓腫瘤分類國際標(biāo)準(zhǔn), 也納入DNA甲基化譜分析。
1. Capper D, Jones DTW, Sill M, et al. DNA methylation-based classification of central nervous system tumours. Nature. 2018;555(7697):469-474. doi:10.1038/ nature26000
肉瘤是由結(jié)締組織轉(zhuǎn)化引起的腫瘤,占實體瘤病例的不到1%,每年發(fā)病人數(shù)在18萬人左右。由于其罕見特性,分子病理學(xué)家可能無法正確分類肉瘤,目前已知的錯誤分類率約為20-25%。RNA-Seq檢測在肉瘤分類中非常常用,但RNA層面的檢測并不是完全有用,因為并非所有肉瘤都具有特征性融合,目前的數(shù)據(jù)顯示約有三分之二的病例缺乏融合指針。DKFZ構(gòu)建的甲基化肉瘤分類器使用了1077例臨床樣本,涵蓋62種不同的分類亞型,并且在428例驗證樣本中成功鑒定了322例的具體分型。
2. Koelsche, C., Schrimpf, D., Stichel, D. et al. Sarcoma classification by DNA methylation profiling. Nat Commun 12, 498 (2021). https://doi.org/10.1038/s41467-020-20603-4
甲基化分類器的研究已經(jīng)細(xì)化并重塑了中樞神經(jīng)系統(tǒng)腫瘤分類的前景,結(jié)合病理診斷結(jié)果,分類器已經(jīng)在實際臨床中證明了其診斷精度的提高,尤其是針對組織學(xué)上分類模糊的病例而言。類似的方法也可以在其他腫瘤群組中使用。目前,DKFZ已經(jīng)在拓展包括血液腫瘤分類器、泛腫瘤分類器、神經(jīng)肌肉疾病分類器在內(nèi)的多種不同應(yīng)用,可以被應(yīng)用于包括乳腺癌、咽喉癌、子宮內(nèi)膜癌、肝癌和其他原發(fā)灶不明的腫瘤中去。在可以預(yù)期的未來,甲基化芯片將有希望為超過90%的癌癥提供甲基化分類證據(jù),進(jìn)一步提升臨床診斷,優(yōu)化病人健康管理。
3. Koelsche C, von Deimling A. Methylation classifiers: Brain tumors, sarcomas, and what's next. Genes Chromosomes Cancer. 2022;61(6):346‐355. doi:10.1002/gcc.23041
近年來,EWAS數(shù)據(jù)已與數(shù)學(xué)模型配對以創(chuàng)建甲基化風(fēng)險評分。迄今為止的文獻(xiàn)指出,基于甲基化的風(fēng)險評分MRS比多基因風(fēng)險評分PRS的準(zhǔn)確性要高得多。這可能是因為我們的基因型通常不會在我們的一生中發(fā)生變化,而我們的表觀基因組更具動態(tài)性,通常反映我們當(dāng)前的生物狀態(tài),包括我們的年齡,我們可能正在發(fā)展的疾病,以及環(huán)境因素如何影響我們生物水平。在一項研究中,加州大學(xué)洛杉磯分校的研究人員假設(shè)MRS將是一個很好的表型預(yù)測工具,MRS可能會補(bǔ)充PRS來預(yù)測復(fù)雜的疾病和表型。為了測試這一點,他們比較了831名患者的基因分型和甲基化風(fēng)險評估結(jié)果,研究發(fā)現(xiàn)甲基化風(fēng)險評分在各種標(biāo)準(zhǔn)中優(yōu)于 PRS,而且MRS還可以使研究人員獲得測試患者最近的環(huán)境暴露風(fēng)險等因素。
1. Thompson, M., Hill, B.L., Rakocz, N. et al. Methylation risk scores are associated with a collection of phenotypes within electronic health record systems. npj Genom. Med. 7, 50 (2022). https://doi.org/10.1038/s41525-022-00320-1
臨床表型和基因組關(guān)聯(lián)的復(fù)雜程度是遺傳疾病日常診斷和臨床管理中日益嚴(yán)峻的挑戰(zhàn)。基因組變異的功能上的后果的判斷和臨床影響的決策涉及獨(dú)特的、疾病特異性的DNA甲基化位點。格林伍德基因組中心使用EpiSign,一種通過評估全基因組甲基化表征來識別經(jīng)過驗證的和可重現(xiàn)的表觀遺傳特征的檢測方法,來檢測疾病特異性的甲基化模式。評估這些不同的甲基化模式可以作為診斷性檢查中這些疾病的有用篩查工具,也可以通過更有針對性的方式幫助解決臨床意義不確定的變異。2023年2月推出的EpiSgn v4版本目前可以識別包括糖尿病、心血管疾病、神經(jīng)發(fā)育異常等在內(nèi)的70多種疾病類型。
1. https://ggc.org/EpiSign
操作腳本
library(sesame)
dest_dir = tempdir()
dest_dir
setwd(dest_dir)
download.file("https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM2178nnn/GSM2178224/suppl/GSM2178224_184AA3_Grn.idat.gz", "GSM2178224_184AA3_Grn.idat.gz")
download.file("https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM2178nnn/GSM2178224/suppl/GSM2178224_184AA3_Red.idat.gz", "GSM2178224_184AA3_Red.idat.gz")
list.files(pattern=”*.idat”)
s = readIDATpair("GSM2178224_184AA3",verbose=TRUE)
sesameQC_calcStats(s,"numProbes")
mft = sesameDataGet(“EPIC.address”)$ordering
s = readIDATpair("GSM2178224_184AA3",manifest=mft)
library(parallel)
mclapply(searchIDATprefixes(“.”), readIDATpair)
sesameQC_calcStats(s)
qc = sesameQC_calcStats(s,"intensity")
sesameQC_rankStats(qc,platform="EPIC")
betas = getBetas(s)
head(betas, 20)
head(s$mask)
s0 = resetMask(s)
sum(s0$mask)
s1 = qualityMask(s0)
s2 = pOOBAH(s1)
sum(s2$mask)
pval = pOOBAH(s, return.pval=TRUE)
s3 = addMask(s1, pval>0.05)
sum(s3$mask) == sum(s2$mask)
BiocManager::install("pals")
sesameQC_plotIntensVsBetas(s)
s4 = noob(s)
sesameQC_plotIntensVsBetas(s4)
sesameQC_plotRedGrnQQ(s4)
s5 = dyeBiasNL(s4)
sesameQC_plotRedGrnQQ(s5)
sesameQC_plotIntensVsBetas(s5)
betas = do.call(cbind, mclapply(searchIDATprefixes(“.”), function(px)getBetas(dyeBiasNL(noob(pOOBAH(readIDATpair(px))))), mc.cores=2))
head(betas)
betas2 = openSesame(“.”)
all(betas == betas2, na.rm=T)