vignettes/GMRP.R

### R code from vignette source 'GMRP.Rnw'

###################################################
### code chunk number 1: <style-Sweave
###################################################
#BiocStyle::latex()
BiocStyle::latex(use.unsrturl=FALSE)

#library(knitr)
#opts_chunk$set(tidy=FALSE,dev="pdf",fig.show="hide",
 #              fig.width=4,fig.height=4.5,
  #             dpi=300,# increase dpi to avoid pixelised pngs
  #             message=FALSE)
               
###################################################
### code chunk number 2: GMRP.Rnw:40-43
###################################################
set.seed(102)
options(width = 90)


###################################################
### code chunk number 3: GMRP.Rnw:45-47
###################################################
library(GMRP)

###################################################
### code chunk number 4: fmerge.Rnw:56-72
###################################################
data1 <- matrix(NA, 20, 4)
data2 <- matrix(NA, 30, 7)
SNPID1 <- paste("rs", seq(1:20), sep="")
SNPID2 <- paste("rs", seq(1:30), sep="")
data1[,1:4] <- c(round(runif(20), 4), round(runif(20), 4), round(runif(20), 4), round(runif(20), 4))
data2[,1:4] <- c(round(runif(30), 4),round(runif(30), 4), round(runif(30), 4), round(runif(30), 4))
data2[,5:7] <- c(round(seq(30)*runif(30), 4), round(seq(30)*runif(30), 4), seq(30))
data1 <- cbind(SNPID1, as.data.frame(data1))
data2 <- cbind(SNPID2, as.data.frame(data2))
dim(data1)
dim(data2)
colnames(data1) <- c("SNP", "var1", "var2", "var3", "var4")
colnames(data2) <- c("SNP", "var1", "var2", "var3", "var4", "V1", "V2", "V3")
data1<-as.data.frame(data1)
data2<-as.data.frame(data2)
data12 <- fmerge(fl1=data1, fl2=data2, ID1="SNP", ID2="SNP", A=".dat1", B=".dat2", method="No")

###################################################
### code chunk number 5: disease data load:90-93
###################################################
data(cad.data)
#cad <- DataFrame(cad.data)
cad<-cad.data
head(cad)
###################################################
### code chunk number 6:lipid data load: 95-99
###################################################
data(lpd.data)
#lpd <- DataFrame(lpd.data)
lpd<-lpd.data
head(lpd)

###################################################
### code chunk number 7: choose SNPs: 127-152
###################################################

###################################################
# Step1: calculate pvj: 129-136
###################################################

pvalue.LDL <- lpd$P.value.LDL
pvalue.HDL <-lpd$P.value.HDL
pvalue.TG <- lpd$P.value.TG
pvalue.TC <- lpd$P.value.TC
pv <- cbind(pvalue.LDL, pvalue.HDL, pvalue.TG, pvalue.TC)
pvj <- apply(pv, 1, min)

###################################################
# Step2: retrieve causal variables from data: 139-145
###################################################

beta.LDL <- lpd$beta.LDL
beta.HDL <- lpd$beta.HDL
beta.TG <- lpd$beta.TG
beta.TC <- lpd$beta.TC
beta <- cbind(beta.LDL, beta.HDL, beta.TG, beta.TC)

###################################################
#     Step3: construct a matrix for allele1: 148-154
###################################################

a1.LDL <- lpd$A1.LDL
a1.HDL <- lpd$A1.HDL
a1.TG <- lpd$A1.TG
a1.TC <- lpd$A1.TC
alle1 <- cbind(a1.LDL, a1.HDL, a1.TG, a1.TC)

###################################################
# Step4:  calculate pcj:157-165
###################################################

N.LDL <- lpd$N.LDL
N.HDL <- lpd$N.HDL
N.TG <- lpd$N.TG
N.TC <- lpd$N.TC
ss <- cbind(N.LDL, N.HDL, N.TG, N.TC)
sm <- apply(ss,1,sum)
pcj <- round(sm/max(sm), 6)

################################################### 
# Step5: Construct matrix for frequency of allele1:168-174
###################################################

freq.LDL<-lpd$Freq.A1.1000G.EUR.LDL
freq.HDL<-lpd$Freq.A1.1000G.EUR.HDL
freq.TG<-lpd$Freq.A1.1000G.EUR.TG
freq.TC<-lpd$Freq.A1.1000G.EUR.TC
freq<-cbind(freq.LDL,freq.HDL,freq.TG,freq.TC)

###################################################
# Step6: construct matrix for sd of each causal variable: 177-183 
###################################################

sd.LDL <- rep(37.42, length(pvj))
sd.HDL <- rep(14.87, length(pvj))
sd.TG <-rep(92.73, length(pvj))
sd.TC <- rep(42.74, length(pvj))
sd <- cbind(sd.LDL, sd.HDL, sd.TG, sd.TC)

###################################################
# Step7: SNPID and position: 186-189
###################################################
<<Step7, keep.source=TRUE, eval=FALSE>>=
hg19 <- lpd$SNP_hg19.HDL
rsid <- lpd$rsid.HDL

###################################################
# Step8: separate chromosome number and SNP position: 192-194
###################################################
chr<-chrp(hg=hg19)

###################################################
# Step9: get new data: 197-201
###################################################

newdata<-cbind(freq,beta,sd,pvj,ss,pcj)
newdata<-cbind(chr,rsid,alle1,as.data.frame(newdata))
dim(newdata)


###################################################
# Step10: retrieve data from cad and calculate pdj:204-215
###################################################

hg18.d <- cad$chr_pos_b36
SNP.d <- cad$SNP #SNPID
a1.d<- tolower(cad$reference_allele)
freq.d <- cad$ref_allele_frequency
pvalue.d <- cad$pvalue
beta.d <- cad$log_odds
N.case <- cad$N_case
N.ctr <- cad$N_control
N.d <- N.case+N.ctr
freq.case <- N.case/N.d

###################################################
 # Step11: combine these cad variables into new data sheet:218-222
 ###################################################

newcad <- cbind(freq.d, beta.d, N.case, N.ctr, freq.case)
newcad <- cbind(hg18.d, SNP.d, a1.d, as.data.frame(newcad))
dim(newcad)

################################################### 
#Step12: give name vector of causal variables: 225-227
###################################################
varname <-c("CAD", "LDL", "HDL", "TG", "TC")

###################################################
### Step 13: choose SNPs and make beta table
###################################################
mybeta <- mktable(cdata=newdata, ddata=newcad, rt="beta", 
varname=varname, LG=1, Pv=0.00000005, Pc=0.979, Pd=0.979)
dim(mybeta)
beta <- mybeta[,4:8]   #  standard beta table for path analysis
snp <- mybeta[,1:3]   #  snp data for annotation analysis
beta<-as.data.frame(beta)
head(beta)

###################################################
### load beta data: 256-264
###################################################
data(beta.data)
beta.data<-as.data.frame(beta.data)
CAD <- beta.data$cad
LDL <- beta.data$ldl
HDL <- beta.data$hdl
TG <- beta.data$tg
TC <- beta.data$tc

###################################################
### two way scatter: 266-280
###################################################
par(mfrow=c(2, 2), mar=c(5.1, 4.1, 4.1, 2.1), oma=c(0, 0, 0, 0))
plot(LDL,CAD, pch=19, col="blue", xlab="beta of SNPs on LDL", 
ylab="beta of SNP on CAD", cex.lab=1.5, cex.axis=1.5, cex.main=2)
abline(lm(CAD~LDL), col="red", lwd=2)
plot(HDL, CAD, pch=19,col="blue", xlab="beta of SNPs on HDL", 
ylab="beta of SNP on CAD", cex.lab=1.5, cex.axis=1.5, cex.main=2)
abline(lm(CAD~HDL), col="red", lwd=2)
plot(TG, CAD, pch=19, col="blue", xlab="beta of SNPs on TG", 
ylab="beta of SNP on CAD",cex.lab=1.5, cex.axis=1.5, cex.main=2)
abline(lm(CAD~TG), col="red", lwd=2)
plot(TC,CAD, pch=19, col="blue", xlab="beta of SNPs on TC", 
ylab="beta of SNP on CAD", cex.lab=1.5, cex.axis=1.5, cex.main=2)
abline(lm(CAD~TC), col="red", lwd=2)

###################################################
### MR and Path Analysis: 296-300
###################################################
data(beta.data)
mybeta <- as.data.frame(beta.data)
mod <- CAD~LDL+HDL+TG+TC
pathvalue <- path(betav=mybeta, model=mod, outcome="CAD")

###################################################
### Create Path Diagram: 305-312
###################################################

mypath <- matrix(NA,3,4)
mypath[1,] <- c(1.000000, -0.066678, 0.420036, 0.764638)
mypath[2,] <- c(-0.066678, 1.000000, -0.559718, 0.496831)
mypath[3,] <- c(0.420036, -0.559718, 1.000000, 0.414346)
colnames(mypath) <- c("LDL", "HDL", "TG", "path")
mypath<-as.data.frame(mypath)
mypath

###################################################
### load package: diagram: 324-326
###################################################
library(diagram)

###################################################
# make path diagram
###################################################
pathdiagram(pathdata=mypath, disease="CAD", R2=0.988243, range=c(1:3))

pathD<-matrix(NA,4,5)
pathD[1,] <- c(1,	-0.070161, 0.399038, 0.907127, 1.210474)
pathD[2,] <- c(-0.070161,	1, -0.552106, 0.212201, 0.147933)
pathD[3,] <- c(0.399038, -0.552106, 1, 0.44100, 0.64229)
pathD[4,] <- c(0.907127, 0.212201, 0.441007, 1, -1.035677)
colnames(pathD) <- c("LDL", "HDL", "TG", "TC", "path")
pathD<-as.data.frame(pathD)
pathD

pathdiagram2(pathD=pathD,pathO=mypath,rangeD=c(1:4),rangeO=c(1:3),
disease="CAD", R2D=0.536535,R2O=0.988243)

###################################################
# load SNP358 data
###################################################

data(SNP358.data)
SNP358 <- as.data.frame(SNP358.data)
head(SNP358)

###################################################
#  load package library(graphics)
###################################################

library(graphics)

###################################################
# chromosome SNP position histogram
##########################################
snpPositAnnot(SNPdata=SNP358,SNP_hg19="chr",main="A")


###################################################
# SNP function annotation analysis
###################################################

###################################################
# load SNP annotation data: 431-434
###################################################

data(SNP368annot.data)
SNP368<-as.data.frame(SNP368annot.data)
SNP368[1:10, ]

###################################################
# load package plotrix
###################################################

###################################################
# make 3D Pie
#############################################
ucscannot(UCSCannot=SNP368,SNPn=368)

ucscannot(UCSCannot=SNP368,SNPn=368,A=3,B=2,C=1.3,method=2)


sessionInfo()
Yuande/GMRP documentation built on May 29, 2019, 11:04 p.m.