mget() error with NA values
0
0
Entering edit mode
@james-w-macdonald-5106
Last seen 31 minutes ago
United States
Hi Christian, Christian Kohler wrote: > Hi Jim, hi Herve, > > thank you both for replying on my question. > Please find below a simple code snippet that was run with R/Bioc > (2.8.1/2.3) and (2.9.0/2.4) and reproduces my error. What you are calling BioC 2.3 isn't the release version. You have a version of AnnotationDbi that was devel somewhere between 2.2 and 2.3, but had been updated to 1.4.3 by release. > The first example (on the mailinglist) was a bad one (sorry Jim). > As I mentioned, the error first appeared with the latest releases and > causes the pipeline to break. > > Jim already suggested on how to proceed and I will follow that but can > you nevertheless tell me the background for this error? > Have there been changes in the annotation packages? This information > would help me to investigate and check the remaining pipeline-code. So to answer your question, the change that affects you here wasn't made to the annotation packages, but to the AnnotationDbi package. There is a function called .checkKeysAreWellFormed() that, well, checks to see that keys used for lookup are well formed (e.g, there are no NA or NULL values and all keys are character), and more importantly returns an error message that clearly states what the problem was. The second point is more important than the first, as obscure error messages tend to eliminate all possibility that end users might be able to self-diagnose their problem. Best, Jim > > Again, I very much appreciate your help. > > Best, > Christian > > > > ##################### > ## R(2.8.1) and BioC(2.3) ## > ##################### > > options(error=recover) > rm(list=ls(all=TRUE)) > > x<-"209569_x_at" > is.upreg<-as.logical(c(0,0,1,1)) ## logical-vector as result from some > prior calculation > x.up<-x[is.upreg] > x.down<-x[!is.upreg] > library(hgu133plus2.db) > up.out<-unique(unlist(mget(x.up,env=hgu133plus2ENTREZID,ifnotfound=N A))) > [1] NA > down.out<-unique(unlist(mget(x.down,env=hgu133plus2ENTREZID,ifnotfou nd=NA))) > [1] "27065" NA > > sessionInfo() > R version 2.8.1 (2008-12-22) > i686-pc-linux-gnu > > locale: > C > > attached base packages: > [1] tools stats graphics grDevices datasets utils methods > [8] base > > other attached packages: > [1] hgu133plus2.db_2.2.5 RSQLite_0.7-0 DBI_0.2-4 > [4] AnnotationDbi_1.3.15 Biobase_2.1.7 R.utils_1.0.1 > [7] R.oo_1.4.5 R.methodsS3_1.0.3 > > #################################################################### > > ##################### > ## R(2.9.0) and BioC(2.4) ## > ##################### > options(error=recover) > rm(list=ls(all=TRUE)) > > x<-"209569_x_at" > is.upreg<-as.logical(c(0,0,1,1)) ## logical-vector as result from some > prior calculation > x.up<-x[is.upreg] > x.down<-x[!is.upreg] > library(hgu133plus2.db) > up.out<-unique(unlist(mget(x.up,env=hgu133plus2ENTREZID,ifnotfound=N A))) > Error in .checkKeysAreWellFormed(keys) : > keys must be supplied in a character vector with no NAs > > Enter a frame number, or 0 to exit > > 1: unique(unlist(mget(x.up, env = hgu133plus2ENTREZID, ifnotfound = NA))) > 2: unlist(mget(x.up, env = hgu133plus2ENTREZID, ifnotfound = NA)) > 3: mget(x.up, env = hgu133plus2ENTREZID, ifnotfound = NA) > 4: mget(x.up, env = hgu133plus2ENTREZID, ifnotfound = NA) > 5: `keys<-`(`*tmp*`, value = c(NA, NA)) > 6: `keys<-`(`*tmp*`, value = c(NA, NA)) > 7: switch(as.character(direction(x)), `1` = `Lkeys<-`(x, value), `-1` = > `Rkeys > 8: `Lkeys<-`(x, value) > 9: `Lkeys<-`(x, value) > 10: .checkKeys(value, Lkeys(x), x at ifnotfound) > 11: .checkKeysAreWellFormed(keys) > > down.out<-unique(unlist(mget(x.down,env=hgu133plus2ENTREZID,ifnotfou nd=NA))) > Error in .checkKeysAreWellFormed(keys) : > keys must be supplied in a character vector with no NAs > > Enter a frame number, or 0 to exit > > 1: unique(unlist(mget(x.down, env = hgu133plus2ENTREZID, ifnotfound = NA))) > 2: unlist(mget(x.down, env = hgu133plus2ENTREZID, ifnotfound = NA)) > 3: mget(x.down, env = hgu133plus2ENTREZID, ifnotfound = NA) > 4: mget(x.down, env = hgu133plus2ENTREZID, ifnotfound = NA) > 5: `keys<-`(`*tmp*`, value = c("209569_x_at", NA)) > 6: `keys<-`(`*tmp*`, value = c("209569_x_at", NA)) > 7: switch(as.character(direction(x)), `1` = `Lkeys<-`(x, value), `-1` = > `Rkeys > 8: `Lkeys<-`(x, value) > 9: `Lkeys<-`(x, value) > 10: .checkKeys(value, Lkeys(x), x at ifnotfound) > 11: .checkKeysAreWellFormed(keys) > > ## sessionInfo() > R version 2.9.0 (2009-04-17) > i686-pc-linux-gnu > > locale: > C > > attached base packages: > [1] stats graphics grDevices datasets utils methods base > > other attached packages: > [1] hgu133plus2.db_2.2.11 RSQLite_0.7-1 DBI_0.2-4 > [4] AnnotationDbi_1.6.0 Biobase_2.4.0 R.utils_1.1.1 > [7] R.oo_1.4.6 R.methodsS3_1.0.3 > > > James W. MacDonald wrote: >> Hi Christian, >> >> Christian Kohler wrote: >>> DeaR bioconductors, >>> >>> we run an internal microarray analysis pipeline and switched today from >>> R/BioC (2.8.1/2.3) to 2.9/2.4. >>> After running some test code, I came across the following error: >>> >>> testCode: >>>> x<-rep(NA,10) >>>> unique(unlist(mget(x, env=hgu133plus2ENTREZID,ifnotfound=NA))) >>> >>> when I run this code snippet with 2.8.1/2.3 the corresponding return >>> value is >>>> [1] NA >> Really? >> >>> x <- rep(NA, 10) >>> mget(x, hgu95av2ENTREZID) >> Error in .checkKeysAreWellFormed(keys) : >> keys must be supplied in a character vector with no NAs >>> sessionInfo() >> R version 2.8.1 (2008-12-22) >> i386-pc-mingw32 >> >> locale: >> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United >> States.1252;LC_MONETARY=English_United >> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 >> >> attached base packages: >> [1] tools stats graphics grDevices datasets utils methods >> [8] base >> >> other attached packages: >> [1] hgu95av2.db_2.2.5 RSQLite_0.7-1 DBI_0.2-4 >> [4] AnnotationDbi_1.4.3 Biobase_2.2.2 >> >> >>> but with 2.9/2.4 I got the following error: >>>> Error during wrapup: keys must be supplied in a character vector with >>> no NAs >>> >>> This causes our pipeline to break there and stop the analysis while in >>> the previous case the analysis still continued with NA values. >>> >>> Please do not think that I am a picky person, but was there any urgent >>> need to change the behaviour of mget()? >>> Is it possible to somehow bypass this? >> The easiest way is to strip the NA values, using the canonical >> >> x <- x[!is.na(x)] >> >> Best, >> >> Jim >> >> >>> >>> Thanks a lot for any help. >>> >>> Christian >>> >>> >>> > > -- James W. MacDonald, M.S. Biostatistician Douglas Lab University of Michigan Department of Human Genetics 5912 Buhl 1241 E. Catherine St. Ann Arbor MI 48109-5618 734-615-7826
Microarray Annotation hgu133plus2 hgu95av2 AnnotationDbi Microarray Annotation hgu133plus2 • 1.3k views
ADD COMMENT

Login before adding your answer.

Traffic: 910 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