Skip to content

OptSurvCutR - Optimal Number of Cut-points for Survival Data #777

Description

@paytonyau

Submitting Author Name: Payton Yau
Submitting Author Github Handle: @paytonyau
Repository: https://github.com/paytonyau/OptSurvCutR
Version submitted: 0.10.0
Submission type: Stats
Badge grade: gold(select one)
Editor: @nhejazi
Reviewers: TBD

Archive: TBD
Version accepted: TBD
Language: en


  • Paste the full DESCRIPTION file inside a code block below:

Package: OptSurvCutR
Type: Package
Title: Optimal Survival Cut-Point Discovery for Time-to-Event Analysis with 'OptSurvCutR'
Version: 0.10.0
Authors@R: 
    person(given = "Payton",
           family = "Yau",
           role = c("aut", "cre", "cph"),
           email = "tungon@gmail.com",
           comment = c(ORCID = "0000-0002-3283-0370"))
Description: Provides a robust workflow for optimal cut-point analysis in
    time-to-event ('survival') data. Functions determine the optimal number
    of cut-points via find_cutpoint_number(), find their precise locations
    via find_cutpoint() using systematic or genetic algorithms (via the
    'rgenoud' package), and validate stability via bootstrapping using
    validate_cutpoint(). Features include covariate adjustment, parallel
    processing, and an extensible S3 plotting engine for clinical
    dashboards and diagnostics.
License: GPL-3
URL: https://github.com/paytonyau/OptSurvCutR,
    https://paytonyau.github.io/OptSurvCutR/
BugReports: https://github.com/paytonyau/OptSurvCutR/issues
Encoding: UTF-8
LazyData: true
VignetteBuilder: knitr
Imports: 
    cli,
    doParallel,
    doRNG,
    foreach,
    ggplot2,
    parallel,
    patchwork,
    Rcpp,
    rgenoud,
    rlang,
    stats,
    survival,
    survminer,
    tidyr
LinkingTo: 
    Rcpp
Suggests: 
    broom,
    dplyr,
    knitr,
    plotly,
    readxl,
    rmarkdown,
    spelling,
    testthat (>= 3.0.0),
    timeROC
Config/testthat/edition: 3
Depends: 
    R (>= 3.5)
Language: en-GB
Config/Needs/website: logo.png
Config/roxygen2/version: 8.0.0

Scope

  • Please indicate which of our statistical package categories this package falls under. (Please check one or more appropriate boxes below):

    Statistical Packages

    • Bayesian and Monte Carlo Routines
    • Dimensionality Reduction, Clustering, and Unsupervised Learning
    • Machine Learning
    • Regression and Supervised Learning
    • Exploratory Data Analysis (EDA) and Summary Statistics
    • Spatial Analyses
    • Time Series Analyses
    • Probability Distributions

Pre-submission Inquiry

  • A pre-submission inquiry has been approved in issue#731

General Information

  • Who is the target audience and what are scientific applications of this package?

Target Audience: Biostatisticians, epidemiologists, bioinformaticians, and clinical trial researchers analysing time-to-event outcomes.

Scientific Applications: In clinical oncology and translational research, quantitative continuous biomarkers (such as gene expression profiles, clinical assay variables, or cell-density levels) are frequently stratified into distinct categorical groups to aid risk assessment and therapeutic selection. This package provides an objective, automated framework to simultaneously identify the mathematically optimal number of partitions and their precise boundary thresholds using a Cox Proportional-Hazards framework without introducing unregularized selection bias.

  • Paste your responses to our General Standard G1.1 here, describing whether your software is:

    • The first implementation of a novel algorithm; or
    • The first implementation within R of an algorithm which has previously been implemented in other languages or contexts; or
    • An improvement on other implementations of similar algorithms in R.

    Please include hyperlinked references to all other relevant software.

OptSurvCutR represents a fundamental structural advance over existing R packages such as survminer (via surv_cutpoint) and cutpointr.

Existing software in R is architecturally constrained to simple dichotomisation (discovering exactly one optimal split) or requires the user to manually pre-specify a fixed threshold grid. OptSurvCutR eliminates this limitation entirely by treating both the optimal number of cut-points (from 0 up to a user-defined maximum) and their precise boundary locations as a single, combined optimization problem.

It features global optimisation via rgenoud to discover multi-cutpoint solutions. Because multi-cut thresholds exponentially expand the combinatorial search space, the package deploys compiled C++ routines via Rcpp and RcppArmadillo to handle hardware-accelerated patient vector partitioning and grouping assignments at scale. These resulting risk strata are then modeled via Cox regression, using information-theoretic penalties (AIC, AICc, BIC) to ensure optimal model parsimony.

It is fully compliant. The package works entirely on open, synthetic clinical data matrices included in the benchmarking suites and does not access, store, or transmit any Protected Health Information (PHI) or personal patient records.

Badging

gold

The package comprehensively satisfies all four aspects required for a Gold badge designation:

  1. Extended Documentation & Guidance: Features a deeply explanatory vignette tracing the underlying statistical theory, mathematical trade-offs, and practical step-by-step implementations on realistic data scenarios.
  2. Extensive Test Coverage: Contains a robust and rigorous testing suite covering matrix edge cases, zero-length conditions, non-convergence parameters, and type handling, yielding a programmatic line coverage score exceeding 80%.
  3. Algorithmic Performance Rigor: Leverages optimised C++ routines (Rcpp/RcppArmadillo) and localised downsampling mechanisms to scale cleanly across dense dataset dimensions.
  4. Rigorous Adherence to Standards: Extensively maps, logs, and fulfills the entirety of rOpenSci's required and recommended srrstats standards for Regression and Supervised Learning packages.

Technical checks

Confirm each of the following by checking the box.

This package:

Use of Generative AI

  • Generative AI tools were used to produce some of the material in this submission.

If so, please describe usage, and include links to any relevant aspects of your repository. See our blog post for background. (Explicit advice is not yet included in our Dev Guide; we are hoping to update very soon, and ask your cooperation and transparency in the meantime.)

Generative AI was used strictly in a supportive copilot capacity to help generate baseline structures for testing scripts, reflow long Roxygen2 code-comment headers within the 80-character requirement across visualisation files, and construct the localised .gitattributes routing logic. The underlying statistical mathematical modelling, numerical optimisation infrastructure, and compiled Rcpp logic layers were authored entirely by the developer and validated via local software test matrices.

Publication options

  • Do you intend for this package to go on CRAN?
  • Do you intend for this package to go on Bioconductor?

Code of conduct

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions