Schema-Driven Machine Learning and Visualization
- CRAN checks, method
Method
Checks and health
CRAN runs every current package through
R CMD checkon a set of machines and publishes a result for each one. The health shown on a package page comes from these results alone.- Problems
- Notes alone never count against a package, but a warning, an error or a failure on any platform is a problem. Open CRAN deadlines are a fact of their own, shown as a clock after the mark, so the mark always says what the checks found.
- Checks only
- Health reflects CRAN's check results and nothing else. Even a package with no tests, no coverage or no recent release can have every platform OK.
- Once a day
- Results are collected once a day from files CRAN publishes. Each platform is one machine set-up, named by its R version, operating system, architecture and compiler, such as r-devel-linux-x86_64-fedora-clang.
- Platforms counted
- The 13 in 3 of 13 is the number of platform rows CRAN published for that package on the day of collection. The set of machines changes over time, so the number is not fixed, and a package missing from a platform counts as neither passing nor failing there.
- All OK13 platforms
- CRAN 30-day downloads, method
- 519+6.6% up on the 30 days before, the better direction
- Dependent packages, method
Method
Reverse dependencies
Dependent packages are other packages that list this one under
Depends,ImportsorLinkingToin theirDESCRIPTIONfile. Those fields list the packages a package needs to install, so dependents break if this one is archived or broken.- As declared
- The counts follow the declarations as written, not whether a package uses the other one when it runs.
- Suggests apart
- Packages that list this one only under
Suggestsinstall and run without it, and use it for tests, examples or an optional feature. They are counted as Suggested by, never among the dependents, and a package that also lists it under one of the three fields is a dependent and is not counted again. - Zero
- Zero dependents means no current CRAN package declares a need for this one, though some may suggest it. On 28 Oct 2026, 19,572 of the 25,583 current CRAN packages had no dependent package.
- 01 more suggest it
- Test coverage, method
Method
Test coverage
Test coverage is measured by downloading each CRAN package's current source file, installing its dependencies, building it and running its tests under covr.
- Almost half of CRAN has no tests to run
- Only CRAN packages are measured. Many have no percentage, most often because the package has no tests, and that blank is a recorded outcome, not missing data.
- NOT_CRAN
- Tests run with NOT_CRAN=true, so tests that skip themselves on CRAN run here, and the figure can differ from what CRAN's own checks see.
- Current version only
- Only the current version is measured, and a new version on CRAN is measured again. Older rows are kept but never filled in later. This is one package's run.
- Never 0%
- On a package page three states stay apart: measured, no tests, and not measured. Neither of the last two is ever shown as 0%.
- Not measuredthe run failed
- Advisories, method
Method
Security advisories
Advisories come from the R Consortium advisory database, a community record of security problems in R packages, as OSV publishes it.
- The copy
- The record is read once a day. The data is published under the Apache License 2.0 and is credited on the advisories list.
- Box under the name
- Under the package's name, a box names any advisory that affects the current release, with its fix or that there is none.
- Ranges
- Advisories state ranges, such as from 0.9.12 up to but not including 1.8.8. Each range is checked against every version CRAN has published, using the version rules R itself uses, so a release that came out after the advisory was written is still caught by its range.
- Not the package
- The rating is for the library flaw itself, not for how exposed the R package is, and it is never added up into a figure for the package.
- None known
About
Method, About Method Licence figures come from the Licences
License field of each package's DESCRIPTION file, read the way R itself reads it. No licence file is opened.tools::analyze_license() and R's own licence database, as CRAN's checks read it.| is read, so one string can offer two families.
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
- Licence
- BSD_3_clause + file LICENSE
- Latest release
- 19 Oct 2026
- First release
- 26 Mar 2026
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, SubjectsMethod
Subjects and collections
Subjects are the site's own grouping of CRAN packages, found by clustering. Collections are sets of packages that communities declare, such as the tidyverse.
- Subjects
- Subjects are found by clustering the words of current CRAN packages and the packages they use. No one edits them by hand.
- Collections
- Collections are sets that communities declare, through a package that installs the set or an organization on GitHub. The site finds them by rules.
- Who made each
- Subjects are marked Site and collections Community. Subjects, collections and task views are never mixed in one list.
- The day of the data
- Subjects and collections were last worked out on 22 Oct 2026.
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.
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.
Health
All 13 check platforms pass.
r-devel-linux-x86_64-debian-clangThe unreleased R on Linux, x86_64, debian-clang
OK
- Version checked
- 1.4.2
- Time taken
- 413 s
r-devel-linux-x86_64-debian-gccThe unreleased R on Linux, x86_64, debian-gcc
OK
- Version checked
- 1.4.2
- Time taken
- 299 s
r-devel-linux-x86_64-fedora-clangThe unreleased R on Linux, x86_64, fedora-clang
OK
- Version checked
- 1.4.2
- Time taken
- 305 s
r-devel-linux-x86_64-fedora-gccThe unreleased R on Linux, x86_64, fedora-gcc
OK
- Version checked
- 1.4.2
- Time taken
- 276 s
r-devel-windows-x86_64The unreleased R on Windows, x86_64
OK
- Version checked
- 1.4.2
- Time taken
- 519 s
r-oldrel-macos-arm64The previous release of R on macOS, arm64
OK
- Version checked
- 1.4.2
- Time taken
- 126 s
r-oldrel-macos-x86_64The previous release of R on macOS, x86_64
OK
- Version checked
- 1.4.2
- Time taken
- 418 s
r-oldrel-windows-x86_64The previous release of R on Windows, x86_64
OK
- Version checked
- 1.4.2
- Time taken
- 719 s
r-patched-linux-x86_64The patched release of R on Linux, x86_64
OK
- Version checked
- 1.4.2
- Time taken
- 403 s
r-release-linux-x86_64The current release of R on Linux, x86_64
OK
- Version checked
- 1.4.2
- Time taken
- 410 s
r-release-macos-arm64The current release of R on macOS, arm64
OK
- Version checked
- 1.4.2
- Time taken
- 104 s
r-release-macos-x86_64The current release of R on macOS, x86_64
OK
- Version checked
- 1.4.2
- Time taken
- 671 s
r-release-windows-x86_64The 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)
| Changed | Worst status | OK | Notes | Warnings | Errors |
|---|---|---|---|---|---|
| 25 Oct 2026 | OK | 13 | 0 | 0 | 0 |
| 5 Oct 2026 | Error | 11 | 0 | 0 | 2 |
| 4 Aug 2026 | OK | 13 | 0 | 0 | 0 |
| 1 Aug 2026 | Note | 12 | 1 | 0 | 0 |
| 27 Mar 2026 | OK | 7 | 0 | 0 | 0 |
Since March 2026
Downloads
Method, Downloads Method Download figures count requests logged by each distribution channel. They are not counts of installs or of users, because each channel publishes its own totals and this site reads them.Downloads
- 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
The total is 529 downloads in the last 30 days. It is the sum of 3 channels: CRAN, r2u and autoCRAN.
Over time
Dependencies
- Needs
- 14
- Dependent packages
- 0
- Suggested by
- 1
Needs (14)
- data.table
- future
- graphics
- grDevices
- methods
- nanoparquet
- openssl
- parallel
- parallelly
- rtemis.core
- rtemis.draw
- S7
- stats
- utils
- Installing it adds
- 40 packages, 32.7 MB of source
- Of those, need compilation
- 22
Optional extras (62)
- arrow
- bit64
- car
- cluster
- DBI
- dbscan
- duckdb
- e1071
- earth
- farff
- fastICA
- flexclust
- fpc
- future.mirai
- glmnet
- grid
- gsubfn
- hal9001
- haven
- hopach
- htmltools
- jsonlite
- jsonvalidate
- kernlab
- kknn
- later
- leaps
- lightAUC
- lightgbm
- matrixStats
- mclust
- mgcv
- mice
- mirai
- missRanger
- mori
- nanonext
- NMF
- nnls
- partykit
- pROC
- ranger
- readxl
- ROCR
- rpart
- rtemis.llm
- Rtsne
- seqinr
- shapr
- spls
- stochtree
- survival
- tabnet
- testthat
- tibble
- timeDate
- torch
- uwot
- vegan
- visNetwork
- vroom
- withr
Code
Method, Code Method Code metrics come from reading the released source of each package version. The package is never installed, loaded or run.Code metrics
README, vignettes, a NEWS file and the shares read from its help pages. Files kept only in the repository, such as a pkgdown configuration or CI files, are read by the repository scan instead.
- 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)
| Kind | Lines | Share |
|---|---|---|
| R code | 98,317 | 63% |
| Tests | 45,004 | 29% |
| Documentation | 13,488 | 9% |
Lines by language
| Language | Lines | Share |
|---|---|---|
| R | 142,729 | 91% |
| Rd | 13,488 | 9% |
| JSON | 592 | 0.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)
Release changes
Tests
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
Documentation
- 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
Datasets
Method, Datasets Method The datasets inside packages are read from their R objects in datasets
data/ folders when the code is analysed. Each object is described by its class, its shape and its columns, and fingerprinted so the same data can be found in other packages.data() are listed, 76,180 on CRAN and 8,045 on Bioconductor, so the list is not every file in data/.
2 datasets, 0 can be loaded by name
| Dataset | Size | Columns |
|---|---|---|
| us-counties | 3,221 × 7 | id, GEO_ |
| us-states | 52 × 3 | id, name, density |
People
Method, People Method People on the site are the names packages give them in their Author and maintainer identity
DESCRIPTION files: authors from the author list, and the maintainer from the Maintainer field. Spellings of one name become one person only where the rules below allow it, and when in doubt the rules keep people apart.
Repository
Method, figures by host Method Repository signals are the figures read from the source repository a package links to: stars, forks, issues, commits, releases and the time issues take to close. They are read from GitHub, GitLab, Codeberg and Bitbucket.Repository signals
URL and BugReports fields of its DESCRIPTION file. Read-only mirrors, the cran and bioc accounts on GitHub and git.bioconductor.org, are left out.
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)
| Kind | Found |
|---|---|
| Continuous integration | GitHub Actions, R CMD check workflow The R CMD check workflow runs on Linux and Windows |
| Governance and community | Contributing guide |
| Docs source | GitHub Pages site last deployed 2025-06-04 |
| Reproducibility and dev environment | data-raw/ |
Method, repository practices Method Beta Each week a scan of the public source repository a package links to looks for the tools a maintainer has set up, and the Repository section lists the findings. Repositories on GitHub and GitLab are scanned.Repository practices
R CMD build reads .Rbuildignore and leaves out files used only in development, such as .github/, .lintr, renv/, a Dockerfile and cran-comments.md, so the released source file holds almost none of them. The repository is the one place these files stay visible.
History
Method, History Method Archived is built from CRAN's archive records, its list of check deadlines and Bioconductor's package records. Every figure is counted to 28 Oct 2026, the day the data was read.Packages leaving
- On CRAN
- Facing archival
- Release
| Version | Released | R | Events |
|---|---|---|---|
| 1.4.2 current | 19 Oct 2026 | 4.6.1 | Licence: BSD_3_clause + file LICENSE Fix due 27 Oct 2026 The checks were fixed and the deadline was lifted. |
| 1.2.7 | 2 Jul 2026 | 4.6.1 | |
| 1.0.0 | 26 Mar 2026 | 4.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(), thext_exampledata and thertemis_theme,rtemis_paletteandrtemis_fontoptions. 'rtemis.draw' provides their replacements. rtemis keepsdraw_linad(), which takes an 'rtemis.draw'Theme, androc_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 betrain()'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 areview(), 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
mtryfor ranger,nkfor 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()rejectsimportance_sample_sizewhenskip_importanceis TRUE.setup_CART(cost =)andsetup_Ranger(class_weights =)reach their backends; class weights named by class are matched to the outcome's levels.setup_Ranger()dropscase_weights, which ranger did not receive; per-case weights are passed withtrain(weights =).setup_GLMNET()dropsoffset, which failed at prediction and under resampling.setup_LINAD()andsetup_LINADForest()takeroot_forward_stopandroot_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, andvarimp_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 withimportance = "none"has no importance. writeup()writes the Methods and Results sections for a trained supervised model from the model and itsreview(), 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_hyperparametersreplaces 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 awriteup(),review()orai_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()andsetup_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()andwrite_record()write numbers with 15 significant digits instead of rounding to four decimal places.calibrate()takesexecution_config; calibration models train serially when it is unset.train()and thesetup_*()functions spend less time reading property declarations and default policies; a single CART fit oniristakes 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()withmaximizeunset 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 = TRUEselects a calibrated classifier's calibrated metrics.$and[[read the properties of resampled models, resampled metrics, tuners, LightRuleFit models andbias_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 aSHAPexplanation'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(), andtrain()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 propertiesimpute_numeric_valuesandimpute_level_values. - Mean and mode imputation keeps each feature's type.
impute_numeric("mean" or "median") andimpute_categorical("mode") replaceimpute_discreteandimpute_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 withpredict(); features with no missing training values take a mean or mode value on new data. Allimpute_missRanger_paramsreach missRanger, which received onlypmm.k. - micePMM imputation is available to
preprocess()only:setup_SupervisedPreprocessor()does not offer it, andapply_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 atrain()run, is chosen explicitly. The Imputation sections ofsetup_SupervisedPreprocessor()andsetup_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.