我在log2(exprs(eSet))中遇到此错误:数学函数的非数字参数

时间:2018-06-27 11:37:06

标签: r runtime-error bioconductor limma

我使用从https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE1824下载的基因表达数据集“ GSE1824”。 为了开始处理这些数据,我在R studio上加载了所需的软件包:

# load libraries
library(affy) 
library(limma)
library(genefilter)
library(hgu133a.db) 
library(GEOquery)  
library(huex10stprobeset.db)
library(pd.huex.1.0.st.v2) 
library(Biobase)

我已成功在GSE1824_RAW.tar中加载并解压缩了CEL文件,并将这些CEL文件存储在一个名为“ GEMusicAR3 / Cel Files”的目录中。该目录仅包含以下CEL文件:

GSM31867_SKNMC.CEL
GSM31868_SiMa.CEL
GSM31869_CHP126.CEL
GSM31870_SHSY5Y.CEL

我使用以下方法设置主机目录:

> getwd()
 "C:/Users/xxx/Documents"

> HostDir <- getwd()

要处理CEL文件,我运行了以下命令:

setwd(HostDir)  

setwd(paste0("GEMusicAR3/Cel Files",dataset,sep="")) # directory of CEL files

>abatch<-ReadAffy()

>eSet<-mas5(abatch)

background correction: mas 
PM/MM correction : mas 
expression values: mas 
background correcting...done.
22283 ids to be processed
|                    |
|####################|

> log2(exprs(eSet))
Error in log2(exprs(eSet)) : 
  non-numeric argument to mathematical function

我无法找出错误的原因:

Error in log2(exprs(eSet)) : 
      non-numeric argument to mathematical function

直到最近,这段代码一直运行良好,没有任何错误。

在尝试发现错误的可能原因时,我获得了以下信息:

> eSet
ExpressionSet (storageMode: lockedEnvironment)
assayData: 22283 features, 4 samples 
  element names: exprs, se.exprs 
protocolData
  sampleNames: GSM31867_SKNMC.CEL GSM31868_SiMa.CEL GSM31869_CHP126.CEL GSM31870_SHSY5Y.CEL
  varLabels: ScanDate
  varMetadata: labelDescription
phenoData
  sampleNames: GSM31867_SKNMC.CEL GSM31868_SiMa.CEL GSM31869_CHP126.CEL GSM31870_SHSY5Y.CEL
  varLabels: sample
  varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation: hgu133a 

> exprs(eSet)
[[1]]
eSet

> class(eSet)
[1] "ExpressionSet"
attr(,"package")
[1] "Biobase"

> str(exprs(eSet))
List of 1
 $ : symbol eSet

对于可能导致错误的任何提示,我将不胜感激:

Error in log2(exprs(eSet)) : 
      non-numeric argument to mathematical function.

谢谢。

2 个答案:

答案 0 :(得分:4)

我重复了您的步骤,它们确实为我工作。我得到:

> head(log2(exprs(eSet)))
          GSM31867_SKNMC.CEL.gz GSM31868_SiMa.CEL.gz GSM31869_CHP126.CEL.gz GSM31870_SHSY5Y.CEL.gz
1007_s_at              9.582691             9.538568               9.386841              10.030941
1053_at                9.773821             9.518747               8.653242               9.086055
117_at                 6.823635             6.178206               5.297840               5.884189
121_at                 9.921338             9.864903               9.660145               9.400098
1255_g_at              3.588186             7.268338               4.861870               8.804611
1294_at                7.232461             6.687944               6.721579               7.630187

您还说过它以前曾经为您工作,因此这似乎是库版本控制问题。加载所有使用的软件包后,请使用sessionInfo()的输出更新您的问题。这是我的:

R version 3.5.0 (2018-04-23)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Fedora 28 (Workstation Edition)

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
 [1] LC_CTYPE=ru_RU.UTF-8       LC_NUMERIC=C               LC_TIME=en_DK.UTF-8        LC_COLLATE=ru_RU.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] hgu133acdf_2.18.0   affy_1.58.0         Biobase_2.40.0      BiocGenerics_0.26.0 genefilter_1.62.0  
[6] limma_3.36.2       

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.17          AnnotationDbi_1.42.1  zlibbioc_1.26.0       splines_3.5.0        
 [5] IRanges_2.14.10       bit_1.1-14            lattice_0.20-35       xtable_1.8-2         
 [9] blob_1.1.1            tools_3.5.0           grid_3.5.0            DBI_1.0.0            
[13] yaml_2.1.19           survival_2.41-3       bit64_0.9-7           digest_0.6.15        
[17] preprocessCore_1.42.0 affyio_1.50.0         Matrix_1.2-14         S4Vectors_0.18.2     
[21] bitops_1.0-6          RCurl_1.95-4.10       memoise_1.1.0         RSQLite_2.1.1        
[25] BiocInstaller_1.30.0  compiler_3.5.0        stats4_3.5.0          XML_3.98-1.11        
[29] annotate_1.58.0      

或者您可以尝试使用Bioconductor 3.7版-这是对我有用的版本,希望这些库将其接口保留在单个Bioconductor发行版中。

答案 1 :(得分:1)

另一个解释可能是 dplyr 包中的 exprs 函数掩盖了 Biobase 中的 exprs 函数包,因为这两个函数在两个包中具有相同的名称。

https://support.bioconductor.org/p/109128/#109719

我已经通过在脚本的顶部放置*exprs=Biobase::exprs*来解决了这个问题。

# load libraries
exprs=Biobase::exprs
library(affy) 
library(limma)
library(genefilter)
library(hgu133a.db) 
library(GEOquery)  
library(huex10stprobeset.db)
library(pd.huex.1.0.st.v2) 
library(Biobase)

setwd(HostDir)  
setwd(paste0("GEMusicAR3/Cel Files",Datset,sep=""))
abatch<-ReadAffy() 
eSet<-mas5(abatch)  
SI<-log2(exprs(eSet))

> head(SI)
          GSM31867_SKNMC.CEL GSM31868_SiMa.CEL GSM31869_CHP126.CEL GSM31870_SHSY5Y.CEL
1007_s_at           9.582691          9.538568            9.386841           10.030941
1053_at             9.773821          9.518747            8.653242            9.086055
117_at              6.823635          6.178206            5.297840            5.884189
121_at              9.921338          9.864903            9.660145            9.400098
1255_g_at           3.588186          7.268338            4.861870            8.804611
1294_at             7.232461          6.687944            6.721579            7.630187

我承认我已经在计算机上安装了 dplyr软件包,但是我没有将其加载到工作区中,所以为什么会产生干扰?我的脚本上没有 library(dplyr)