GenomicRanges:C 堆栈使用...太接近限制

GenomicRanges: C stack usage ... is too close to the limit

我正在从 biovizBase 包中加载内置表意文字:

data("hg19Ideogram", package = "biovizBase")

str:

检查时,实际对象是好的
> hg19Ideogram %>% str
Formal class 'GRanges' [package "GenomicRanges"] with 6 slots
  ..@ seqnames       :Formal class 'Rle' [package "IRanges"] with 4 slots
  .. .. ..@ values         : Factor w/ 93 levels "chr1","chr1_gl000191_random",..: 1 2 3 4 5 6 7 8 9 10 ...
  .. .. ..@ lengths        : int [1:93] 1 1 1 1 1 1 1 1 1 1 ...
  .. .. ..@ elementMetadata: NULL
  .. .. ..@ metadata       : list()
  ..@ ranges         :Formal class 'IRanges' [package "IRanges"] with 6 slots
  .. .. ..@ start          : int [1:93] 1 1 1 1 1 1 1 1 1 1 ...
  .. .. ..@ width          : int [1:93] 249250621 106433 547496 243199373 198022430 191154276 590426 189789 191469 180915260 ...
  .. .. ..@ NAMES          : NULL
  .. .. ..@ elementType    : chr "integer"
  .. .. ..@ elementMetadata: NULL
  .. .. ..@ metadata       : list()
  ..@ strand         :Formal class 'Rle' [package "IRanges"] with 4 slots
  .. .. ..@ values         : Factor w/ 3 levels "+","-","*": 3
  .. .. ..@ lengths        : int 93
  .. .. ..@ elementMetadata: NULL
  .. .. ..@ metadata       : list()
  ..@ elementMetadata:Formal class 'DataFrame' [package "IRanges"] with 6 slots
  .. .. ..@ rownames       : NULL
  .. .. ..@ nrows          : int 93
  .. .. ..@ listData       : Named list()
  .. .. ..@ elementType    : chr "ANY"
  .. .. ..@ elementMetadata: NULL
  .. .. ..@ metadata       : list()
  ..@ seqinfo        :Formal class 'Seqinfo' [package "GenomicRanges"] with 4 slots
  .. .. ..@ seqnames   : chr [1:93] "chr1" "chr1_gl000191_random" "chr1_gl000192_random" "chr2" ...
  .. .. ..@ seqlengths : int [1:93] 249250621 106433 547496 243199373 198022430 191154276 590426 189789 191469 180915260 ...
  .. .. ..@ is_circular: logi [1:93] NA NA NA NA NA NA ...
  .. .. ..@ genome     : chr [1:93] "hg19" "hg19" "hg19" "hg19" ...
  ..@ metadata       : list()

但是打印它会导致错误:

> hg19Ideogram
GRanges object with 93 ranges and 0 metadata columns:
Error: C stack usage  7969604 is too close to the limit

打印任何子对象都不会出现错误(包括 IRanges),因此错误似乎特别是对 GRanges 的打印调用。

此外,尝试将其与 ggbio 一起使用会导致相同的错误:

> ggplot() +
+   layout_circle(hg19Ideogram)
Error: C stack usage  7969268 is too close to the limit

关于此错误还有许多其他问题:

none 其中提供了一个对我有用的解决方案。

Cstack

> Cstack_info()
      size    current  direction eval_depth 
   7969177      16048          1          2 

版本

有人建议更新软件来解决问题。我更新到最新版本的 R、RStudio 和 ggbio(以及相关包),但它没有改变任何东西。

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04 LTS

Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.18.so

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

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

other attached packages:
 [1] GenomicRanges_1.28.4 GenomeInfoDb_1.12.2  IRanges_2.10.2       S4Vectors_0.14.3     biovizBase_1.24.0    ggbio_1.24.1        
 [7] BiocGenerics_0.22.0  dplyr_0.7.1          purrr_0.2.2.2        readr_1.1.1          tidyr_0.6.3          tibble_1.3.3        
[13] ggplot2_2.2.1        tidyverse_1.1.1      psych_1.7.5          pacman_0.4.6        

loaded via a namespace (and not attached):
  [1] colorspace_1.3-2              htmlTable_1.9                 XVector_0.16.0                base64enc_0.1-3              
  [5] dichromat_2.0-0               bit64_0.9-7                   interactiveDisplayBase_1.14.0 AnnotationDbi_1.38.1         
  [9] lubridate_1.6.0               xml2_1.1.1                    splines_3.4.1                 mnormt_1.5-5                 
 [13] knitr_1.16                    Formula_1.2-1                 jsonlite_1.5                  Rsamtools_1.28.0             
 [17] broom_0.4.2                   cluster_2.0.3                 graph_1.54.0                  shiny_1.0.3                  
 [21] compiler_3.4.1                httr_1.2.1                    backports_1.1.0               assertthat_0.2.0             
 [25] Matrix_1.2-3                  lazyeval_0.2.0                acepack_1.4.1                 htmltools_0.3.6              
 [29] tools_3.4.1                   bindrcpp_0.2                  gtable_0.2.0                  glue_1.1.1                   
 [33] GenomeInfoDbData_0.99.0       reshape2_1.4.2                Rcpp_0.12.11                  Biobase_2.36.2               
 [37] cellranger_1.1.0              Biostrings_2.44.1             nlme_3.1-124                  rtracklayer_1.36.4           
 [41] stringr_1.2.0                 rvest_0.3.2                   mime_0.5                      ensembldb_2.0.3              
 [45] XML_3.98-1.9                  AnnotationHub_2.8.2           zlibbioc_1.22.0               scales_0.4.1                 
 [49] BSgenome_1.44.0               VariantAnnotation_1.22.3      BiocInstaller_1.26.0          hms_0.3                      
 [53] ProtGenerics_1.8.0            SummarizedExperiment_1.6.3    RBGL_1.52.0                   AnnotationFilter_1.0.0       
 [57] RColorBrewer_1.1-2            yaml_2.1.14                   curl_2.7                      memoise_1.1.0                
 [61] gridExtra_2.2.1               biomaRt_2.32.1                rpart_4.1-10                  reshape_0.8.6                
 [65] latticeExtra_0.6-28           stringi_1.1.5                 RSQLite_2.0                   checkmate_1.8.2              
 [69] GenomicFeatures_1.28.4        BiocParallel_1.10.1           rlang_0.1.1                   pkgconfig_2.0.1              
 [73] matrixStats_0.52.2            bitops_1.0-6                  lattice_0.20-33               bindr_0.1                    
 [77] GenomicAlignments_1.12.1      htmlwidgets_0.8               bit_1.1-12                    GGally_1.3.1                 
 [81] plyr_1.8.4                    magrittr_1.5                  R6_2.2.2                      Hmisc_4.0-3                  
 [85] DelayedArray_0.2.7            DBI_0.7                       haven_1.0.0                   foreign_0.8-66               
 [89] survival_2.41-3               RCurl_1.95-4.8                nnet_7.3-12                   modelr_0.1.0                 
 [93] OrganismDbi_1.18.0            grid_3.4.1                    readxl_1.0.0                  data.table_1.10.4            
 [97] blob_1.1.0                    forcats_0.2.0                 digest_0.6.12                 xtable_1.8-2                 
[101] httpuv_1.3.5                  munsell_0.4.3   

ulimit

One person suggested 使用 ulimit。这可行,但不清楚如何在 RStudio 中完成此操作。

mint@hp ~ $ ulimit -s
8192
mint@hp ~ $ ulimit -s unlimited
mint@hp ~ $ R --slave -e 'Cstack_info()["size"]'
size 
  NA 

这不是因为计算机没有足够的可用内存 (16GB)。

RAppArmor

One person suggested 使用 RAppArmor 从 R 中增加限制。但是,该功能不再存在。不过看极限好像没什么问题

> rlimit_as();
$hardlim
[1] 1.844674e+19

$softlim
[1] 1.844674e+19

RStudio 中的 ulimit

在评论中,Yuval Ben-Arie 建议在 RStudio 中尝试 ulimit。我尝试过使用 RStudio 的终端和使用 system 从 R 到 运行 系统命令。既不影响实际的 R 会话,也不影响重新启动 R。


我运行没有东西可以尝试。

每个进程的堆栈内存不仅受可用内存限制,还受OS限制(默认不超过几个MiB)。

我不明白 ulimit -s unlimited 是否成功。 “不清楚如何在没有 RStudio 的情况下完成此操作”是什么意思?

原来是因为一些过时的包。我没有注意到它们没有更新,因为 RStudio 的 'update packages functionality' 忽略了一个没有写权限的包(因此根本没有通知你它们已经过时了)。因此,事实证明这是由于一个微妙的权限问题导致的。参见 this answer