-
Notifications
You must be signed in to change notification settings - Fork 3
/
susie_check.Rmd
108 lines (86 loc) · 2.6 KB
/
susie_check.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
---
title: "Comparing SuSIE results with summary level vs individual level simulations"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Comparing SuSIE results with summary level vs individual level simulations}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
eval=FALSE,
comment = "#>"
)
```
```{r setup}
library(simulateGP)
library(tidyverse)
library(susieR)
```
## Compare summary level simulations against individual level simulations
```{r}
ldobj <- readRDS("~/data/ld_files/ldmat/EUR_1kg_hm3/ldobj_chr9_30387392_31310382.rds")
set.seed(1234)
nid <- 100000
params <- ldobj$map %>%
generate_gwas_params(h2=0.02, Pi=3/nrow(ldobj$map)) %>%
generate_gwas_ss(nid, ldobj=ldobj)
X <- MASS::mvrnorm(nid, rep(0, nrow(ldobj$ld)), ldobj$ld)
for(i in 1:ncol(X))
{
X[,i] <- X[,i] * sqrt(2 * ldobj$map$af[i] * (1-ldobj$map$af[i]))
}
Xb <- X %*% params$beta
y <- Xb + rnorm(nid, sd=sqrt(1 - var(Xb)))
out <- gwas(y, X)
```
```{r}
plot(cor(X), ldobj$ld)
```
```{r}
plot(out$bhat ~ params$bhat)
```
Run SuSIE
```{r}
sus <- susieR::susie_rss(params$bhat/params$se, R = ldobj$ld, check_R=FALSE)
susieR::susie_plot(sus, y="PIP", b=params$beta)
sus$sets
sui <- susieR::susie_rss(out$bhat / out$se, R = ldobj$ld, check_R=FALSE)
susieR::susie_plot(sui, y="PIP", b=params$beta)
sui$sets
```
## Compare two different populations
```{r}
ldobj1 <- readRDS("~/data/ld_files/ldmat/EUR_1kg_hm3/ldobj_chr22_26791628_27834751.rds")
ldobj2 <- readRDS("~/data/ld_files/ldmat/EAS_1kg_hm3/ldobj_chr22_26524344_28233389.rds")
snps <- ldobj1$map$snp[ldobj1$map$snp %in% ldobj2$map$snp]
index1 <- which(ldobj1$map$snp %in% snps)
index2 <- which(ldobj2$map$snp %in% snps)
ldobj1$map <- ldobj1$map[index1,]
ldobj1$ld <- ldobj1$ld[index1, index1]
ldobj2$map <- ldobj2$map[index2,]
ldobj2$ld <- ldobj2$ld[index2, index2]
length(snps)
set.seed(1111)
nid <- 100000
params1 <- ldobj1$map %>%
generate_gwas_params(h2=0.02, Pi=3/nrow(ldobj1$map)) %>%
generate_gwas_ss(nid, ldobj=ldobj1)
params2 <- ldobj2$map %>%
mutate(beta = params1$beta) %>%
generate_gwas_ss(nid, ldobj=ldobj2)
bind_rows(params1 %>% mutate(pop="EUR"), params2 %>% mutate(pop="EAS")) %>%
ggplot(., aes(x=pos, y=-log10(pval))) +
geom_point(aes(colour=beta == 0)) +
facet_grid(pop ~ .)
```
Run SuSIE
```{r}
su1 <- susieR::susie_rss(params1$bhat/params1$se, R = ldobj1$ld, check_R=FALSE)
susieR::susie_plot(su1, y="PIP", b=params1$beta)
su1$sets
su2 <- susieR::susie_rss(params2$bhat/params2$se, R = ldobj2$ld, check_R=FALSE)
susieR::susie_plot(su2, y="PIP", b=params2$beta)
su2$sets
```