Possible problem with lumi function addControlData2lumi and proposed solution
0
0
Entering edit mode
Pan Du ★ 1.2k
@pan-du-2010
Last seen 10.3 years ago
Thanks! Davis. However, this problem was resolved in the developing version. It should run well if you use the developing version 1.7.xx. Anyway, thanks for reporting the problem. Have a nice day, Pan On 10/21/08 5:00 AM, "bioconductor-request at stat.math.ethz.ch" <bioconductor-request at="" stat.math.ethz.ch=""> wrote: > Date: Mon, 20 Oct 2008 14:51:46 -0500 > From: "Davis, Wade" <davisjwa at="" health.missouri.edu=""> > Subject: [BioC] Possible problem with lumi function > addControlData2lumi and proposed solution > To: <bioconductor at="" stat.math.ethz.ch=""> > Message-ID: > <09E4AABB118D2C47AEDFC6210BF1DEA902F2A702 at UM- XMAIL02.um.umsystem.edu> > Content-Type: text/plain > > Dear Pan Du et al (and other bioconductoRs): > > > > First, let me say that I have been using the lumi package for a few > years now, and I appreciate the time and effort it takes to maintain a > package. I am very grateful. > > > > I just recently received some data from Illumina's Human HT-12 (V3) > chip. It is the first time I've used it with lumi. I decided to finally > take advantage of the controlData slot by using the addControlData2lumi > function. However, when using it, I got the following error message. > > > >> addControlData2lumi(controlFile, eth.lumi) > > [1] "Inputting the data ..." > > [1] "Adding nuID to the data ..." > > Error in addControlData2lumi(controlFile, eth.lumi) : > > SampleID does not match up between controlData and x.lumi! > > In addition: Warning message: > > In addNuId2lumi(x.lumi, lib = lib) : > > Please provide the annotation file or lumi annotation library! > > > > I am primarily concerned about the message: "SampleID does not match up > between controlData and x.lumi!" > > I had the problem with both lumi 1.6.3 and 1.4.0. > > > > Digging into the function, it appears that the creation of the > controlData dataframe is causing the problem. > > > > function (controlData, x.lumi) > > { > > if (missing(x.lumi) || missing(controlData)) > > stop("Both controlData and x.lumi are required!") > > if (is.character(controlData)) { > > controlFile <- controlData > > allControlInfo <- lumiR.batch(controlFile, lib = NULL, > > checkDupId = FALSE) > > controlData <- as.data.frame(exprs(allControlInfo)) > > controlType <- > as.character(pData(featureData(allControlInfo))$TargetID) > > ProbeID <- > as.character(pData(featureData(allControlInfo))$ProbeID) > > controlData <- data.frame(controlType = controlType, > > ProbeID = ProbeID, controlData) > > } > > if (is.matrix(controlData)) > > controlData <- as.data.frame(controlData) > > if (is(controlData, "data.frame")) { > > sampleID <- as.character(pData(phenoData(x.lumi))$sampleID) > > if (is.null(sampleID)) > > sampleID <- sampleNames(x.lumi) > > controlSampleID <- names(controlData) > > if ("TargetID" %in% controlSampleID) { > > controlSampleID[controlSampleID == "TargetID"] <- > "controlType" > > } > > if (all(sampleID %in% controlSampleID)) { > > x.lumi at controlData <- controlData[, c("controlType", > > "ProbeID", sampleID)] > > } > > else { > > sampleIDInfo <- strsplit(sampleID, split = "_") > > newID <- NULL > > temp <- lapply(sampleIDInfo, function(x) { > > newID <<- c(newID, paste(x[1:2], collapse = "_")) > > }) > > if (all(newID %in% controlSampleID)) { > > x.lumi at controlData <- controlData[, c("controlType", > > "ProbeID", newID)] > > } > > else { > > stop("SampleID does not match up between controlData and > x.lumi!") > > } > > } > > names(x.lumi at controlData) <- c("controlType", "ProbeID", > > sampleNames(x.lumi)) > > } > > else { > > stop("Input data type is not supported!") > > } > > return(x.lumi) > > } > > > > When controlData is first defined as > > controlData <- as.data.frame(exprs(allControlInfo)) > > the variable names from my data are: > > [1] "4421321204_A" "4421321204_B" "4421321204_C" "4421321204_D" > "4421321204_E" "4421321204_F" > > [7] "4421321204_G" "4421321204_H" "4421321204_I" "4421321204_J" > "4421321204_K" "4421321204_L" > > which are just the chip names. > > > > After this line: > > controlData <- data.frame(controlType = controlType, > > ProbeID = ProbeID, controlData) > > the variable names from my data become: > > 1] "controlType" "ProbeID" "X4421321204_A" "X4421321204_B" > "X4421321204_C" "X4421321204_D" > > [7] "X4421321204_E" "X4421321204_F" "X4421321204_G" "X4421321204_H" > "X4421321204_I" "X4421321204_J" > > [13] "X4421321204_K" "X4421321204_L" > > As you can see, the chip names now have the letter X appended. Thus, > when the function compares controlSampleID to newID, it says they do not > match. > > > > The X prefix on the chip names comes from the make.names function being > employed because the default behavior of data.frame is to have > check.names=T, which triggers make.names. I modified > addControlData2lumi() by adding check.names=F as such: > > controlData <- data.frame(controlType = controlType, > > ProbeID = ProbeID, controlData,check.names=F) > > > > Then the function works fine. > > > > So I suggest making this change, although I don't know what unintended > behavior this could cause with other lumi functions. If the change is > made, more code might be needed to make sure that chip names are not > duplicated. > > > > I hope this message has been useful, and that I have not overlooked > other messages on this topic. Thank for your time. > > > > Regards, > Wade > > > > > > J. Wade Davis, PhD > > University of Missouri > >
Annotation lumi Annotation lumi • 647 views
ADD COMMENT

Login before adding your answer.

Traffic: 636 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6