99 Small Problems: Useful models for assumptions with expensive ambitions.
No. 04 | Data-Rich, Insight-Poor | v0.6.0-alpha
Is weak protein knockdown a weak perturbation or a premature measurement? Protein-Clock Check is an original browser-based timing audit: drive a constant-translation, first-order protein-loss model with an RNA time course and inspect when its protein predictions differ from simply equating protein with RNA.
The first synthetic case imposes sustained 90% RNA reduction and a 48-hour effective protein half-life. At 24 hours, protein reduction is only 26.36%. The recovery case shows why waiting longer is not sufficient when RNA suppression ends. The challenge case asks when a protein measurement cannot be explained by RNA suppression and the supplied loss-rate range at all.
- Try Protein-Clock Check: no installation or sign-in; dark mode by default.
- Calibrate, or wait another day?: the worked example, with an editable case, a separation budget, plateau timing, exchange rates, and a regime map.
- Read the mathematics: equations, units, numerical methods, boundaries, and scientific limitations.
- Inspect the engine: original dependency-free JavaScript.
- Use the versioned release: fixed source snapshot and release notes.
The design companion compares tighter baseline calibration, a smaller prospective follow-up error scale, a later readout, and their combination against the current assumptions. The default retains half the baseline log-width, halves the follow-up error scale, and adds 24 hours. These are editable scenarios, not a cost, power, or optimal-design calculation. A later readout is a new prediction, not a joint fit to two observations.
An inspectable 11 × 11 map profiles baseline uncertainty against residual correlation, with extremum-generating parameters for every cell. The anchor-relative diagnostic shows why canceling a shared denominator does not manufacture information: dividing already-conditioned predictions by the same observed anchor preserves their overlap.
In the synthetic default, the current 72-hour ranges overlap slightly (signed gap −0.027 percentage points). Tighter calibration, improved follow-up precision, and waiting to 96 hours yield sampled gaps of 3.984, 2.645, and 6.366 points, respectively; the combined scenario gives 12.102 points. These numerical profiles are conditional on the supplied assumptions, not guaranteed separation over continuous outer parameters. Under strong positive residual correlation, a smaller follow-up error scale need not narrow an anchor-conditioned range.
Design JSON restores every comparison input. Strategy CSV, map CSV with witnesses, and an annotated map PNG preserve the calculation. A worked example (web/worked-example.html, computed by web/example.js) shows one synthetic case where tighter baseline calibration separates the hypotheses and waiting cannot, and one where the ranking reverses. It decomposes each sampled gap into the central separation between the hypotheses and the two reach terms that face each other, so the two levers are distinguishable rather than merely ranked: calibration shrinks only the reach, while waiting buys central separation and returns part of it as extra reach. Plateau diagnostics give the ceiling on central separation, the share already realized, and the times at which 95% and 99% of it arrive; exchange rates convert calibration into hours of waiting, into baseline width, and into replicates under an assumed one-over-root-n scaling. A 7 x 9 regime map shows the winner across slower half-lives and follow-up times, where every crossover falls between 3.0 and 5.0 elapsed slower half-lives rather than at a fixed hour. Every input on the page is editable, and kinetics the declared anchor cannot produce are refused with a reason. Inspect web/design.js, web/methods.html#design-math, and the full mathematical contract. The complete suite has 233 passing numerical tests.
The measurement companion uses Y=(P+e)/b: one uncertain protein denominator across anchor and follow-up, with a separate covariance-shaped joint budget for numerator residuals. It contrasts profiled versus fixed baseline and selected versus zero residual correlation. RNA normalization is not silently rescaled by protein-reference bias. Existing rectangular allowances are replaced in this panel, not counted twice.
The inner RNA/error extrema are analytical; outer half-life/baseline extrema are numerical profiles with standard/fine controls and a refinement diagnostic. Sampled disjointness is not a continuous-parameter separation certificate. No probability or confidence coverage is assigned. Measurement JSON includes all comparison assumptions; CSV and PNG exports retain witness parameters or annotated assumptions.
The synthetic default shows why this matters: at 72 h, A and B separate with baseline fixed at one, but their observed profiles slightly overlap when it varies ×/÷1.1. See the complete derivation in MATH.md. The public metrology foundation is Kessel and Kacker (2009); numerical defaults are not taken from that publication.
The uncertainty extension propagates user-declared RNA and effective-turnover bounds through the sustained-step comparison while retaining only protein-anchor-compatible combinations. It computes continuous pointwise parameter extrema, contrasts RNA-only/turnover-only/joint bounds, supports a shared measured-RNA constraint, and separates prospective readout allowance from parameter uncertainty. Defaults are synthetic; no statistical confidence coverage or power is implied. Uncertainty CSVs include extremum-generating parameters, and separate JSON/PNG exports preserve the assumptions.
Node.js 18+ for tests; a static HTTP server for the browser tool. No build step or JavaScript dependencies.
npm test
python -m http.server 8044 --directory webOpen http://127.0.0.1:8044. All calculations and file imports run in the browser; no uploaded data are sent to a model service. Optional Google Fonts requests load typography; computation still works without them. There is no analytics, backend, or browser storage.
- RNA input: Editable time/fraction pairs, explicit linear interpolation, no extrapolation.
- Turnover convention: Effective half-life, or intrinsic degradation plus explicitly declared division dilution. No silent double counting.
- Sensitivity: A sampled half-life envelope, not a confidence interval.
- Time inspection: RNA, protein, effective elapsed half-lives, exact central nadir and threshold intervals.
- Mechanism challenge: Complete-shutoff floor, including the fastest declared loss rate.
- Optional observation: A comparison at one specified time, not a parameter fit or significance test.
- Exports: CSV curves, versioned scenario JSON with reimport, annotated PNG figure.
- Inspectable math:
web/methods.htmlandweb/MATH.md. - Inspectable code: Pure computational module
web/model.js, UIweb/app.js, teststests/model.test.js. - Four synthetic cases: Sustained suppression, RNA recovery, delayed onset, and a deliberately incompatible protein endpoint.
The v0.2 extension separates surviving initial protein from surviving newly synthesized protein, adds an explicit “hold the current RNA” counterfactual, and constructs endpoint-matched sustained-suppression hypotheses. The new comparison has separate controls, CSV/JSON/PNG exports, and an explicit distinction between a deterministic comparison allowance and statistical uncertainty.
In its synthetic example, both hypotheses give 75% protein remaining at 24 hours. A 48-hour effective half-life requires 14.64% residual RNA and can eventually pass 50% protein; a 12-hour half-life requires 66.67% residual RNA and cannot. These hypotheses are not both claimed to fit the same measured RNA course. Delay and residual synthesis can coexist; the laboratory is not a binary mechanism classifier.
It turns “wait longer” into a prospective calculation under stated assumptions. The first decision is whether the sampling time is informative given a defensible turnover range. The second is whether suppression lasts long enough to reach the declared protein threshold. The third is whether an observation is even compatible with a timing-only explanation.
A later protein observation withheld from model construction, paired with an independently justified turnover estimate, is a useful challenge. Agreement is compatibility, not proof of a unique mechanism; disagreement does not identify which assumption failed.
The baseline is steady. Translation per functional RNA and protein loss stay constant. RNA and protein measurements must have compatible normalization. Division dilution refers to a suitable mean per-cell observable in balanced growth, not total protein per well. No inference of dose, delivery, engagement, viability, or clinical efficacy is made.
Published siRNA work explores the impact of protein half-life on response timing, within a much more extensive model (Bartlett & Davis, 2006). Protein-turnover literature distinguishes degradation and division dilution and discusses failures of constant first-order loss assumptions (Ross et al., 2021). This tool is not a reproduction or validation of either publication.
No employer material, proprietary platform, named therapeutic, or experimental dataset is included. All presets are explicitly synthetic, generated from the declared generic model rather than taken from any experiment.
MIT. Research-use alpha; independently validate before using outputs to guide consequential decisions. Software verification is not biological validation.