Skip to content

Commit

Permalink
version 1.0.7
Browse files Browse the repository at this point in the history
  • Loading branch information
leeshawn authored and gaborcsardi committed Apr 18, 2015
1 parent 0b5fdd4 commit 31548dc
Show file tree
Hide file tree
Showing 33 changed files with 967 additions and 653 deletions.
12 changes: 6 additions & 6 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
Package: SKAT
Type: Package
Title: SNP-set (Sequence) Kernel Association Test
Version: 1.0.1
Date: 2014-11-02
Title: SNP-Set (Sequence) Kernel Association Test
Version: 1.0.7
Date: 2015-04-18
Author: Seunggeun (Shawn) Lee, with contributions from Larisa Miropolsky and Michael Wu
Maintainer: Seunggeun (Shawn) Lee <leeshawn@umich.edu>
Description: SKAT is a kernel regression based association test between a set of single nucleotide polymorphism (SNP) and dichotomous or quantitative phenotypes. SKAT aggregates individual score test statistics of SNPs in a SNP set and efficiently computes SNP-set level p-values, while adjusting for covariates, such as principal components to account for population stratification.
Description: Functions for kernel regression based association tests including Burden test, SKAT and SKAT-O. These methods aggregate individual SNP score statistics in a SNP set and efficiently computes SNP-set level p-values, while adjusting for covariates.
License: GPL (>= 2)
Depends: R (>= 2.13.0)
Packaged: 2014-11-04 02:18:50 UTC; sglee
Packaged: 2015-04-18 16:57:51 UTC; sglee
NeedsCompilation: yes
Repository: CRAN
Date/Publication: 2014-11-04 20:04:03
Date/Publication: 2015-04-19 07:39:05
59 changes: 31 additions & 28 deletions MD5
Original file line number Diff line number Diff line change
@@ -1,42 +1,44 @@
15528c30b945a6e3b473927503056b69 *DESCRIPTION
c50db158dc19bf5b49adf2c762af7ed3 *NAMESPACE
29a707538a18fc6d73ad21844962978d *DESCRIPTION
28ca4bf5b00589f0b9273921b2f5ec93 *NAMESPACE
c44a76349594ace62702f5859d959567 *R/Binary_Etc.R
122c00dccddd7323cc1f97d8920a3694 *R/Binary_Function.R
35ea72c5a991350c72cd171cbf19197a *R/Binary_Function.R
8470a09f109264da7e6d77d4c8b89f97 *R/Binary_Function1.R
785fcaf06fcb13e355eea19e3354a034 *R/Binary_MAIN.R
09fcb90861847c279379e40b44f01fd2 *R/Binary_MAIN_ExactBin.R
c44a14b33b4dbd2c99c961f10baaf111 *R/Binary_MAIN.R
dee9a4086ea4bd184214ca00100470ad *R/Binary_MAIN_ExactBin.R
aa705c59c7cd0ff31dacf366a250b803 *R/Binary_Result_Calibration.R
3bf018e03e14b45f76e36f74eac2b5c7 *R/Binary_single.b.firth.R
cc6e7fe645cb84c76fceffd6f11e8b6f *R/Function.R
32b27ecd593ccf947c5b4ee10b7d2a70 *R/Function_Power_Resampling.R
98e647c6863f5f0d66e74694caf0ea31 *R/Function.R
048612b41b8efe9ea34d8cd9d8d2553c *R/Function_Power_Resampling.R
23a31a5dac940b7a217be418ba78401e *R/Joint_CommonRare.R
c641553ad9a5ea32916f087e7c2df25b *R/KMTest_Linear.R
3c93c2ab6405a64e7ce9d324890dd3de *R/KMTest_Logistic.R
cdf84c00dbd65dca4d8b280f2e94f59f *R/KMTest_Logistic_VarMatching.R
f09679c113a09080d20502b217466495 *R/KMTest_Optimal.R
185c9f95f9b6dbe980d623dc65abaec5 *R/KMTest_Optimal_VarMatching.R
a270d1f8802d88edb99d9e9ed343d164 *R/Kernel.R
9d71e777940a97b4215101cef8beac5a *R/MK_SSD_All_Output.R
b91ea7e4d4e6365c87cba1003e89e447 *R/Main.R
4a9b4858c2f3b6d5134370869b321bf2 *R/Main.R
2d410756de51c03883decb45b30c7342 *R/Main_SSD.R
10a9cccfad5e4054a9833042646e6fa1 *R/Null_Model.R
99d3d304000ec9fd1ce2f5637964add6 *R/Null_Model.R
b32e19496b2aa6411253eb0b6ec77aeb *R/Power.R
d2e084f5648696600b31e629ffe01786 *R/Power_Corr.R
192e270bf689a25409a2b16e5aaaab5e *R/SKAT_CompQuadForm.R
ca4a79fd1ac2f17300c5ccd285b250da *R/SKAT_EMMAX.R
c641553ad9a5ea32916f087e7c2df25b *R/SKAT_Linear.R
3c93c2ab6405a64e7ce9d324890dd3de *R/SKAT_Logistic.R
7e81c6dccd195469f146648b9a031c48 *R/SKAT_Logistic_VarMatching.R
f09679c113a09080d20502b217466495 *R/SKAT_Optimal.R
185c9f95f9b6dbe980d623dc65abaec5 *R/SKAT_Optimal_VarMatching.R
18c12e39dbb4dfc20f02283d09397978 *R/SSD.R
f0df7e1420445a0b21b8260a39aa972e *R/X_Chrom.R
c937bc02df40b8fe18c58197f251300e *build/vignette.rds
285c25ba69c3690a93d07dd71fda77ea *data/SKAT.example.ChrX.rda
304b5e62e99bd735da2396143b122637 *data/SKAT.example.rda
cc8b39a41c61bf6aad8279c4f4f7609f *data/SKAT.fam.example.rda
f6bed7fd9e1da8c837afcca0d4fe51ae *data/SKAT.haplotypes.rda
439f7b3641774444b4ce77e15d0ed289 *data/SKATBinary.example.rda
0292c07ae4064ca8165da5c135c9a0ff *data/datalist
6daf2405b55d75521ac6cdbfd13f441d *data/datalist
24fa647133debc67037d5245ecbf99a3 *inst/doc/SKAT.R
0784589ce0a1b58d75230b421c957abe *inst/doc/SKAT.Rnw
28e8aac5194f779be8f1716fbed33854 *inst/doc/SKAT.pdf
33848d90350892205691cacef40f5425 *inst/doc/SKAT.pdf
70bfc72058b01b3dca52f5e99eec5b04 *man/Close_SSD.rd
ef8efdfdb112a611735c245b08112565 *man/Generate_SSD_SetID.rd
82a2a73cf7310fab05b1fbe60b5f9279 *man/Get_EffectiveNumberTest.rd
1f4486a259be4fdcb8572025cbbb2819 *man/Get_EffectiveNumberTest.rd
c43c965ee48e06c1a215eb198335f40b *man/Get_Genotypes_SSD.rd
7fced191fd39bb4953a544870383b350 *man/Get_Logistic_Weights.rd
3e8e17080226e19937b6cf70be38daa8 *man/Get_RequiredSampleSize.rd
Expand All @@ -49,16 +51,18 @@ c061b9705b98a1d45b5f9849e89c581e *man/QQPlot_Adj.rd
33ab88a89e128d30cb2bcfcb37f1f5db *man/Read_SNP_WeightFile.rd
781ea8300632c80e1a60f04c62258805 *man/Resampling_FWER.rd
0bfb6cd5890044876f515f9f2c1820b5 *man/SKAT.SSD.All.rd
523502b481b8e5d1a89df192f080fcb5 *man/SKAT.example.ChrX.rd
8d815f91cd850341802b9ecc334a1569 *man/SKAT.example.rd
4c665d009528437a28381f4d2c208c53 *man/SKAT.fam.example.rd
f7808d1fdb9642789b220ca2aa717bae *man/SKAT.haplotypes.rd
3e9cbb4b77d6e967b8c76386a86dc0fb *man/SKAT.rd
3e7305ff691a66f8422af861e4489f69 *man/SKATBinary.example.rd
bdc61dba532bac1bdb319a441221faf4 *man/SKATBinary.rd
73510d4451b38cf99b54250cd9165c4e *man/SKATBinary_Single.rd
9c0b61ac3c927f3cec88cd1a1cb0548f *man/SKAT_ChrX.rd
6d3a076c9fd6b609aca6a3b2b1a6b2ae *man/SKAT_CommonRare.rd
fed386c21eff789858550bc16f116115 *man/SKAT_NULL_emmaX.rd
9a0037065ea9e50ddbd6b8a9231ddda3 *man/SKAT_Null_Model.rd
9fed53f58ad8bf4f23b9681718e3e0a3 *man/SKAT_Null_Model.rd
58aa16b8130d2a1fd34b9625e22dc9d3 *man/SKAT_Null_Model_MomentAdjust.rd
6f9ef34a9a63515746bbd427d6816666 *man/SSD_FILE_OPEN.rd
307bc698e7079d768fc29c97d3198bd6 *src/Binary_ComputeExact.cpp
Expand All @@ -70,25 +74,24 @@ ddf907473f0e90a91c43f404f13040e0 *src/Binary_ComputeExactSKATO.cpp
6c43997ba2c7b07b7b91bc571c14e687 *src/Binary_HyperGeo.h
a815f9bd5aca02a2540754d019b99c23 *src/Binary_Permu_SKAT.cpp
381085bdcd6c68edc569947ed7c0d914 *src/Binary_Permu_SKAT.h
fe2c866d0b53979dfbe8f37da6fad9c8 *src/Binary_global.cpp
9ca34afa3125789d36404222b323fd2c *src/Binary_global.cpp
7fdec286841854360ac2f77d12d59620 *src/Binary_global.h
460e5e3c45c795db72dba56aa88c41f7 *src/Binary_resampling.c
c026767413f7c44c9eb102f2b06adc6f *src/DArray.h
78388b4b38856b39ea9b2fe09ec84369 *src/NPsort.cpp
562431ac9e3186630ba12aa47abf580f *src/NPsort.h
738c83d5696bc74457128b8e219e89fa *src/bed_reader.cpp
947d99c46efedcb27f4fb034ca117f0e *src/bed_reader.h
eff07e87bdbbbb8fa621f68f976d187f *src/NPsort.h
bd13313c3a83994626fe11883afa28eb *src/bed_reader.cpp
956c5d9e7833c0b67925fb8f8f0ad4c3 *src/bed_reader.h
40e3d557b770197e0e877d6e8076f651 *src/error_messages.h
99314358a051a70b04d8acca23b35282 *src/interface.cpp
403ed35db61fdb903d448844b64cc7bc *src/interface_to_R.cpp
63476d659b187d571d62dfbd481c937f *src/interface_to_R.cpp
38acabcdedb64802ae8dc45053fba2e1 *src/interface_to_R.h
b39ebcd0aeca75723efa44c21cfb5e0e *src/kernel_func.c
4686bf1cbe3c58c5f6bca2e77d94f653 *src/mwo_reader.cpp
7cb7a75b5ce6c1e2d668bb09f21dfa31 *src/mwo_reader.h
2e0a3aaa77d51650a04f4b276d205f0a *src/mwo_reader.cpp
2fbadfde74a995d1a5e24b77b6303153 *src/mwo_reader.h
55329168ddfec3c1bae4a17c33b8373d *src/qfc.cpp
f69c48729819a4bff8cb8018f42b0f4b *src/set_bed_merge_main.cpp
7f1c3fbaf644ae08bca4a5078e30a014 *src/setid_bim_index.cpp
f36e0faf38f1137e3a29df109c942a26 *src/setid_bim_index.h
eaec96db18ae3b860c39632008af438b *src/setid_bim_index.cpp
1b91ff8234475b148c85e765abb2a237 *src/setid_bim_index.h
cff473f152929cc171a7235ce40dac8c *vignettes/Example1.Cov
ba60f2917612cca53407a1933d988f39 *vignettes/Example1.SetID
58f150ca5ebc97ec648976ebdec87802 *vignettes/Example1.bed
Expand Down
3 changes: 2 additions & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ export(SKAT, Get_Logistic_Weights_MAF, Get_Logistic_Weights,
SKAT_CommonRare.SSD.OneSet, SKAT_CommonRare.SSD.OneSet_SetIndex, SKAT_CommonRare.SSD.All,
SKAT_NULL_emmaX,
SKATBinary, SKATBinary_Single,Get_EffectiveNumberTest,QQPlot_Adj,
SKATBinary.SSD.OneSet, SKATBinary.SSD.OneSet_SetIndex,SKATBinary.SSD.All )
SKATBinary.SSD.OneSet, SKATBinary.SSD.OneSet_SetIndex,SKATBinary.SSD.All,
SKAT_Null_Model_ChrX, SKAT_ChrX)

# variables
#export(SSD_FILE_OPEN.isOpen,SSD_FILE_OPEN.FileName)
Expand Down
45 changes: 36 additions & 9 deletions R/Binary_Function.R
Original file line number Diff line number Diff line change
Expand Up @@ -110,21 +110,35 @@ SKATExactBin.GetQ<-function(Z, res, idx, res.out=NULL){
}


SKATExactBin.ComputeProb_Group = function(idx, pi1, n, ncase){
SKATExactBin.ComputeProb_Group = function(idx, pi1, n, ncase, type.group=1){


#cat("test_type:", test_type, "\n")
k<-length(idx)

# default : adaptively set groups
ngroup1=10
if(k > 500){
ngroup1=2
} else if (k > 100){
ngroup1=5
} else if (k > 50){
ngroup1=6
if(type.group==1){
if(k > 400){
ngroup1=2
} else if (k > 100){
ngroup1=5
} else if (k > 50){
ngroup1=6

}
} else {
if(k > 400){
ngroup1=2
} else if(k > 300){
ngroup1=6
} else if (k > 100){
ngroup1=8
} else if (k > 50){
ngroup1=10
}
}


if(length(idx)==0){
return(list(pval=1, k=0, is.return=TRUE))
Expand Down Expand Up @@ -166,6 +180,11 @@ SKATExactBin.ComputeProb_Group = function(idx, pi1, n, ncase){
# compute each prob
# RGetProb(int* k, int* ngroup, int* ncase, int * group, double * weight, double * prob)

#group1<<-group
#weight1<<-weight
#prob_k1<<-prob_k
#idx<<-idx; pi1<<-pi1; n<<-n; ncase<<-ncase

RE<-.C("RGetProb"
, as.integer(k), as.integer(length(group)), as.integer(ncase), as.integer(group)
, as.double(weight), as.double(prob_k));
Expand Down Expand Up @@ -197,7 +216,7 @@ Get_Total_K = function(k){
#
#
#
SKATExactBin.ComputProb_New<-function(idx, pi1, n, ncase, N.Resampling, ExactMax=1000, test_type=1){
SKATExactBin.ComputProb_New<-function(idx, pi1, n, ncase, N.Resampling, ExactMax=1000, test_type=1, type.group=1){

#idx<<-idx; pi1<<-pi1; n<<-n; ncase<<-ncase; N.Resampling<<-N.Resampling; ExactMax<<-ExactMax; test_type<<-test_type
#stop(1)
Expand All @@ -206,7 +225,12 @@ SKATExactBin.ComputProb_New<-function(idx, pi1, n, ncase, N.Resampling, ExactMax
k<-length(idx)
p1<-pi1[idx]

obj.prob_k =SKATExactBin.ComputeProb_Group(idx, pi1, n, ncase)
obj.prob_k =SKATExactBin.ComputeProb_Group(idx, pi1, n, ncase, type.group=type.group)

#temp1<-system.time({obj.prob_k =SKATExactBin.ComputeProb_Group(idx, pi1, n, ncase, type.group=type.group)})
#cat(temp1)


if(obj.prob_k$is.return){
return(obj.prob_k)
}
Expand Down Expand Up @@ -461,6 +485,9 @@ SKATExactBin_Check<-function(Z, obj, kernel = "linear.weighted", weights.beta=c(

Z1 = cbind(out.z$Z.test)
#Z2<<-Z1
#Z3<<-Z
#out.z<<-out.z
#id_include<<-obj.res$id_include
MAC= sum(Z1)
rsum<-rowSums(Z1)
idx<-which(rsum > 0)
Expand Down
43 changes: 38 additions & 5 deletions R/Binary_MAIN.R
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ seednum=100, epsilon=10^-6){
out.method<-SKAT_Check_Method(method,r.corr)
method= out.method$method
r.corr= out.method$r.corr

Is.Hybrid=FALSE
ExactMax=20000

Expand Down Expand Up @@ -89,6 +90,30 @@ seednum=100, epsilon=10^-6){
# MAC > m when hard call genotyping was used.
MAC1 = max(MAC, m)

# all individual have minor allele
# run SKAT
if(m == length(obj.res$id_include)){
re = SKAT(Z=Z, obj=obj, kernel = kernel, method=method, weights.beta=weights.beta, weights=weights,
impute.method=impute.method, r.corr=r.corr, is_check_genotype=is_check_genotype,
is_dosage = is_dosage, missing_cutoff=missing_cutoff, estimate_MAF=estimate_MAF)

re$method.bin=method.bin
if(class(obj) == "SKAT_NULL_Model_ADJ"){
re$method.bin="MA"
} else if(class(obj) == "SKAT_NULL_Model"){
re$method.bin="UA"
}

re$MAP = -1
re$MAC = MAC
re$m = m

SKATBinary_RestoreSeed(out.seed)

return(re)
}


if(method.bin == "Hybrid"){

if(MAC1 <=20){
Expand Down Expand Up @@ -117,14 +142,22 @@ seednum=100, epsilon=10^-6){
re$MAP = -1


} else if(method.bin == "MA" || method.bin == "QA"){
} else if(method.bin == "MA" || method.bin == "QA" || method.bin == "ER.R"){

re = SKATExactBin(Z=Z, obj=obj.res, kernel = kernel, method.bin=method.bin, weights.beta=weights.beta, weights=weights,
impute.method=impute.method, r.corr=r.corr, is_check_genotype=is_check_genotype,
is_dosage = is_dosage, missing_cutoff=missing_cutoff, estimate_MAF=estimate_MAF,
N.Resampling=N.Resampling, epsilon=epsilon)


# if re$p.value*1000 < re$p.value.noadj, and method.bin="MA"
# it is possible that this is due to the error
# Then run QA

#temp<-re$p.value*1000 - re$p.value.noadj

#if(re$method.bin=="MA" && temp < 0){

#}

} else if(method.bin == "ER" ){

Expand Down Expand Up @@ -153,7 +186,7 @@ seednum=100, epsilon=10^-6){
re = SKATExactBin.Adaptive(Z=Z, obj=obj.res, kernel = kernel, weights.beta=weights.beta, weights=weights,
impute.method=impute.method, r.corr=r.corr, is_check_genotype=is_check_genotype,
is_dosage = is_dosage, missing_cutoff=missing_cutoff, estimate_MAF=estimate_MAF,
N.Iter=50000, N.Resampling=N.Resampling, epsilon=epsilon)
N.Iter=10000, N.Resampling=N.Resampling, epsilon=epsilon)

if(!re$is.accurate && Is.Hybrid){
p.value.exact = re$p.value
Expand Down Expand Up @@ -327,14 +360,14 @@ SKATBinary.SSD.All = function(SSD.INFO, obj, ..., obj.SNPWeight=NULL){

if(obj.res$n.Resampling > 0){
Is.Resampling = TRUE
n.Resampling = obj$n.Resampling
n.Resampling = obj.res$n.Resampling
OUT.Pvalue.Resampling<-matrix(rep(0,n.Resampling*N.Set),ncol=n.Resampling)
}


for(i in 1:N.Set){
Is.Error<-TRUE
try1<-try(SKATBinary.SSD.OneSet_SetIndex(SSD.INFO, i, obj.res, ..., obj.SNPWeight=obj.SNPWeight) ,silent = TRUE)
try1<-try(SKATBinary.SSD.OneSet_SetIndex(SSD.INFO, i, obj, ..., obj.SNPWeight=obj.SNPWeight) ,silent = TRUE)
if(class(try1) == "try-error"){

err.msg<-geterrmessage()
Expand Down

0 comments on commit 31548dc

Please sign in to comment.