Nothing
################################################################################
context("PLINK_QC")
skip_on_os("solaris")
skip_if(is_cran)
skip_if_offline("www.cog-genomics.org")
skip_if_offline("s3.amazonaws.com")
# Get PLINK executable
plink <- download_plink(verbose = FALSE)
plink2 <- download_plink2(overwrite = TRUE, AVX2 = FALSE, verbose = FALSE)
library(magrittr)
bedfile <- snp_attachExtdata() %>%
snp_writeBed(tempfile(fileext = ".bed"))
################################################################################
test_that("PLINK downloaded version is okay", {
expect_false(grepl("plink2", plink))
expect_true(grepl("plink2", plink2))
plink2.version <- system(paste(plink2, "--version"), intern = TRUE)
expect_false(grepl("AVX2", plink2.version))
})
################################################################################
skip_if_not(.Machine$sizeof.pointer == 8)
test_that("QC on MAF", {
# Filter on MAF
snp_plinkQC(plink.path = plink,
prefix.in = sub_bed(bedfile),
# prefix.out = tempfile(),
maf = 0.2,
extra.options = "--allow-no-sex",
verbose = FALSE) %>%
snp_readBed() %>%
snp_attach() %>%
extract2("genotypes") %>%
snp_MAF() %>%
is_greater_than(0.2) %>%
all() %>%
expect_true()
})
################################################################################
test_that("relatedness QC (IBD)", {
# IBD
df.pair <- snp_plinkIBDQC(plink.path = plink,
bedfile.in = bedfile,
# bedfile.out = tempfile(fileext = ".bed"),
pi.hat = 0.1,
do.blind.QC = FALSE,
extra.options = "--allow-no-sex",
verbose = FALSE)
ind.pair <- df.pair %>%
extract(c("IID1", "IID2")) %>%
sapply(function(x) as.numeric(gsub("IND", "", x)) + 1)
K <- snp_attachExtdata() %>%
extract2("genotypes") %>%
extract(,) %>%
t() %>%
cor()
expect_lt(t.test(K[ind.pair], K, alternative = "greater")$p.value, 1e-16)
indiv.keep <-
snp_plinkRmSamples(plink.path = plink,
bedfile.in = bedfile,
bedfile.out = tempfile(fileext = ".bed"),
df.or.files = df.pair,
verbose = FALSE) %>%
snp_readBed() %>%
snp_attach() %>%
extract2("fam") %>%
extract2("sample.ID")
expect_length(union(indiv.keep, df.pair$IID1), nrow(K))
expect_length(intersect(indiv.keep, df.pair$IID1), 0)
})
################################################################################
test_that("relatedness QC (KING)", {
obj.snp <- snp_attachExtdata()
G <- obj.snp$genotypes
G[1, ] <- round(colMeans(G[2:3, ]))
bedfile <- snp_writeBed(obj.snp, tempfile(fileext = ".bed"))
expect_error(snp_plinkKINGQC(plink, bedfile), "This requires PLINK v2")
bedfile2 <- snp_plinkKINGQC(plink2, bedfile, thr.king = 0.177, verbose = FALSE)
expect_identical(readLines(sub_bed(bedfile2, ".king.cutoff.out.id")),
c("#FID\tIID", "POP1\tIND2"))
rel <- snp_plinkKINGQC(plink2, bedfile, thr.king = 0.177,
make.bed = FALSE, verbose = FALSE)
expect_equal(nrow(rel), 1)
expect_gt(rel$KINSHIP, 0.177)
bedfile3 <- snp_plinkKINGQC(plink2, bedfile, thr.king = 0.3,
bedfile.out = tempfile(fileext = ".bed"),
verbose = FALSE)
expect_identical(readLines(sub_bed(bedfile3, ".king.cutoff.out.id")), "#FID\tIID")
rel2 <- snp_plinkKINGQC(plink2, bedfile, thr.king = 0.3,
make.bed = FALSE, verbose = FALSE)
expect_equal(nrow(rel2), 0)
expect_equal(names(rel2)[1:4], c("FID1", "IID1", "FID2", "IID2"))
})
################################################################################
unlink(plink2)
################################################################################
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.