Reproducibility
Every simulated or derived number this tool publishes (fairness win rates, co-recommendation rates, coverage sweeps, bootstrap confidence intervals) is reproducible from a downloadable engine specification and a self-contained script, without needing this repository or any part of the live app. This page collects that bundle for both recommendation engines, plus a separate descriptive pathway-coverage analysis that ships as source data rather than a spec-and-script pair (it feeds no engine, so there is nothing to regenerate), in one place. Platform scores themselves are not simulated; they are curated from published evidence and expert assessment, and their sourcing is documented dimension-by-dimension in Methods and per-study in the Evidence Base.
The data files the site is built from, with their schemas, are on the Data page.
Help Me Choose: recommendation engine fairness
Covers a full deterministic 1,259,712-scenario baseline grid (goals, sample types, study sizes, and toggle states weighted by real-world prevalence, not treated as equally likely; see Methods), a 4,374-scenario secondary check (plasma, biomarker discovery, large/extra-large study size, the single most prevalent real-world profile), and a rescoring of 65 anonymized real user sessions. The baseline grid and secondary check are complete enumerations, not samples, so they carry no seed and reproduce exactly; running regen_fairness.py against the engine specification below regenerates all five result files byte-for-byte, including the previous uniform-weighting methodology, kept as a documented, superseded reference. Full methodology, including how outright win and co-recommended rates are defined, why an earlier version's win-rate tallying was revised twice, and why the baseline moved from uniform to prevalence-weighted, is in Methods.
Help Me Combine: pairing engine fairness
Covers a deterministic priority sweep (924 scenarios: every combination of up to three priorities, over all four coverage denominators), plus bootstrap confidence intervals on coverage. The priority sweep reproduces exactly, no seed involved; the bootstrap draws reproduce under the seed recorded in the script. A random-weight sweep was previously part of this bundle and has been withdrawn: two of the seven axis weights it drew uniformly are zero-weighted by default and reachable only when a user selects them, so it does not represent a weighting the priority picker can actually produce, and it is not reported in the paper. Full methodology is in Methods, under Platform Combination Engine.
Pathway coverage analysis (Figure 6C, 6D, Supplementary Table S11)
Source data behind Figure 6's platform-specialisation and pair cost-coverage-frontier panels (6C, 6D) and Supplementary Table S11, together with the full pathway-by-platform and pathway-by-pair tables those panels are drawn from: 1,285 testable pathways checked for enrichment across 6 platforms, and per-pathway coverage for all 15 platform pairs across 1,393 pathways. Pathway coverage throughout this bundle is computed against the canonical proteome, that is, each pathway's full Reactome membership; this matches the denominator used by the live pathway-coverage feature in Help Me Choose and Help Me Combine, so recomputing coverage from these files should use the same canonical reference set. These are descriptive analysis outputs, not an input to either recommendation engine: pathway coverage does not enter the Help Me Choose or Help Me Combine scoring formulas, and nothing in this bundle is consumed by either engine's reproducibility script. Full methodology for the enrichment and specialisation analysis is described in a companion preprint.
Verifying a result yourself
Download the engine specification and the script for the tool you want to check into the same folder, then run the script (python3 regen_fairness.py). It writes its own output files and prints a summary table; compare either against the downloadable result files above. If you find a discrepancy, email chris@ignitionscientific.com with the script output and we will investigate.
