작성: 2024.01.31
Mendelian randomization는 최근 많이 떠오르는 분석 법으로 질병(outcome)의 원인(exposures)을 파악하기 위해 SNP변이값을 사용한다. MR분석의 가정은 1) exposures과 outcome이 높은 상관관계를 보여야 하고, 2) SNP는 exposures에 영향을 미쳐야 하며, 3) 특정 exposures 외에 경로로 outcome에 영향을 미치지 않아야 한다.
Xu, W., Zhang, L., & Song, X. (2024). Exploring the link between gut microbiota and alopecia areata: a two-sample Mendelian randomization analysis. International journal of dermatology, 10.1111/ijd.17032. Advance online publication. https://doi.org/10.1111/ijd.17032
위 논문은 MR 분석을 수행하여 Gut microbiome 이 AA에 영향을 미친다는 결과를 내놓았다. 사용된 exposure데이터는 Mibiogene의 Genus 데이터(총 32GB)이며 132개의 Genus에 대한 결과를 나타내고 있다. outcome데이터는 Finngene(현재 홈페이지 접속 불가능)의 finn-b-L12_ALOPECANDRO데이터이다.
먼저 MR스터디의 수행 법을 알아보았다. MR은 R 패키지 혹은 온라인에서 공개 데이터셋을 활용하여 분석이 가능하다. 그러나 온라인 플렛폼에서 Mibiogene 데이터는 제공하지 않는다.
1. 온라인 플랫폼 MRbase
- MRbase: https://app.mrbase.org/
- 영상 tutorial: https://www.youtube.com/watch?v=E5uc5kJlu2c
- tutorial: https://si.biostat.washington.edu/sites/default/files/modules/Session13_MendelianRandomization.pdf
tutorial링크에서는 나이에 따른 유방암에 대한 MR분석을 소개하고 있다(exposure=Age/ outcome=breast cancer ).
온라인으로 분석후, 아래와 같은 보고서도 다운받을 수 있다.
2. R에서 진행
위와 동일한 데이터로 R에서 분석을 수행해 보자. 분석 도구는 TwoSampleMR R package를 사용한다.
- TwoSampleMR tutorial: https://mrcieu.github.io/TwoSampleMR/articles/perform_mr.html
## INSTALL
install.packages("devtools")
library(devtools)
install_github("MRCIEU/TwoSampleMR")
library(TwoSampleMR)
library(ggplot2)
## 사용 가능한 GWAS 데이터 불러오기
ao <- available_outcomes()
# exposures과 outcome데이터 살펴보기
ao[ao$id %in% "ieu-a-1004", ] # Age at menopause
ao[ao$id %in% "ieu-a-1126", ] # Breast cancer
# Age에 영향을 주는 SNP 추출
age_exp_dat <- extract_instruments(outcomes = 'ieu-a-1004')
head(age_exp_dat)
# Age에 영향을 주는 SNP중 Breast cancer에도 영향을 주는 SNP 추출
out_dat <- extract_outcome_data(
snps = age_exp_dat$SNP,
outcomes = 'ieu-a-1126'
)
# Harmonise 분석
dat <- harmonise_data(age_exp_dat, out_dat)
# MR 분석
res <- mr(dat)
- TwoSampleMR의 기본 함수를 사용하여 Scatter plot, Forest plot, Leave-one-out plot, Funnel plot 을 그려보자.
## Scatter plot ##
p1 <- mr_scatter_plot(res, dat)
p1[[1]]
아니면 특정 분석 방법만 추출해서 그려보자.
res <- mr(dat, method_list = c("mr_egger_regression", "mr_ivw"))
#> Analysing 'ieu-a-2' on 'ieu-a-7'
p11 <- mr_scatter_plot(res, dat)
p11[[1]]
## Forest plot ##
res_single <- mr_singlesnp(dat)
p2 <- mr_forest_plot(res_single)
p2[[1]]
res_single <- mr_singlesnp(dat, all_method = c("mr_ivw", "mr_two_sample_ml"))
p2 <- mr_forest_plot(res_single)
p2[[1]]
## Leave-one-out plot ##
res_loo <- mr_leaveoneout(dat)
p3 <- mr_leaveoneout_plot(res_loo)
p3[[1]]
## Funnel plot ##
res_single <- mr_singlesnp(dat)
p4 <- mr_funnel_plot(res_single)
p4[[1]]
참고
- R분석: https://andrewslabucsf.github.io/MR-tutorial/scripts/intro.html
- 참고강의: https://www.statslab.cam.ac.uk/~qz280/talk/epfl-2021/
- 실제 분석 스크립트1: https://github.com/MRCIEU/Health-and-Wellbeing-MR/blob/master/Two-sample%20MR%20Base%20script.R#L41