Package: splitTypeR
Authors: Astrid Deschênes [aut, cre] (ORCID: https://orcid.org/0000-0001-7846-6749), Pascal Belleau [aut] (ORCID: https://orcid.org/0000-0002-0802-1071)
Version: 0.99.0
Compiled date: 2026-07-28
License: Artistic-2.0

Licensing and citing

This package and the underlying splitTypeR code are distributed under the Artistic license 2.0. You are free to use and redistribute this software.

If you use this package for a publication, we would ask you to cite the following:

Deschênes A, Belleau P (2026). splitTypeR: Transcriptomic classification
using mixture of normal distributions
. R package version 0.99.0, https://github.com/adeschen/splitTypeR.


Introduction

Cancer classification, using RNA sequencing, is now part of modern precision oncology. For some cancers, RNA classification provides deep insights into tumor aggressiveness and growth rates. For example, breast cancer subtypes (like Luminal-A, Luminal-B, HER2-enriched, or Basal-like) help forecast patient outcomes (Cascianelli et al. 2020). The Luminal-A is the most common molecular subtype of breast cancer, making up to 60% of all breast cancer cases. It also is associated with good prognosis. While Luminal-B tumors have a more aggressive phenotype and a worse prognosis (Yersal 2014). Once gene signatures for RNA subtyping become widly accepted by major oncology organizations, they start to classify cancer subtypes, predict patient survival, and guide treatment.

From a research aspect, the classification of new samples using their transcriptional profiles can be done using different tools. For some cancers, machine learning models and dedicated software are available such as the Bioconductor Genefu package for breast cancer molecular subtyping (Gendoo et al. 2016), and the CMScaller package for subtyping of colorectal cancer (Eide et al. 2017).

In the absence of dedicated software, unsupervised clustering with a heatmap visualization to classify transcriptomic samples with a gene signature is often employed. This method is relatively simple and offers an instant visual support. However, this method has a few drawbacks:

  • Lack of statistical metrics: It doesn’t provide a statistical probability score for a sample’s class assignment; it mainly acts as a visual summary.
  • Metric sensitivity: Changing the clustering metric (ex: from “Euclidean” to “Pearson” distance) can alters the resulting clusters.
  • Outlier distortion: Extreme outliers can squash the color scale, and artificially create skewed subsets.

The splitTypeR package resolves these issues by providing an automated statistical framework to classify heterogeneous biological samples based on gene signature lists, effectively isolating the signature-positive samples.

This classification method is designed for bulk transcriptomic datasets.


Installation

As with any R package, the splitTypeR package should first be loaded with the following command:


Method

From a specific gene set, gene set enrichments are first calculated through the samples of a expression dataset with the Bioconductor GSVA package (Hänzelmann et al. 2013).

Through an upscaling step that using a non-parametric permutation method, synthetic values are calculated to enable the calculation of a normal distribution using a mixture model approach implemented in the mixtools package (Benaglia et al. 2009).


General workflow

TODO The


Session info

Here is the output of sessionInfo() on the system on which this document was compiled:

## R Under development (unstable) (2026-06-21 r90185)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.4 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=en_US.UTF-8    
##  [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: UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] splitTypeR_0.99.0 knitr_1.51        BiocStyle_2.41.0 
## 
## loaded via a namespace (and not attached):
##   [1] DBI_1.3.0                   GSEABase_1.75.0            
##   [3] rlang_1.3.0                 magrittr_2.0.5             
##   [5] otel_0.2.0                  matrixStats_1.5.0          
##   [7] compiler_4.7.0              RSQLite_3.53.3             
##   [9] DelayedMatrixStats_1.35.0   png_0.1-9                  
##  [11] systemfonts_1.3.2           vctrs_0.7.3                
##  [13] stringr_1.6.0               pkgconfig_2.0.3            
##  [15] SpatialExperiment_1.23.0    crayon_1.5.3               
##  [17] memuse_4.2-3                fastmap_1.2.0              
##  [19] magick_2.9.1                XVector_0.53.0             
##  [21] rmarkdown_2.31              graph_1.91.0               
##  [23] ragg_1.5.2                  purrr_1.2.2                
##  [25] bit_4.6.0                   xfun_0.60                  
##  [27] cachem_1.1.0                beachmat_2.29.0            
##  [29] jsonlite_2.0.0              blob_1.3.0                 
##  [31] rhdf5filters_1.25.0         DelayedArray_0.39.3        
##  [33] Rhdf5lib_2.1.0              BiocParallel_1.47.0        
##  [35] irlba_2.3.7                 parallel_4.7.0             
##  [37] R6_2.6.1                    stringi_1.8.7              
##  [39] bslib_0.11.0                RColorBrewer_1.1-3         
##  [41] GenomicRanges_1.65.1        jquerylib_0.1.4            
##  [43] Rcpp_1.1.2                  Seqinfo_1.3.0              
##  [45] bookdown_0.47               SummarizedExperiment_1.43.0
##  [47] GSVA_2.7.10                 mixtools_2.0.0.1           
##  [49] IRanges_2.47.2              BiocBaseUtils_1.15.1       
##  [51] splines_4.7.0               Matrix_1.7-6               
##  [53] tidyselect_1.2.1            abind_1.4-8                
##  [55] yaml_2.3.12                 codetools_0.2-20           
##  [57] lattice_0.22-9              tibble_3.3.1               
##  [59] Biobase_2.73.1              KEGGREST_1.53.1            
##  [61] S7_0.2.2                    evaluate_1.0.5             
##  [63] survival_3.8-9              desc_1.4.3                 
##  [65] kernlab_0.9-33              Biostrings_2.81.5          
##  [67] pillar_1.11.1               BiocManager_1.30.27        
##  [69] MatrixGenerics_1.25.0       stats4_4.7.0               
##  [71] plotly_4.12.1               generics_0.1.4             
##  [73] S4Vectors_0.51.5            ggplot2_4.0.3              
##  [75] sparseMatrixStats_1.25.0    scales_1.4.0               
##  [77] xtable_1.8-8                glue_1.8.1                 
##  [79] tools_4.7.0                 data.table_1.18.4          
##  [81] ScaledMatrix_1.21.0         annotate_1.91.0            
##  [83] fs_2.1.0                    XML_3.99-0.23              
##  [85] rhdf5_2.57.1                grid_4.7.0                 
##  [87] tidyr_1.3.2                 AnnotationDbi_1.75.2       
##  [89] SingleCellExperiment_1.35.2 nlme_3.1-170               
##  [91] BiocSingular_1.29.0         HDF5Array_1.41.0           
##  [93] cli_3.6.6                   rsvd_1.0.5                 
##  [95] textshaping_1.0.5           segmented_2.2-1            
##  [97] viridisLite_0.4.3           S4Arrays_1.13.0            
##  [99] dplyr_1.2.1                 gtable_0.3.6               
## [101] sass_0.4.10                 digest_0.6.39              
## [103] BiocGenerics_0.59.10        SparseArray_1.13.2         
## [105] rjson_0.2.23                htmlwidgets_1.6.4          
## [107] farver_2.1.2                memoise_2.0.1              
## [109] htmltools_0.5.9             pkgdown_2.2.0              
## [111] lifecycle_1.0.5             h5mread_1.5.0              
## [113] httr_1.4.8                  MASS_7.3-66                
## [115] bit64_4.8.2
Benaglia, Tatiana, Didier Chauveau, David R. Hunter, and Derek S. Young. 2009. “Mixtools: An r Package for Analyzing Mixture Models.” Journal of Statistical Software 32 (6): 1–29. https://doi.org/10.18637/jss.v032.i06.
Cascianelli, Silvia, Ivan Molineris, Claudio Isella, Marco Masseroli, and Enzo Medico. 2020. “Machine Learning for RNA Sequencing-Based Intrinsic Subtyping of Breast Cancer.” Scientific Reports 10 (December). https://doi.org/10.1038/s41598-020-70832-2.
Eide, Peter W., Jarle Bruun, Ragnhild A. Lothe, and Anita Sveen. 2017. “CMScaller: An r Package for Consensus Molecular Subtyping of Colorectal Cancer Pre-Clinical Models.” Scientific Reports 7 (December). https://doi.org/10.1038/s41598-017-16747-x.
Gendoo, Deena M. A., Natchar Ratanasirigulchai, Markus S. Schröder, et al. 2016. “Genefu: An r/Bioconductor Package for Computation of Gene Expression-Based Signatures in Breast Cancer.” Bioinformatics 32 (April): 1097–99. https://doi.org/10.1093/bioinformatics/btv693.
Hänzelmann, S., R Castelo, and J. Guinney. 2013. “GSVA: Gene Set Variation Analysis for Microarray and RNA-Seq Data.” BMC Bioinformatics 14: 7. https://doi.org/10.1186/1471-2105-14-7.
Yersal, Ozlem. 2014. “Biological Subtypes of Breast Cancer: Prognostic and Therapeutic Implications.” World Journal of Clinical Oncology 5: 412. https://doi.org/10.5306/wjco.v5.i3.412.