## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup, echo = FALSE------------------------------------------------------ library(BinaryDosage) ## ----setup_files, message = FALSE, warning = FALSE---------------------------- bdose_file <- file.path(tempdir(), "set1a.bdose") if (requireNamespace("vcfppR", quietly = TRUE)) { vcftobd(vcffile = system.file("extdata", "set1a.vcf.gz", package = "BinaryDosage"), bdose_file = bdose_file) } else { updatebd(bdfiles = system.file("extdata", "vcf1a.bdose", package = "BinaryDosage"), bdose_file = bdose_file) } bd5 <- getbdinfo(bdose_file) n_snps <- nrow(bd5$snps) n_samp <- nrow(bd5$samples) cat("SNPs:", n_snps, " Samples:", n_samp, "\n") ## ----getbd5snp_index---------------------------------------------------------- snp1 <- getbd5snp(bd5info = bd5, snp = 1L) knitr::kable( data.frame( SampleID = head(bd5$samples$sid, 10), Dosage = round(head(snp1$dosage, 10), 4), P_00 = round(head(snp1$p0, 10), 4), P_01 = round(head(snp1$p1, 10), 4), P_11 = round(head(snp1$p2, 10), 4) ), caption = paste("SNP", bd5$snps$snpid[1], "— first 10 subjects") ) ## ----getbd5snp_id------------------------------------------------------------- snp3 <- getbd5snp(bd5info = bd5, snp = "1:12000:T:C") knitr::kable( data.frame( SampleID = head(bd5$samples$sid, 10), Dosage = round(head(snp3$dosage, 10), 4), P_00 = round(head(snp3$p0, 10), 4), P_01 = round(head(snp3$p1, 10), 4), P_11 = round(head(snp3$p2, 10), 4) ), caption = "SNP 1:12000:T:C — first 10 subjects" ) ## ----getbd5snp_loop----------------------------------------------------------- aaf <- numeric(n_snps) for (i in seq_len(n_snps)) { aaf[i] <- mean(getbd5snp(bd5, i)$dosage, na.rm = TRUE) / 2 } knitr::kable( data.frame(snpid = bd5$snps$snpid, aaf = round(aaf, 4)), caption = "Alternate allele frequencies via getbd5snp" ) ## ----getbd5snp_buf_loop------------------------------------------------------- dosage <- numeric(n_samp) p0 <- numeric(n_samp) p1 <- numeric(n_samp) p2 <- numeric(n_samp) aaf_buf <- numeric(n_snps) for (i in seq_len(n_snps)) { getbd5snp_buf(bd5info = bd5, snp = i, dosage = dosage, p0 = p0, p1 = p1, p2 = p2) aaf_buf[i] <- mean(dosage, na.rm = TRUE) / 2 } knitr::kable( data.frame(snpid = bd5$snps$snpid, aaf = round(aaf_buf, 4)), caption = "Alternate allele frequencies via getbd5snp_buf" ) ## ----getbd5snp_con_loop------------------------------------------------------- dosage <- numeric(n_samp) p0 <- numeric(n_samp) p1 <- numeric(n_samp) p2 <- numeric(n_samp) con <- openbd5con(bd5) aaf_con <- numeric(n_snps) for (i in seq_len(n_snps)) { getbd5snp_con(bd5info = bd5, snp = i, dosage = dosage, p0 = p0, p1 = p1, p2 = p2, bd5con = con) aaf_con[i] <- mean(dosage, na.rm = TRUE) / 2 } closebd5con(con) knitr::kable( data.frame(snpid = bd5$snps$snpid, aaf = round(aaf_con, 4)), caption = "Alternate allele frequencies via getbd5snp_con" ) ## ----verify------------------------------------------------------------------- all(aaf == aaf_buf) all(aaf == aaf_con) ## ----cleanup, include = FALSE------------------------------------------------- unlink(c(bdose_file, paste0(bdose_file, ".bdi")))