The BiocBaseUtils package provides a suite of helper functions designed to
help developers. Currently, it covers three topics often encountered during
the development process.
show method - Limiting the output of internal components of a classInstall the package directly from Bioconductor:
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("BiocBaseUtils")library(BiocBaseUtils)We provide a number of functions that helps the developer establish the
type of class of a particular object. These include integer, numeric,
character, and logical; types often used in R / Bioconductor.
isTRUEorFALSE(TRUE)
#> [1] TRUE
isTRUEorFALSE(FALSE)
#> [1] TRUE
isTRUEorFALSE(NA, na.ok = TRUE)
#> [1] TRUEisScalarCharacter(LETTERS)
#> [1] FALSE
isScalarCharacter("L")
#> [1] TRUE
isCharacter(LETTERS)
#> [1] TRUE
isCharacter(NA_character_, na.ok = TRUE)
#> [1] TRUE
isZeroOneCharacter("")
#> [1] FALSE
isZeroOneCharacter("", zchar = TRUE)
#> [1] TRUEisScalarInteger(1L)
#> [1] TRUE
isScalarInteger(1)
#> [1] FALSE
isScalarNumber(1)
#> [1] TRUE
isScalarNumber(1:2)
#> [1] FALSEThis function is often used in packages that establish formal S4 classes.
When updating the value of a slot, one often uses the setSlots function.
setClass("A", representation = representation(slot1 = "numeric"))
aclass <- new("A", slot1 = 1:10)
aclass
#> An object of class "A"
#> Slot "slot1":
#>  [1]  1  2  3  4  5  6  7  8  9 10Now we use the setSlots function to update the values in the object.
aclass <- setSlots(aclass, slot1 = 11:20)
aclass
#> An object of class "A"
#> Slot "slot1":
#>  [1] 11 12 13 14 15 16 17 18 19 20Note that setSlots provides the same functionality as
BiocGenerics:::replaceSlots but is more consistent with Bioconductor the
setter and getter language.
show methodThe selectSome function allows the developer to display a limited amount of
information from a developed class. Note that the use of the @ here is due
to the minimal implementation in the examples provided. The developer should
always provide an interface to access the internal components of the class
via an ‘accessor’ function.
setMethod("show", signature = "A", function(object) {
    s1info <- getElement(object, "slot1")
    cat("A sequence:", selectSome(s1info))
})
aclass
#> A sequence: 11 12 ... 19 20BiocBaseUtils is a work in progress and we welcome contributions. There
are quite a few often-used utility functions that are yet to be included in the
package. We would like to keep the dependencies in this package minimal;
therefore, contributions should mostly use base R.
sessionInfo()
#> R version 4.3.1 (2023-06-16)
#> Platform: x86_64-pc-linux-gnu (64-bit)
#> Running under: Ubuntu 22.04.3 LTS
#> 
#> Matrix products: default
#> BLAS:   /home/biocbuild/bbs-3.18-bioc/R/lib/libRblas.so 
#> LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
#> 
#> locale:
#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
#>  [3] LC_TIME=en_GB              LC_COLLATE=C              
#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
#>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
#> 
#> time zone: America/New_York
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] BiocBaseUtils_1.4.0 BiocStyle_2.30.0   
#> 
#> loaded via a namespace (and not attached):
#>  [1] digest_0.6.33       R6_2.5.1            bookdown_0.36      
#>  [4] fastmap_1.1.1       xfun_0.40           cachem_1.0.8       
#>  [7] knitr_1.44          htmltools_0.5.6.1   rmarkdown_2.25     
#> [10] cli_3.6.1           sass_0.4.7          jquerylib_0.1.4    
#> [13] compiler_4.3.1      tools_4.3.1         evaluate_0.22      
#> [16] bslib_0.5.1         yaml_2.3.7          BiocManager_1.30.22
#> [19] jsonlite_1.8.7      rlang_1.1.1Please report minimally reproducible bugs at our github issue page.