####################################################################
## 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 to check that specified chrom are numeric, found in data and/or segments and print appropriate error/warning messages depending on the plot type
# If chrom=NULL; all unique chromosomes found in data and/or segments are selected
# Input:
### chrom: a vector of unique chromosome numbers, or NULL
### data: the copy number data frame
### segments: a list containing one or more segmentations
### type: plot type (sample,chromosome,aspcf)
## Output:
### use.chrom : a vector of unique selected chromosomes to be plotted
## Function called by:
### plotFreq
### plotHeatmap
### plotWeightedFreq
### checkAndRetrievePlotInput
## Function calls:
### numericChrom
checkChrom <- function(data, segments, chrom) {
chrom.list <- NULL
if (!is.null(data)) {
chrom.list <- unique(data[, 1])
}
if (!is.null(segments)) {
all.chrom <- sapply(segments, "[", i = 2) # returns a list with chromsome numbers for each segmentation
seg.chrom <- lapply(all.chrom, unique)
# Find common chromosomes in data and all segmentations:
i <- 1
if (is.null(chrom.list)) {
chrom.list <- seg.chrom[[1]]
i <- i + 1
}
while (i <= length(seg.chrom)) {
chrom.list <- intersect(chrom.list, seg.chrom[[i]])
i <- i + 1
}
} # endif
# Check input chromosomes, print error or warning if needed:
if (is.null(chrom)) {
use.chrom <- chrom.list
} else {
# Make sure chrom is numeric
chrom <- numericChrom(chrom)
# Check that specified chrom are all in allowed list (found in data and segments):
use <- chrom %in% chrom.list
use.chrom <- chrom[use]
if (length(use.chrom) == 0) {
# print error message
if (!is.null(data) && !is.null(segments)) {
msg <- "Specified chromosome(s) are not found in data and/or segments"
} else if (is.null(segments)) {
msg <- "Specified chromosome(s) are not found in data"
} else {
msg <- "Specified chromosome(s) are not found in segments"
}
stop(msg, call. = FALSE)
} else if (length(use.chrom) != length(chrom)) {
not.use <- paste(chrom[!use], sep = "", collapse = ",")
if (!is.null(data) && !is.null(segments)) {
msg <- "The following chromosome(s) are not found in data and/or segments:"
} else if (is.null(segments)) {
msg <- "The following chromosome(s) are not found in data:"
} else {
msg <- "The following chromosome(s) are not found in segments:"
}
warning(paste(msg, not.use, sep = " "), call. = FALSE, immediate. = TRUE)
}
} # endif
# make sure that chromosome numbers are in increasing order
use.chrom <- sort(use.chrom)
return(use.chrom)
} # end checkChrom
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.