.testfile <- function() {
file <- tempfile()
gds <- createfn.gds(file)
snp <- 1:260
chrom <- rep(1:26, each=10)
pos <- rep(1001:1026, 10)
all <- rep("A/T", 260)
samp <- 1231:1235
nsnp <- length(snp)
nsamp <- length(samp)
geno <- matrix(sample(0:3, nsnp*nsamp, replace=TRUE),
nrow=nsnp, ncol=nsamp)
add.gdsn(gds, "snp.id", snp)
add.gdsn(gds, "snp.chromosome", chrom)
add.gdsn(gds, "snp.position", pos)
add.gdsn(gds, "snp.allele", all)
add.gdsn(gds, "sample.id", samp)
add.gdsn(gds, "genotype", geno, storage="bit2")
closefn.gds(gds)
file
}
.testannot <- function(x) {
SnpAnnotationDataFrame(data.frame(
snpID=getSnpID(x),
chromosome=getChromosome(x),
position=getPosition(x)
))
}
test_iterator <- function() {
file <- .testfile()
gdsobj <- GdsGenotypeReader(file)
obj <- GenotypeData(gdsobj)
it <- GenotypeBlockIterator(obj, snpBlock=100)
checkEquals(1:100, currentFilter(it))
checkEquals(1:100, getSnpID(it))
checkEquals(getChromosome(obj)[1:100], getChromosome(it))
checkEquals(getPosition(obj)[1:100], getPosition(it))
checkEquals(getAlleleA(obj)[1:100], getAlleleA(it))
checkEquals(getAlleleB(obj)[1:100], getAlleleB(it))
checkEquals(getGenotypeSelection(obj)[1:100,], getGenotypeSelection(it))
checkEquals(getGenotypeSelection(obj)[1:100,1:2], getGenotypeSelection(it, scan=1:2))
checkTrue(iterateFilter(it))
checkEquals(101:200, currentFilter(it))
checkEquals(101:200, getSnpID(it))
checkEquals(getGenotypeSelection(obj)[101:200,], getGenotypeSelection(it))
checkTrue(iterateFilter(it))
checkEquals(201:260, currentFilter(it))
checkEquals(201:260, getSnpID(it))
checkEquals(getGenotypeSelection(obj)[201:260,], getGenotypeSelection(it))
checkTrue(!iterateFilter(it))
close(obj)
unlink(file)
}
test_iterator_snpAnnot <- function() {
file <- .testfile()
gdsobj <- GdsGenotypeReader(file)
obj <- GenotypeData(gdsobj, snpAnnot=.testannot(gdsobj))
it <- GenotypeBlockIterator(obj, snpBlock=100)
checkEquals(1:100, getSnpVariable(it, "snpID"))
checkTrue(iterateFilter(it))
checkEquals(101:200, getSnpVariable(it, "snpID"))
close(obj)
unlink(file)
}
test_iterator_largeblock <- function() {
file <- .testfile()
gdsobj <- GdsGenotypeReader(file)
obj <- GenotypeData(gdsobj)
it <- GenotypeBlockIterator(obj, snpBlock=1000)
checkEquals(1:260, currentFilter(it))
checkEquals(1:260, getSnpID(it))
checkTrue(!iterateFilter(it))
close(obj)
unlink(file)
}
test_iterator_snpInclude <- function() {
file <- .testfile()
gdsobj <- GdsGenotypeReader(file)
obj <- GenotypeData(gdsobj)
it <- GenotypeBlockIterator(obj, snpBlock=100, snpInclude=101:250)
checkEquals(101:200, currentFilter(it))
checkEquals(101:200, getSnpID(it))
checkTrue(iterateFilter(it))
checkEquals(201:250, currentFilter(it))
checkEquals(201:250, getSnpID(it))
checkTrue(!iterateFilter(it))
close(obj)
unlink(file)
}
test_iterator_snpInclude_largeblock <- function() {
file <- .testfile()
gdsobj <- GdsGenotypeReader(file)
obj <- GenotypeData(gdsobj)
it <- GenotypeBlockIterator(obj, snpBlock=1000, snpInclude=101:250)
checkEquals(101:250, currentFilter(it))
checkEquals(101:250, getSnpID(it))
checkTrue(!iterateFilter(it))
close(obj)
unlink(file)
}
test_iterator_reset <- function() {
file <- .testfile()
gdsobj <- GdsGenotypeReader(file)
obj <- GenotypeData(gdsobj)
it <- GenotypeBlockIterator(obj, snpBlock=100)
while(iterateFilter(it)) {}
resetIterator(it)
checkEquals(length(getSnpID(it)), 100)
close(obj)
unlink(file)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.