#' Create a tabix file using methylation calls
#'
#' @param input_files the files to convert
#' @param output_file the output file to write results to (must end in .bgz)
#' @param samples the names of samples corresponding to each file
#' @param verbose TRUE if progress messages are to be printed
#'
#' @return invisibly returns the output file path, creates a tabix file (.bgz)
#' and its index (.bgz.tbi)
#'
#' @export
#' @examples
#' methy_calls <- system.file(package = "NanoMethViz",
#' c("sample1_nanopolish.tsv.gz", "sample2_nanopolish.tsv.gz"), mustWork = FALSE)
#' temp_file <- paste0(tempfile(), ".tsv.bgz")
#'
#' create_tabix_file(methy_calls, temp_file)
create_tabix_file <- function(
input_files,
output_file,
samples = extract_file_names(input_files),
verbose = TRUE
) {
assert_that(
tools::file_ext(output_file) == "bgz",
msg = "output_file must end with .bgz extension."
)
assert_that(
assertthat::not_empty(input_files),
is.character(input_files),
is.string(output_file),
is.character(samples),
length(input_files) == length(samples)
)
if (.Platform$OS.type == "windows") {
timed_log("WARNING: creating tabix file on windows requires at least twice as much memory as total size of methylation data")
}
if (packageVersion("cpp11") < package_version("0.2.5")) {
warning("cpp11 versions < 0.2.5 may crash when reading in large tables")
}
temp_file <- tempfile()
if (verbose) {
timed_log("creating methylation table")
}
convert_methy_format(input_files, temp_file, samples, verbose = verbose)
if (verbose) {
timed_log("sorting methylation table")
}
sort_methy_file(temp_file)
if (verbose) {
timed_log("compressing methylation table to tabix with index")
}
raw_methy_to_tabix(temp_file)
fs::file_move(paste0(temp_file, ".bgz"), output_file)
fs::file_move(paste0(temp_file, ".bgz.tbi"), paste0(output_file, ".tbi"))
fs::file_delete(temp_file)
invisible(output_file)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.