#' Wrapper around gtrack.import_mappedseq for (multiple) bam files
#'
#' @param bam_files vector of bam (or sam) files to import
#' @param min_mapq skip alignments with MAPQ smaller than \code{min_mapq}
#' @param ... parameters of gtrack.import_mappedseq
#'
#' @return None
#'
#' @export
#' @inheritDotParams misha::gtrack.import_mappedseq
#' @seealso \link[misha]{gtrack.import_mappedseq}
gtrack.import_mappedseq_bam <- function(bam_files, min_mapq = NULL, ...) {
cat_cmd <- "cat"
if (length(bam_files) > 1) {
cat_cmd <- "samtools cat"
}
view_cmd <- "samtools view -h "
if (!is.null(min_mapq)) {
if (!is.numeric(min_mapq)) {
stop("min_mapq should be an integer")
}
view_cmd <- glue("samtools view -h -q {min_mapq}")
}
files <- paste(bam_files, collapse = " ")
tmp_fifo <- tempfile()
tryCatch(
{
system(glue("mkfifo {tmp_fifo}; {cat_cmd} {files} | {view_cmd} > {tmp_fifo}"), wait = FALSE)
gtrack.import_mappedseq(file = tmp_fifo, cols.order = NULL, ...)
},
finally = system(glue("rm -f {tmp_fifo}"))
)
}
#' Create directories needed for track creation
#'
#' @param track track name
#'
#' @inheritParams misha::gdir.create
#' @examples
#' \dontrun{
#' gtrack.create_dirs("proj.sample.my_track")
#' }
#'
#' @export
gtrack.create_dirs <- function(track, showWarnings = TRUE, mode = "0777") {
gdir.create(
dirname(gsub("\\.", "/", track)),
showWarnings = showWarnings,
mode = mode
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.