From 0cfd13b00674cc9a7feffd409ec4a80635f93e59 Mon Sep 17 00:00:00 2001 From: Waldir Leoncio Date: Fri, 3 Sep 2021 12:50:11 +0200 Subject: [PATCH] Added SAM/BAM support (closes #18) --- R/greedyMix.R | 14 +++++++++++--- inst/ext/bam_example.bam | Bin 0 -> 22608 bytes man/greedyMix.Rd | 6 +++++- tests/testthat/test-greedyMix.R | 13 +++++++++++-- 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 inst/ext/bam_example.bam diff --git a/R/greedyMix.R b/R/greedyMix.R index 0b7baab..2e2b552 100644 --- a/R/greedyMix.R +++ b/R/greedyMix.R @@ -1,9 +1,11 @@ #' @title Clustering of individuals #' @param data data file -#' @param format Format of the data c("FASTA", "VCF" ,"SAM", or "GenePop") +#' @param format Format of the data c("FASTA", "VCF" ,"BAM", or "GenePop") #' @param verbose if \code{TRUE}, prints extra output information #' @importFrom utils read.delim #' @importFrom vcfR read.vcfR +#' @references Samtools: a suite of programs for interacting +#' with high-throughput sequencing data. #' @export greedyMix <- function(data, format, verbose = TRUE) { format <- tolower(format) @@ -12,8 +14,14 @@ greedyMix <- function(data, format, verbose = TRUE) { } else if (format == "vcf") { out <- vcfR::read.vcfR(data, verbose = verbose) } else if (format == "sam") { - stop("SAM files not yet supported." ) - # TODO #18: implement load_sam() + stop( + "SAM files not directly supported. ", + "Install the samtools software and execute ", + "'samtools view -b in_file.sam > out_file.bam' to convert to BAM ", + "and try running this function again with 'format=BAM'" + ) + } else if (format == "bam") { + out <- Rsamtools::scanBam(data) } else if (format == "genepop") { # TODO #19: implement load_genepop() stop("GenePop files not yet supported." ) diff --git a/inst/ext/bam_example.bam b/inst/ext/bam_example.bam new file mode 100644 index 0000000000000000000000000000000000000000..853843dfd324829e05b10882536c0f21f8e23e1f GIT binary patch literal 22608 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 VQ$sth@&6; +} diff --git a/tests/testthat/test-greedyMix.R b/tests/testthat/test-greedyMix.R index 9104176..490b9ec 100644 --- a/tests/testthat/test-greedyMix.R +++ b/tests/testthat/test-greedyMix.R @@ -46,12 +46,21 @@ df_vcf <- greedyMix( format = "VCF", verbose = FALSE ) -# TODO #17: add example reading VCF -# TODO #18: add example reading SAM +df_bam <- greedyMix( + data = file.path(path_inst, "bam_example.bam"), + format = "BAM", +) # TODO #19: add example reading Genpop test_that("Files are imported correctly", { expect_equal(dim(df_fasta), c(5, 99)) expect_equal(dim(df_vcf), c(variants = 2, fix_cols = 8, gt_cols = 3)) + expect_error( + greedyMix( + data = paste(path_inst, "sam_example.sam", sep="/"), + format = "SAM", + ) + ) + expect_equal(length(df_bam[[1]]), 13) }) context("Linkage")