####################################################################
## Author: Gro Nilsen, Knut Liestøl and Ole Christian Lingjærde.
## Maintainer: Gro Nilsen <gronilse@ifi.uio.no>
## License: Artistic 2.0
## Part of the copynumber package
## Reference: Nilsen and Liestøl et al. (2012), BMC Genomics
####################################################################
### Function that checks and modfies the input provided in segments in plot functions
## Input:
### segments: data frame or list with data frames containing segmentation results
### type: plot type
## Output:
### new.segments: Checked and modified list of segments
## Required by:
### checkAndRetrievePlotInput
## Requires:
### getUnisegFormat
### is.multiseg
### numericChrom
### pullOutContent
checkSegments <- function(segments, type) {
# Check and pull out relevant information in segments
segments <- pullOutContent(res = segments, what = "segments")
# Get on list form if segments is matrix or data frame:
if (class(segments) != "list") {
segments <- list(seg = segments)
}
nSeg <- length(segments)
seg.names <- names(segments)
if (is.null(seg.names)) {
seg.names <- paste("Seg", 1:nSeg, "")
}
# Segments could be on uniseg or multiseg form, convert all to uniseg form:
new.segments <- vector("list", nSeg) # empty list
for (s in 1:nSeg) {
use.seg <- segments[[s]]
multi <- is.multiseg(use.seg)
if (multi) {
# stopifnot(ncol(use.seg)>=6)
if (ncol(use.seg) < 6) {
stop("segments format is not correct", call. = FALSE)
}
# Convert to uniseg format:
use.seg <- getUnisegFormat(use.seg)
} else {
if (type != "aspcf") {
if (ncol(use.seg) < 7) {
stop("segments format is not correct", call. = FALSE)
# stopifnot(ncol(use.seg)>=7)
}
} else {
if (ncol(use.seg) < 8) {
stop("segments format is not correct", call. = FALSE)
}
}
}
# Make sure chromosomes in column 2 are numeric:
use.seg[, 2] <- numericChrom(use.seg[, 2])
# Make sure arms in column 3 are character:
use.seg[, 3] <- as.character(use.seg[, 3])
new.segments[[s]] <- use.seg
}
names(new.segments) <- seg.names
return(new.segments)
} # end checkSegments
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.