CRAN dependencies

New policy in CRAN

With the new policy of a maximum of 20 packages in Imports. Let’s see how many dependencies has each package on CRAN and Bioconductor:

CRAN

ap <- available.packages()
dp <- tools::package_dependencies(rownames(ap), db = ap, which = "Imports", 
                                  recursive = FALSE)
dp_n <- lengths(dp)
tb_dp <- sort(table(dp_n), decreasing = TRUE)
barplot(tb_dp)

Most of the packages has 0 dependencies and just 212 has 20 dependencies or more:

names(dp_n)[dp_n >= 20]
##   [1] "AdhereRViz"         "AFM"                "AirSensor"         
##   [4] "alookr"             "amt"                "animaltracker"     
##   [7] "antaresViz"         "BAMBI"              "BasketballAnalyzeR"
##  [10] "BAwiR"              "bea.R"              "BETS"              
##  [13] "bibliometrix"       "biomod2"            "bioRad"            
##  [16] "BIRDS"              "bootnet"            "bpcs"              
##  [19] "breathtestcore"     "brms"               "card"              
##  [22] "chemmodlab"         "chillR"             "Clustering"        
##  [25] "CNVScope"           "codebook"           "cSEM"              
##  [28] "ctmm"               "ctsem"              "DAMisc"            
##  [31] "dartR"              "datacleanr"         "dccvalidator"      
##  [34] "devtools"           "dextergui"          "diceR"             
##  [37] "dipsaus"            "DIscBIO"            "distill"           
##  [40] "dlookr"             "dragon"             "drhur"             
##  [43] "dyngen"             "dynwrap"            "ebirdst"           
##  [46] "ecd"                "ecochange"          "EcoGenetics"       
##  [49] "ecospat"            "EFAtools"           "eiCompare"         
##  [52] "elementR"           "emdi"               "emuR"              
##  [55] "eph"                "EpiNow2"            "epitweetr"         
##  [58] "fdm2id"             "FedData"            "finalfit"          
##  [61] "forestmangr"        "genBaRcode"         "geoviz"            
##  [64] "ggquickeda"         "GJRM"               "GmAMisc"           
##  [67] "golem"              "graph4lg"           "GWSDAT"            
##  [70] "hdpGLM"             "highcharter"        "hmi"               
##  [73] "htsr"               "hybridEnsemble"     "iCellR"            
##  [76] "immunarch"          "inlmisc"            "IntClust"          
##  [79] "iNZightTools"       "IOHanalyzer"        "isoreader"         
##  [82] "ITNr"               "jmv"                "jsmodule"          
##  [85] "JWileymisc"         "KarsTS"             "lilikoi"           
##  [88] "mdapack"            "memapp"             "metacoder"         
##  [91] "MetaDBparse"        "MetaIntegrator"     "microbial"         
##  [94] "missCompare"        "mlflow"             "modchart"          
##  [97] "modeltime"          "modeltime.ensemble" "modeltime.resample"
## [100] "momentuHMM"        
##  [ reached getOption("max.print") -- omitted 112 entries ]

Bioconductor

The interesting part is discovering how to add the repository. The trick is to make us of BiocManager::repositories():

BioC_software <- BiocManager::repositories()["BioCsoft"]
bp <- available.packages(contriburl = contrib.url(BioC_software))
dp_BioC <- tools::package_dependencies(rownames(bp), db = bp, which = "Imports", 
                                  recursive = FALSE)
dp_BioC_n <- lengths(dp_BioC)
tb_dp_BioC <- sort(table(dp_BioC_n), decreasing = TRUE)
barplot(tb_dp_BioC)

It seems that software packages on Bioconductor tend to have more dependencies than on CRAN. If this policy would be implemented on Bioconductor it would affect 219 packages:

names(dp_BioC_n)[dp_BioC_n >= 20]
##   [1] "abseqR"              "adductomicsR"        "ALPS"               
##   [4] "AlpsNMR"             "AMARETTO"            "amplican"           
##   [7] "AneuFinder"          "animalcules"         "appreci8R"          
##  [10] "ArrayExpressHTS"     "arrayQualityMetrics" "artMS"              
##  [13] "ASpediaFI"           "ATACseqQC"           "BASiCS"             
##  [16] "BatchQC"             "bigPint"             "bioCancer"          
##  [19] "BiocOncoTK"          "BiocPkgTools"        "biovizBase"         
##  [22] "biscuiteer"          "BPRMeth"             "bsseq"              
##  [25] "BUSpaRse"            "CAGEr"               "CATALYST"           
##  [28] "celda"               "CEMiTool"            "CeTF"               
##  [31] "ChAMP"               "chimeraviz"          "chipenrich"         
##  [34] "ChIPpeakAnno"        "ChIPQC"              "ChIPseeker"         
##  [37] "ChromSCape"          "chromVAR"            "cicero"             
##  [40] "circRNAprofiler"     "CiteFuse"            "clusterExperiment"  
##  [43] "clustifyr"           "CNEr"                "CNVPanelizer"       
##  [46] "CNVRanger"           "cola"                "COMPASS"            
##  [49] "compcodeR"           "CONFESS"             "consensusDE"        
##  [52] "contiBAIT"           "crlmm"               "crossmeta"          
##  [55] "cTRAP"               "CytoML"              "CytoTree"           
##  [58] "DAMEfinder"          "DaMiRseq"            "debrowser"          
##  [61] "deco"                "decompTumor2Sig"     "DEGreport"          
##  [64] "DEP"                 "DepecheR"            "destiny"            
##  [67] "DEsubs"              "DiffBind"            "diffcyt"            
##  [70] "diffHic"             "diffloop"            "DiscoRhythm"        
##  [73] "dmrseq"              "Doscheda"            "EGSEA"              
##  [76] "ELMER"               "ENmix"               "enrichTF"           
##  [79] "esATAC"              "EventPointer"        "exomePeak2"         
##  [82] "fcoex"               "FindMyFriends"       "flowSpy"            
##  [85] "flowWorkspace"       "FRASER"              "GAPGOM"             
##  [88] "GENESIS"             "GeneTonic"           "genomation"         
##  [91] "GenomicInteractions" "GenVisR"             "ggbio"              
##  [94] "GGtools"             "GladiaTOX"           "GmicR"              
##  [97] "gQTLstats"           "Gviz"                "GWENA"              
## [100] "HiCBricks"          
##  [ reached getOption("max.print") -- omitted 119 entries ]

Reproducibility

## ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 4.0.1 (2020-06-06)
##  os       Ubuntu 20.04.1 LTS          
##  system   x86_64, linux-gnu           
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       Europe/Madrid               
##  date     2021-01-08                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
##  package     * version date       lib source                           
##  assertthat    0.2.1   2019-03-21 [1] CRAN (R 4.0.1)                   
##  BiocManager   1.30.10 2019-11-16 [1] CRAN (R 4.0.1)                   
##  blogdown      0.21.84 2021-01-07 [1] Github (rstudio/blogdown@c4fbb58)
##  bookdown      0.21    2020-10-13 [1] CRAN (R 4.0.1)                   
##  cli           2.2.0   2020-11-20 [1] CRAN (R 4.0.1)                   
##  crayon        1.3.4   2017-09-16 [1] CRAN (R 4.0.1)                   
##  digest        0.6.27  2020-10-24 [1] CRAN (R 4.0.1)                   
##  evaluate      0.14    2019-05-28 [1] CRAN (R 4.0.1)                   
##  fansi         0.4.1   2020-01-08 [1] CRAN (R 4.0.1)                   
##  glue          1.4.2   2020-08-27 [1] CRAN (R 4.0.1)                   
##  htmltools     0.5.0   2020-06-16 [1] CRAN (R 4.0.1)                   
##  knitr         1.30    2020-09-22 [1] CRAN (R 4.0.1)                   
##  magrittr      2.0.1   2020-11-17 [1] CRAN (R 4.0.1)                   
##  rlang         0.4.10  2020-12-30 [1] CRAN (R 4.0.1)                   
##  rmarkdown     2.6     2020-12-14 [1] CRAN (R 4.0.1)                   
##  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 4.0.1)                   
##  stringi       1.5.3   2020-09-09 [1] CRAN (R 4.0.1)                   
##  stringr       1.4.0   2019-02-10 [1] CRAN (R 4.0.1)                   
##  withr         2.3.0   2020-09-22 [1] CRAN (R 4.0.1)                   
##  xfun          0.20    2021-01-06 [1] CRAN (R 4.0.1)                   
##  yaml          2.2.1   2020-02-01 [1] CRAN (R 4.0.1)                   
## 
## [1] /home/lluis/bin/R/4.0.1/lib/R/library

Edit this page

Avatar
Lluís Revilla Sancho
Data scientist

Data scientist with interests in software quality, mostly R.

Related