#' Generate SEG file from a table of Z-scores
#'
#' For a quick visualization using a genome browser like IGV, generates
#' a [SEG](https://bit.ly/2J2WZdZ) file scores reporting Z-scores for tumor and
#' normal samples generated by [compute_z_scores].
#'
#' NOTE: SEG files have 1-based coordinates.
#'
#' @param z_scores_data A list generated by [compute_z_scores].
#' @param path A string including absolute or relative path which a prefix is added to
#' ("_z_scores.set")
#' @return Nothing. Only saves output tables.
#' @importFrom utils write.table
#' @export
write_z_scores <- function(z_scores_data, path){
# check parameters
assertthat::assert_that(is.list(z_scores_data))
genomic_coordinates <- strsplit(rownames(z_scores_data[[1]]), "[:-]")
genomic_coordinates <- do.call(genomic_coordinates, what = "rbind")
genomic_coordinates <- as.data.frame(genomic_coordinates)
genomic_coordinates <- setNames(genomic_coordinates, c("chr", "start", "end"))
z_scores_table <- cbind(genomic_coordinates, as.data.frame(z_scores_data[[1]]))
z_scores_table <- tidyr::pivot_longer(z_scores_table, cols = -c(chr, start, end), names_to="ID", values_to="z_score", values_drop_na = TRUE)
z_scores_table <- z_scores_table[c("ID", "chr", "start", "end", "z_score")]
tumor_dmr_beta_table <- cbind(genomic_coordinates, as.data.frame(z_scores_data[[2]]))
tumor_dmr_beta_table <- tidyr::pivot_longer(tumor_dmr_beta_table, cols = -c(chr, start, end), names_to="ID", values_to="median_beta", values_drop_na = TRUE)
tumor_dmr_beta_table <- tumor_dmr_beta_table[c("ID", "chr", "start", "end", "median_beta")]
control_dmr_beta_table <- cbind(genomic_coordinates, as.data.frame(z_scores_data[[3]]))
control_dmr_beta_table <- tidyr::pivot_longer(control_dmr_beta_table, cols = -c(chr, start, end), names_to="ID", values_to="median_beta", values_drop_na = TRUE)
control_dmr_beta_table <- control_dmr_beta_table[c("ID", "chr", "start", "end", "median_beta")]
write.table(z_scores_table,
file=paste0(path.expand(path), "_z_scores.seg"),
sep = "\t", quote = FALSE, row.names = FALSE)
write.table(z_scores_table,
file=paste0(path.expand(path), "_tumor_dmr.seg"),
sep = "\t", quote = FALSE, row.names = FALSE)
write.table(z_scores_table,
file=paste0(path.expand(path), "_control_dmr.seg"),
sep = "\t", quote = FALSE, row.names = FALSE)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.