Reference checks
This page lists the reference checks published for Drybench Sequence. 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 | Oracle | Fixtures | Tolerance | Date | File |
|---|---|---|---|---|---|
| primer-design-bounded-flanks, oligo-tm-nearest-neighbour | Biopython | 34 | Tm within 1e-6 degrees; retained qualifications, normalized requests and literal record claims exact | 2026-10-20 | primer-design-qualification-v4.jsonRecorded for version 0.9.0; the test suite checks the current engine against it. |
| primer-design-bounded-flanks | Biopython | 23 | asymmetric requested/retained correction agreement and historical records exact | 2026-10-11 | primer-qualification-effective-salt-v1.jsonRecorded for version 0.6.0; the test suite checks the current engine against it. |
| translation-ncbi-genetic-codes | Biopython | 113 | exact | 2026-10-06 | translation.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| orf-finder-ncbi-conventions | NCBI ORFfinder | 18 | exact, every field of every list | 2026-10-06 | orf.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| orf-finder-ncbi-conventions | Circular ORF derivation | 64 | exact, every field of every list, on the record and on every listed rotation | 2026-10-14 | orf-circular-v1.jsonRecorded for version 0.9.0; the test suite checks the current engine against it. |
| oligo-tm-nearest-neighbour, hairpin-dimer-dg37 | Buffer-admissibility derivation | 20 | verdict, rule and structure exact; monovalent and free Mg²⁺ within 1e-9 mM | 2026-10-12 | buffer-admissibility-v1.jsonRecorded for version 0.9.0; the test suite checks the current engine against it. |
| protein-average-mass, isoelectric-point-bjellqvist, extinction-280-pace | Expasy ProtParam | 22 | MW within 0.01 Da, pI within 0.01, ε280 exact | 2026-10-06 | protein.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| oligo-tm-nearest-neighbour, salt-correction-owczarzy-2004, salt-correction-owczarzy-2008, salt-correction-santalucia-1998 | Biopython | 49 | within 0.1 °C under both concentration models; regime, every fitted-range note, refusals and acceptance exact | 2026-10-20 | oligo-tm-v2.jsonRecorded for version 0.9.0; the test suite checks the current engine against it. |
| hairpin-dimer-dg37 | primer3-py | 15 | within 0.4 kcal/mol on ntthal's own structures (8 cases here and 7 salt probes in hairpin-dimer-probes.json) | 2026-10-06 | hairpin-dimer.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| hairpin-dimer-dg37 | primer3-py | 16 | within 0.1 kcal/mol on ntthal's own structures (12 cases here and 4 salt probes in hairpin-dimer-probes.json) | 2026-10-06 | hairpin-dimer.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| nucleic-acid-average-mass | Python fractions | 5 | within 0.01 g/mol | 2026-10-06 | dna-mw.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| pcr-product-exact-pair | Exact-match derivation | 30 | exact, refusals included | 2026-10-10 | pcr-product.jsonRecorded for version 0.3.0; the test suite checks the current engine against it. |
| exact-fragment-search | Exact-match derivation | 26 | exact, refusals included | 2026-10-10 | fragment-search.jsonRecorded for version 0.3.0; the test suite checks the current engine against it. |
| primer-design-bounded-flanks | Primer-design derivation | 13 | every returned pair, coordinate, product, count and cap exact; Tm and ranking terms within 1e-6 °C; refusals exact | 2026-10-11 | primer-design.jsonRecorded for version 0.5.0; the test suite checks the current engine against it. |
| sdm-primers-two-schemes, oligo-tm-nearest-neighbour | Mutagenesis-primer derivation | 18 | every primer sequence, coordinate, matched flank, count by reason, cap and refusal exact; GC within 1e-9; every melting temperature within 1e-6 °C | 2026-10-17 | sdm-primers-v1.jsonRecorded for version 0.7.0; the test suite checks the current engine against it. |
| exact-transform-global-edit-v2 | Revision-transform derivation | 10 | kind, map, hashes, withheld state and annotation finding exact; edit count equals the independent edit distance | 2026-10-10 | revision-transforms.jsonRecorded for version 0.4.0; the test suite checks the current engine against it. |
| dna-align-v1 | Biopython | 60 | the optimum on both strands, the co-optimal count, the common pairs, the differences and the placement groups exact; the alignment shown is the published tie order's first | 2026-10-20 | dna-align-v1.jsonRecorded for version 0.8.0; the test suite checks the current engine against it. |
| read-check-v1 | Biopython | 44 | kept ranges, states, strands, scores, counts, listings, totals and junctions exact; the peak ratio as an exact fraction on one trace (RC-18); at the settings the set covers only | 2026-10-20 | pipeline/sequence-toolkit/fixtures/readcheck/readcheck-v1.jsonRecorded for version 0.10.0; the test suite checks the current engine against it. |
| peptide-smiles-linear | RDKit | 101 | the same canonical SMILES on 89 peptides; the 12 refusals exact | 2026-10-06 | peptide-smiles.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| codon-adaptation-sharp-li-v1 | Codon adaptation derivation | 30 | CAI within 1e-9; the scored count, every left-out count, the replaced cells, the rare list and every withholding exact | 2026-11-07 | pipeline/sequence-toolkit/fixtures/codon-usage/cai-v1.jsonRecorded for version 0.11.0; the test suite checks the current engine against it. |
| dna-msa-v1 | Multiple alignment derivation | 19 | the alignment, merge order, scores and column counts exact; refusals exact | 2026-11-07 | pipeline/sequence-toolkit/fixtures/msa/msa-v1.jsonRecorded for version 0.12.0; the test suite checks the current engine against it. |
| protein-msa-v1 | Protein multiple alignment derivation | 23 | the alignment, merge order, scores, column counts and zero-scoring letters exact; refusals exact | 2026-11-07 | pipeline/sequence-toolkit/fixtures/protein-msa/protein-msa-v1.json |
| feature-annotation | Annotation suggestion derivation | 3 | every placement's entry, start, end, strand and mismatches exact, identity within 1e-12, and no other match call; partial calls and gapped alignments not covered | 2026-11-07 | pipeline/sequence-toolkit/fixtures/annotation/annotation-v1.jsonRecorded for version 0.14.0; the test suite checks the current engine against it. |
| codon-recode-most-used-v1 | Codon recoding derivation | 5 | the recoded letters, the protein, the codon and base counts, the left-as-they-were list and every constraint count exact | 2026-11-07 | pipeline/sequence-toolkit/fixtures/codon-usage/recode-v1.jsonRecorded for version 0.11.0; the test suite checks the current engine against it. |
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.
Every row is one fixture compared with the engine when this page was built; the full sets are the published files, which pipeline/sequence-toolkit/reference.py, peptides.py and exact_matches.py wrote and whose hashes the manifest records. No value in a file comes from the engine under test.
Expected values from Biopython 1.88 (Bio.Seq.translate), recorded 2026-10-06; tolerance exact; 12 of 108 shown, all passing. translation.json sha256 2f4debf7f26cdcf9…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| ins-mrna.t1.f+1.full | 155 aa, SPPGQAASEEAI… | 155 aa, SPPGQAASEEAI… | identical | yes |
| ins-mrna.t1.f+1.to_stop | 45 aa, SPPGQAASEEAI… | 45 aa, SPPGQAASEEAI… | identical | yes |
| ins-mrna.t1.f+2.full | 154 aa, ALQDRLHQKRPS… | 154 aa, ALQDRLHQKRPS… | identical | yes |
| ins-mrna.t1.f+2.to_stop | 38 aa, ALQDRLHQKRPS… | 38 aa, ALQDRLHQKRPS… | identical | yes |
| ins-mrna.t1.f+3.full | 154 aa, PSRTGCIRRGHQ… | 154 aa, PSRTGCIRRGHQ… | identical | yes |
| ins-mrna.t1.f+3.to_stop | 129 aa, PSRTGCIRRGHQ… | 129 aa, PSRTGCIRRGHQ… | identical | yes |
| ins-mrna.t1.f-1.full | 155 aa, AGSRALFHLSRC… | 155 aa, AGSRALFHLSRC… | identical | yes |
| ins-mrna.t1.f-1.to_stop | 147 aa, AGSRALFHLSRC… | 147 aa, AGSRALFHLSRC… | identical | yes |
| ins-mrna.t1.f-2.full | 154 aa, LVQGLYSISLGA… | 154 aa, LVQGLYSISLGA… | identical | yes |
| ins-mrna.t1.f-2.to_stop | 94 aa, LVQGLYSISLGA… | 94 aa, LVQGLYSISLGA… | identical | yes |
| ins-mrna.t1.f-3.full | 154 aa, WFKGFIPSLSVQ… | 154 aa, WFKGFIPSLSVQ… | identical | yes |
| ins-mrna.t1.f-3.to_stop | 24 aa, WFKGFIPSLSVQ… | 24 aa, WFKGFIPSLSVQ… | identical | yes |
Expected values from an independent scan cross-checked with Biopython and NCBI ORFfinder 0.4.3, recorded 2026-10-06; tolerance exact; 12 of 18 shown, all passing. orf.json sha256 631f0a2853fe0219…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| ins-mrna.t1.atgOnly | 1 listed, 1 nested, 1 open | 1 listed, 1 nested, 1 open | every field equal | yes |
| ins-mrna.t1.alternativeStarts | 2 listed, 6 nested, 1 open | 2 listed, 6 nested, 1 open | every field equal | yes |
| ins-mrna.t2.atgOnly | 1 listed, 0 nested, 0 open | 1 listed, 0 nested, 0 open | every field equal | yes |
| ins-mrna.t2.alternativeStarts | 3 listed, 1 nested, 0 open | 3 listed, 1 nested, 0 open | every field equal | yes |
| ins-mrna.t11.atgOnly | 1 listed, 1 nested, 1 open | 1 listed, 1 nested, 1 open | every field equal | yes |
| ins-mrna.t11.alternativeStarts | 3 listed, 4 nested, 2 open | 3 listed, 4 nested, 2 open | every field equal | yes |
| mt-atp8-atp6-cox3.t1.atgOnly | 8 listed, 2 nested, 0 open | 8 listed, 2 nested, 0 open | every field equal | yes |
| mt-atp8-atp6-cox3.t1.alternativeStarts | 9 listed, 2 nested, 1 open | 9 listed, 2 nested, 1 open | every field equal | yes |
| mt-atp8-atp6-cox3.t2.atgOnly | 2 listed, 4 nested, 1 open | 2 listed, 4 nested, 1 open | every field equal | yes |
| mt-atp8-atp6-cox3.t2.alternativeStarts | 3 listed, 7 nested, 1 open | 3 listed, 7 nested, 1 open | every field equal | yes |
| mt-atp8-atp6-cox3.t11.atgOnly | 8 listed, 2 nested, 0 open | 8 listed, 2 nested, 0 open | every field equal | yes |
| mt-atp8-atp6-cox3.t11.alternativeStarts | 9 listed, 11 nested, 1 open | 9 listed, 11 nested, 1 open | every field equal | yes |
Expected values from Expasy ProtParam (saved responses), recorded 2026-10-06; tolerance MW within 0.01 Da, pI within 0.01, ε280 exact; 12 of 22 shown, all passing. protein.json sha256 de4163c56cf4b5d9…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| P01 Human preproinsulin (signal, B chain, C peptide, A chain) (110 aa) | 11980.91 Da, pI 5.22, ε 17335/16960 | 11980.91 Da, pI 5.22, ε 17335/16960 | MW -0.001, pI +0.00 | yes |
| P02 Aequorea victoria green fluorescent protein (238 aa) | 26886.32 Da, pI 5.67, ε 22015/21890 | 26886.32 Da, pI 5.67, ε 22015/21890 | MW +0.001, pI +0.00 | yes |
| P03 Human ubiquitin (first unit of polyubiquitin-C) (76 aa) | 8564.84 Da, pI 6.56, ε 1490/1490 | 8564.84 Da, pI 6.56, ε 1490/1490 | MW +0.005, pI +0.00 | yes |
| P04 Hen egg-white lysozyme C, mature chain (129 aa) | 14313.14 Da, pI 9.32, ε 37970/37470 | 14313.14 Da, pI 9.32, ε 37970/37470 | MW -0.001, pI +0.00 | yes |
| P05 Bovine serum albumin, mature chain (583 aa) | 66432.96 Da, pI 5.60, ε 42925/40800 | 66432.96 Da, pI 5.60, ε 42925/40800 | MW -0.005, pI +0.00 | yes |
| P06 Human metallothionein-2 (61 aa) | 6042.16 Da, pI 8.23, ε 1250/0 | 6042.16 Da, pI 8.23, ε 1250/0 | MW +0.005, pI +0.00 | yes |
| P07 Human thymosin beta-4, mature chain (43 aa) | 4921.46 Da, pI 5.02, ε 0/0 | 4921.46 Da, pI 5.02, ε 0/0 | MW +0.002, pI +0.00 | yes |
| P08 Human prothymosin alpha, N-terminally processed chain (110 aa) | 12071.77 Da, pI 3.66, ε 0/0 | 12071.77 Da, pI 3.66, ε 0/0 | MW -0.001, pI +0.00 | yes |
| P09 Human macrophage migration inhibitory factor, mature chain (114 aa) | 12345.11 Da, pI 8.24, ε 13075/12950 | 12345.11 Da, pI 8.24, ε 13075/12950 | MW -0.003, pI +0.00 | yes |
| P10 Human hemoglobin subunit alpha, mature chain (141 aa) | 15126.36 Da, pI 8.73, ε 9970/9970 | 15126.36 Da, pI 8.73, ε 9970/9970 | MW -0.004, pI +0.00 | yes |
| P11 Human myoglobin, mature chain (153 aa) | 17052.61 Da, pI 7.29, ε 13980/13980 | 17052.61 Da, pI 7.29, ε 13980/13980 | MW +0.004, pI +0.00 | yes |
| P12 Human cytochrome c, mature chain (104 aa) | 11617.53 Da, pI 9.59, ε 13075/12950 | 11617.53 Da, pI 9.59, ε 13075/12950 | MW +0.002, pI +0.00 | yes |
Expected values from Biopython 1.88 (MeltingTemp.Tm_NN), recorded 2026-10-06; tolerance within 0.1 °C; 12 of 45 shown, all passing. oligo-tm.json sha256 1588ca109f2e31df…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| T01 d15-at (50 mM Na⁺) | 31.08 / 28.66 °C | 31.08 / 28.66 °C | +0.000 / +0.000 | yes |
| T02 d15-gc (50 mM Na⁺) | 65.33 / 62.76 °C | 65.33 / 62.76 °C | +0.000 / +0.000 | yes |
| T03 M13F-20 (50 mM Na⁺) | 53.58 / 51.40 °C | 53.58 / 51.40 °C | +0.000 / +0.000 | yes |
| T04 T7-promoter (50 mM Na⁺) | 47.60 / 45.70 °C | 47.60 / 45.70 °C | +0.000 / +0.000 | yes |
| T05 T7-promoter (50 mM Na⁺) | 48.55 / 46.65 °C | 48.55 / 46.65 °C | +0.000 / +0.000 | yes |
| T06 T7-promoter (1000 mM Na⁺) | 63.95 / 61.86 °C | 63.95 / 61.86 °C | +0.000 / +0.000 | yes |
| T07 SP6 (50 mM Na⁺) | 42.77 / 40.68 °C | 42.77 / 40.68 °C | +0.000 / +0.000 | yes |
| T08 sc16 (50 mM Na⁺) | 55.14 / 53.97 °C | 55.14 / 53.97 °C | +0.000 / +0.000 | yes |
| T09 d30-at (1000 mM Na⁺) | 72.05 / 70.60 °C | 72.05 / 70.60 °C | -0.000 / -0.000 | yes |
| T10 d35 (50 mM Na⁺) | 76.60 / 75.43 °C | 76.60 / 75.43 °C | +0.000 / +0.000 | yes |
| T11 d40-at (50 mM Na⁺) | 51.96 / 51.00 °C | 51.96 / 51.00 °C | +0.000 / +0.000 | yes |
| T12 d40-gc (1000 mM Na⁺) | 99.98 / 98.88 °C | 99.98 / 98.88 °C | +0.000 / +0.000 | yes |
Expected values from Python 3.11.15 fractions (hand arithmetic), recorded 2026-10-06; tolerance within 0.01 g/mol; 5 of 5 shown, all passing. dna-mw.json sha256 15f60ea1db40d55d…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| M01 dA (one nucleotide) | 251.246 g/mol | 251.246 g/mol | +0.0000 | yes |
| M02 T7 promoter primer | 6125.053 g/mol | 6125.053 g/mol | +0.0000 | yes |
| M03 M13 forward (-20) primer | 5228.467 g/mol | 5228.467 g/mol | +0.0000 | yes |
| M04 oligo(dT)20 | 6021.936 g/mol | 6021.936 g/mol | +0.0000 | yes |
| M05 designed 40-mer | 12320.042 g/mol | 12320.042 g/mol | +0.0000 | yes |
Expected values from an independent derivation (exact_matches.py, Biopython 1.88), recorded 2026-10-10; tolerance exact; 12 of 30 shown, all passing. pcr-product.json sha256 dd145d143e6f6542…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| pcr-hand-unique | unique, 1 product(s), first 25 bp | unique, 1 product(s), first 25 bp | identical | yes |
| pcr-two-forward-sites | ambiguous, 2 product(s), first 37 bp | ambiguous, 2 product(s), first 37 bp | identical | yes |
| pcr-reverse-template | unique, 1 product(s), first 25 bp | unique, 1 product(s), first 25 bp | identical | yes |
| pcr-circular-origin | unique, 1 product(s), first 25 bp | unique, 1 product(s), first 25 bp | identical | yes |
| pcr-linear-no-wrap | none, 0 product(s) | none, 0 product(s) | identical | yes |
| pcr-site-across-origin | unique, 1 product(s), first 25 bp | unique, 1 product(s), first 25 bp | identical | yes |
| pcr-palindromic-pair | ambiguous, 2 product(s), first 22 bp | ambiguous, 2 product(s), first 22 bp | identical | yes |
| pcr-tails | unique, 1 product(s), first 41 bp | unique, 1 product(s), first 41 bp | identical | yes |
| pcr-tail-not-inferred | none, 0 product(s) | none, 0 product(s) | identical | yes |
| pcr-normalised-input | unique, 1 product(s), first 25 bp | unique, 1 product(s), first 25 bp | identical | yes |
| pcr-overlap-only | refused: overlapping-sites | refused: overlapping-sites | identical | yes |
| pcr-adjacent | unique, 1 product(s), first 20 bp | unique, 1 product(s), first 20 bp | identical | yes |
Expected values from an independent derivation (exact_matches.py, Biopython 1.88), recorded 2026-10-10; tolerance exact; 12 of 26 shown, all passing. fragment-search.json sha256 dffa9bebd1843720…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| frag-forward | 3-8 + | 3-8 + | identical | yes |
| frag-reverse | 3-8 - | 3-8 - | identical | yes |
| frag-palindrome-once | 3-8 both; 11-16 both | 3-8 both; 11-16 both | identical | yes |
| frag-homopolymer-overlaps | 2-5 +; 3-6 +; 4-7 +; 5-8 + | 2-5 +; 3-6 +; 4-7 +; 5-8 + | identical | yes |
| frag-homopolymer-reverse | 2-5 -; 3-6 -; 4-7 - | 2-5 -; 3-6 -; 4-7 - | identical | yes |
| frag-tandem-repeat | 1-8 +; 6-13 +; 11-18 + | 1-8 +; 6-13 +; 11-18 + | identical | yes |
| frag-iupac-barrier | 6-11 + | 6-11 + | identical | yes |
| frag-iupac-codes | 19-24 + | 19-24 + | identical | yes |
| frag-linear-no-wrap | no hit | no hit | identical | yes |
| frag-circular-origin | 7-4 + wraps | 7-4 + wraps | identical | yes |
| frag-circular-origin-reverse | 7-4 - wraps | 7-4 - wraps | identical | yes |
| frag-circular-full-length | 3-2 + wraps | 3-2 + wraps | identical | yes |
Expected values from RDKit 2026.03.6 (MolFromSequence), recorded 2026-10-06; tolerance the same canonical SMILES, each read back through RDKit.js; refusals exact; 12 of 101 shown, all passing. peptide-smiles.json sha256 4ca03c17768ce37a…
| Input | Expected | Ours | Difference | Pass |
|---|---|---|---|---|
| N-A (3 residues) | C[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O | C[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O | the same canonical SMILES | yes |
| M-A (3 residues) | C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O | C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O | the same canonical SMILES | yes |
| C-A (3 residues) | C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O | C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O | the same canonical SMILES | yes |
| 1-A (1 residues) | C[C@H](N)C(=O)O | C[C@H](N)C(=O)O | the same canonical SMILES | yes |
| N-C (3 residues) | C[C@H](NC(=O)CNC(=O)[C@@H](N)CS)C(=O)O | C[C@H](NC(=O)CNC(=O)[C@@H](N)CS)C(=O)O | the same canonical SMILES | yes |
| M-C (3 residues) | C[C@H](NC(=O)[C@H](CS)NC(=O)CN)C(=O)O | C[C@H](NC(=O)[C@H](CS)NC(=O)CN)C(=O)O | the same canonical SMILES | yes |
| C-C (3 residues) | C[C@H](NC(=O)CN)C(=O)N[C@@H](CS)C(=O)O | C[C@H](NC(=O)CN)C(=O)N[C@@H](CS)C(=O)O | the same canonical SMILES | yes |
| 1-C (1 residues) | N[C@@H](CS)C(=O)O | N[C@@H](CS)C(=O)O | the same canonical SMILES | yes |
| N-D (3 residues) | C[C@H](NC(=O)CNC(=O)[C@@H](N)CC(=O)O)C(=… | C[C@H](NC(=O)CNC(=O)[C@@H](N)CC(=O)O)C(=… | the same canonical SMILES | yes |
| M-D (3 residues) | C[C@H](NC(=O)[C@H](CC(=O)O)NC(=O)CN)C(=O… | C[C@H](NC(=O)[C@H](CC(=O)O)NC(=O)CN)C(=O… | the same canonical SMILES | yes |
| C-D (3 residues) | C[C@H](NC(=O)CN)C(=O)N[C@@H](CC(=O)O)C(=… | C[C@H](NC(=O)CN)C(=O)N[C@@H](CC(=O)O)C(=… | the same canonical SMILES | yes |
| 1-D (1 residues) | N[C@@H](CC(=O)O)C(=O)O | N[C@@H](CC(=O)O)C(=O)O | the same canonical SMILES | yes |
ntthal 2.6.1 (primer3-py 2.3.1), recorded 2026-10-06: 15 fixtures (15 in the gate), the oracle's own structure rescored under this engine's rules within 0.4 kcal/mol on every case with a structure and this engine's ΔG at or below that rescore; all passing. The two structures coincide on 6 of 13; the oracle reports the structure with the highest melting temperature, this engine the lowest ΔG°37. The badge reads the same numbers: within 0.4 kcal/mol, 15 fixtures.
| Case | Sequences | Oracle ΔG | Rescore of its structure | Gap and cause | Our ΔG | Our structure | Coincide | Pass |
|---|---|---|---|---|---|---|---|---|
| H01 hairpin | CCCCCATCCGATCAGGGGG | -3.18 | -2.99 | 0.19one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end | -2.99 | /////---------\\\\\ | yes | yes |
| H02 hairpin | GCGCGAAAAAACGCGC | -4.79 | -4.42 | 0.37one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end | -4.42 | /////------\\\\\ | yes | yes |
| H03 hairpin | ATATATTTTTTATATAT | none | none | yes | yes | |||
| H04 hairpin | ACTGCAGGCTTGCGATTTTCGCAAGCC | -9.21 | -8.99 | 0.21one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end | -9.63 | ------////////-----\\\\\\\\ | no | yes |
| H05 hairpin | TTTTTTTTTTTTTTTTTTTT | none | none | yes | yes | |||
| H06 hairpin | GAATTTATTGAAAACAATAAATTC | -3.62 | -3.37 | 0.25one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end | -5.25 | //////////----\\\\\\\\\\ | no | yes |
| H07 hairpin | GGATCCGAATTCGGATCC | -5.12 | -5.09 | 0.04 | -5.09 | ///////----\\\\\\\ | yes | yes |
| H08 hairpin | TTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC | -11.42 | -11.19 | 0.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end | -14.36 | ///////////////----------\\\\\\\\\\\\\\\---- | no | yes |
| S01 hairpin | TTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC | -7.91 | -7.68 | 0.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end | -9.89 | ///////////////----------\\\\\\\\\\\\\\\---- | no | yes |
| S02 hairpin | TTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC | -9.93 | -9.70 | 0.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end | -12.46 | ///////////////----------\\\\\\\\\\\\\\\---- | no | yes |
| S03 hairpin | TTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC | -11.31 | -11.08 | 0.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end | -14.22 | ///////////////----------\\\\\\\\\\\\\\\---- | no | yes |
| S04 hairpin | TTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC | -13.69 | -13.46 | 0.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end | -17.25 | ///////////////----------\\\\\\\\\\\\\\\---- | no | yes |
| S09 hairpin | TGCGCGAAAAAACGCGCT | -5.31 | -5.32 | 0.02 | -5.32 | -/////------\\\\\- | yes | yes |
| S10 hairpin | GCGCGAAAAAACGCGC | -5.82 | -5.79 | 0.02 | -5.79 | /////------\\\\\ | yes | yes |
| S11 hairpin | TGCGCGAAAAAACGCGCT | -6.67 | -6.69 | 0.02 | -6.69 | -/////------\\\\\- | yes | yes |
ntthal 2.6.1 (primer3-py 2.3.1), recorded 2026-10-06: 16 fixtures (16 in the gate), the oracle's own structure rescored under this engine's rules within 0.1 kcal/mol on every case with a structure and this engine's ΔG at or below that rescore; all passing. The two structures coincide on 13 of 14; the oracle reports the structure with the highest melting temperature, this engine the lowest ΔG°37. The badge reads the same numbers: within 0.1 kcal/mol, 16 fixtures.
| Case | Sequences | Oracle ΔG | Rescore of its structure | Gap and cause | Our ΔG | Our structure | Coincide | Pass |
|---|---|---|---|---|---|---|---|---|
| D01 self-dimer | GCGAATTCGCATGCAAGCTT | -12.06 | -12.14 | 0.07 | -12.14 | ATGCAAGCTT GCGAATTCGC CGCTTAAGCG TTCGAACGTA ---------- | yes | yes |
| D02 self-dimer | TTGCCAGTCAAGTCAGCATGC | -6.45 | -6.42 | 0.04 | -6.42 | TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTT | yes | yes |
| D03 self-dimer | AAAAAAAAAAAAAAAAAAAA | none | none | yes | yes | |||
| D04 self-dimer | CTGACGTAAGCTTACGTCAG | -21.11 | -21.11 | 0.00 | -21.11 | CTGACGTAAGCTTACGTCAG GACTGCATTCGAATGCAGTC | yes | yes |
| D05 self-dimer | TAATACGACTCACTATAGGG | -3.80 | -3.76 | 0.05 | -3.76 | TAATACGACTCA GG---------- CTATAG GATATC GG ACTCAGCATAAT | yes | yes |
| D06 self-dimer | GGCCATTAGTCAGTACGGCC | -3.56 | -3.55 | 0.00 | -5.03 | ATTAGTCAGTACGGCC GGCC CCGG CCGGCATGACTGATTA ---------------- | no | yes |
| X01 cross-dimer | TAATACGACTCACTATAGGG / CCCTATAGTGAGTCGTATTA | -17.31 | -17.31 | 0.00 | -17.31 | TAATACGACTCACTATAGGG ATTATGCTGAGTGATATCCC | yes | yes |
| X02 cross-dimer | AGCTTGACCTGAAGGCATGC / TCAGTCCATGGATGGCATGC | -6.30 | -6.38 | 0.08 | -6.38 | AGCTTGACCTGAAG -------------- GCATGC CGTACG GTAGGTACCTGACT | yes | yes |
| X03 cross-dimer | AAAAAAAAAAAAAAAAAAAA / CCCCCCCCCCCCCCCCCCCC | none | none | yes | yes | |||
| X04 cross-dimer | GTAAAACGACGGCCAGT / CAGGAAACAGCTATGAC | -2.68 | -2.69 | 0.01 | -2.69 | GTAAAACGACGG AGT CC GG CAGTATCGACAAA AC- | yes | yes |
| X05 cross-dimer | CGCAAATGGGCGGTAGGCGTG / TAGAAGGCACAGTCGAGG | -2.71 | -2.73 | 0.02 | -2.73 | CGCAAA G GGTAGGCGTG TG GC AC CG GGAGCTG A GAAGAT---- | yes | yes |
| X06 cross-dimer | TAATACGACTCACTATAGGG / CCCTATAGTAAGTCGTATTA | -12.49 | -12.49 | 0.00 | -12.49 | C TAATACGACT ACTATAGGG ATTATGCTGA TGATATCCC A | yes | yes |
| S05 self-dimer | TTGCCAGTCAAGTCAGCATGC | -4.86 | -4.82 | 0.04 | -4.82 | TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTT | yes | yes |
| S06 self-dimer | TTGCCAGTCAAGTCAGCATGC | -5.78 | -5.74 | 0.04 | -5.74 | TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTT | yes | yes |
| S07 self-dimer | TTGCCAGTCAAGTCAGCATGC | -6.40 | -6.37 | 0.04 | -6.37 | TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTT | yes | yes |
| S08 self-dimer | TTGCCAGTCAAGTCAGCATGC | -7.49 | -7.45 | 0.04 | -7.45 | TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTT | yes | yes |