--- a +++ b/.Rhistory @@ -0,0 +1,512 @@ +lmodel = lm(allResults[,i] ~ .^2, data = allPredictors) +sink(paste0(outputLoc,"_int_",method,"txt")) +print(summary(lmodel)) +sink() # returns output to the console +} +# go through each method but only look at the 1000 SNP runs +only1000SNPs = which(allPredictors$X.causals =="1000") +for (i in 1:length(modelNames)) { +method = modelNames[i] +# perform regression analyses for each method +lmodel = lm(allResults[only1000SNPs,i] ~ p_current + shared_corr, data = allPredictors[only1000SNPs,]) +sink(paste0(outputLoc,"_1000_",method,"txt")) +print(summary(lmodel)) +sink() # returns output to the console +} +for (i in 1:length(modelNames)) { +method = modelNames[i] +# perform regression analyses for each method +lmodel = lm(allResults[,i] ~ p_current + shared_corr, data = allPredictors[,]) +sink(paste0(outputLoc,"_all_",method,"txt")) +print(summary(lmodel)) +sink() # returns output to the console +} +sampleSizeAsN = allPredictors$sample_size +sampleSizeAsN[which(sampleSizeAsN == "_half")] = 8000 +sampleSizeAsN[which(sampleSizeAsN == "_full")] = 16000 +sampleSizeAsN[which(sampleSizeAsN == "_double")] = 32000 +sampleSizeAsN = as.numeric(sampleSizeAsN) +# overall results +median(allResults$meta) # 0.05962532 +median(allResults$subpheno) # 0.07367951 +median(allResults$shaPRS) # 0.1139283 +median(allResults$SMTPred) # 0.07585284 +mean(allResults$meta) # 0.07426966 +mean(allResults$subpheno) # 0.09124099 +mean(allResults$shaPRS) # 0.1189231 +mean(allResults$SMTPred) # 0.09280919 +# Combined seems a bit low, check when it is better than subpheno +combined_better_than_subpheno_indices = which(allResults$meta > allResults$subpheno) +combined_better_than_subpheno = allResults[combined_better_than_subpheno_indices,] +SMTPred_better_than_shapRS_indices = which(allResults$SMTPred > allResults$shaPRS) +SMTPred_better_than_shapRS = allResults[SMTPred_better_than_shapRS_indices,] +# create heatmaps +i=1 +# create rownames +coln = c() +rGs = c() +ps= c() +cors= c() +splits= c() +sample_sizes= c() +for (i in 1:length(allPredictors[,1])) { +print(i) +sample_size = gsub("_", "", allPredictors[i,7]) #remove underscores +rG= padTo_dec( allPredictors[i,2], 4) +p= padTo_dec( round(allPredictors[i,3], 2) ,4) +corre = padTo_dec( round(allPredictors[i,4], 2) ,4) +annotations = paste0("rG:",rG, " p:",p, " cor:",corre, " ",allPredictors[i,5], " split:",allPredictors[i,6], " size:",sample_size) +coln = c(coln,annotations) +splits = c(splits,allPredictors[i,6] ) +ps = c(ps,p ) +cors = c(cors,corre ) +sample_sizes = c(sample_sizes,sample_size ) +rGs = c(rGs,paste0(rG," ") ) # add an extra space for padding, otherwise legend will be cut off as pheatmap is shit +} +rownames(allResults) = coln +# want to sort the data rows by rG +orderByRG = order( as.numeric(rGs)) +allResults = allResults[orderByRG,] +splits = splits[orderByRG] +rGs = rGs[orderByRG] +ps = ps[orderByRG] +cors = cors[orderByRG] +sample_sizes = sample_sizes[orderByRG] +rGs_DF <- data.frame( rGs,as.numeric(ps),as.numeric(cors),sample_sizes, splits,row.names=rownames(allResults)) # need to match the rownames to the data for the annotation to work +colnames(rGs_DF) <- c("rG", "p", "cor","N", "split") # this is the header for the annotation +# function to separate regular/extra results: +filterOutByTerm_all = function(allResults,splits,ps,cors,filterTerm = "rG:0.50") { +subsetResults = allResults +ps_subset = ps +cors_subset = cors +splits_subset = splits +indices_kept = c() +i=1 +for (i in 1:nrow(subsetResults) ) { +rowname = rownames(subsetResults[i,]) +# check if rowname includes extra/regular, +if ( grepl( filterTerm, rowname, fixed = TRUE) ) { +# if yes, we replace it with nothing, and keep it +rowname_new = gsub(filterTerm, "",rowname) #remove underscores +rownames(subsetResults)[rownames(subsetResults) == rowname] <- rowname_new +indices_kept = c(indices_kept, i) +} # discard it otherwise +} +subsetResults = subsetResults[indices_kept,] +# function to separate regular/extra results: +filterOutByTerm_all = function(allResults,splits,ps,cors,filterTerm = "rG:0.50") { +subsetResults = allResults +ps_subset = ps +cors_subset = cors +splits_subset = splits +indices_kept = c() +i=1 +for (i in 1:nrow(subsetResults) ) { +rowname = rownames(subsetResults[i,]) +# check if rowname includes extra/regular, +if ( grepl( filterTerm, rowname, fixed = TRUE) ) { +# if yes, we replace it with nothing, and keep it +rowname_new = gsub(filterTerm, "",rowname) #remove underscores +rownames(subsetResults)[rownames(subsetResults) == rowname] <- rowname_new +indices_kept = c(indices_kept, i) +} # discard it otherwise +} +subsetResults = subsetResults[indices_kept,] +ps_subset = ps_subset[indices_kept] +cors_subset = cors_subset[indices_kept] +splits_subset = splits_subset[indices_kept] +results = NULL +results$subsetResults = subsetResults +results$ps_subset = ps_subset +results$cors_subset = cors_subset +results$splits_subset = splits_subset +return(results) +} +) +# function to separate regular/extra results: +filterOutByTerm_all = function(allResults,splits,ps,cors,filterTerm = "rG:0.50") { +subsetResults = allResults +ps_subset = ps +cors_subset = cors +splits_subset = splits +indices_kept = c() +i=1 +for (i in 1:nrow(subsetResults) ) { +rowname = rownames(subsetResults[i,]) +# check if rowname includes extra/regular, +if ( grepl( filterTerm, rowname, fixed = TRUE) ) { +# if yes, we replace it with nothing, and keep it +rowname_new = gsub(filterTerm, "",rowname) #remove underscores +rownames(subsetResults)[rownames(subsetResults) == rowname] <- rowname_new +indices_kept = c(indices_kept, i) +} # discard it otherwise +} +subsetResults = subsetResults[indices_kept,] +ps_subset = ps_subset[indices_kept] +cors_subset = cors_subset[indices_kept] +splits_subset = splits_subset[indices_kept] +results = NULL +results$subsetResults = subsetResults +results$ps_subset = ps_subset +results$cors_subset = cors_subset +results$splits_subset = splits_subset +return(results) +} +# Filter to keep the main interesting scenarios, rG 0.5, regular, full +results_RG05 = filterOutByTerm_all(allResults,splits,ps,cors,filterTerm = "rG:0.50") +results_regular = filterOutByTerm_all(results_RG05$subsetResults,results_RG05$splits_subset,results_RG05$ps_subset,results_RG05$cors_subset,filterTerm = "regular") +results_full = filterOutByTerm_all(results_regular$subsetResults,results_regular$splits_subset,results_regular$ps_subset,results_regular$cors_subset,filterTerm = "size:full") +subsetResults = results_full$subsetResults +subset_DF <- data.frame( results_full$ps_subset, results_full$cors_subset,results_full$splits_subset,row.names=rownames(subsetResults)) # ,row.names=rownames(subsetResults) # need to match the rownames to the data for the annotation to work +colnames(subset_DF) <- c("p","cor","split") # this is the header for the annotation +#plotName = "shaPRS - rG:0.5, n:full, no extra" # no plotname for final publication +plotName ="" +pheatmap(subsetResults, main = plotName , filename=paste(outputLoc,"_subset.png", sep="" ),annotation_row=subset_DF, show_rownames = F, height=5, width=5 , cex=1 ,cluster_rows=F, cluster_cols=F) +# Filter to keep the main interesting scenarios, rG 0.5, regular, full +results_RG05 = filterOutByTerm_all(allResults,splits,ps,cors,filterTerm = "rG:0.50") +results_regular = filterOutByTerm_all(results_RG05$subsetResults,results_RG05$splits_subset,results_RG05$ps_subset,results_RG05$cors_subset,filterTerm = "regular") +results_full = filterOutByTerm_all(results_regular$subsetResults,results_regular$splits_subset,results_regular$ps_subset,results_regular$cors_subset,filterTerm = "size:full") +subsetResults = results_full$subsetResults +subset_DF <- data.frame( results_full$ps_subset, results_full$cors_subset,results_full$splits_subset,row.names=rownames(subsetResults)) # ,row.names=rownames(subsetResults) # need to match the rownames to the data for the annotation to work +colnames(subset_DF) <- c("p","cor","split") # this is the header for the annotation +plotName ="" +### +# Filter to keep the main interesting scenarios, rG 0.5, extra, full +results_RG05 = filterOutByTerm_all(allResults,splits,ps,cors,filterTerm = "rG:0.50") +results_regular = filterOutByTerm_all(results_RG05$subsetResults,results_RG05$splits_subset,results_RG05$ps_subset,results_RG05$cors_subset,filterTerm = "extra") +results_full = filterOutByTerm_all(results_regular$subsetResults,results_regular$splits_subset,results_regular$ps_subset,results_regular$cors_subset,filterTerm = "size:full") +subsetResults_extra = results_full$subsetResults +subset_DF_extra <- data.frame( results_full$ps_subset, results_full$cors_subset,results_full$splits_subset,row.names=rownames(subsetResults_extra)) # ,row.names=rownames(subsetResults_extra) # need to match the rownames to the data for the annotation to work +colnames(subset_DF_extra) <- c("p","cor","split") # this is the header for the annotation +#plotName = "shaPRS - rG:0.5, n:full, no extra" # no plotname for final publication +# make pheatmap on the same colour scale: +Breaks <- seq(min(c(subsetResults, subsetResults_extra)), max(c(subsetResults, subsetResults_extra)), length = 100) +# make pheatmap on the same colour scale: +Breaks <- seq(min(subsetResults, subsetResults_extra), max(subsetResults, subsetResults_extra), length = 100) +Breaks +paste(outputLoc,"_subset.png", sep="" ) +pheatmap(subsetResults, breaks = Breaks, main = plotName , filename=paste(outputLoc,"_subset.png", sep="" ),annotation_row=subset_DF, show_rownames = F, height=5, width=5 , cex=1 ,cluster_rows=F, cluster_cols=F) +pheatmap(subsetResults_extra, breaks = Breaks, main = plotName , filename=paste(outputLoc,"_subset_extra.png", sep="" ),annotation_row=subset_DF_extra, show_rownames = F, height=5, width=5 , cex=1 ,cluster_rows=F, cluster_cols=F) +args=vector() +args =c(args,"#causals_1000_rG_0.1_A50_B50_size_half") +args = c(args,"0.1") +args = c(args,"C:/softwares/Cluster/0shaPRS/debug/#causals_1000_rG_0.1_A50_B50_size_half") +args = c(args,"C:/softwares/Cluster/0shaPRS/debug/1000/10/0.1_1.0/A50_B50/size_half/") +args = c(args,"0.1") +args = c(args,"1.0") +args = c(args,"C:/softwares/Cluster/0shaPRS/debug/1000/10/0.55_0.1818182/A50_B50/size_half/") +args = c(args,"0.55") +args = c(args,"0.1818182") +args = c(args, "C:/softwares/Cluster/0shaPRS/debug/1000/10/1.0_0.1/A50_B50/size_half/") +args = c(args,"1.0") +args = c(args,"0.1") +limitsEnabled = F +# load input files for each method +combined= NULL +subpheno= NULL +shaPRS= NULL +SMTPred= NULL +xlabels=vector() +for(i in seq(from=4, to=length(args), by=4)){ # 4 as we also add the 'regular' +baseLoc=args[i] +print(paste0("baseLoc is: ", baseLoc)) +current_combined = read.table(paste0(baseLoc,"combined") ,header=F) +current_subpheno = read.table(paste0(baseLoc,"subpheno") ,header=F) +current_shaPRS = read.table(paste0(baseLoc,"shaPRS_meta") ,header=F) +current_SMTPred = read.table(paste0(baseLoc,"SMTPred") ,header=F) +# replace NAs with col mean +current_combined[is.na(current_combined[,1]), 1] <- mean(current_combined[,1], na.rm = TRUE) +current_subpheno[is.na(current_subpheno[,1]), 1] <- mean(current_subpheno[,1], na.rm = TRUE) +current_shaPRS[is.na(current_shaPRS[,1]), 1] <- mean(current_shaPRS[,1], na.rm = TRUE) +current_SMTPred[is.na(current_SMTPred[,1]), 1] <- mean(current_SMTPred[,1], na.rm = TRUE) +if (is.null(combined)) { +combined= current_combined +subpheno= current_subpheno +shaPRS= current_shaPRS +SMTPred= current_SMTPred +} else { +combined= cbind( combined,current_combined ) +subpheno= cbind( subpheno, current_subpheno) +shaPRS= cbind(shaPRS, current_shaPRS) +SMTPred= cbind( SMTPred, current_SMTPred) +} +p_current = round(as.numeric(args[(i+1)]),2) +shared_corr = round(as.numeric(args[(i+2)]),2) +print(paste0("p_current: ",p_current, " / shared_corr: ", shared_corr, " | baseLoc: ", baseLoc)) +xlabels = c(xlabels, paste0("p:",p_current,"/r:",shared_corr) ) +} +?plot +library(qvalue) +?qvalue_truncp +?qvalue::qvalue_truncp +?qvalue +inputDataLoc="C:/0Datasets/shaPRS/DEL/EUR_JAP_T2D_SE_meta" +blendFactorsLoc="C:/0Datasets/shaPRS/DEL/EUR_JAP_T2D_lFDR_meta_SNP_lFDR" +outputLoc="C:/0Datasets/shaPRS/DEL/QvalManhattan" +B12Loc = "C:/0Datasets/shaPRS/DEL/EUR_JAP_T2D_sumstats_meta" +plotTitle="Uga" +# 1. load data +inputData= read.table(inputDataLoc, header = T) +blendFactors= read.table(blendFactorsLoc, header = T) +B12= read.table(B12Loc, header = T) +inputData_blendFactors = merge(inputData,blendFactors, by ="SNP") # merge to make sure they are aligned +B12_blendFactors = merge(B12,blendFactors, by ="SNP") # merge to make sure they are aligned +# MANHATTAN PLOT +inputData_blendFactors$P=inputData_blendFactors$Qval # add the adjusted Q vals as 'P', as that is col I would be plotting next +lfdr_2_blending = 1-inputData_blendFactors$lFDR +base_colour1 = 0.20 +base_colour2 = 0.20 +manhattanBaseColours = c(rgb(0,base_colour2,0,1),rgb(0,0,base_colour1,1) ) +allIndices = inputData_blendFactors$BP +# need to offset the SNP BP indices, by the previous number of indices in all previous chromosomes +inputData_blendFactors$Offsets = 0 +for (i in 1:21) { # we always set the next offset, so we dont loop til last Chrom +message(i) +CHR_SNPs = inputData_blendFactors[inputData_blendFactors$CHR == i,] +maxBPCurrentChrom = max(CHR_SNPs$BP) +currentOffset = CHR_SNPs$Offsets[1] +nextOffset = currentOffset + maxBPCurrentChrom +inputData_blendFactors[inputData_blendFactors$CHR == (i+1),9] = nextOffset +} +hist(B12_blendFactors$lFDR, probability = T, col ="red", xlab = "lFDR", main ="") +plot(B12_blendFactors$lFDR, B12_blendFactors$b, col ="red", xlab = "lFDR", ylab = "SNP coef", main ="") +# get distribution +library(scales) +plot(B12_blendFactors$lFDR[1:5000], B12_blendFactors$b[1:5000], col =alpha("red", 0.4), xlab = "lFDR", ylab = "SNP coef", main ="") +plot(B12_blendFactors$lFDR[1:5000], B12_blendFactors$b[1:5000], col =alpha("red", 0.3), xlab = "lFDR", ylab = "SNP coef", main ="") +baseLoc="C:/0Datasets/ukbb/fis/" +phenoLoc=paste0(baseLoc, "pheno") +covarsLoc=paste0(baseLoc, "covariates") +pheno=read.table(phenoLoc ,header=F) +View(pheno) +covars=read.table(covarsLoc ,header=T) +View(covars) +men_index = which(covars$SEX =="M") +female_pheno = pheno[female_index] +female_index = which(covars$SEX =="F") +male_pheno = pheno[men_index] +men_index = which(covars$SEX =="M") +female_index = which(covars$SEX =="F") +female_pheno = pheno[female_index] +male_pheno = pheno[men_index] +men_index +female_pheno = pheno$V1[female_index] +male_pheno = pheno$V1[men_index] +mean(female_pheno) +mean(male_pheno) # 5.788613 +t.test(male_pheno,female_pheno) +var(female_pheno) +var(male_pheno) # +percDifference = function (data1, data2) { +mean1 = mean(data1) +mean2 = mean(data2) +percDiff = round( (mean1 - mean2) / ( (mean1 + mean2)/2 ) * 100) +return(percDiff) +} +percDifference = function (data1, data2) { +percDiff = round( (data1 - data2) / ( (data1 + data2)/2 ) * 100) +return(percDiff) +} +percDifference( mean(male_pheno), mean(male_pheno) ) +percDifference( mean(male_pheno), mean(female_pheno) ) +female_townsend = covars$TOWNSEND[female_index] +male_townsend = covars$TOWNSEND[men_index] +mean(female_townsend) +mean(male_townsend) # -1.655731 +var(female_townsend) +var(male_townsend) +t.test(male_townsend, female_townsend) +percDifference( var(male_pheno), var(female_pheno) ) # FIS: 4 +baseLoc="C:/0Datasets/ukbb/height/" +phenoLoc=paste0(baseLoc, "pheno") +covarsLoc=paste0(baseLoc, "covariates") +pheno=read.table(phenoLoc ,header=F) +covars=read.table(covarsLoc ,header=T) +men_index = which(covars$SEX =="M") +female_index = which(covars$SEX =="F") +female_pheno = pheno$V1[female_index] +male_pheno = pheno$V1[men_index] +mean(female_pheno) # FIS: 5.788613 +mean(male_pheno) # FIS: 5.995717 +percDifference( mean(male_pheno), mean(female_pheno) ) # FIS: 4 +t.test(male_pheno,female_pheno) # t = 22.523, df = 184654, p-value < 2.2e-16 +var(female_pheno) # FIS: 3.778955 +var(male_pheno) # FIS: 4.301227 +percDifference( var(male_pheno), var(female_pheno) ) # FIS: 13 +baseLoc="C:/0Datasets/ukbb/bmi/" +phenoLoc=paste0(baseLoc, "pheno") +covarsLoc=paste0(baseLoc, "covariates") +pheno=read.table(phenoLoc ,header=F) +covars=read.table(covarsLoc ,header=T) +men_index = which(covars$SEX =="M") +female_index = which(covars$SEX =="F") +female_pheno = pheno$V1[female_index] +male_pheno = pheno$V1[men_index] +mean(female_pheno) # FIS: 5.788613 # 162.6658 +mean(male_pheno) # FIS: 5.995717 # 175.9021 +percDifference( mean(male_pheno), mean(female_pheno) ) # FIS: 4, Height: 8 +t.test(male_pheno,female_pheno) # FIS/Height: p-value < 2.2e-16 +var(female_pheno) # FIS: 3.778955, Height: 38.63668 +var(male_pheno) # FIS: 4.301227, 45.66119 +percDifference( var(male_pheno), var(female_pheno) ) # FIS: 13, Height: 17 +var(female_townsend) # 7.647166 +var(male_townsend) # 7.98267 # variance is greater for men +mean(female_townsend) # -1.655731 +# Compare male female townsends +female_townsend = covars$TOWNSEND[female_index] +male_townsend = covars$TOWNSEND[men_index] +mean(female_townsend) # -1.655731 +mean(male_townsend) # -1.658059 +t.test(male_townsend, female_townsend) # p-value = 0.8553 +var(female_townsend) # 7.647166 +var(male_townsend) # 7.98267 # variance is greater for men +hist(male_pheno) +hist(female_pheno) +hist(male_pheno) +hist(female_pheno) +writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron") +Sys.which("make") +library("devtools") +library(roxygen2) +# 1) set working Dir +#setwd("C:/Users/mk23/GoogleDrive_phd/PHD/!Publications/shaPRS/R_package_303021/shaPRS") +setwd("C:/Users/mk23/GoogleDrive_Cam/0Publications/shaPRS/R_package/shaPRS") +#install_github("jdstorey/qvalue") +#install_github("mkelcb/shaprs") +usethis::use_package("qvalue") +usethis::use_package("Matrix") +usethis::use_package("compiler") +document() +check(cran=TRUE) +document() +check(cran=TRUE) +document() +check(cran=TRUE) +document() +check(cran=TRUE) +# 1. load phenos +subphenoLoc='inst/extdata/phenoA_sumstats' +CombinedPhenoLoc='inst/extdata/Combined_sumstats' +blendFactorLoc='inst/extdata/myOutput_SNP_lFDR' +subpheno= read.table(subphenoLoc, header = T) +CombinedPheno= read.table(CombinedPhenoLoc, header = T) +blendingFactors= read.table(blendFactorLoc, header = F) +# 1. load phenos +subphenoLoc='inst/extdata/phenoA_sumstats' +subpheno_otherLoc='inst/extdata/phenoB_sumstats' +blendFactorLoc='inst/extdata/myOutput_SNP_lFDR' +subpheno= read.table(subphenoLoc, header = T) +subpheno_other= read.table(subpheno_otherLoc, header = T) +blendingFactors= read.table(blendFactorLoc, header = F) +View(subpheno) +View(subpheno_other) +View(subpheno) +View(blendingFactors) +blendingFactors= read.table(blendFactorLoc, header = T) +View(blendingFactors) +# 1. Merge first the 3 tables together by RSid, so they are always aligned, x = subpheno and y = CombinedPheno ( ensure that when we check allele alignment we are comparing the same SNPs +subpheno_otherPheno = merge(subpheno,subpheno_other,by.x = "SNP",by.y = "SNP") +subpheno_otherPheno_blending = merge(subpheno_otherPheno,blendingFactors, by.x = "SNP", by.y = "SNP") +document() +check(cran=TRUE) +# Build package +build() +# Test install +install() +#install_github("jdstorey/qvalue") +install_github("mkelcb/shaprs") +library("devtools") +# Test install +install() +library("shaPRS") +# II) tests +?shaPRS_adjust +inputDataLoc <- system.file("extdata", "shapersToydata.txt", package = "shaPRS") +inputData= read.table(inputDataLoc, header = T) +results = shaPRS_adjust(inputData, thresholds=c(0.5,0.99)) +# Test LD ref blend +?LDRefBlend +sumstatsData = readRDS(file = system.file("extdata", "sumstatsData_toy.rds", package = "shaPRS") ) +# read SNP map files ( same toy data for the example) +pop1_map_rds = readRDS(file = system.file("extdata", "my_data.rds", package = "shaPRS") ) +pop2_map_rds = readRDS(file = system.file("extdata", "my_data2.rds", package = "shaPRS") ) +# use chrom 21 as an example +chromNum=21 +# load the two chromosomes from each population ( same toy data for the example) +pop1LDmatrix = readRDS(file = system.file("extdata", "LDref.rds", package = "shaPRS") ) +pop2LDmatrix = readRDS(file = system.file("extdata", "LDref2.rds", package = "shaPRS") ) +# 2. grab the RSids from the map for the SNPS on this chrom, +# each LD mat has a potentiall different subset of SNPs +# this is guaranteed to be the same order as the pop1LDmatrix +pop1_chrom_SNPs = pop1_map_rds[ which(pop1_map_rds$chr == chromNum),] +# this is guaranteed to be the same order as the pop2LDmatrix +pop2_chrom_SNPs = pop2_map_rds[ which(pop2_map_rds$chr == chromNum),] +pop1_chrom_SNPs$pop1_id = 1:nrow(pop1_chrom_SNPs) +pop2_chrom_SNPs$pop2_id = 1:nrow(pop2_chrom_SNPs) +# intersect the 2 SNP lists so that we only use the ones common to both LD matrices by merging them +chrom_SNPs_df <- merge(pop1_chrom_SNPs,pop2_chrom_SNPs, by = "rsid") +# align the two LD matrices +chrom_SNPs_df = alignStrands(chrom_SNPs_df, A1.x ="a1.x", A2.x ="a0.x", A1.y ="a1.y", A2.y ="a0.y") +# align the summary for phe A and B +sumstatsData = alignStrands(sumstatsData) +# subset sumstats data to the same chrom +sumstatsData = sumstatsData[which(sumstatsData$CHR == chromNum ),] +# merge sumstats with common LD map data +sumstatsData <- merge(chrom_SNPs_df,sumstatsData, by.x="rsid", by.y = "SNP") +# remove duplicates +sumstatsData = sumstatsData[ !duplicated(sumstatsData$rsid) ,] +# use the effect alleles for the sumstats data with the effect allele of the LD mat +# as we are aligning the LD mats against each other, not against the summary stats +# we only use the lFDR /SE from the sumstats, +# which are directionless, so those dont need to be aligned +sumstatsData$A1.x =sumstatsData$a1.x +sumstatsData$A1.y =sumstatsData$a1.y +# make sure the sumstats is ordered the same way as the LD matrix: +sumstatsData = sumstatsData[order(sumstatsData$pop1_id), ] +# subset the LD matrices to the SNPs we actualy have +pop1LDmatrix = pop1LDmatrix[sumstatsData$pop1_id,sumstatsData$pop1_id] +pop2LDmatrix = pop2LDmatrix[sumstatsData$pop2_id,sumstatsData$pop2_id] +# generate the blended LD matrix +cormat = LDRefBlend(pop1LDmatrix,pop2LDmatrix, sumstatsData) +View(cormat) +uninstall() +# II) tests +?shaPRS_adjust +results$lFDRTable +# Test installing from remote +install_github("mkelcb/shaprs") +library("shaPRS") +# Test blend +?shaPRS_blend_overlap +# Test blend +?shaPRS_blend_overlap +# Test blend +?shaPRS_blend_overlap +subphenoLoc <- system.file("extdata", "phenoA_sumstats", package = "shaPRS") +subpheno_otherLoc <- system.file("extdata", "phenoB_sumstats", package = "shaPRS") +blendFactorLoc <- system.file("extdata", "myOutput_SNP_lFDR", package = "shaPRS") +subpheno= read.table(subphenoLoc, header = TRUE) +subpheno_other= read.table(subpheno_otherLoc, header = TRUE) +blendingFactors= read.table(blendFactorLoc, header = TRUE) +blendedSumstats = shaPRS_blend_overlap(subpheno, subpheno_other, blendingFactors) +View(blendedSumstats) +typeof(cormat) +map_rds_new = pop1_map_rds[which(pop1_map_rds$chr == chromNum),] +map_rds_new2 = map_rds_new[which(map_rds_new$rsid %in% sumstatsData$rsid),] # match the first to the second +View(map_rds_new2) +document() +check(cran=TRUE) +# Build package +build() +# Test installing from remote +install_github("mkelcb/shaprs") +uninstall() +# Test installing from remote +install_github("mkelcb/shaprs") +library("shaPRS") +# Test LD ref blend +?LDRefBlend +LDRefBlend +# Test LD ref blend +?LDRefBlend +uninstall()