Validation
Challenge the Engine
Hard cases, published rather than avoided. Every value below is computed when this page renders, by the same functions the product calls, and every expected value comes from a source outside Olto wherever one exists. Try to break it.
Content addressing
Fingerprint known-answer vectors
Known-answer vectors for the protocol fingerprint, computed here by the same function the product uses. The full algorithm, every constant, and a dependency-free reference implementation are published.
| Input | Olto result |
|---|---|
| (empty string) | rpf_ncz7r2x1gfsvp4fx0bnmqg7vxc |
| "a" | rpf_sj3rm38n77pvk7q87pncpwcjer |
| "protocol" | rpf_1jm8ywbhej0qgbtadghastx804 |
| "Olto Discovery" | rpf_mbfzztpcyvg9prazz2bw8xmrwm |
| "The quick brown fox jumps over the lazy dog" | rpf_rt4rq570w1e6k3qm4yseh38y18 |
| "title:Western blot\npurpose:detect protein" | rpf_9nc73g11y7h3kp8e1wnq0jhkzm |
| "0123456789" | rpf_7n8zpcf8kw89vf1bzqtrw1vaqm |
| "x" repeated 1000 times | rpf_xq2b59hnm8eeb5cq2bq1w1dskw |
Download the reference implementation and run node rpf-reference.mjs --selftest. If your implementation reproduces all 8 vectors, it agrees with ours.
Against an external reference
Grantham distance, checked against the published matrix
The expected column comes from Grantham 1974, not from Olto. 6 of 6 agree. If the engine and the paper ever disagree, this table shows it rather than hiding it.
| Substitution | Expected | Olto | Agrees | Why this case |
|---|---|---|---|---|
| C→W | 215 | 215 | Yes | The maximum distance in the matrix |
| S→A | 99 | 99 | Yes | Two small residues, still not interchangeable |
| I→L | 5 | 5 | Yes | The minimum: near-isosteric aliphatics |
| D→E | 45 | 45 | Yes | Conservative acidic substitution |
| G→W | 184 | 184 | Yes | Smallest to largest |
| R→K | 26 | 26 | Yes | Conservative basic substitution |
Known-hard inputs
Where it refuses, and where it is the wrong tool
Cases where the honest answer is a limitation. A challenge page listing only the cases we pass would be a marketing page in a lab coat.
| Area | Input | Behaviour |
|---|---|---|
| Molecular descriptors | A salt or disconnected counterion, e.g. [Na+].[Cl-] | Parsed as disconnected components. Descriptors are computed over the whole input, so a formulated salt does not give the descriptors of its parent drug. Strip the counterion first. |
| Molecular descriptors | E/Z or R/S stereochemistry | Parsed and preserved through a round trip, and it does NOT change the computed descriptors. Crippen logP is an atom-contribution method with no stereochemical term. |
| Statistics | Zero variance in one group | Refused rather than reported. A t-statistic with a zero denominator is not a large effect, and returning Infinity would render as a very significant result. |
| Statistics | n = 1 in either group | Refused. There is no within-group variance to estimate, and the test is undefined rather than merely underpowered. |
| PBPK | An individual rather than a population | Runs, and is the wrong tool. Physiological parameters are population defaults; the model has no way to know that the person in front of you is not the median. |
| Strength scores | A well-formed study entered with the wrong design | Scored as entered. These engines summarise what was given to them and have no mechanism to detect that an input is wrong. They are deterministic, not validated against expert judgement. |
Bring your own case
Every engine on this page is reachable in the product, and the statistics and molecular engines run entirely in your browser, so you can put your own hard case through them without an account and without your data leaving the machine.