The R package HiLDA is developed under the Bayesian framework to select the number of mutational signatures based on perplexity and cross-validation. The mutation signature is defined based on the independent model proposed by Shiraishi’s et al.
Shiraishi et al. A simple model-based approach to inferring and visualizing cancer mutation signatures, bioRxiv, doi: http://dx.doi.org/10.1101/019901.
Zhi Yang, Paul Marjoram, Kimberly D. Siegmund. Selecting the number of mutational signatures using a perplexity-based measure and cross-validation.
selectKSigs requires several CRAN and Bioconductor R packages to be installed. Dependencies are usually handled automatically, when installing the package using the following commands:
install.packages("BiocManager")
BiocManager::install("selectKSigs")
[NOTE: Ignore the first line if you already have installed the BiocManager.]
You can also download the newest version from the GitHub using devtools:
devtools::install_github("USCbiostats/selectKSigs")
selectKSigs
is a package built on some basic functions
from pmsignature
including how to read the input data. Here
is an example from pmsignature
on the input data,
mutation features are elements used for categorizing mutations
such as:
sample1 chr1 100 A C
sample1 chr1 200 A T
sample1 chr2 100 G T
sample2 chr1 300 T C
sample3 chr3 400 T C
Here, inputFile is the path for the input file. numBases is the number of flanking bases to consider including the central base (if you want to consider two 5’ and 3’ bases, then set 5). Also, you can add transcription direction information using trDir. numSig sets the number of mutation signatures estimated from the input data. You will see a warning message on some mutations are being removed.
## Loading required package: ggplot2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
inputFile <- system.file("extdata/esophageal.mp.txt.gz", package="HiLDA")
G <- hildaReadMPFile(inputFile, numBases=5, trDir=TRUE)
## Warning in hildaReadMPFile(inputFile, numBases = 5, trDir = TRUE): Out of 24861
## mutations, we could obtaintranscription direction information for 24728
## mutation. Other mutations are removed.
Also, we also provided a small simulated dataset which contains 10 mutational catalogs and used it for demonstrating the key functions in selectKSigs. We start with loading the sample dataset G stored as extdata/sample.rdata.
After we read in the sample data G, we can run the process from selectKSigs. Here, we specify the inputG as G, the number of cross-validation folds, kfold to be 3, the number of replications, nRep, to be 3, and the upper limit of the K values for exploration to be 7.
After we obtained the results, we can plot each measure by the range of K values that were refitted during the calculation. The optimal value of K is achieved at its minimum value highlighted in grey.
results$Kvalue <- seq_len(nrow(results)) + 1
results_df <- gather(results, Method, value, -Kvalue) %>%
group_by(Method) %>%
mutate(xmin = which.min(value) + 1 - 0.1,
xmax = which.min(value) + 1 + 0.1)
ggplot(results_df) +
geom_point(aes(x = Kvalue, y = value, color = Method), size = 2) +
facet_wrap(~ Method, scales = "free") +
geom_rect(mapping = aes(xmin = xmin, xmax = xmax,
ymin = -Inf, ymax = Inf),
fill = 'grey', alpha = 0.05) +
theme_bw()+
xlab("Number of signatures")
Here is the output of sessionInfo()
for reproducibility
in the future.
## R version 4.4.2 (2024-10-31)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 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: Etc/UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] selectKSigs_1.19.0 dplyr_1.1.4 tidyr_1.3.1 HiLDA_1.21.0
## [5] ggplot2_3.5.1 BiocStyle_2.35.0
##
## loaded via a namespace (and not attached):
## [1] tidyselect_1.2.1
## [2] farver_2.1.2
## [3] blob_1.2.4
## [4] rjags_4-16
## [5] Biostrings_2.75.3
## [6] bitops_1.0-9
## [7] fastmap_1.2.0
## [8] RCurl_1.98-1.16
## [9] GenomicAlignments_1.43.0
## [10] XML_3.99-0.17
## [11] digest_0.6.37
## [12] lifecycle_1.0.4
## [13] R2jags_0.8-9
## [14] KEGGREST_1.47.0
## [15] RSQLite_2.3.9
## [16] magrittr_2.0.3
## [17] compiler_4.4.2
## [18] rlang_1.1.4
## [19] sass_0.4.9
## [20] tools_4.4.2
## [21] utf8_1.2.4
## [22] yaml_2.3.10
## [23] rtracklayer_1.67.0
## [24] knitr_1.49
## [25] labeling_0.4.3
## [26] S4Arrays_1.7.1
## [27] bit_4.5.0.1
## [28] curl_6.0.1
## [29] DelayedArray_0.33.3
## [30] abind_1.4-8
## [31] BiocParallel_1.41.0
## [32] withr_3.0.2
## [33] purrr_1.0.2
## [34] BiocGenerics_0.53.3
## [35] sys_3.4.3
## [36] grid_4.4.2
## [37] stats4_4.4.2
## [38] fansi_1.0.6
## [39] colorspace_2.1-1
## [40] gtools_3.9.5
## [41] scales_1.3.0
## [42] SummarizedExperiment_1.37.0
## [43] cli_3.6.3
## [44] rmarkdown_2.29
## [45] crayon_1.5.3
## [46] generics_0.1.3
## [47] httr_1.4.7
## [48] rjson_0.2.23
## [49] DBI_1.2.3
## [50] cachem_1.1.0
## [51] stringr_1.5.1
## [52] zlibbioc_1.52.0
## [53] parallel_4.4.2
## [54] AnnotationDbi_1.69.0
## [55] BiocManager_1.30.25
## [56] XVector_0.47.0
## [57] restfulr_0.0.15
## [58] matrixStats_1.4.1
## [59] vctrs_0.6.5
## [60] boot_1.3-31
## [61] Matrix_1.7-1
## [62] jsonlite_1.8.9
## [63] IRanges_2.41.2
## [64] S4Vectors_0.45.2
## [65] bit64_4.5.2
## [66] GenomicFeatures_1.59.1
## [67] maketools_1.3.1
## [68] jquerylib_0.1.4
## [69] R2WinBUGS_2.1-22.1
## [70] glue_1.8.0
## [71] codetools_0.2-20
## [72] cowplot_1.1.3
## [73] stringi_1.8.4
## [74] gtable_0.3.6
## [75] GenomeInfoDb_1.43.2
## [76] BiocIO_1.17.1
## [77] GenomicRanges_1.59.1
## [78] UCSC.utils_1.3.0
## [79] munsell_0.5.1
## [80] tibble_3.2.1
## [81] pillar_1.9.0
## [82] htmltools_0.5.8.1
## [83] BSgenome.Hsapiens.UCSC.hg19_1.4.3
## [84] GenomeInfoDbData_1.2.13
## [85] BSgenome_1.75.0
## [86] R6_2.5.1
## [87] evaluate_1.0.1
## [88] lattice_0.22-6
## [89] Biobase_2.67.0
## [90] png_0.1-8
## [91] Rsamtools_2.23.1
## [92] memoise_2.0.1
## [93] TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2
## [94] bslib_0.8.0
## [95] Rcpp_1.0.13-1
## [96] coda_0.19-4.1
## [97] SparseArray_1.7.2
## [98] xfun_0.49
## [99] MatrixGenerics_1.19.0
## [100] forcats_1.0.0
## [101] buildtools_1.0.0
## [102] pkgconfig_2.0.3