Nothing
#' Is natural number
#' @return Logical
#' @keywords internal
isNaturalNumber <- function(x) {
if (length(x) != length(unlist(x))) {
return(FALSE)
}
x <- unlist(x)
if (any(is.na(x))) {
return(FALSE)
}
if (!is.numeric(x)) {
return(FALSE)
}
if (!all(x == round(x) & x > 0)) {
return(FALSE)
}
TRUE
}
#' ASCII to integer
#' @return Integer
#' @keywords internal
asc2int <- function(x) strtoi(charToRaw(x), 16L)
#' Integer to ASCII
#' @return ASCII character
#' @keywords internal
int2asc <- function(n) rawToChar(as.raw(n))
#' Check quality encoding
#' @param x Quality values
#' @param custom custom encoding from the following:
#'
#' 'Sanger' --------> expected range: [0, 40]
#'
#' 'Illumina1.8' --------> expected range: [0, 41]
#'
#' 'Illumina1.5' --------> expected range: [0, 40]
#'
#' 'Illumina1.3' --------> expected range: [3, 40]
#'
#' 'Solexa' --------> expected range: [-5, 40]
#'
#' @examples
#'
#' require(Biostrings)
#'
#' x <- list(PhredQuality(0:40), SolexaQuality(-5:40), IlluminaQuality(3:40))
#' x <- lapply(x, function(i)utf8ToInt(as.character(i)[1]))
#' lapply(x, check_encoding)
#'
#' SolexaQuality(0:40)
#' IlluminaQuality(0:40)
#' @return List with encoding information
#' @author Leandro Roser \email{learoser@@gmail.com}
#' @export
check_encoding <- function(x = NULL, custom = NULL) {
if (!is.null(x) && !is.null(custom)) {
stop("Either only a set of qualities
or a custom encoding must be selected")
}
if (!is.null(custom) && !custom %in% seq_len(5)) {
stop("argument custom must be in the range [1, 5]")
}
outFormats <- list(
A = list(x = "Sanger", y = 1, q = 33, range = "[33 - 73]"),
B = list(x = "Illumina 1.8+", y = 2, q = 33, range = "[33; 74]"),
C = list(x = "Illumina 1.5+", y = 3, q = 64, range = "[66; 104]"),
D = list(x = "Illumina 1.3+", y = 4, q = 64, range = "[64; 104]"),
E = list(x = "Solexa", y = 5, q = 64, range = "[59; 104]"))
if (!is.null(x)) {
xmin <- min(x, na.rm = TRUE)
xmax <- max(x, na.rm = TRUE)
if (xmin < 33 || xmax > 104) {
stop(paste0("Quality values corrupt. Found [min = ",
xmin, " max=", xmax, "],
but a range between [33; 104] was expected\n"))
}
if (xmin >= 33 && xmax <= 73)
out <- outFormats$A
else if (xmin >= 33 && xmax <= 74)
out <- outFormats$B
else if (xmin >= 66 && xmax <= 104)
out <- outFormats$C
else if (xmin >= 64 && xmax <= 104)
out <- outFormats$D
else if (xmin >= 59 && xmax <= 104)
out <- outFormats$E
} else {
if (custom == 1)
out <- outFormats$A
else if (custom == 2)
out <- outFormats$B
else if (custom == 3)
out <- outFormats$C
else if (custom == 4)
out <- outFormats$D
else if (custom == 5)
out <- outFormats$E
}
out
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.