R/sdp_to_pattern.R

Defines functions sdp_to_pattern

Documented in sdp_to_pattern

#' Convert sdp to pattern
#'
#' Convert strain distribution pattern (sdp) to letter pattern.
#' Taken from package `qtl2pattern` for internal use here.
#'
#' @param sdp vector of sdp values
#' @param haplos letter codes for haplotypes (required)
#' @param symmetric make patterns symmetric if \code{TRUE}
#'
#' @return vector of letter patterns
#'
#' @author Brian S Yandell, \email{brian.yandell@@wisc.edu}
#' @keywords utilities
#'
#' @importFrom assertthat assert_that
#' 
sdp_to_pattern <- function(sdp, haplos, symmetric = TRUE) {
  assertthat::assert_that(!missing(haplos))
  if(symmetric) {
    numsdp <- 2 ^ length(haplos)
    sdp <- ifelse(sdp < numsdp / 2, sdp, numsdp - sdp - 1)
  }
  sapply(sdp, function(x, haplos) {
    ref <- as.logical(intToBits(x)[seq_along(haplos)])
    paste(paste(haplos[!ref], collapse = ""),
          paste(haplos[ref], collapse = ""),
          sep = ":")
  }, haplos)
}
byandell/qtl2ggplot documentation built on March 18, 2024, 8:54 a.m.