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.

Table 01: Raw hash inputs, not protocols. These exercise the hash independently of canonicalization.
InputOlto 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 timesrpf_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.

Table 02: Expected values from Grantham R, Science 1974;185(4154):862-4. Olto results computed at render.
SubstitutionExpectedOltoAgreesWhy this case
C→W215215YesThe maximum distance in the matrix
S→A9999YesTwo small residues, still not interchangeable
I→L55YesThe minimum: near-isosteric aliphatics
D→E4545YesConservative acidic substitution
G→W184184YesSmallest to largest
R→K2626YesConservative 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.

Table 03: Inputs that break naive implementations, and what Olto does with them.
AreaInputBehaviour
Molecular descriptorsA 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 descriptorsE/Z or R/S stereochemistryParsed 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.
StatisticsZero variance in one groupRefused 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.
Statisticsn = 1 in either groupRefused. There is no within-group variance to estimate, and the test is undefined rather than merely underpowered.
PBPKAn individual rather than a populationRuns, 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 scoresA well-formed study entered with the wrong designScored 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.

The full engine registry with methods and limitsRun the generator with no accountThe fingerprint algorithm in full