\name{strand-utils}
\alias{strand-utils}
\alias{strand,missing-method}
\alias{strand,character-method}
\alias{strand,factor-method}
\alias{strand,integer-method}
\alias{strand,logical-method}
\alias{strand,Rle-method}
\alias{strand,DataTable-method}
\alias{strand<-,DataTable-method}
\title{Strand utilities}
\description{
Some useful \code{strand} methods.
}
\usage{
\S4method{strand}{missing}(x)
\S4method{strand}{character}(x)
\S4method{strand}{factor}(x)
\S4method{strand}{integer}(x)
\S4method{strand}{logical}(x)
\S4method{strand}{Rle}(x)
\S4method{strand}{DataTable}(x)
\S4method{strand}{DataTable}(x) <- value
}
\arguments{
\item{x}{The object from which to obtain a strand factor, can be
missing.}
\item{value}{Replacement value for the strand.}
}
\details{
If \code{x} is missing, returns an empty factor with the
standard levels that any strand factor should have: \code{+},
\code{-}, and \code{*}.
If \code{x} is a character vector or factor, it is coerced to a factor
with the levels listed above.
If \code{x} is an integer vector, it is coerced to a factor
with the levels listed above. \code{1} and \code{-1}
values in \code{x} are mapped to the \code{+} and \code{-}
levels respectively. \code{NA}s in \code{x} produce \code{NA}s
in the result.
If \code{x} is a logical vector, it is coerced to a factor
with the levels listed above. \code{FALSE} and \code{TRUE}
values in \code{x} are mapped to the \code{+} and \code{-}
levels respectively. \code{NA}s in \code{x} produce \code{NA}s
in the result.
If \code{x} is a 'logical'-\link[IRanges]{Rle} vector, it is
transformed with \code{runValue(x) <- strand(runValue(x))}
and returned.
If \code{x} inherits from \code{DataTable}, the \code{"strand"}
column is returned as a factor with the levels listed above. If
\code{x} has no \code{"strand"} column, this return value is
populated with \code{NA}s.
}
\author{ Michael Lawrence }
\seealso{
\code{\link[BiocGenerics]{strand}}
}
\examples{
strand()
strand(c("+", "-", NA, "*"))
strand(c(-1L, 1L, NA, -1L, NA))
strand(c(FALSE, FALSE, TRUE, NA, TRUE, FALSE))
strand(Rle(c(FALSE, FALSE, TRUE, NA, TRUE, FALSE)))
}
\keyword{methods}