Skip to content
Methods

Reference checks

Reference checks: Drybench Assay

This page lists the reference checks published for Drybench Assay. Each set gives the methods it covers, what the expected values were computed with, the number of cases, the tolerance the app must meet, the date, and the file holding the inputs and expected outputs, so you can open a case and compare it with what the app gives.

Every case was chosen and recorded by the Drybench team; none has been independently reviewed. A reference check tests the calculation, not your data, your experiment or whether a model suits it. Methods without a set are listed on the methods page with their level.

Methods and levelsDocumentation

Published sets

Published verification sets

MethodsOracleFixturesToleranceDateFile
four-pl, levenberg-marquardt-bounded, weighting-1-over-y2R32log10 C50 within 0.00043; Hill within 0.1 percent; Top and Bottom within 0.1 percent of the span; the objective within 1e-6 relative2026-10-06drc-reference.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
four-pldrc30the same minima by LL.4 (e = C50, b = −Hill, c = Bottom, d = Top), recorded as a cross-check2026-10-06drc-reference.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
wald-log-ic50, profile-likelihood-log-ic50R30Wald bounds within 0.0022 and profile bounds within 0.0043 log10 units; resolved unweighted bounds only; unresolved refits and historical weighted results are qualified2026-10-06drc-reference.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
ic50-rules, absolute-ic50R36archived version-1 reporting outcomes; compatible dose counts and crossing algebra only; version-2 permutation policy tested separately2026-10-06drc-reference.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
z-primeR5within 1e-9; the refusal below two wells exact2026-10-06zprime-controls.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
extra-sum-of-squares-fR6residual sums of squares within 1e-6 relative; F within 1e-5 and p within 1e-4 relative2026-10-06drc-reference.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
standard-curve-interpolationPython fractions71e-9 relative; range flags and refusals exact2026-10-10calibration-linear-exact.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
standard-curve-interpolationSciPy2parameters and fitted responses within 2e-5 (log10 midpoint absolute); concentrations within 5e-5 relative; range flags exact2026-10-10calibration-4pl-scipy.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
calibration-inverse-predictionPython fractions15linear bounds within 1e-9 relative (exact rational arithmetic); 4PL and 5PL bounds within 1e-6 relative and concentrations within 5e-5 relative (SciPy curve_fit, central finite differences); statuses and withheld reasons exact; coverage simulated, 2,000 replicates in each of 8 replicated designs (linear and 4PL; 5PL not simulated), 94.4 to 95.5 percent against gates of 0.93 and 0.90; against R 4.4.3 investr 1.4.2 (invest, over the individual standard readings) on the 11 intervals for unknowns read once: bounds and the pooled variance within 1e-9 relative (linear) and 1e-6 relative (4PL, 5PL), degrees of freedom exact2026-10-14calibration-inverse-v2.jsonRecorded for version 0.13.0; the test suite checks the current engine against it.
five-pl-calibrationSciPy5parameters (ln s included) and fitted responses within 2e-5 absolute; concentrations within 5e-5 relative (floor 1e-6); RSS 1e-6 (not compared at a zero residual), F 1e-5, p 1e-4 relative; AICc 1e-6 absolute; statuses exact; R drc LL.5 agrees on the 3 fitted curves2026-10-12calibration-5pl-scipy.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
replicate-summariesPython fractions2means and SDs 1e-9 relative; n and wells exact2026-10-10replicate-summaries.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
z-primeR6within 1e-9; refusals exact2026-10-10zprime-degenerate.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
growth-window-rateSciPy9μ and the doubling time within 1e-9 relative (exact cases by Python fractions); residuals within 1e-9; withheld states, rows and n exact2026-10-10growth-window.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
michaelis-menten-initial-rateSciPy8Km and Vmax within 1e-5 relative; the residual sum of squares within 1e-6 relative; correlation within 1e-4; kcat within 1e-5 relative; states, flags and refusals exact2026-10-10michaelis-menten.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
inhibition-global-fitSciPy18Vmax, Km, Ki and Ki′ within 1e-5 relative (hand values 1e-9); the residual sum of squares within 1e-6 relative; correlations within 1e-4; refusals, the named level and the constant at the box exact; against R 4.4.3 nls on the 11 fits without bound contact: constants within 1e-5, the residual sum of squares within 1e-6 relative2026-10-12inhibition-global-v2.jsonRecorded for version 0.5.0; the test suite checks the current engine against it.
inhibition-model-comparisonSciPy8the ranking, the states outside it and refusals exact; constants within 1e-5 relative; the residual sum of squares within 1e-6 relative; AICc and ΔAICc within 1e-6; F within 1e-5 relative; p within 1e-4 relative; against R 4.4.3 nls, AIC and anova on the 6 compared cases: constants within 1e-5, ΔAICc within 1e-6, the nested F within 1e-5 relative2026-10-12inhibition-compare.json
substrate-inhibition-haldaneSciPy9Vmax, Km, Ksi and the optimum within 1e-5 relative (hand values 1e-9); the residual sum of squares within 1e-6 relative; the Km–Ksi correlation within 1e-4; withheld states, the count beyond the optimum and refusals exact; against R 4.4.3 nls on the 4 estimates: constants within 1e-5, the residual sum of squares within 1e-6 relative2026-10-13substrate-inhibition.json
inhibition-profile-intervalSciPy7resolved bounds within 1e-3 ln units of the direct profile; the threshold within 1e-8 relative; side states, reasons and the poorly-determined flag exact; coverage simulated, 1,000 replicates per design; against a direct profile computed in R 4.4.3 from its own nls fit on the 5 cases with an interval (inhibition-profile-r.json, 0.19.0): resolved bounds within 1e-3 ln units (largest gap 2e-11), the threshold within 1e-8 relative, the box side a box2026-10-13inhibition-profile.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
thermal-shift-tm-intervalsSciPy11replicate means and SDs within 1e-3 °C, n and the wells not counted exact; the residuals' lag-1 r1 within 1e-6; the withheld single-well profile within 1e-3 °C of the direct profile; coverage simulated under independent, correlated and misfitting melts, 1,000 per design; against a direct profile computed in R 4.4.3 from its own nls fit on the 5 melts with an interval, and R's mean and sd over its own fits of the 4 replicate groups (thermal-tm-intervals-r.json, 0.19.0): Tm, bounds, means and SDs within 1e-3 °C (largest gap 5e-11), thresholds within 1e-8 relative; the coverage simulation SciPy only2026-10-13thermal-tm-intervals.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
ki-cheng-prusoff-boundsPython fractions10Ki and both bounds within 1e-12 relative; the four-figure display exact; refusals exact2026-10-13ki-bounds.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
thermal-shift-apparent-tmSciPy13sigmoid Tm within 1e-3 °C; ln k within 1e-4; plateaus within 1e-4 of the span; the derivative extremum's temperature exact; refusals and the disagreement flag exact; against R 4.4.3 nls(SSfpl) on the 7 fitted melts: Tm within 1e-3 °C, ln k within 1e-4, plateaus within 1e-4 of the span2026-10-12thermal-shift-v2.jsonRecorded for version 0.5.0; the test suite checks the current engine against it.
michaelis-menten-profile-intervalSciPy9resolved bounds within 1e-3 ln units of the direct profile; the threshold within 1e-8 relative; side states, reasons and the poorly-determined flag exact; coverage simulated, 2,000 replicates per design; against a direct profile computed in R 4.4.3 from its own nls fit on the 7 cases with an interval: resolved bounds within 1e-3 ln units, the threshold within 1e-8 relative2026-10-12michaelis-menten-profile-v2.jsonRecorded for version 0.5.0; the test suite checks the current engine against it.
qpcr-fold-change-welch-intervalSciPy10normalised log2 quantities, differences, standard errors and bounds within 1e-9; degrees of freedom and t within 1e-9 relative; n, statuses and withheld reasons exact; against R 4.4.3 t.test (Welch) and SciPy ttest_ind on the 8 intervals at 1e-92026-10-12qpcr-welch.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
growth-gompertz-fitSciPy9A and μm within 1e-5 relative, λ within 1e-5 of the time span; the residual sum of squares within 1e-6 relative; the noise-free generating parameters within 1e-8; statuses and withheld reasons exact; against R 4.4.3 nls (port) on the 6 interior fits at 1e-42026-10-12growth-gompertz.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
progress-curve-initial-ratesPython fractions12slopes, intercepts, rates and percent conversion within 1e-9 relative (exact straight lines by Python fractions; the noisy plate by SciPy linregress); residuals within 1e-9; withheld wells, reads used and the 10 percent flag exact; Km and Vmax on the plate's window rates within 1e-6 of SciPy curve_fit; against R 4.4.3 lm on the 25 estimated wells: slope and intercept within 1e-9 relative2026-10-12progress-curve-rates.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
ki-cheng-prusoff-competitivePython fractions11Ki within 1e-12 relative; the four-significant-figure display exact; refusals exact, with no number2026-10-10ki-cheng-prusoff.jsonRecorded for version 0.2.0; the test suite checks the current engine against it.
curve-comparisonSciPy12residual sums of squares within 1e-6 relative; F within 1e-5 and p within 1e-4 relative; the C50 difference and its Wald bounds within 1e-6 log10; profile bounds within 1e-3 log10; refusals and withholdings exact; coverage simulated, 2,000 replicates per design; against R 4.4.3 drc 4.0-0 (drm with curveid and pmodels, anova, compParm) on the 11 compared cases: residual sums of squares and F within about 1e-15, p within 3e-7 relative where it exceeds 1e-12 (below that drc's anova reports 1 − pf at its precision limit, and both are recorded as below 1e-12), the C50 difference within 4e-8 relative, and the Wald SE within 0.7 percent (drc's Hessian against the engine's JᵀJ, compared at 1e-2): agrees2026-10-13curve-compare-v2.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
experiment-summary-log-c50Python fractions11mean, SD and bounds within 1e-9 log10; the t quantile within 1e-8 relative; k, n, levels, withheld lists, refusals and the carried flag exact; against R 4.4.3 t.test on the 6 cases with an interval, within 1e-9 log102026-10-12experiment-summary.jsonRecorded for version 0.10.0; the test suite checks the current engine against it.
grubbs-two-sided, studentised-residuals-one-wayR21G, t and critical G within 1e-9 relative; p within 1e-8 relative; rows, candidate flags and withheld states exact; the outliers package's folded two-sided p recorded, not used, where twice the bound exceeds 12026-10-13column-outliers.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
outlier-candidatesSciPy13leverages, residuals, internal and external t, p, adjusted p, G and critical values within 1e-6 relative; candidates, indices and withheld states exact; R 4.4.3 rstudent, hatvalues, car outlierTest and outliers grubbs.test agree on 2 linear fits and 3 control groups; R not run on the 4PL fits2026-10-13outlier-candidates.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
power-sample-sizeR26power within 1e-8 (t, proportions) and 1e-7 (ANOVA); computed n within 1e-6 relative; the smallest integer n, flags and withheld states exact; SciPy agrees on 19 of 192026-10-13power-sample-size.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
column-descriptives, column-t-tests, column-rank-tests, median-order-statistic-interval, shapiro-wilk-royston, column-effect-sizesR50descriptives, quantiles, intervals and estimates within 1e-9 relative; t, df and t-test p within 1e-8 relative; exact rank p and achieved coverage within 1e-10; approximate rank p within 1e-8 relative; Shapiro–Wilk W within 1e-7 and its p within 1e-5 relative; counts and withheld states exact; SciPy agrees on 179 of 1792026-10-13column-statistics.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
one-way-anova, post-hoc-comparisons, rank-groups, repeated-measures, two-way-anovaR22sums of squares, F, η², ω², means, differences and SEs within 1e-9 relative; F, t and chi-squared p within 1e-8; Tukey–Kramer and Games–Howell p within 1e-7; Dunnett p within 1e-6; Greenhouse–Geisser and Huynh–Feldt ε within 1e-9; the mixed model's F and p within 1e-6 relative, its variances and means within 1e-5; codes, df and m exact2026-10-13groups.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
p-value-adjustmentR10adjusted p within 1e-12 relative; counts, m and withheld states exact2026-10-13fdr.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
correlation-pearson-spearman, linear-regression-qr, nonlinear-families, relationship-model-comparison, deming-regression, bland-altmanR115r, ρ, S and t within 1e-10 relative, t-based p within 1e-8 relative, correlation bounds within 1e-9; regression within 1e-9 relative, p within 1e-8 relative; curves: noisy residual sums of squares within 1e-8 relative, parameters within 1e-6, profile bounds within 1e-3, polynomials within 1e-9 relative; model comparison ΔAICc within 1e-8 (linear) and 1e-4 (nonlinear); Deming within 1e-10, the jackknife and Bland–Altman within 1e-9; codes, counts and order exact; SciPy agrees on 105 of 1052026-10-13relationships.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
nonlinear-familiesSciPy5simulated coverage of the 95 percent profile intervals at least 0.90 for every quantity, 2,000 seeded replicates per family; growth, one-phase, two-phase, power and Boltzmann cleared, the lowest 0.9452026-10-13nonlinear-coverage.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
kaplan-meier, median-survival, survival-tests, log-rank-hazard-ratioR34S(t), its standard error, the band, the median and its bounds within 1e-10 relative; χ² and expected counts within 1e-9 relative, p within 1e-8 relative; the hazard ratio and its bounds within 1e-9 relative; times, numbers at risk, events, censorings, observed counts and withheld states exact; identities inside R agree on 88 of 882026-10-13survival.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
contingency-tests, two-by-two-measures, mcnemar, cochran-armitageR42odds ratio, relative risk, risk difference, proportions, their bounds and expected counts within 1e-9 relative; X², chi-squared, Fisher 2 × 2, binomial and trend p and the Clopper–Pearson bounds within 1e-8 relative; Fisher r × c p within 1e-6 relative; the conditional odds ratio and its interval within 1e-8 relative of the uniroot(tol = 1e-12) transcription; refused cells and withheld states exact; checks inside R agree on 37 of 372026-10-13counts.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
four-pl, levenberg-marquardt-bounded, profile-likelihood-log-ic50R1the estimates' tolerances: log10 C50 within 0.00043, Hill within 0.1 percent, Top and Bottom within 0.1 percent of the span, Wald 0.0022 and profile 0.0043 log10 units, the objective within 1e-6 relative; the reporting gate's decision exact2026-10-10plate-walk-refit.jsonRecorded for version 0.3.0; the test suite checks the current engine against it.
gaddum-schild-global, gaddum-noncompetitive, operational-model-furchgottSciPy8pA2, s, pKB, log EC50₀, log KA and log τ within 1e-4 log units; shared levels within 1e-4 of the response span; profile bounds within 1e-3; F within 1e-5 and p within 1e-4 relative; KB within 1e-4 relative; states exact; R nls and drc agree on 6 of 7 fitted cases, and where drc's own fit differs SciPy holds the lower residual sum of squares, as it does on every fit (SCI-121)2026-10-13agonist-antagonist-v2.jsonRecorded for version 0.13.0; the test suite checks the current engine against it.
relative-potencySciPy9residual sums of squares within 1e-6 relative; F within 1e-5 and p within 1e-4 relative; ρ, the Hill ratio and the plateau differences within 1e-5 relative; profile bounds on log ρ within 1e-3 log10; states and margin classes exact; R drc LL2.4 agrees2026-10-13relative-potency.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
reporter-ratioPython fractions16ratios, folds, means, SDs, medians and percents within 1e-12 relative; states, reasons, flags and well lists exact; R median agrees2026-10-13reporter-ratio.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
percent-of-vehicle-backgroundPython fractions11percents, the blank share and means within 1e-12 relative; reasons and counts exact; R mean agrees2026-10-13viability-normalisation.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
plate-diagnosticsPython fractions17Z′, signal window, SSMD, Z, means, Welch t and df and F within 1e-9 relative; p within 1e-8; counts, states and reasons exact; R t.test and drop1(lm) agree2026-10-13plate-diagnostics.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
influence-leave-one-outSciPy8every leave-one-out shift within 0.00086 log10; outcomes and the largest well exact; R drc LL.4 refits agree2026-10-13influence-loo.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
design-narrowingSciPy5candidate variances and the current Wald half-width within 1e-6 relative (NumPy, analytic gradient, at SciPy's fit); the chosen candidate, replicates and narrowing exact; base R agrees2026-10-13design-narrowing.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
two-phase-dose-responseSciPy8the engine's residual sum of squares at most the oracle's × (1 + 1e-6); midpoints and Hill slopes within 1e-4, levels within 1e-4 of the span; F and AICc within 1e-6 and p within 1e-4 relative; states exact; R drc agrees2026-10-13two-phase-dose-response.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
negative-resultPython fractions16exact cases equal as fractions; sampled cases equal to the ported stream and within 4·√(p(1 − p)/2000) + 1/2000 of exact enumeration; means within 1e-12 relative; R not run2026-10-13negative-result.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
molar-from-massPython decimal20formula weights within 1e-4 g/mol; protein masses within 0.02 Da (ProtParam) and 0.01 Da (CIAAW 2021); molar values, active enzyme and kcat within 1e-9 relative; refusals exact2026-10-13units-molecule.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
ligand-efficiencyPython decimal13heavy atoms exact; LE and LLE within 1e-6 and as shown; reasons exact; Crippen cLogP from Python RDKit within 1e-3, a drift check, not independent2026-10-13ligand-efficiency.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
assay-driftPython fractions11centre, moving range and limits within 1e-9 relative; Pettitt K, location and flag exact, p within 1e-6 relative; statuses exact; R qcc and trend agree (drift-r.json)2026-10-13assay-drift.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
calibration-blank-limitsPython fractions14the blank mean and SD within 1e-12 relative; limits on lines, original concentrations, percents, CV and the trend's bounds within 1e-9 relative; limits on the 4PL within 1e-6 relative; states, reasons and notes exact; R mean, sd and confint(lm) agree2026-10-13calibration-limits.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
qpcr-dilution-efficiency, qpcr-genorm-mPython fractions17slope, intercept, R², the slope's bounds, E and efficiency within 1e-9 relative on 12 series; geNorm V and M within 1e-9 relative on 5 tables; states, counts, dropped levels and the ranking exact; R lm, confint and sd agree2026-10-13qpcr-efficiency.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
hill-initial-rateSciPy11Vmax, S0.5 and h within 1e-5 relative (hand values 1e-9); the residual sum of squares within 1e-6 relative; the interval on h within 1e-3 in ln h; states exact; R nls agrees2026-10-13hill-kinetics.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
bisubstrate-initial-rateSciPy11Vmax, KmA, KmB and KiA within 1e-5 relative (hand values 1e-9); the residual sum of squares within 1e-6 relative; ΔAICc within 1e-6, F within 1e-5 and p within 1e-4 relative; states exact; R nls agrees2026-10-13bisubstrate.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
morrison-tight-bindingSciPy15v0, Ki_app and the fitted [E] within 1e-5 relative (hand values 1e-9); the residual sum of squares within 1e-6 relative; Ki by mechanism within 1e-12 relative; states exact; R nls agrees2026-10-13morrison.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
slow-binding-one-step, slow-binding-two-stepSciPy13the line's kon_app, koff, standard errors and bounds within 1e-9 relative (exact rational least squares); k5, Ki_app and k6 within 1e-5 relative (hand values 1e-9); states exact; R lm, confint and nls agree2026-10-13slow-binding.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
binding-equilibrium, binding-ki-cheng-prusoff-munson-rodbardSciPy24constants within 1e-5 relative (hand values 1e-9); the residual sum of squares within 1e-6 relative; interval bounds within 1e-3 in ln; ΔAICc within 1e-6, F within 1e-5 and p within 1e-4 relative; Ki within 1e-9 relative; states exact; R nls and drc agree2026-10-13binding.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
layout-suggestionPython fractions16trigger decisions, m, rules and refusals exact (p against 0.05/m in binary64); counts and layout properties exact2026-10-13layout-suggestion.jsonRecorded for version 0.12.0; the test suite checks the current engine against it.
combination-normalise, combination-technical-mean, combination-hsa, combination-blissPython fractions39expected fractions, excess percentage points and observable vehicle, cell and margin means within 1e-9 absolute; cell statuses, withheld reasons, top-level refusals, retained/excluded counts and contributing observation IDs exact. The planned cross-check against synergy 1.0.0 was not run (each fixture's crossCheck block records why).2026-10-18combination-analysis-v3.jsonRecorded for version 0.15.0; the test suite checks the current engine against it.
z-prime, percent-of-controls, percent-of-vehicle-background, screening-percent-inhibition, screening-robust-z, plate-diagnostics, growth-window-rate, growth-gompertz-fit, gr-metrics, qpcr-fold-change-welch-interval, two-way-anova, repeated-measures, survival-tests, log-rank-hazard-ratio, slow-binding-one-step, slow-binding-two-step, thermal-shift-tm-intervalsPython fractions60statuses, codes, reasons, rows and wells exact, every refusal decided in exact decimal arithmetic; Z′, SDs, percents, the signal window and SSMD within 1e-9 relative (an exact 0 within 1e-12); robust z within 1e-12 relative; growth μ within 1e-9 relative; GR arithmetic within 1e-9; qPCR bounds within 1e-9 log2; two-way sums of squares and F within 1e-9 relative, p within 1e-8 relative; survival χ² and the hazard ratio within 1e-9 relative; no NaN or infinite number under a value status; the survival and two-way cases by exact fractions and NumPy where the memo names R2026-10-20degenerate-v1.jsonRecorded for version 0.16.0; the test suite checks the current engine against it.
survival-tests, slow-binding-one-step, slow-binding-two-stepPython fractions29statuses, codes, counts and refusal precedence exact; survival chi-squared and rational linear controls within 1e-9 relative, p within 1e-8 relative, exact hyperbola parameters within 1e-5 relative; no R or SciPy cross-check2026-10-25survival-slow-degeneracy-v1.jsonRecorded for version 0.17.0; the test suite checks the current engine against it.
plate-diagnosticsPython standard library26edge admission, counts and reasons exact; means, Welch t and df within 1e-9 relative (exact zero within 1e-12 absolute), p within 1e-8 absolute; exact fractions and bounded Student-t sine quadrature with 34 analytical and identity checks, no R or SciPy cross-check or extreme-tail relative-accuracy claim2026-10-25plate-edge-spread-v1.jsonRecorded for version 0.18.0; the test suite checks the current engine against it.
screening-percent-inhibition, screening-robust-z, screening-observationsSciPy30values, Welch, F and the drift chart within 1e-9 relative; robust z within 1e-12; p within 1e-8; calls, ranking and lines exact; R median, mad, t.test, drop1, qcc and trend agree2026-11-07screening-v2.jsonRecorded for version 0.19.0; the test suite checks the current engine against it.
gr-metricsR57GRmetrics 1.32.0 on identical inputs: GR and GR_AOC within 1e-9; fits within 1e-4 or the lower RSS; GRmax by both definitions2026-11-07gr-metrics-r-2.jsonRecorded for version 0.19.0; the test suite checks the current engine against it.

Oracles and build-time tools

Software the app's numbers were checked against, or its data built with. None of it ships with the app or is a dependency of it.

  • R 4.3.3 (GPL-2 or GPL-3; Oracle; 2026-10-06). the nls fits, the root-found profile intervals, the F-tests and the rule checks that wrote the oracle values
  • drc 4.0-0 (GPL-2; Oracle; 2026-10-06). LL.4 and LL2.4 fits as a second route to the minimum, ED(type = 'absolute') and anova() as cross-checks; never shipped, never ported
  • MASS 7.3-60.0.1 (GPL-2 or GPL-3; Oracle; 2026-10-06). confint.nls as a cross-check on the profile intervals
  • R 4.4.3 (GPL-2 or GPL-3; Oracle; 2026-10-12). the 0.5.0 -v2 cross-checks in the oracle image: nls, nls(SSfpl) and the direct profile; the 0.6.0 inhibition comparison and substrate-inhibition fits: nls, AIC and anova; lm for the 0.7.0 progress-curve rates
  • NumPy 2.4.6 (BSD-3-Clause; Build-time tool; 2026-10-06). the seeded generator that wrote the synthetic curves, the MTT plate and the control sets
  • SciPy 1.13.1 (BSD-3-Clause; Oracle; 2026-10-10). curve_fit (Levenberg-Marquardt, three starts) for the 4PL standard curves and (trf, bounded, three starts) for the Michaelis–Menten fits, with NumPy 2.0.2; linregress for the noisy growth windows
  • Python fractions 3.11.15 (Python-2.0; Oracle; 2026-10-10). exact rational least squares for the linear standard curves and the exact growth windows; replicate means and sample SDs; Ki from IC50 by hand
  • Python decimal 3.11.15 (Python-2.0; Oracle; 2026-10-13). the molar-mass and ligand-efficiency arithmetic at 40 digits, recorded in the oracle image
  • synergy 1.0.0 (GPL-3.0-or-later; Oracle; 2026-10-18). a planned cross-check of the HSA and Bliss reference values in an isolated environment outside the repository; not run
  • Python fractions 3.13.16 (Python-2.0; Oracle; 2026-10-20). the 0.16.0 degenerate-input set: every refusal decided in exact decimal arithmetic on the decimal inputs, the exact log-rank covariance and the two-way cross-check
  • Python fractions 3.12.14 (Python-2.0; Oracle; 2026-10-25). the 0.17.0 survival and slow-binding supplemental set: exact decimal-input risk sets, covariance, relative spread and linear controls, with closed-form chi-square tails from the standard library; no R or SciPy cross-check
  • Python standard library 3.12.14 (Python-2.0; Oracle; 2026-10-25). the 0.18.0 plate-edge supplemental set: exact decimal-input relative spread and Welch moments with bounded Student-t sine quadrature and analytical distribution checks; no R or SciPy cross-check
  • SciPy 1.18.1 (BSD-3-Clause; Oracle; 2026-10-20). the 0.16.0 degenerate-input set's numbers for the cases that keep calculating, with NumPy 2.5.4 (means, SDs, least squares, the t, F, chi-squared and normal distributions, the median absolute deviation)

Fixture tables, computed when the page was built

These tables compare compatible unweighted fixtures with the current engine when this page was built. The published R files also contain archived version-1 weighted estimates and reporting rules; those cannot validate version-2 IRLS or the permutation gate and are excluded here. Failed profile refits are marked not comparable, never converted to finite bounds. The full input sets were written by pipeline/assay-analyser/generate_curves.py and reference.R. Draft until the independent reviewer signs the fixture file and the method page (Q-19).

Relative IRLS is checked separately against two independent SciPy fits and fixed-weight estimating equations; this checks point estimation, not interval coverage or Prism equivalence. Download the reference with input/script hashes, Python script and pinned requirements. The new response gate has independent exact-null permutation regression tests; old F-gate outcomes are archival.

Unweighted log10 C50 of the synthetic curves

Expected values from R 4.3.3 nls (drc 4.0-0 as a cross-check), recorded 2026-10-06; tolerance within 0.00043 log10 units; 12 of 28 shown, all comparable rows passing. drc-reference.json sha256 27d99000551acaf2…

InputExpectedOursDifferencePass
C01 logC50 (Hill −0.958)−6.038−6.0381.77e-8yes
C02 logC50 (Hill −1.13)−6.555−6.555-6.86e-10yes
C03 logC50 (Hill −1.01)−6.989−6.9893.52e-10yes
C04 logC50 (Hill −0.508)−6.069−6.0691.69e-8yes
C05 logC50 (Hill −0.459)−5.457−5.457-4.10e-8yes
C06 logC50 (Hill −0.489)−6.462−6.4621.11e-8yes
C07 logC50 (Hill −3.06)−5.999−5.9991.19e-9yes
C08 logC50 (Hill −2.71)−5.250−5.2501.83e-9yes
C09 logC50 (Hill −3.21)−7.202−7.2026.15e-10yes
C10 logC50 (Hill −0.961)−6.018−6.0182.60e-8yes
C11 logC50 (Hill −1.16)−6.025−6.0253.52e-9yes
C12 logC50 (Hill −1.06)−5.002−5.002-1.51e-8yes

Unweighted Wald and profile extra-sum-of-squares intervals on log10 C50

Expected values from R 4.3.3 nls (drc 4.0-0 as a cross-check), recorded 2026-10-06; tolerance Wald within 0.0022 log10 units, resolved profile bounds within 0.0043 log10 units; 12 of 56 shown, all comparable rows passing. drc-reference.json sha256 27d99000551acaf2…

InputExpectedOursDifferencePass
C01 Wald−6.089 to −5.987−6.089 to −5.9872.0e-8, 1.5e-8yes
C01 profile extra-sum-of-squares−6.089 to −5.987−6.089 to −5.987-2.4e-8, 5.9e-9yes
C02 Wald−6.659 to −6.452−6.659 to −6.4521.4e-9, -2.8e-9yes
C02 profile extra-sum-of-squares−6.663 to −6.454−6.663 to −6.454-1.1e-8, 9.8e-9yes
C03 Wald−7.011 to −6.968−7.011 to −6.9681.7e-9, -9.6e-10yes
C03 profile extra-sum-of-squares−7.011 to −6.968−7.011 to −6.9682.0e-8, -1.4e-8yes
C04 Wald−6.177 to −5.961−6.177 to −5.9611.1e-8, 2.3e-8yes
C04 profile extra-sum-of-squares−6.183 to −5.963−6.183 to −5.963-2.1e-8, 3.3e-8yes
C05 Wald−5.674 to −5.240−5.674 to −5.240-1.9e-8, -6.3e-8yes
C05 profile extra-sum-of-squares−5.672 to −5.218−5.672 to −5.2181.2e-8, 1.8e-8yes
C06 Wald−6.591 to −6.333−6.591 to −6.3331.8e-8, 4.5e-9yes
C06 profile extra-sum-of-squares−6.588 to −6.328−6.588 to −6.3285.4e-9, -1.5e-8yes

The worked MTT plate

Expected values from R 4.3.3 nls (drc 4.0-0 as a cross-check), recorded 2026-10-06; tolerance within 0.00043 log10 units; Z′ within 1e-9; 4 of 4 shown, all comparable rows passing. mtt-example.json sha256 50029b58c869ecb4…

InputExpectedOursDifferencePass
Compound A logC50−5.666−5.6666.80e-9yes
Compound B logC50−6.735−6.735-7.94e-8yes
Compound C reportarchived unresolved fitnumerically unresolvedyes
MTT plate Z′ (8 vehicle, 4 kill wells)0.782180.78218-2.2e-16yes

Z′ by hand

Expected values from Z′ worked by hand with sample standard deviations, recorded 2026-10-06; tolerance within 1e-9; refusal exact; 4 of 4 shown, all comparable rows passing. zprime-controls.json sha256 dd3f2b587d4585ac…

InputExpectedOursDifferencePass
Z01: excellent separation0.8334510.8334511.1e-16yes
Z02: marginal: below the 0.5 convention0.4348490.4348495.6e-17yes
Z03: overlapping controls: negative Z'−1.3285−1.3285-4.4e-16yes
Z04: one negative-control well: Z' refused (a sample SD needs two)refusedrefusedyes

Nested model comparisons

Expected values from the oracle's hand-worked F, confirmed by drc's anova(), recorded 2026-10-06; tolerance F within 1e-5 relative; 4 of 4 shown, all comparable rows passing. drc-reference.json sha256 27d99000551acaf2…

InputExpectedOursDifferencePass
C01: Hill fixed at -1 (3 free) against Hill free (4 free); true Hill -1F 0.77745, p 3.86e-1F 0.77745, p 3.86e-11.0e-11yes
C07: Hill fixed at -1 against Hill free; true Hill -3F 564.89, p 6.69e-22F 564.89, p 6.69e-228.8e-13yes
C04: Hill fixed at -1 against Hill free; true Hill -0.5F 125.31, p 4.60e-10F 125.31, p 4.60e-102.7e-12yes
C10: Bottom fixed at 0 against Bottom free; true Bottom 20F 57.476, p 4.77e-8F 57.476, p 4.77e-86.7e-14yes