################################################################################
context("WRITE_BED")
N <- round(runif(1, 10, 100))
M <- round(runif(1, 100, 1000))
fake <- snp_fake(N, M)
G <- fake$genotypes
G[] <- sample(as.raw(0:3), size = N * M, replace = TRUE)
################################################################################
test_that("Write signed but read unsigned", {
tmpfile <- tempfile()
x <- as.raw(0:255)
bigsnpr:::testWrite(x, tmpfile)
test <- readBin(tmpfile, what = "raw", n = 256)
expect_equal(test, x)
})
################################################################################
# write the object as a bed/bim/fam object
bed <- snp_writeBed(fake, bedfile = tempfile(fileext = ".bed"))
test_that("Error: already exists", {
expect_error(snp_writeBed(fake, bedfile = bed),
sprintf("File '%s' already exists.", bed), fixed = TRUE)
})
################################################################################
# read this new file for the first time
fake2 <- snp_attach(snp_readBed(bed, backingfile = tempfile()))
test_that("same content as written bigSNP", {
expect_equal(fake$genotypes[], fake2$genotypes[])
expect_equal(fake$fam, fake2$fam)
expect_equal(fake$map, fake2$map)
})
################################################################################
# change the code
fake$genotypes$code256[4] <- 4
expect_error(snp_writeBed(fake, bedfile = tempfile(fileext = ".bed")))
# write the object as a bed/bim/fam object
fake$genotypes$code256[4] <- 2
bed <- snp_writeBed(fake, bedfile = tempfile(fileext = ".bed"))
fake3 <- snp_attach(snp_readBed(bed, backingfile = tempfile()))
test_that("same content as written bigSNP (no more NAs)", {
expect_equal(fake3$genotypes$code256, CODE_012)
expect_equal(sum(is.na(fake3$genotypes[])), 0)
expect_equal(fake$genotypes[], fake3$genotypes[])
expect_equal(fake$fam, fake3$fam)
expect_equal(fake$map, fake3$map)
})
################################################################################
ind.row <- sample(N, 10)
ind.col <- sample(M, 50)
# write the object as a smaller bed/bim/fam object
bed <- snp_writeBed(fake, bedfile = tempfile(fileext = ".bed"),
ind.row = ind.row, ind.col = ind.col)
fake4 <- snp_attach(snp_readBed(bed, backingfile = tempfile()))
test_that("same content as written bigSNP (with subsetting)", {
expect_equal(fake4$genotypes$code256, CODE_012)
expect_equal(sum(is.na(fake3$genotypes[])), 0)
expect_equal(fake$genotypes[ind.row, ind.col], fake4$genotypes[])
expect_equivalent(fake$fam[ind.row, ], fake4$fam)
expect_equivalent(fake$map[ind.col, ], fake4$map)
})
################################################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.