Illumina甲基化芯片分析工具SeSAMe教程第三篇之建模與推斷
瀏覽次數(shù):1239 發(fā)布日期:2023-9-20
來(lái)源:Illumina因美納公眾號(hào)
點(diǎn)擊圖片立即回顧
前兩期我們給您介紹了因美納目前提供的三種主要的甲基化芯片產(chǎn)品和它們?cè)谀[瘤和遺傳領(lǐng)域的典型應(yīng)用。這一期我們來(lái)聊一聊甲基化芯片在感染和農(nóng)業(yè)以及其他領(lǐng)域的應(yīng)用,以及如何利用甲基化芯片分析工具SeSAMe對(duì)芯片數(shù)據(jù)進(jìn)行建模與推斷分析。
在 COVID-19 大流行時(shí)期,由凱瑟琳·巴恩斯博士領(lǐng)導(dǎo)的科羅拉多大學(xué)進(jìn)行了一次大型 EWAS研究。這項(xiàng)研究涉及來(lái)自受 COVID-19 影響的個(gè)人、對(duì)照受試者和受其他呼吸道病毒影響的個(gè)體的樣本。對(duì)每組DNA甲基化進(jìn)行分析,并針對(duì)每種疾病狀況發(fā)現(xiàn)不同的甲基化特征。甲基化方法不僅檢測(cè)到這種疾病,而且還以驚人的準(zhǔn)確性預(yù)測(cè)了個(gè)體COVID-19感染后的疾病結(jié)果,即感染者是否需要住院治療、入住ICU的可能性和死亡率等。
Konigsberg, I.R., Barnes, B., Campbell, M. et al. Host methylation predicts SARS-CoV-2 infection and clinical outcome. Commun Med 1, 42 (2021).
研究顯示,甲基化圖譜與炎癥反應(yīng)和對(duì)免疫反應(yīng)的調(diào)節(jié)機(jī)制密切相關(guān)。傳統(tǒng)的宏基因組(mNGS)分析并沒(méi)有整合來(lái)自宿主的反應(yīng)信息,而甲基化圖譜可以被用于判定宿主的損傷是感染還是非感染以及損傷嚴(yán)重程度,因而可以被用于作為器官移植手術(shù)如腎移植術(shù)后并發(fā)癥預(yù)測(cè)和監(jiān)測(cè)的一種生物標(biāo)志物。相較于RNA或蛋白質(zhì),DNA甲基化是一種更容易獲得的生物標(biāo)志物,并且會(huì)在移植過(guò)程中不同的時(shí)間點(diǎn)以及隨后的短期和長(zhǎng)期隨訪中呈現(xiàn)動(dòng)態(tài)變化,因而實(shí)時(shí)的獲得更詳盡的甲基化圖譜信息也將為新治療策略的開(kāi)發(fā)提供更多可能。
Cristoferi I, Giacon TA, Boer K, van Baardwijk M, Neri F, Campisi M, Kimenai HJAN, Clahsen-van Groningen MC, Pavanello S, Furian L, Minnee RC. The applications of DNA methylation as a biomarker in kidney transplantation: a systematic review. Clin Epigenetics. 2022 Feb 7;14(1):20. doi: 10.1186/s13148-022-01241-7. PMID: 35130936; PMCID: PMC8822833.
甲基化圖譜可以提供關(guān)于細(xì)胞狀態(tài)與環(huán)境相關(guān)的重要信息,因而可以被用于畜牧業(yè)動(dòng)物福利的監(jiān)測(cè)以及來(lái)源地的追溯。例如有研究顯示,通過(guò)對(duì)甲基化圖譜的監(jiān)測(cè),我們可以發(fā)現(xiàn)表觀遺傳特征從一個(gè)環(huán)境轉(zhuǎn)移到另一個(gè)環(huán)境時(shí)的依賴(lài)性轉(zhuǎn)換,從而鑒定鮭魚(yú)中的河流特異性特征、雞肉中的農(nóng)場(chǎng)特異性特征等,這就為農(nóng)業(yè)畜牧業(yè)中動(dòng)物產(chǎn)品來(lái)源的追溯和認(rèn)證、動(dòng)物健康程度、動(dòng)物福利監(jiān)督等應(yīng)用鑒定提供了更多的可行性和可能性。
Whelan R, Tönges S, Böhl F and Lyko F (2023) Epigenetic biomarkers for animal welfare monitoring. Front. Vet. Sci. 9:1107843. Doi: 10.3389/fvets.2022.1107843
Venkatesh G, Tönges S, Hanna K, Ng YL, Whelan R, Andriantsoa R, Lingenberg A, Roy S, Nagarajan S, Fong S, Raddatz G, Böhl F, Lyko F. Context-dependent DNA methylation signatures in animal livestock. Environ Epigenet. 2023 Jan 23;9(1):dvad001. doi: 10.1093/eep/dvad001. PMID: 36936885; PMCID: PMC10019019.
DNA甲基化研究的一個(gè)新興領(lǐng)域是衰老。衰老與整個(gè)生命周期中DNA甲基化的整體損失有關(guān)。加州大學(xué)洛杉磯分校的Steve Horvath博士開(kāi)發(fā)了許多表觀遺傳衰老時(shí)鐘,可以從DNA甲基化譜中預(yù)測(cè)實(shí)際年齡。表觀遺傳年齡現(xiàn)在正在被探索為一般健康和保健的潛在生物標(biāo)志物。如果一個(gè)人的表觀遺傳年齡高于實(shí)際年齡,則他們的衰老加速,這往往與更高的衰老相關(guān)疾病發(fā)病率和早期死亡率相關(guān)。整體健康和保健通常與較慢的衰老速度有關(guān),其定義是表觀遺傳年齡低于實(shí)際年齡。
Horvath, S., Raj, K. DNA methylation-based biomarkers and the epigenetic clock theory of ageing. Nat Rev Genet 19, 371–384 (2018).
研究表明,DNA甲基化表征可以因?yàn)槿粘I钪械沫h(huán)境暴露風(fēng)險(xiǎn)而改變,這些環(huán)境因素包含但不限于空氣污染、重金屬納入、吸煙或二手煙暴露、酒精攝入程度等。而這些甲基化表征一旦被建立,即便風(fēng)險(xiǎn)因素被移除,也可能會(huì)繼續(xù)存在相當(dāng)長(zhǎng)的時(shí)間。這些甲基化表征在不同個(gè)體和個(gè)體的不同器官組織內(nèi)也存在一定的差異。同時(shí)甲基化表征還能一定程度上反應(yīng)風(fēng)險(xiǎn)因素暴露的時(shí)間長(zhǎng)度和嚴(yán)重程度,例如偶爾吸煙和重度吸煙人員的甲基化圖譜存在明顯差異。因此,測(cè)試甲基化圖譜可以實(shí)時(shí)的捕獲過(guò)去和現(xiàn)在的環(huán)境風(fēng)險(xiǎn)暴露因素,也可以更好的了解人類(lèi)疾病的發(fā)生和進(jìn)展情況,有助于更好的健康管理。
Nwanaji-Enwerem JC, Colicino E. DNA Methylation-Based Biomarkers of Environmental Exposures for Human Population Studies. Curr Environ Health Rep. 2020 Jun;7(2):121-128. doi: 10.1007/s40572-020-00269-2. PMID: 32062850.
操作腳本
BiocManager::install("SummarizedExperiment")
BiocManager::install("tidyverse")
library(sesame)
library(SummarizedExperiment)
library(tidyverse)
packageVersion(“sesame”)
se = sesameDataGet("MM285.10.SE.tissue")[1:1000,]
meta = dplyr::select(as_tibble(colData(se)),IDAT,sex,age,tissue)
meta$sex = relevel(factor(meta$sex),ref="Female")
meta$tissue=relevel(factor(meta$tissue),ref="Colon")
str(meta)
betas = assay(se)
ok1=checkLevels(betas,meta$sex)
sum(ok1)
betas[which(!ok1)[1],]
ok3=checkLevels(betas,meta$tissue)
betas = betas[ok1&ok3,]
dim(betas)
BiocManager::install("dml")
library(dml)
smry=DML(betas,~sex+age+tissue,meta=meta)
smry
smry[[1]]
res = summaryExtractTest(smry)
dim(res)
colnames(res)
res %>% arrange(Est_age) %>% dplyr::select(Est_age,Pval_age) %>% tail
ggplot(tibble(betaValue=assay(se)[res$Probe_ID[nrow(res)],],age=meta$age),aes(age,betaValue))+geom_point()+geom_smooth(method="lm")
ggplot(tibble(betaValue=betas["cg00116289_BC21",],age=meta$age),aes(age,betaValue))+geom_point()+geom_smooth(method="lm")
res %>% arrange(Est_sexMale) %>% dplyr::select(Est_sexMale,Pval_sexMale) %>% head()
with(res,plot(Est_sexMale,-log10(Pval_sexMale),xlab="Delta Beta",ylab="-log10(P-value)"))
mappingEPIC<-sesameAnno_get("EPIC/hg38.tsv.gz")
left_join(data.frame(res %>% filter(Est_sexMale > 0.1, Pval_sexMale < 0.05)),mappingEPIC,by="Probe_ID") %>% with(table(CpG_chrm))
res %>% dplyr::filter(Eff_tissue>0.1,FPval_tissue<0.01) %>% arrange(-Eff_tissue) %>% dplyr::select(Eff_tissue,FPval_tissue) %>% head()
withref = res %>% dplyr::select(starts_with("Est_tissue")) %>% mutate(Est_tissueColon = 0)
apply(withref - apply(withref,1,median),2,function(x) sum(x < -0.3))
barplot(apply(withref - apply(withref,1,median),2,function(x) sum(x < -0.3)),las=2)
dmContrasts(smry)
merged=DMR(betas,smry,"sexMale")
sh = sesameDataGet(“EPIC.1.SigDF”)
sm = sesameDataGet(“MM285.1.SigDF”)
BiocManager::install("randomForest")
mapping<-sesameAnno_get("HM450/hg38.tsv.gz")
left_join(pOOBAH(sh),mapping,by="Probe_ID") %>% dplyr::filter(CpG_chrm == "chrY") %>% with(sum(mask)/length(mask))
inferSexKaryotypes(sh)
inferEthinicity(sh)
inferStrain(sm,return.strain=TRUE)
inferStrain(sm,return.probability=TRUE)
sort(inferStrain(sm,return.probability=TRUE),decreasing=TRUE)
predictAge(getBetas(sh,mask=FALSE),sesameAnno_get("Anno/HM450/Clock_Horvath353.rds"))
predictAge(getBetas(sm,mask=FALSE),sesameAnno_get("Anno/MM285/Clock_Zhou347.rds"))
predictAge(getBetas(dyeBiasNL(noob(sm)),mask=FALSE),sesameAnno_get("Anno/MM285/Clock_Zhou347.rds"))
BiocManager::install("DNAcopy")
segs <-cnSegmentation(sh)
visualizeSegments(segs)
betas = sesameDataGet(“HM450.1.TCGA.PAAD”)$betas
estimateLeukocyte(betas)
compareReference(sesameDataGet("MM285.tissueSignature"),getBetas(sm))