####################################################################
## 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 samples are found in both data and segments
#If sample=NULL; all unique sampleIDs found in both data and segments are selected
#Input:
### data: the copy number data frame
### segments: a list containing one or more segmentations
### sample: a vector of sample numbers, or NULL
##Output:
### sampleID: a vector of unique selected sampleIDs to be plotted
##Function called by:
### checkAndRetrievePlotInput
##Function calls: none
checkSampleID <- function(data,segments,sample){
sampleID <- NULL
if(!is.null(data)){
sample.names <- colnames(data)[-c(1:2)]
#Pick out ID for samples to be plotted
if(!is.null(sample)){
sampleID <- sample.names[sample]
if(length(sampleID)==0){
stop("Input in 'sample' is larger than the number of samples found in 'data'",.call=FALSE)
}
}else{
sampleID <- sample.names
}
}
if(!is.null(segments)){
all.segid <- sapply(segments,"[",i=1) #returns a list with all sampleID for each segmentation
all.segid <- lapply(all.segid,as.character) #convert from factor to charachter
all.segid <- lapply(all.segid,unique) #get unique sampleids in each segmentation
#Find common sampleIDs in data and all segmentations, given input in sample
i <- 1
if(is.null(sampleID)){ #data is NULL
#Get sampleIDs to be plotted for the first segmentation result
sampleID <- all.segid[[1]]
if(!is.null(sample)){
sampleID <- sampleID[sample]
if(length(sampleID)==0){
stop("Input in 'sample' is larger than the number of samples found in 'segments'",.call=FALSE)
}
}
i <- i+1
}
#Get the sampleIDs that are also found in other segmentations (if more than one)
while(i<=length(all.segid)){
sampleID <- intersect(sampleID,all.segid[[i]])
i <- i+1
}
if(length(sampleID)==0){
if(!is.null(data)){
stop("no sampleIDs are common in 'data' and 'segments'",.call=FALSE)
}else{
stop("no sampleIDs are common in all components of 'segments'",.call=FALSE)
}
}
}
#Check input sampleID and print errors or warnings if necessary:
sampleID <- sampleID[!is.na(sampleID)] #could be NA if 'sample' is outside the number of samples represented in data/segments
return(sampleID)
}#end checkSampleID
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.