{"id":"8e04ef3a-b87e-47f7-9ba1-8e6a3a88c737","arxiv_id":"2607.09431","paper_version":1,"verdict":"CONDITIONAL","confidence":"MODERATE","novelty_score":5.0,"correctness_risk":"low","formal_verification":"none","parameter_count":2,"one_line_summary":"comprisk ships a scikit-learn-compatible Python toolkit for competing-risks survival analysis with a histogram-numba forest that is 10-22x faster than randomForestSRC and validated against R references.","lead":"comprisk is a Python package that brings competing-risks survival methods (random forests, Fine-Gray, Aalen-Johansen, Gray's test) into a scikit-learn-compatible API. It removes the need for Python-to-R round trips and claims 10-22x faster forest training than randomForestSRC on real EHR data.","discovery_kind":"new_method","skeptic_critique":{"model":"grok-4.5","headline":"No significant objection identified beyond the reader's already-noted restricted-cohort reproducibility caveat.","rationale":"The reader's weakest_assumption correctly isolates the only material soft spot: reliance on access-restricted cohorts for the headline 10–22× speed numbers, while the package, synthetic benchmark, and R-equivalence tests are public. That does not undermine the statistical correctness claim (which rests on floating-point match to R references and the equivalence mode) nor the existence of a usable scikit-learn API. Because the paper is a software-tool note whose primary contribution is consolidation and engineering, and because the public artifacts are sufficient to verify the core claims, no further load-bearing concern arises. The CONDITIONAL verdict with the stated reproducibility caveat is therefore appropriate; no adjustment is warranted.","tokens_in":6041,"tokens_out":558,"duration_ms":7523,"concrete_test":"Clone the public repository, install from PyPI, and re-run the shipped synthetic two-cause Weibull benchmark plus the property-based / paired-seed equivalence tests against R (cmprsk, randomForestSRC, etc.). Confirm that (a) numerical agreement holds to the claimed floating-point tolerance and (b) the forest reaches n=10^6 in roughly one minute on a consumer CPU under the default histogram path. If both pass, the central engineering claim stands; the restricted-cohort tables remain a non-fatal caveat.","verdict_should_be":"UNCHANGED","load_bearing_attack":"The paper's central claim is an engineering one: a scikit-learn-compatible Python package that consolidates canonical competing-risks estimators, matches R references to floating-point tolerance, and delivers a histogram/numba forest that is 10–22× faster than randomForestSRC at comparable C-index while scaling to n=10^6. The manuscript states that every estimator is validated against cmprsk, crrp, survival, riskRegression and randomForestSRC; that an equivalence=\"rfsrc\" mode exists for exact RNG matching; that a public synthetic Weibull benchmark and full test suite ship with the repository; and that the package is on PyPI. These are the load-bearing supports. The only soft spot is the one the reader already flags: the headline real-EHR speed tables use access-restricted cohorts (heart-failure EHR and SEER), so those specific numbers cannot be independently re-run without data-use agreements. That is a reproducibility caveat for the magnitude of the speedup claim, not an internal inconsistency or correctness failure of the methods or API. No stronger load-bearing concern (hidden statistical assumption, missing validation path, or non-reproducible core result) is present in the text.","agreement_with_reader":"agree"},"referee_report":{"model":"grok-4.5","summary":"The manuscript presents comprisk, a scikit-learn-compatible Python package that consolidates canonical competing-risks methods (competing-risks random survival forest, Fine–Gray and penalized Fine–Gray regression, cause-specific Cox, Aalen–Johansen CIF, Gray’s K-sample test) and competing-risks-aware evaluation (IPCW time-dependent AUC/Brier, cause-specific concordance with closed-form CIs, calibration) behind a single API. Every estimator is stated to be validated numerically against established R references (cmprsk, crrp, survival, riskRegression, randomForestSRC). The forest uses uint8 histogram binning and numba-compiled split kernels, claimed to fit 10–22× faster than randomForestSRC at comparable discrimination (C-index ≈ 0.85) on real EHR cohorts and to scale to n = 10^6 on a consumer CPU. The package is on PyPI, with a public synthetic Weibull benchmark, test suite, and optional equivalence=\"rfsrc\" mode for exact RNG matching.","tokens_in":6279,"tokens_out":987,"duration_ms":9494,"significance":"If the claims hold, the work removes a genuine friction point for Python-based clinical and epidemiological ML: the need for a Python-to-R round trip to obtain correct CIF-based competing-risks analysis. Consolidating the standard estimators plus IPCW scoring and closed-form concordance CIs under a scikit-learn API, with floating-point validation against independent R references and an explicit equivalence mode, is a useful engineering contribution. The histogram/numba design and reported scaling to n = 10^6 are concrete strengths for modern EHR cohort sizes. The public synthetic benchmark, test suite, and PyPI distribution further support adoption. The main limitation is that the headline real-cohort speed tables rely on access-restricted data, so the precise magnitude of the speedup is not fully independently re-runnable from the paper alone.","major_comments":[{"comment":"Data availability section: the headline 10–22× speed and C-index ≈ 0.85 comparisons on the de-identified heart-failure EHR and SEER breast-cancer cohorts cannot be re-run without data-use agreements. While the public synthetic Weibull benchmark and R-equivalence tests support correctness, the manuscript should either (a) add fully public large-n timing tables (e.g., synthetic or open EHR-like data) that reproduce the order of magnitude of the speedup, or (b) clearly demote the restricted-cohort numbers to illustrative and lead with the reproducible synthetic scaling result. As written, the central performance claim is only partially independently verifiable.","section":null},{"comment":"Implementation and design / Abstract: the claim of “comparable discrimination” rests on C-index ≈ 0.85 under each library’s native scorer. Because native scorers can differ (IPCW vs. other formulations), the manuscript should report a side-by-side evaluation under a single common IPCW concordance (or the package’s own concordance_index_ci) on at least the public synthetic benchmark, so that “comparable” is not confounded by scorer choice.","section":null}],"minor_comments":[{"comment":"Statement of need: briefly note any existing partial Python efforts (e.g., wrappers or single-method ports) so the gap claim is fully scoped.","section":null},{"comment":"Functionality: list the exact floating-point tolerances or test criteria used for the R-reference checks (e.g., max absolute difference on coefficients/CIFs) so readers can judge “validated numerically.”","section":null},{"comment":"Implementation and design: state the default number of histogram bins (256) and any sensitivity of discrimination to that choice on the public benchmark.","section":null},{"comment":"References: ensure riskRegression and crrp version pins match those used in the validation suite for long-term reproducibility.","section":null},{"comment":"Abstract / Summary: “10–22× faster” is a range; a short table or sentence giving n, p, and hardware for the endpoints of that range would help readers interpret it.","section":null}],"recommendation":"minor_revision","confidential_remarks":"This is a solid software contribution for a computational-statistics or JOSS-style venue. The restricted-cohort speed tables are the only material reproducibility soft spot; once public large-n timings and a common-scorer discrimination check are added, the paper is close to accept. Scope fits stat.CO / software-focused outlets well."},"author_rebuttal":null,"desk_editor":{"model":"grok-4.5","letter":"This is a clean software note that does what it says. Competing-risks methods have lived almost entirely in R (cmprsk, randomForestSRC, crrp, riskRegression, survival). Python ML people doing clinical work have been stuck with round-trips or incomplete single-event tools. comprisk puts the standard suite—Fine-Gray (including penalized), cause-specific Cox, Aalen-Johansen, Gray’s test, IPCW AUC/Brier/concordance with closed-form CIs, calibration, and a competing-risks RSF—behind one scikit-learn API, ships on PyPI, and claims floating-point agreement with the R references.\n\nWhat is actually new is the engineering, not the statistics. The forest uses uint8 quantile binning, histogram split scans, numba kernels that release the GIL, and a flat tree layout. They report 10–22× wall-time gains versus randomForestSRC at comparable C-index (~0.85) on real EHR cohorts and scaling to n=10^6 on a consumer CPU, plus an equivalence=\"rfsrc\" mode for exact RNG matching and a public synthetic Weibull benchmark. Design choices are described clearly; circularity is low because they check against independent R packages written by other groups. Citations are appropriate and the generative-AI disclosure is honest.\n\nThe soft spot is exactly the one already flagged: the headline real-cohort speed tables use access-restricted heart-failure EHR and SEER data, so those specific numbers cannot be re-run without DUAs. That is a reproducibility caveat on the magnitude of the speedup, not a correctness failure of the estimators or API. The public synthetic path, test suite, and PyPI package still let someone verify the core claims. Free parameters (bin count, seed) are ordinary for this class of estimator.\n\nThis is for biostatisticians and clinical ML people who already work in Python and want correct competing-risks analysis without leaving the stack. It does not open a new scientific question, but it removes real friction. I would send it to peer review; a serious software/stat.CO referee can check the public benchmarks and the validation suite. Worth engaging if you or your students do competing-risks work in Python.","headline":"Useful Python tooling paper that closes a real R-to-Python gap for competing risks; engineering claims look solid, with only the usual restricted-cohort speed-table caveat.","tokens_in":6900,"tokens_out":562,"would_cite":true,"duration_ms":5777,"reading_group":"maybe","serious_thinker":"yes","would_accept_peer_review":true},"rs_alignment":null,"lean_confirmation":null,"pith_extraction":{"msc":["62N01","62N02","62P10"],"pacs":[],"model":"grok-4.5","headline":"A single scikit-learn Python package now ships correct competing-risks survival analysis without leaving the Python stack.","keywords":["competing risks","cumulative incidence function","random survival forest","Fine-Gray regression","scikit-learn","Aalen-Johansen","IPCW evaluation","Python survival analysis"],"falsifier":"An independent re-implementation or public re-run of the same forest and Fine–Gray estimators on the synthetic two-cause Weibull benchmark (or any fully public competing-risks cohort) that either fails to match the R packages within floating-point tolerance or fails to reproduce the reported wall-time ratios and C-index values.","tokens_in":6901,"feed_emoji":"⏱️","tokens_out":765,"duration_ms":7362,"temperature":0.7,"pith_summary":"Medical time-to-event data often involve competing risks: one terminal event can preclude others, so treating competing events as ordinary censoring produces biased absolute-risk estimates. The correct target is the cause-specific cumulative incidence function, but the standard toolkit for that analysis has lived almost entirely in R. This paper presents comprisk, a scikit-learn-compatible Python library that consolidates the canonical methods—competing-risks random survival forest, Fine–Gray and penalized Fine–Gray regression, cause-specific Cox models, the Aalen–Johansen estimator, and Gray’s test—behind one consistent API, together with competing-risks-aware scoring and calibration. Every estimator is checked numerically against the established R references. The forest uses a histogram-based, numba-compiled split kernel that is reported to fit 10–22 times faster than the leading R forest on real electronic-health-record cohorts at comparable discrimination and to scale to a million observations on a consumer CPU. The package therefore lets researchers keep correct competing-risks analysis inside pure-Python machine-learning workflows.","feed_headline":"Python package ends R detour for competing-risks survival","feed_subtitle":"One scikit-learn API ships correct CIF methods and a forest 10–22\times faster than the R standard","key_machinery":"The histogram-based, numba-compiled split kernel that quantile-bins continuous features into uint8 codes once and searches splits over histograms of event counts, turning the per-node scan into a bounded, cache-friendly reduction that yields both the reported speed-ups and bit-identical multi-threaded results.","core_discovery":"comprisk is a native-Python, scikit-learn-compatible toolkit that implements the full set of canonical competing-risks estimators and evaluation tools, each validated to floating-point agreement with the corresponding R reference implementations, while its histogram-based competing-risks random survival forest achieves 10–22\times wall-time speedups over randomForestSRC at comparable C-index on real EHR cohorts and scales to n = 10^6 on ordinary hardware.","pith_inferences":[],"forward_implications":[],"fun_headline_variants":["comprisk: native Python toolkit ends R roundtrip for competing risks","scikit-learn API delivers full competing-risks estimators validated to R","Histogram forest for competing risks runs 10-22x faster than randomForestSRC","Python stack gains scalable CIF methods and cause-specific evaluation tools","comprisk unifies Fine-Gray, Aalen-Johansen and CR forest behind one API"],"cache_read_input_tokens":128,"weakest_assumption_plain":"That floating-point numerical agreement with the R reference packages plus comparable C-index on access-restricted cohorts is enough to establish that the Python estimators are statistically correct and that the headline speed claims will hold for other users.","fun_headline_variants_meta":{"raw":{"variants":["comprisk: native Python toolkit ends R roundtrip for competing risks","scikit-learn API delivers full competing-risks estimators validated to R","Histogram forest for competing risks runs 10-22x faster than randomForestSRC","Python stack gains scalable CIF methods and cause-specific evaluation tools","comprisk unifies Fine-Gray, Aalen-Johansen and CR forest behind one API"]},"model":"grok-4.5","effort":"low","cost_usd":0.005588,"raw_usage":{"total_tokens":1564,"prompt_tokens":853,"num_sources_used":0,"completion_tokens":103,"cost_in_usd_ticks":55880000,"prompt_tokens_details":{"text_tokens":853,"audio_tokens":0,"image_tokens":0,"cached_tokens":256},"completion_tokens_details":{"audio_tokens":0,"reasoning_tokens":608,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"tokens_in":853,"tokens_out":103,"duration_ms":9650,"temperature":1.0,"reasoning_tokens":608,"cache_read_input_tokens":256,"cache_creation_input_tokens":0},"cache_creation_input_tokens":0},"created_at":"2026-07-13T03:01:56.046795+00:00","model_set":{"reader":"grok-4.5"},"falsifier":"An independent re-implementation or public re-run of the same forest and Fine–Gray estimators on the synthetic two-cause Weibull benchmark (or any fully public competing-risks cohort) that either fails to match the R packages within floating-point tolerance or fails to reproduce the reported wall-time ratios and C-index values.","supporting_citations":[],"review_version":1}