R Observatory
Search
install.packages("rtemis")
CRAN 30-day downloads, method
519+6.6% up on the 30 days before, the better direction

Machine learning and visualization package with an 'S7' backend featuring comprehensive type checking and validation, observable runs, and auditable outputs. The functional API provides one-call access to supervised and unsupervised learning through train(), cluster(), and decomp().

Full description

Machine learning and visualization package with an 'S7' backend featuring comprehensive type checking and validation, observable runs, and auditable outputs. The functional API provides one-call access to supervised and unsupervised learning through train(), cluster(), and decomp(). All configuration steps are performed using setup functions and validated. A single call to train() can handle preprocessing, decomposition, hyperparameter tuning, model stacking, and testing with nested resampling. Supports 'data.frame', 'data.table', and 'tibble' inputs and parallel execution. Plot methods for trained and resampled supervised models draw interactive figures through 'rtemis.draw'. Includes native implementations of SuperLearner, RuleFit, and Linear Additive Trees, and supports conformal prediction. The package first appeared in E.D. Gennatas (2017) <https://repository.upenn.edu/entities/publication/d81892ea-3087-4b71-a6f5-739c58626d64>.

Maintainer
E.D. Gennatas
Latest release
19 Oct 2026
First release
26 Mar 2026

Compare with another package

More details
Releases
3
Needs compilation
No
Needs R
>= 4.4.0
Config/roxygen2/version
8.1.1
Config/testthat/edition
3
Date
2026-10-16
Language
en-US
Subjects (1) Method, Subjects
Cite

Package

Run in R for the authors' entry:

citation("rtemis")

The package provides a citation file, so citation() returns the authors' own entry.

R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA
Balamuta, J. J. (2026). R Observatory: Metrics for rtemis version 1.4.2 [Data set]. HJJB, LLC. Data release v2026-10-28. https://doi.org/10.5281/zenodo.21843040
About

From data release v2026-10-28, which the citation names so these numbers can be found later.

All 13 check platforms pass.

  • r-devel-linux-x86_64-debian-clang

    The unreleased R on Linux, x86_64, debian-clang

    OK

    Version checked
    1.4.2
    Time taken
    413 s
  • r-devel-linux-x86_64-debian-gcc

    The unreleased R on Linux, x86_64, debian-gcc

    OK

    Version checked
    1.4.2
    Time taken
    299 s
  • r-devel-linux-x86_64-fedora-clang

    The unreleased R on Linux, x86_64, fedora-clang

    OK

    Version checked
    1.4.2
    Time taken
    305 s
  • r-devel-linux-x86_64-fedora-gcc

    The unreleased R on Linux, x86_64, fedora-gcc

    OK

    Version checked
    1.4.2
    Time taken
    276 s
  • r-devel-windows-x86_64

    The unreleased R on Windows, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    519 s
  • r-oldrel-macos-arm64

    The previous release of R on macOS, arm64

    OK

    Version checked
    1.4.2
    Time taken
    126 s
  • r-oldrel-macos-x86_64

    The previous release of R on macOS, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    418 s
  • r-oldrel-windows-x86_64

    The previous release of R on Windows, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    719 s
  • r-patched-linux-x86_64

    The patched release of R on Linux, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    403 s
  • r-release-linux-x86_64

    The current release of R on Linux, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    410 s
  • r-release-macos-arm64

    The current release of R on macOS, arm64

    OK

    Version checked
    1.4.2
    Time taken
    104 s
  • r-release-macos-x86_64

    The current release of R on macOS, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    671 s
  • r-release-windows-x86_64

    The current release of R on Windows, x86_64

    OK

    Version checked
    1.4.2
    Time taken
    548 s
  • 13 OK

Over time

No change since 25 Oct 2026

As a list (5)
ChangedWorst statusOKNotesWarningsErrors
25 Oct 2026OK13000
5 Oct 2026Error11002
4 Aug 2026OK13000
1 Aug 2026Note12100
27 Mar 2026OK7000

Since March 2026

Check results on CRAN

Total downloads in the last 30 days
529+5% up on the 30 days before, the better directionIt is the sum of 3 channels: CRAN, r2u and autoCRAN.

CRAN rank

5,927 of 26,530

CRAN

519 downloads in the last 30 days

Rank
5,927 of 26,530
Change
+6.6% up on the 30 days before, the better direction

It is in the total. Take it out

r2u

6 downloads in the last 30 days

Rank
8,522 of 30,526
Change
−25% down on the 30 days before, the worse direction

It is in the total. Take it out

autoCRAN

4 downloads in the last 30 days

Rank
13,992 of 29,212
Change
−55.6% down on the 30 days before, the worse direction

It is in the total. Take it out

Over time

Compare downloads

Functions
1,627
Public exports
233
Lines of R code
98,317
Median complexity
2
Functions (1,627)
Size and composition

Lines by kind (156,809)

KindLinesShare
R code98,31763%
Tests45,00429%
Documentation13,4889%

Lines by language

LanguageLinesShare
R142,72991%
Rd13,4889%
JSON5920.4%

Languages are counted from file extensions.

Files
526
R functions
1,627
Object systems
S3: 1 methods, S7: 54 classes
Deprecated functions
6
Complexity
Median
2
Mean
4.1
Highest
98
Median lines per function
16
About complexity

Cyclomatic complexity counts the independent paths through a function: 1 is a straight line, higher is harder to test. R functions only.

Call graph figures
R functions
1,627
Calls
2,364
Unconnected
336
Groups
28
Growth (3 releases)
Total lines by release
51,681 on 26 Mar 2026156,809 on 19 Oct 2026
Release changes

The package could not be built for the coverage run.

Test cases
1,972
Lines of tests
45,004
Exports named in tests
73.8%
Test suite
Has tests
Yes
Test frameworks
testthat, tinytest
Test cases
1,972
Test lines per line of code
0.46
Exports documented
99.6%
Arguments documented
98.6%
Return value documented
99.5%
Help pages with examples
98.2%
Examples run in checks
95%
Other documentation
README
Yes, 466 words
Release notes file
Yes
Help pages
222
Lines of documentation
13,488

2 datasets, 0 can be loaded by name

DatasetSizeColumns
us-counties3,221 × 7id, GEO_ID, STATE, COUNTY, NAME, LSAD and 1 more
us-states52 × 3id, name, density
  • E.D. Gennatas

    Maintainer since 1.0.0 (2026), author, copyright holder

rtemis-org / rtemis on github.com

Stars
150no change on 30 days ago
Forks
21
Open issues
0
Last commit
26 Oct 2026
Activity
Commits
5,248
Open pull requests
1
Tagged releases
15
Latest tagged release
v1.4.2, 19 Oct 2026
In development
Default branch at 1.4.3, ahead of CRAN 1.4.2 (checked 2026-10-25)
Issues closed in
0 days (median)
Pull requests closed in
0 days (median)
Pull requests merged
98%
Created
13 Feb 2019
Licence file reads as
–
Development practices (5)
KindFound
Continuous integrationGitHub Actions, R CMD check workflow
The R CMD check workflow runs on Linux and Windows
Governance and communityContributing guide
Docs sourceGitHub Pages site last deployed 2025-06-04
Reproducibility and dev environmentdata-raw/

Method, repository practices

Across rtemis-org

R releases
  • On CRAN
  • Facing archival
  • Release
VersionReleasedREvents
1.4.2 current19 Oct 20264.6.1Licence: BSD_3_clause + file LICENSE
Fix due 27 Oct 2026
The checks were fixed and the deadline was lifted.
1.2.72 Jul 20264.6.1
1.0.026 Mar 20264.5.3

Relicensed from GPL (>= 3) in version 1.4.2.

Release notes (1.4.2)
  • The standalone Plotly, networkD3, threejs and leaflet draw_*() functions move to the 'rtemis.dplot' package on r-universe, with their themes (theme_*(), choose_theme(), available_themes()), palettes (get_palette()), color utilities (col2grayscale(), color_adjust(), previewcolor()), available_draw(), uniprot_get(), xtdescribe(), the xt_example data and the rtemis_theme, rtemis_palette and rtemis_font options. 'rtemis.draw' provides their replacements. rtemis keeps draw_linad(), which takes an 'rtemis.draw' Theme, and roc_curve().
  • setup_PCoA() configures principal coordinates analysis (classical multidimensional scaling) on a choice of dissimilarities; it applies to new data through Gower's out-of-sample formula, so it can be train()'s decomposition step, and does not reconstruct the input.
  • setup_MDS() configures metric or nonmetric multidimensional scaling through 'vegan' with multiple starts; it cannot be applied to new data and does not reconstruct the input.
  • review() assesses a trained supervised model, single-split or resampled: it reports sample sizes, every training and test metric, and comparisons with a baseline predictor, with confidence intervals and tests for a single split and a description of the variation between resamples for a resampled model, then notes small samples, many predictors, and signs of overfitting.
  • ai_review() asks a language model, through 'rtemis.llm', to write a summary, evaluation, next steps and caveats from a review(), statements citing the review's finding codes, checked against the review; the result keeps the review and records the model, settings, prompt and a hash of the review.
  • A fitted model records the value its backend chose for a hyperparameter left unset, so the model and its record state every value the fit used: for example mtry for ranger, nk for MARS, the loss and optimizer settings for MLP, and the engine settings for LINAD.
  • LightRuleFit stops with a corrective error when its boosting stage makes no split.
  • setup_TabNet() rejects importance_sample_size when skip_importance is TRUE.
  • setup_CART(cost =) and setup_Ranger(class_weights =) reach their backends; class weights named by class are matched to the outcome's levels.
  • setup_Ranger() drops case_weights, which ranger did not receive; per-case weights are passed with train(weights =).
  • setup_GLMNET() drops offset, which failed at prediction and under resampling.
  • setup_LINAD() and setup_LINADForest() take root_forward_stop and root_node_test, the root model's stopping rule and slopes test; unset uses the node-level value.
  • Variable importance (get_varimp()) holds one measure per name, each stating what it quantifies (split gain, permutation, coefficient, ...), the cases it was computed on, whether it is signed or depends on predictor units, how it ranks predictors, and a description for the fitted model; the measures replace the single table in @data, and varimp_table() combines them into one data.frame. plot_varimp() ranks bars by the measure's direction (a cross-validated risk smallest first). Linear SVM weights are oriented toward the positive class, and a forest fitted with importance = "none" has no importance.
  • writeup() writes the Methods and Results sections for a trained supervised model from the model and its review(), every number traceable to the field it was read from, with references to R, rtemis, the fitting packages and the statistical methods, a main hyperparameter table (primary hyperparameters and every one tuned, specified or resolved during fitting; include_hyperparameters replaces the primary list) and a supplementary table of every hyperparameter with its value, how it was chosen and the values tried, and a list of what the model does not record.
  • write_text() writes a writeup(), review() or ai_review() as Markdown.
  • Stratified resampling (setup_KFold(), setup_StratSub(), setup_StratBoot()) stratifies a categorical variable by its levels; with more than four levels it grouped adjacent levels together.
  • Metric labels print AUC, PPV and NPV in capitals.
  • LightRF predictions are no longer pulled toward 0 when some trees cannot split, as happens on small samples: such trees now predict their sample's center. Training reports how many trees could not split.
  • setup_SuperConfig() and setup_SuperConfigLive() reject a decomposition that cannot be applied to new data, as reading a supervised config already did.
  • Shared results identify implementation-specific learner, execution, preprocessing, and resampler configs by schema and read their typed settings without inserting omitted defaults.
  • write_config() and write_record() write numbers with 15 significant digits instead of rounding to four decimal places.
  • calibrate() takes execution_config; calibration models train serially when it is unset.
  • train() and the setup_*() functions spend less time reading property declarations and default policies; a single CART fit on iris takes about a third of the time.
  • Each parallel task receives only its own resample or bag; LINADForest and bias_variance() pass training data to local workers through shared memory.
  • GAM classification trains on a data.table, which failed for every outcome, and on a multiclass outcome, using mgcv's multinomial family. A multiclass GAM reports no variable importance or standard errors, and explain() refuses its GAMTerms estimator; explanation_methods() reports GAM's exactness as dependent on the fit.
  • LinearSVM and RadialSVM probabilities are those of the positive class for a binary outcome and follow the outcome's level order for a multiclass one. Binary probabilities were those of the negative class when the first training case belonged to the positive class.
  • setup_GridSearch() with maximize unset maximizes every metric for which a higher value is better (accuracy, balanced accuracy, sensitivity, specificity, PPV, NPV, F1, AUC, R², concordance) and minimizes the others; it minimized AUC, sensitivity, specificity, PPV, NPV and F1.
  • se() is exported: standard errors of the fit for GLM, GAM, BART and LINADForest models.
  • get_metrics() returns the metrics a supervised model, resampled model, clustering or decomposition stores for one sample; calibrated = TRUE selects a calibrated classifier's calibrated metrics.
  • $ and [[ read the properties of resampled models, resampled metrics, tuners, LightRuleFit models and bias_variance() results, with tab completion, and [[ reads any property of a decomposition, as $ does. On these objects and on models and clusterings, a name that is not a property raises an error listing the properties.
  • plot_varimp() draws a SHAP explanation's mean absolute contributions.
  • plot() draws a fitted supervised model's default view: true against predicted values for regression, confusion matrices for classification, and metric distributions for resampled models. present() prints the model's description and returns the same view; plot_roc() draws ROC curves.
  • Model plots color each data split the same way: training teal, validation purple, test magenta. Confusion matrices shade correct predictions blue and incorrect predictions orange.
  • Imputation fitted on training data is applied to new data: apply_preprocessor(), and train() on validation, test and resampled test data, impute with what was learned from the training data rather than from the new data.
  • Mean and mode imputation (impute_type = "meanMode") stores the value imputed into every feature in the new config properties impute_numeric_values and impute_level_values.
  • Mean and mode imputation keeps each feature's type. impute_numeric ("mean" or "median") and impute_categorical ("mode") replace impute_discrete and impute_continuous. Integer features take the mean or median rounded half to even, logical features their more frequent value (FALSE on a tie), and factor and character features their mode, a tie going to the first level or the first value in code point order. Integer features took their mode, a tie going to the value appearing last. A supplied value that a feature's type cannot hold is an error.
  • missRanger imputation keeps its fitted random forests in the Preprocessor (@imputer) and applies them with predict(); features with no missing training values take a mean or mode value on new data. All impute_missRanger_params reach missRanger, which received only pmm.k.
  • micePMM imputation is available to preprocess() only: setup_SupervisedPreprocessor() does not offer it, and apply_preprocessor() refuses a preprocessor that uses it.
  • setup_SupervisedPreprocessor() imputes with mean and mode values by default (impute_type = "meanMode"); missRanger, fitted on every training set of a train() run, is chosen explicitly. The Imputation sections of setup_SupervisedPreprocessor() and setup_Preprocessor() describe each method's cost and limits.

Supervised result validation

  • Outcomes, predictions, and classification probabilities must have matching row counts within each sample.
  • Categorical outcomes and predictions must preserve the training class levels and their order; probability matrices require one column for binary classification or one per class for multiclass classification.