aperivue/radiomics-ml
> Produce or audit a radiomics / tabular clinical-ML study — imaging or clinical features → any classical learner (penalised logistic [LASSO / ridge / elastic-net], SVM, k-NN, naive Bayes, LDA/QDA, decision tree, random forest, gradient boosting [XGBoost / LightGBM / CatBoost], shallow cross-validation (tuning never on the reported folds), dimensionality control for the features-far-exceed-events regime, feature selection inside the fold, feature-stability (ICC / test-retest) filtering, calibration, and external/temporal validation. The deterministic gate is learner-agnostic (it audits the pipeline, not the algorithm). Emits a pipeline manifest and the gate. The most common solo-doable clinical-ML workflow — no GPU, no engineer. Integrates scikit-learn / xgboost / lightgbm / catboost / pyradiomics; it does not reimplement them.
npx skills add https://github.com/Aperivue/medsci-skills --skill radiomics-ml
Radiomics + tree-ensemble studies (features → random forest / XGBoost → a clinical outcome) are the
most common solo-doable clinical-ML workflow — no GPU, no engineer — and the **most commonly
over-optimistic**: hundreds-to-thousands of features on tens of patients, hyperparameters tuned on the
same folds the performance is reported from, features selected on the whole dataset, unstable features
never filtered, and discrimination (AUC) reported without calibration. This skill produces the pipeline
correctly and audits an existing one, so the clinical result survives review (Lambin 2017; CLEAR;
TRIPOD+AI; PROBAST-AI).
It sits beside the imaging-DL lane: where /model-scaffold builds a deep network, radiomics-ml
covers the feature-based classical-ML path. It integrates scikit-learn / xgboost / pyradiomics
(referenced in the emitted code); it does not reimplement them and never runs a model on real patient
data.
clinical prediction model that will pass statistical review.
/architecture-zoo → /model-scaffold → /model-validation./analyze-stats./explainability.held-out test set.
the classic radiomics trap. Apply LASSO / PCA / a stability + redundancy filter.
Nest selection inside each training fold.
to reproducible features (ICC / test-retest).
curve), not discrimination alone.
clinical claim.
For radiomics, extract with pyradiomics under reproducible, IBSI-aligned settings (fixed bin width,
resampling, normalisation) — record them. For clinical/tabular data, assemble the feature table with a
patient/subject ID and the outcome. See references/radiomics_ml_guide.md.
selection and scaling inside each training fold** (never on the whole dataset).
is mandatory alongside any complex learner:
The gate below is learner-agnostic — it audits the pipeline (nested CV, leakage, dimensionality,
calibration), so it applies identically to any of these. See the full method map in
docs/method_coverage_map.md.
/analyze-stats calibration guide) and clinical utility (decision curve). SHAP for interpretation.
{
"task": "classification",
"n_features": 1200, "n_samples": 300, "n_events": 110,
"cv_scheme": "nested",
"feature_selection_stage": "inside_cv",
"dimensionality_reduction": true,
"feature_stability": "icc",
"calibration_reported": true,
"external_validation": "temporal",
"model": "xgboost"
}
python3 scripts/check_radiomics_ml.py --manifest pipeline_manifest.json --strict
Verdicts: NO_NESTED_CV, HIGH_DIM_LOW_EVENTS, SELECTION_OUTSIDE_CV (Major);
NO_FEATURE_STABILITY, NO_CALIBRATION, NO_EXTERNAL_VALIDATION (Minor). Complements
self-review's check_cv_leakage (which audits a finished manuscript's prose) at the pipeline-spec
level.
/analyze-stats — calibration + clinical-utility (decision curve, NNT) guides for the reporting./check-reporting — CLEAR (radiomics), TRIPOD+AI, PROBAST-AI item coverage./self-review clinical_prediction_model probe audits the finished manuscript; this skill*produces* the rigorous pipeline it looks for.
manifest and every reported metric comes from the researcher's executed code — never invented. This
skill designs and audits the pipeline; it does not run a model on real patient data.
is the optimism this skill exists to prevent (NO_NESTED_CV).
check_radiomics_ml.py. The rigorverdict is reproduced deterministically, never asserted from prose.
feature extractor or learner or claim results for one.
scripts/check_radiomics_ml_challenge/ ships a synthetic weak/strong pipeline pair with a network-free
verify.sh wired into the skill's validation commands.
Take aperivue/radiomics-ml from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.