tests/testthat/test_MAGEE.R

test_that("cross-sectional gaussian", {
  skip_if_not_installed("SeqArray")
  skip_if_not_installed("SeqVarTools")
  gdsfile  <- system.file("extdata", "geno.gds",  package = "MAGEE")
  bgenfile <- system.file("extdata", "geno.bgen", package = "MAGEE")
  samplefile <- system.file("extdata", "geno.sample", package = "MAGEE")
  group.file <- system.file("extdata", "SetID.withweights.txt", package = "MAGEE")
  data(example)
  set.seed(123)
  pheno <- rbind(example$pheno, example$pheno[1:100, ])
  pheno$id <- 1:500
  pheno$disease[sample(1:500,20)] <- NA
  pheno$age[sample(1:500,20)] <- NA
  pheno$sex[sample(1:500,20)] <- NA
  pheno <- pheno[sample(1:500,450), ]
  pheno <- pheno[pheno$id <= 400, ]
  kins <- example$GRM
  
  ### single thread with kins
  obj1 <- glmmkin(trait ~ age + sex, data = pheno, kins = kins, id = "id", family = gaussian(link = "identity"))
  out1 <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out1_bgen <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(signif(range(out1$MV.pval)), signif(c(0.1223048, 0.9724113)))
  expect_equal(signif(range(out1$MF.pval)), signif(c(0.1898314, 0.9978167)))
  expect_equal(signif(range(out1$IV.pval)), signif(c(0.06457353, 0.97197688)))
  expect_equal(signif(range(out1$IF.pval)), signif(c(0.07154824, 0.98409911)))
  expect_equal(signif(range(out1$JV.pval)), signif(c(0.0461317, 0.9581358)))
  expect_equal(signif(range(out1$JF.pval)), signif(c(0.09825523, 0.99174298)))
  expect_equal(signif(range(out1$JD.pval)), signif(c(0.1060679, 0.9862423)))
  expect_equal(out1, out1_bgen)

  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)

  tmpout <- SMMAT(null.obj=obj1, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1$MV.pval, tmpout$S.pval)
  expect_equal(out1$MF.pval, tmpout$E.pval)

  ### single thread without kins
  obj2 <- glmmkin(trait ~ age + sex, data = pheno, kins = NULL, id = "id", family = gaussian(link = "identity"))
  out2 <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out2_bgen <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(signif(range(out2$MV.pval)), signif(c(0.1137967, 0.7420214)))
  expect_equal(signif(range(out2$MF.pval)), signif(c(0.1332550, 0.8844902)))
  expect_equal(signif(range(out2$IV.pval)), signif(c(0.07857723, 0.98642152)))
  expect_equal(signif(range(out2$IF.pval)), signif(c(0.1068216, 0.9959352)))
  expect_equal(signif(range(out2$JV.pval)), signif(c(0.08249361, 0.89005467)))
  expect_equal(signif(range(out2$JF.pval)), signif(c(0.1584977, 0.9820383)))
  expect_equal(signif(range(out2$JD.pval)), signif(c(0.1740379, 0.9845512)))
  expect_equal(out2, out2_bgen)
  
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)

  tmpout <- SMMAT(null.obj=obj2, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2$MV.pval, tmpout$S.pval)
  expect_equal(out2$MF.pval, tmpout$E.pval)
  
  ### multi-thread
  skip_on_cran()
  out1.tmp <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1.tmp)
  out1.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out1, out1.lowmem.tmp)
  out1_bgen.tmp <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1_bgen.tmp)
  out2.tmp <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2.tmp)
  out2.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out2, out2.lowmem.tmp)
  out2_bgen.tmp <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2_bgen.tmp)
  
  ### re-order id
  idx <- sample(nrow(pheno))
  pheno <- pheno[idx, ]
  obj1 <- glmmkin(trait ~ age + sex, data = pheno, kins = kins, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile,  group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  obj2 <- glmmkin(trait ~ age + sex, data = pheno, kins = NULL, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
  
  ### re-order id
  idx <- sample(nrow(kins))
  kins <- kins[idx, idx]
  obj1 <- glmmkin(trait ~ age + sex, data = pheno, kins = kins, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  obj2 <- glmmkin(trait ~ age + sex, data = pheno, kins = NULL, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
})

test_that("cross-sectional binomial", {
  skip_on_cran()
  skip_if_not_installed("SeqArray")
  skip_if_not_installed("SeqVarTools")
  gdsfile <- system.file("extdata", "geno.gds", package = "MAGEE")
  bgenfile <- system.file("extdata", "geno.bgen", package = "MAGEE")
  samplefile <- system.file("extdata", "geno.sample", package = "MAGEE")
  group.file <- system.file("extdata", "SetID.withweights.txt", package = "MAGEE")
  data(example)
  set.seed(123)
  pheno <- rbind(example$pheno, example$pheno[1:100, ])
  pheno$id <- 1:500
  pheno$disease[sample(1:500,20)] <- NA
  pheno$age[sample(1:500,20)] <- NA
  pheno$sex[sample(1:500,20)] <- NA
  pheno <- pheno[sample(1:500,450), ]
  pheno <- pheno[pheno$id <= 400, ]
  kins <- example$GRM
  
  ### single thread with kins
  obj1 <- glmmkin(disease ~ age + sex, data = pheno, kins = kins, id = "id", family = binomial(link = "logit"))
  out1 <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out1_bgen <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(signif(range(out1$MV.pval)), signif(c(0.04569696, 0.66545029)))
  expect_equal(signif(range(out1$MF.pval)), signif(c(0.0717664, 0.8372688)))
  expect_equal(signif(range(out1$IV.pval)), signif(c(0.2310993, 0.9260350)))
  expect_equal(signif(range(out1$IF.pval)), signif(c(0.1028281, 0.9835639)))
  expect_equal(signif(range(out1$JV.pval)), signif(c(0.1126746, 0.8547623)))
  expect_equal(signif(range(out1$JF.pval),5), signif(c(0.1228627, 0.9610125),5))
  expect_equal(signif(range(out1$JD.pval)), signif(c(0.1362456, 0.9498088)))
  expect_equal(out1, out1_bgen)
  
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)

  tmpout <- SMMAT(null.obj=obj1, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1$MV.pval, tmpout$S.pval)
  expect_equal(out1$MF.pval, tmpout$E.pval)

  ### single thread without kins
  obj2 <- glmmkin(disease ~ age + sex, data = pheno, kins = NULL, id = "id", family = binomial(link = "logit"))
  out2 <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out2_bgen <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(signif(range(out2$MV.pval)), signif(c(0.01958317, 0.83039453)))
  expect_equal(signif(range(out2$MF.pval)), signif(c(0.03165378, 0.89714953)))
  expect_equal(signif(range(out2$IV.pval)), signif(c(0.1862096, 0.9224659)))
  expect_equal(signif(range(out2$IF.pval)), signif(c(0.07000326, 0.98470603)))
  expect_equal(signif(range(out2$JV.pval),5), signif(c(0.05232525, 0.91036406),5))
  expect_equal(signif(range(out2$JF.pval)), signif(c(0.06796507, 0.98442573)))
  expect_equal(signif(range(out2$JD.pval)), signif(c(0.06984052, 0.98116516)))
  expect_equal(out2, out2_bgen)
  
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  
  tmpout <- SMMAT(null.obj=obj2, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2$MV.pval, tmpout$S.pval)
  expect_equal(out2$MF.pval, tmpout$E.pval)
  
  ### multi-thread
  out1.tmp <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1.tmp)
  out1.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out1, out1.lowmem.tmp)
  out1_bgen.tmp <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1_bgen.tmp)
  out2.tmp <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2.tmp)
  out2.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out2, out2.lowmem.tmp)
  out2_bgen.tmp <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2_bgen.tmp)
  
  ### re-order id
  idx <- sample(nrow(pheno))
  pheno <- pheno[idx, ]
  obj1 <- glmmkin(disease ~ age + sex, data = pheno, kins = kins, id = "id", family = binomial(link = "logit"))
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  obj2 <- glmmkin(disease ~ age + sex, data = pheno, kins = NULL, id = "id", family = binomial(link = "logit"))
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
  
  ### re-order id
  idx <- sample(nrow(kins))
  kins <- kins[idx, idx]
  obj1 <- glmmkin(disease ~ age + sex, data = pheno, kins = kins, id = "id", family = binomial(link = "logit"))
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  obj2 <- glmmkin(disease ~ age + sex, data = pheno, kins = NULL, id = "id", family = binomial(link = "logit"))
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
})

### multi-phenotype MAGEE
test_that("multiple phenotypes gaussian", {
  skip_on_cran()
  skip_if_not_installed("SeqArray")
  skip_if_not_installed("SeqVarTools")
  gdsfile <- system.file("extdata", "geno.gds", package = "MAGEE")
  bgenfile <- system.file("extdata", "geno.bgen", package = "MAGEE")
  samplefile <- system.file("extdata", "geno.sample", package = "MAGEE")
  group.file <- system.file("extdata", "SetID.withweights.txt", package = "MAGEE")
  data(example)
  set.seed(103)
  kins <- example$GRM
  tau1 <- matrix(c(3,0.5,0,0.5,2.5,-0.1,0,-0.1,3),3,3)
  tau2 <- matrix(c(2.5,0.8,0.2,0.8,4.8,-0.1,0.2,-0.1,2.8),3,3)
  kins.chol <- chol(tau1 %x% kins + tau2 %x% diag(400))
  tmp <- as.vector(crossprod(kins.chol, rnorm(1200)))
  x1 <- rnorm(400)
  x2 <- rbinom(400,1,0.5)
  pheno <- data.frame(id = 1:400, x1 = x1, x2 = x2, y1 = 0.5*x1+0.8*x2+tmp[1:400], y2 = x1-0.3*x2+tmp[401:800], y3 = x2+tmp[801:1200])
  ### single thread with kins
  obj1 <- glmmkin(cbind(y1,y2,y3)~x1+x2, data = pheno, kins = kins, id = "id", family = gaussian(link = "identity"))
  out1 <- MAGEE(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out1_bgen <- MAGEE(null.obj=obj1, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  
  expect_equal(signif(range(out1$MV.pval)), signif(c(0.1689182, 0.9277765)))
  expect_equal(signif(range(out1$MF.pval)), signif(c(0.1290289, 0.8907589)))
  expect_equal(signif(range(out1$IV.pval)), signif(c(0.1060731, 0.9129642)))
  expect_equal(signif(range(out1$IF.pval)), signif(c(0.1785101, 0.9041499)))
  expect_equal(signif(range(out1$JV.pval)), signif(c(0.261298, 0.940976)))
  expect_equal(signif(range(out1$JF.pval),5), signif(c(0.2591923, 0.9611525),5))
  expect_equal(signif(range(out1$JD.pval),5), signif(c(0.2641673, 0.9661435),5))
  expect_equal(out1, out1_bgen)
  
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  
  tmpout <- SMMAT(null.obj=obj1, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1$MV.pval, tmpout$S.pval)
  expect_equal(out1$MF.pval, tmpout$E.pval)

  ### single thread without kins
  obj2 <- glmmkin(cbind(y1,y2,y3)~x1+x2, data = pheno, kins = NULL, id = "id", family = gaussian(link = "identity"))
  out2 <- MAGEE(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out2_bgen <- MAGEE(null.obj=obj2, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  
  expect_equal(signif(range(out2$MV.pval)), signif(c(0.0005204763, 0.7454647180)))
  expect_equal(signif(range(out2$MF.pval)), signif(c(0.0004170892, 0.6362776242)))
  expect_equal(signif(range(out2$IV.pval)), signif(c(0.1830878, 0.9157741)))
  expect_equal(signif(range(out2$IF.pval)), signif(c(0.2745413, 0.8634707)))
  expect_equal(signif(range(out2$JV.pval)), signif(c(0.003123721, 0.803773857)))
  expect_equal(signif(range(out2$JF.pval)), signif(c(0.004704365, 0.737300921)))
  expect_equal(signif(range(out2$JD.pval)), signif(c(0.002961206, 0.761153895)))
  expect_equal(out2, out2_bgen)
  
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  
  tmpout <- SMMAT(null.obj=obj2, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2$MV.pval, tmpout$S.pval)
  expect_equal(out2$MF.pval, tmpout$E.pval)
  
  ### multi-thread
  out1.tmp <- MAGEE(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1.tmp)
  out1.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out1, out1.lowmem.tmp)
  out1_bgen.tmp <- MAGEE(null.obj=obj1, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1_bgen.tmp)
  out2.tmp <- MAGEE(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2.tmp)
  out2.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out2, out2.lowmem.tmp)
  out2_bgen.tmp <- MAGEE(null.obj=obj2, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2_bgen.tmp)
  
  ### re-order id
  idx <- sample(nrow(pheno))
  pheno <- pheno[idx, ]
  obj1 <- glmmkin(cbind(y1,y2,y3)~x1+x2, data = pheno, kins = kins, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  obj2 <- glmmkin(cbind(y1,y2,y3)~x1+x2, data = pheno, kins = NULL, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
  
  ### re-order id
  idx <- sample(nrow(kins))
  kins <- kins[idx, idx]
  obj1 <- glmmkin(cbind(y1,y2,y3)~x1+x2, data = pheno, kins = kins, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="x1", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  obj2 <- glmmkin(cbind(y1,y2,y3)~x1+x2, data = pheno, kins = NULL, id = "id", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="x1", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="x1", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
})

### longitudinal MAGEE
test_that("longitudinal random time trend gaussian", {
  skip_on_cran()
  skip_if_not_installed("SeqArray")
  skip_if_not_installed("SeqVarTools")
  gdsfile  <- system.file("extdata", "geno.gds",  package = "MAGEE")
  bgenfile <- system.file("extdata", "geno.bgen", package = "MAGEE")
  samplefile <- system.file("extdata", "geno.sample", package = "MAGEE")
  group.file <- system.file("extdata", "SetID.withweights.txt", package = "MAGEE")
  data(example)
  set.seed(123)
  pheno <- example$pheno2
  pheno$y.trend[sample(1:2000,20)] <- NA
  pheno$sex[sample(1:2000,20)] <- NA
  pheno$time[sample(1:2000,20)] <- NA
  pheno <- pheno[sample(1:2000,1950), ]
  kins <- example$GRM
  ### single thread with kins
  obj1 <- glmmkin(y.trend ~ sex + time, data = pheno, kins = kins, id = "id",random.slope = "time", family = gaussian(link = "identity"))
  out1 <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out1_bgen <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(signif(range(out1$MV.pval)), signif(c(0.1323623, 0.9703559)))
  expect_equal(signif(range(out1$MF.pval)), signif(c(0.1329606, 0.9956268)))
  expect_equal(signif(range(out1$IV.pval)), signif(c(0.01062191, 0.97955979)))
  expect_equal(signif(range(out1$IF.pval)), signif(c(0.02570341, 0.98928108)))
  expect_equal(signif(range(out1$JV.pval)), signif(c(0.02309769, 0.98493272)))
  expect_equal(signif(range(out1$JF.pval)), signif(c(0.08378947, 0.98091932)))
  expect_equal(signif(range(out1$JD.pval)), signif(c(0.07804338, 0.97458040)))
  expect_equal(out1, out1_bgen)

  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)

  tmpout <- SMMAT(null.obj=obj1, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1$MV.pval, tmpout$S.pval)
  expect_equal(out1$MF.pval, tmpout$E.pval)

  out1.time <- MAGEE(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out1_bgen.time <- MAGEE(null.obj=obj1, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1$MV.pval, out1.time$MV.pval)
  expect_equal(out1$MF.pval, out1.time$MF.pval)
  expect_equal(signif(range(out1.time$IV.pval)), signif(c(0.05622821, 0.94626695)))
  expect_equal(signif(range(out1.time$IF.pval)), signif(c(0.1249703, 0.9084682)))
  expect_equal(signif(range(out1.time$JV.pval)), signif(c(0.06361535, 0.95186442)))
  expect_equal(signif(range(out1.time$JF.pval)), signif(c(0.1537416, 0.9730217)))
  expect_equal(signif(range(out1.time$JD.pval)), signif(c(0.1703858, 0.9771715)))
  expect_equal(out1.time, out1_bgen.time)

  obj1.time.tmp <- MAGEE.prep(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.time.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1.time, out1.time.lowmem)
  
  ### single thread without kins
  obj2 <- glmmkin(y.trend ~ sex + time, data = pheno, kins = NULL, id = "id",random.slope = "time", family = gaussian(link = "identity"))
  out2 <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out2_bgen <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(signif(range(out2$MV.pval),5), signif(c(0.1566921, 0.9585805),5))
  expect_equal(signif(range(out2$MF.pval),5), signif(c(0.08264715, 0.98670558),5))
  expect_equal(signif(range(out2$IV.pval)), signif(c(0.01311423, 0.98538422)))
  expect_equal(signif(range(out2$IF.pval)), signif(c(0.03240826, 0.99806234)))
  expect_equal(signif(range(out2$JV.pval)), signif(c(0.01476963, 0.98448481)))
  expect_equal(signif(range(out2$JF.pval)), signif(c(0.06253546, 0.95890641)))
  expect_equal(signif(range(out2$JD.pval)), signif(c(0.06456337, 0.94498937)))
  expect_equal(out2, out2_bgen)

  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)

  tmpout <- SMMAT(null.obj=obj2, geno.file=gdsfile, group.file=group.file, tests = c("S", "E"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2$MV.pval, tmpout$S.pval)
  expect_equal(out2$MF.pval, tmpout$E.pval)
  
  out2.time <- MAGEE(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  out2_bgen.time <- MAGEE(null.obj=obj2, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2$MV.pval, out2.time$MV.pval)
  expect_equal(out2$MF.pval, out2.time$MF.pval)
  expect_equal(signif(range(out2.time$IV.pval)), signif(c(0.05766038, 0.98830210)))
  expect_equal(signif(range(out2.time$IF.pval)), signif(c(0.1213767, 0.9923014)))
  expect_equal(signif(range(out2.time$JV.pval)), signif(c(0.1108438, 0.9985899)))
  expect_equal(signif(range(out2.time$JF.pval)), signif(c(0.1110868, 0.9997269)))
  expect_equal(signif(range(out2.time$JD.pval)), signif(c(0.1201406, 0.9997803)))
  expect_equal(out2.time, out2_bgen.time)
  
  obj2.time.tmp <- MAGEE.prep(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.time.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2.time, out2.time.lowmem)
  
  ### multi-thread
  out1.tmp <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1.tmp)
  out1.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out1, out1.lowmem.tmp)
  out1_bgen.tmp <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1, out1_bgen.tmp)

  out1.time.tmp <- MAGEE(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1.time, out1.time.tmp)
  out1.time.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj1.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out1.time, out1.time.lowmem.tmp)
  out1_bgen.time.tmp <- MAGEE(null.obj=obj1, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out1.time, out1_bgen.time.tmp)
  
  out2.tmp <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2.tmp)
  out2.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out2, out2.lowmem.tmp)
  out2_bgen.tmp <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2, out2_bgen.tmp)
  
  out2.time.tmp <- MAGEE(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2.time, out2.time.tmp)
  out2.time.lowmem.tmp <- MAGEE.lowmem(MAGEE.prep.obj=obj2.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T, ncores = 2)
  expect_equal(out2.time, out2.time.lowmem.tmp)
  out2_bgen.time.tmp <- MAGEE(null.obj=obj2, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T, ncores = 2)
  expect_equal(out2.time, out2_bgen.time.tmp)
  
  ### re-order id
  idx <- sample(nrow(pheno))
  pheno <- pheno[idx, ]
  obj1 <- glmmkin(y.trend ~ sex + time, data = pheno, kins = kins, id = "id",random.slope = "time", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  tmpout <- MAGEE(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1.time, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  obj1.time.tmp <- MAGEE.prep(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.time.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1.time, out1.time.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  tmpout <- MAGEE(null.obj=obj1, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen.time, tmpout)
  obj2 <- glmmkin(y.trend ~ sex + time, data = pheno, kins = NULL, id = "id",random.slope = "time", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  tmpout <- MAGEE(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2.time, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  obj2.time.tmp <- MAGEE.prep(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.time.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2.time, out2.time.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
  tmpout <- MAGEE(null.obj=obj2, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen.time, tmpout)
  
  ### re-order id
  idx <- sample(nrow(kins))
  kins <- kins[idx, idx]
  obj1 <- glmmkin(y.trend ~ sex + time, data = pheno, kins = kins, id = "id",random.slope = "time", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1, tmpout)
  tmpout <- MAGEE(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1.time, tmpout)
  obj1.tmp <- MAGEE.prep(null.obj=obj1, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1, out1.lowmem)
  obj1.time.tmp <- MAGEE.prep(null.obj=obj1, interaction="time", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out1.time.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj1.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out1.time, out1.time.lowmem)
  tmpout <- MAGEE(null.obj=obj1, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen, tmpout)
  tmpout <- MAGEE(null.obj=obj1, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out1_bgen.time, tmpout)
  obj2 <- glmmkin(y.trend ~ sex + time, data = pheno, kins = NULL, id = "id",random.slope = "time", family = gaussian(link = "identity"))
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2, tmpout)
  tmpout <- MAGEE(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2.time, tmpout)
  obj2.tmp <- MAGEE.prep(null.obj=obj2, interaction="sex", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2, out2.lowmem)
  obj2.time.tmp <- MAGEE.prep(null.obj=obj2, interaction="time", geno.file=gdsfile, group.file=group.file, auto.flip = T)
  out2.time.lowmem <- MAGEE.lowmem(MAGEE.prep.obj=obj2.time.tmp, tests = c("JV", "JF", "JD"), use.minor.allele = T)
  expect_equal(out2.time, out2.time.lowmem)
  tmpout <- MAGEE(null.obj=obj2, interaction="sex", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen, tmpout)
  tmpout <- MAGEE(null.obj=obj2, interaction="time", geno.file=bgenfile, bgen.samplefile = samplefile, group.file=group.file, tests = c("JV", "JF", "JD"), use.minor.allele = T, auto.flip = T)
  expect_equal(out2_bgen.time, tmpout)
})

Try the MAGEE package in your browser

Any scripts or data that you put into this service are public.

MAGEE documentation built on Sept. 11, 2024, 6:49 p.m.