Skip to content

hdcuremodels #692

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
13 of 21 tasks
kelliejarcher opened this issue Mar 12, 2025 · 7 comments
Open
13 of 21 tasks

hdcuremodels #692

kelliejarcher opened this issue Mar 12, 2025 · 7 comments
Labels

Comments

@kelliejarcher
Copy link

kelliejarcher commented Mar 12, 2025

Submitting Author Name: Kellie J. Archer
Submitting Author Github Handle: @kelliejarcher
Repository: https://github.com/kelliejarcher/hdcuremodels
Version submitted: 0.0.2
Submission type: Stats
Badge grade: bronze/silver/gold (select one)
Editor: TBD
Reviewers: TBD

Archive: TBD
Version accepted: TBD
Language: en


  • Paste the full DESCRIPTION file inside a code block below:
Package: hdcuremodels
Title: Penalized Mixture Cure Models for High-Dimensional Data
Version: 0.0.2
Date: 2025-03-11
Authors@R: 
    c(person("Han", "Fu", role = "aut"), person(c("Kellie J."), "Archer", email=
    "archer.43@osu.edu", role = c("aut","cre"), comment = c(ORCID="0000-0003-1555-5781")))
Description: Provides functions for fitting various penalized parametric and semi-parametric mixture cure models with different penalty functions, testing for a significant cure fraction, and testing for sufficient follow-up as described in Fu et al (2022)<doi:10.1002/sim.9513> and Archer et al (2024)<doi:10.1186/s13045-024-01553-6>. False discovery rate controlled variable selection is provided using model-X knock-offs. 
License: MIT + file LICENSE
Encoding: UTF-8
Depends: R (>= 4.2.0)
Imports: doParallel,
         flexsurv,
         flexsurvcure,
         foreach,
         ggplot2,
         ggpubr,
         glmnet,
         knockoff,
         mvnfast,
         parallel,
         plyr,
         methods,
         survival
Roxygen: list(markdown = TRUE, roclets = c ("namespace", "rd", "srr::srr_stats_roclet"))
RoxygenNote: 7.3.2
Suggests: 
    knitr,
    rmarkdown,
    roxygen2,
    testthat (>= 3.0.0)
VignetteBuilder: knitr
LazyData: true
URL: https://github.com/kelliejarcher/hdcuremodels
BugReports: https://github.com/kelliejarcher/hdcuremodels/issues
Config/testthat/edition: 3

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#690

General Information

  • Who is the target audience and what are scientific applications of this package?
    Analysts who model time-to-event outcomes when some subjects either experience long-term survival or are not susceptible to the event of interest (simplistically, cured).

  • Paste your responses to our General Standard G1.1 The first implementation of a novel algorithm, 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.

  • (If applicable) Does your package comply with our guidance around Ethics, Data Privacy and Human Subjects Research?
    Not applicable.

Badging

  • What grade of badge are you aiming for? (silver)
    Silver

  • If aiming for silver or gold, describe which of the four aspects listed in the Guide for Authors chapter the package fulfils (at least one aspect for silver; three for gold)
    Have a demonstrated generality of usage beyond one single envisioned use case.

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

  • Do you intend for this package to go on CRAN? I submitted 0.0.1 version of hdcuremodels last June and then learned about ROpenSci. I will not submit a new version to CRAN until after the ROpenSci review.
  • Do you intend for this package to go on Bioconductor?

Code of conduct

@ropensci-review-bot
Copy link
Collaborator

Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

@ropensci-review-bot
Copy link
Collaborator

🚀

The following problem was found in your submission template:

  • 'statsgrade' variable must be one of [bronze, silver, gold]
    Editors: Please ensure these problems with the submission template are rectified. Package checks have been started regardless.

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for hdcuremodels (v0.0.2)

git hash: c7a555d9

  • ✔️ Package is already on CRAN.
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✔️ All functions have examples.
  • ✔️ Package has continuous integration checks.
  • ✔️ Package coverage is 77.5%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.

Package License: MIT + file LICENSE


1. rOpenSci Statistical Standards (srr package)

This package is in the following category:

  • Regression and Supervised Learning

✔️ All applicable standards [v0.2.0] have been documented in this package (283 complied with; 61 N/A standards)

Click to see the report of author-reported standards compliance of the package with links to associated lines of code, which can be re-generated locally by running the srr_report() function from within a local clone of the repository.


2. Package Dependencies

Details of Package Dependency Usage (click to open)

The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.

type package ncalls
internal base 1268
internal stats 281
internal hdcuremodels 70
internal graphics 36
internal utils 19
imports methods 20
imports knockoff 13
imports flexsurv 7
imports survival 7
imports glmnet 4
imports mvnfast 3
imports parallel 2
imports flexsurvcure 1
imports ggpubr 1
imports doParallel NA
imports foreach NA
imports ggplot2 NA
imports plyr NA
suggests knitr NA
suggests rmarkdown NA
suggests roxygen2 NA
suggests testthat NA
linking_to NA NA

Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.

base

ncol (90), list (82), rep (79), exp (70), drop (67), c (58), matrix (50), sum (46), log (42), which (42), length (40), is.null (32), if (30), dim (25), data.frame (23), return (20), abs (18), nrow (18), t (17), T (17), cbind (16), max (16), sample (16), gamma (15), sapply (15), replace (14), for (13), names (13), which.max (12), pmax (11), as.numeric (10), seq_len (9), subset (9), apply (8), cumsum (8), match.call (8), mean (8), strsplit (8), substitute (8), colSums (7), F (7), pmin (7), which.min (7), ifelse (6), parse (6), paste (6), seq_along (6), summary (6), attr (5), diag (5), eval (5), grep (5), merge (5), rbind (5), sqrt (5), as.character (4), as.data.frame (4), as.list (4), call (4), dimnames (4), match (4), nchar (4), numeric (4), order (4), parent.frame (4), rowMeans (4), substr (4), trimws (4), unique (4), missing (3), rank (3), round (3), rowSums (3), table (3), try (3), as.vector (2), by (2), colMeans (2), diff (2), sort (2), unname (2), choose (1), colnames (1), environment (1), expand.grid (1), gsub (1), warning (1)

stats

time (115), coef (24), optim (16), AIC (13), uniroot (13), df (12), BIC (11), sigma (9), sd (7), step (6), family (5), formula (5), as.formula (4), model.matrix (4), model.response (4), offset (4), rnorm (4), var (4), aggregate (3), glm (3), rexp (3), dist (2), knots (2), model.frame (2), runif (2), rbinom (1), rweibull (1), splinefun (1), terms (1)

hdcuremodels

self_scale (16), l1_negloglik_inc (6), cure_estimate (3), exp_cure (3), exp_negloglik_lat (3), mcp_scad_negloglik_inc (3), weib.cure.negloglik (3), AUC_msi (2), cox_l1 (2), cure.em (2), exp_negloglik (2), extract_rhs_values (2), get_cox_lambda_max (2), select_model (2), auc_mcm (1), C.stat (1), concordance_mcm (1), cureem (1), curegmifs (1), cv_cureem (1), cv_curegmifs (1), cv.em.fdr (1), cv.em.inner (1), cv.em.nofdr (1), cv.gmifs.fdr (1), cv.gmifs.inner (1), cv.gmifs.nofdr (1), exp_update (1), generate_cure_data (1), mcp_penalty (1), mcp_scad_negloglik_lat (1), sim_cure (1), weib.cure.update (1)

graphics

par (19), text (14), frame (3)

methods

is (20)

utils

data (19)

knockoff

create.second_order (7), knockoff.threshold (6)

flexsurv

pgengamma (5), rgompertz (2)

survival

coxph (3), survfit (2), Surv (1), survreg (1)

glmnet

glmnet (4)

mvnfast

rmvn (3)

parallel

makeCluster (2)

flexsurvcure

flexsurvcure (1)

ggpubr

ggarrange (1)

NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.


3. Statistical Properties

This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.

Details of statistical properties (click to open)

The package has:

  • code in R (100% in 18 files) and
  • 2 authors
  • 1 vignette
  • 2 internal data files
  • 13 imported packages
  • 15 exported functions (median 96 lines of code)
  • 117 non-exported functions in R (median 32 lines of code)

Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages
The following terminology is used:

  • loc = "Lines of Code"
  • fn = "function"
  • exp/not_exp = exported / not exported

All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function

The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.

measure value percentile noteworthy
files_R 18 76.8
files_vignettes 1 61.7
files_tests 18 93.9
loc_R 3786 91.7
loc_vignettes 276 58.3
loc_tests 1088 85.0
num_vignettes 1 58.7
data_size_total 842035 93.9
data_size_median 421017 96.6 TRUE
n_fns_r 132 81.1
n_fns_r_exported 15 58.5
n_fns_r_not_exported 117 84.9
n_fns_per_file_r 4 64.0
num_params_per_fn 4 51.1
loc_per_fn_r 36 82.2
loc_per_fn_r_exp 96 91.5
loc_per_fn_r_not_exp 32 80.2
rel_whitespace_R 3 52.6
rel_whitespace_vignettes 36 60.5
rel_whitespace_tests 6 60.8
doclines_per_fn_exp 51 63.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 101 78.4

3a. Network visualisation

Click to see the interactive network visualisation of calls between objects in package


4. goodpractice and other checks

Details of goodpractice checks (click to open)

3a. Continuous Integration Badges

R-CMD-check.yaml

GitHub Workflow Results

id name conclusion sha run_number date
13799638498 pkgcheck success c7a555 8 2025-03-11
13799638500 R-CMD-check.yaml success c7a555 5 2025-03-11

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following check_fails:

  1. cyclocomp
  2. no_description_date
  3. no_import_package_as_a_whole

Test coverage with covr

Package coverage: 77.51

Cyclocomplexity with cyclocomp

The following functions have cyclocomplexity >= 15:

function cyclocomplexity
cv_cureem 57
coef.mixturecure 52
plot.mixturecure 46
cureem 43
cv.em.nofdr 41
cv_curegmifs 39
concordance_mcm 37
curegmifs 37
inits_check 28
cv.gmifs.nofdr 26
cox_l1 25
cox_mcp_scad 24
predict.mixturecure 24
select_model 24
nonzerocure_test 22
C.stat 17
cure.em 17
exp_EM 17
weib_EM 17
generate_cure_data 15

Static code analyses with lintr

lintr found the following 585 potential issues:

message number of times
Avoid 1:length(...) expressions, use seq_len. 2
Avoid 1:ncol(...) expressions, use seq_len. 19
Avoid 1:nrow(...) expressions, use seq_len. 1
Avoid library() and require() calls in packages 2
Avoid using sapply, consider vapply instead, that's type safe 11
Lines should not be more than 80 characters. This line is 100 characters. 4
Lines should not be more than 80 characters. This line is 101 characters. 1
Lines should not be more than 80 characters. This line is 102 characters. 6
Lines should not be more than 80 characters. This line is 103 characters. 9
Lines should not be more than 80 characters. This line is 104 characters. 13
Lines should not be more than 80 characters. This line is 106 characters. 4
Lines should not be more than 80 characters. This line is 107 characters. 5
Lines should not be more than 80 characters. This line is 108 characters. 12
Lines should not be more than 80 characters. This line is 109 characters. 5
Lines should not be more than 80 characters. This line is 110 characters. 18
Lines should not be more than 80 characters. This line is 111 characters. 2
Lines should not be more than 80 characters. This line is 113 characters. 3
Lines should not be more than 80 characters. This line is 114 characters. 1
Lines should not be more than 80 characters. This line is 115 characters. 9
Lines should not be more than 80 characters. This line is 116 characters. 8
Lines should not be more than 80 characters. This line is 117 characters. 3
Lines should not be more than 80 characters. This line is 118 characters. 14
Lines should not be more than 80 characters. This line is 119 characters. 1
Lines should not be more than 80 characters. This line is 120 characters. 1
Lines should not be more than 80 characters. This line is 121 characters. 11
Lines should not be more than 80 characters. This line is 122 characters. 1
Lines should not be more than 80 characters. This line is 123 characters. 1
Lines should not be more than 80 characters. This line is 124 characters. 1
Lines should not be more than 80 characters. This line is 127 characters. 1
Lines should not be more than 80 characters. This line is 128 characters. 2
Lines should not be more than 80 characters. This line is 129 characters. 7
Lines should not be more than 80 characters. This line is 130 characters. 7
Lines should not be more than 80 characters. This line is 131 characters. 4
Lines should not be more than 80 characters. This line is 132 characters. 3
Lines should not be more than 80 characters. This line is 133 characters. 1
Lines should not be more than 80 characters. This line is 135 characters. 1
Lines should not be more than 80 characters. This line is 136 characters. 5
Lines should not be more than 80 characters. This line is 139 characters. 1
Lines should not be more than 80 characters. This line is 141 characters. 10
Lines should not be more than 80 characters. This line is 142 characters. 7
Lines should not be more than 80 characters. This line is 143 characters. 1
Lines should not be more than 80 characters. This line is 144 characters. 2
Lines should not be more than 80 characters. This line is 149 characters. 3
Lines should not be more than 80 characters. This line is 150 characters. 11
Lines should not be more than 80 characters. This line is 151 characters. 17
Lines should not be more than 80 characters. This line is 153 characters. 1
Lines should not be more than 80 characters. This line is 154 characters. 1
Lines should not be more than 80 characters. This line is 157 characters. 1
Lines should not be more than 80 characters. This line is 158 characters. 1
Lines should not be more than 80 characters. This line is 160 characters. 2
Lines should not be more than 80 characters. This line is 161 characters. 7
Lines should not be more than 80 characters. This line is 162 characters. 12
Lines should not be more than 80 characters. This line is 163 characters. 5
Lines should not be more than 80 characters. This line is 167 characters. 2
Lines should not be more than 80 characters. This line is 171 characters. 1
Lines should not be more than 80 characters. This line is 172 characters. 2
Lines should not be more than 80 characters. This line is 173 characters. 2
Lines should not be more than 80 characters. This line is 176 characters. 2
Lines should not be more than 80 characters. This line is 178 characters. 1
Lines should not be more than 80 characters. This line is 182 characters. 3
Lines should not be more than 80 characters. This line is 183 characters. 1
Lines should not be more than 80 characters. This line is 184 characters. 2
Lines should not be more than 80 characters. This line is 191 characters. 5
Lines should not be more than 80 characters. This line is 195 characters. 6
Lines should not be more than 80 characters. This line is 197 characters. 1
Lines should not be more than 80 characters. This line is 205 characters. 1
Lines should not be more than 80 characters. This line is 207 characters. 1
Lines should not be more than 80 characters. This line is 212 characters. 1
Lines should not be more than 80 characters. This line is 217 characters. 2
Lines should not be more than 80 characters. This line is 218 characters. 1
Lines should not be more than 80 characters. This line is 225 characters. 1
Lines should not be more than 80 characters. This line is 226 characters. 2
Lines should not be more than 80 characters. This line is 227 characters. 1
Lines should not be more than 80 characters. This line is 228 characters. 2
Lines should not be more than 80 characters. This line is 242 characters. 1
Lines should not be more than 80 characters. This line is 248 characters. 1
Lines should not be more than 80 characters. This line is 249 characters. 1
Lines should not be more than 80 characters. This line is 253 characters. 1
Lines should not be more than 80 characters. This line is 263 characters. 1
Lines should not be more than 80 characters. This line is 265 characters. 2
Lines should not be more than 80 characters. This line is 269 characters. 5
Lines should not be more than 80 characters. This line is 278 characters. 1
Lines should not be more than 80 characters. This line is 279 characters. 1
Lines should not be more than 80 characters. This line is 281 characters. 1
Lines should not be more than 80 characters. This line is 283 characters. 9
Lines should not be more than 80 characters. This line is 286 characters. 1
Lines should not be more than 80 characters. This line is 291 characters. 5
Lines should not be more than 80 characters. This line is 293 characters. 5
Lines should not be more than 80 characters. This line is 305 characters. 5
Lines should not be more than 80 characters. This line is 316 characters. 3
Lines should not be more than 80 characters. This line is 317 characters. 1
Lines should not be more than 80 characters. This line is 320 characters. 1
Lines should not be more than 80 characters. This line is 321 characters. 1
Lines should not be more than 80 characters. This line is 330 characters. 2
Lines should not be more than 80 characters. This line is 333 characters. 5
Lines should not be more than 80 characters. This line is 337 characters. 1
Lines should not be more than 80 characters. This line is 343 characters. 1
Lines should not be more than 80 characters. This line is 357 characters. 1
Lines should not be more than 80 characters. This line is 362 characters. 1
Lines should not be more than 80 characters. This line is 387 characters. 1
Lines should not be more than 80 characters. This line is 391 characters. 1
Lines should not be more than 80 characters. This line is 428 characters. 1
Lines should not be more than 80 characters. This line is 439 characters. 1
Lines should not be more than 80 characters. This line is 81 characters. 33
Lines should not be more than 80 characters. This line is 82 characters. 31
Lines should not be more than 80 characters. This line is 83 characters. 10
Lines should not be more than 80 characters. This line is 84 characters. 15
Lines should not be more than 80 characters. This line is 85 characters. 13
Lines should not be more than 80 characters. This line is 86 characters. 12
Lines should not be more than 80 characters. This line is 87 characters. 12
Lines should not be more than 80 characters. This line is 88 characters. 8
Lines should not be more than 80 characters. This line is 89 characters. 6
Lines should not be more than 80 characters. This line is 90 characters. 13
Lines should not be more than 80 characters. This line is 91 characters. 5
Lines should not be more than 80 characters. This line is 92 characters. 2
Lines should not be more than 80 characters. This line is 93 characters. 2
Lines should not be more than 80 characters. This line is 94 characters. 5
Lines should not be more than 80 characters. This line is 95 characters. 9
Lines should not be more than 80 characters. This line is 96 characters. 14
Lines should not be more than 80 characters. This line is 97 characters. 1
Lines should not be more than 80 characters. This line is 98 characters. 2
Lines should not be more than 80 characters. This line is 99 characters. 3
Use <-, not =, for assignment. 7


Package Versions

package version
pkgstats 0.2.0.54
pkgcheck 0.1.2.122
srr 0.1.3.26


Editor-in-Chief Instructions:

This package is in top shape and may be passed on to a handling editor

@maurolepore
Copy link
Member

maurolepore commented Mar 20, 2025

@kelliejarcher thanks so much for following up with a full submission.

Here I share some preliminary checks to support conversations with potential handling editors. If any of this feedback feels useful, now it's a great time to incorporate it.

We'll come back ASAP.

EiC pre-checks

Documentation: The package has sufficient documentation available online (README, pkgdown docs) to allow for an assessment of functionality and scope without installing the package. In particular,

  • Is the case for the package well made?
  • Is the reference index page clear (grouped by topic if necessary)?

Lacks a pkgdown website.
The file names in R/ suggest an alpha sorted reference might not group functionality in a meaningful way.

  • Are vignettes readable, sufficiently detailed and not just perfunctory?

Consider renaming the file to match the package name so that pkgdown automatically adds a "Get started" tab on the website: mv vignettes/hdcuremodels-vignette.Rmd vignettes/hdcuremodels.Rmd

  • Fit: The package meets criteria for fit and overlap.
  • Installation instructions: Are installation instructions clear enough for human users?

Consider adding instructions to install the development version

  • Tests: If the package has some interactivity / HTTP / plot production etc. are the tests using state-of-the-art tooling?

I see set.seed() and no cleanup. Consider using withr::local_seed() for auto-cleanup.
I see multiple calls to expect_error() with no string, class, or snapshot to match. Consider making the expectation more specific.

  • Contributing information: Is the documentation for contribution clear enough e.g. tokens for tests, playgrounds?
  • License: The package has a CRAN or OSI accepted license.
  • Project management: Are the issue and PR trackers in a good shape, e.g. are there outstanding bugs, is it clear when feature requests are meant to be tackled?

@kelliejarcher
Copy link
Author

kelliejarcher commented Apr 22, 2025 via email

@maurolepore
Copy link
Member

@kelliejarcher thanks for following up. I re-announced the package among our editors. Once we find an available handling editor they will guide you through the rest of the process.

BTW, ideally, to keep this thread easier to follow it's best to try respond directly through the GitHub interface. Responding to the email notification duplicates the message you're responding to 😸

@maurolepore
Copy link
Member

Here I mark the end of my EiC rotation and leave a short note for the next EiC.

  • This is a stats submission.
  • The package was announced twice but still lacks a handling editor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants