Skip to content
Methods

Reference checks

Reference checks: Drybench Sequence

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 and levelsDocumentation

Published sets

Published verification sets

MethodsOracleFixturesToleranceDateFile
primer-design-bounded-flanks, oligo-tm-nearest-neighbourBiopython34Tm within 1e-6 degrees; retained qualifications, normalized requests and literal record claims exact2026-10-20primer-design-qualification-v4.jsonRecorded for version 0.9.0; the test suite checks the current engine against it.
primer-design-bounded-flanksBiopython23asymmetric requested/retained correction agreement and historical records exact2026-10-11primer-qualification-effective-salt-v1.jsonRecorded for version 0.6.0; the test suite checks the current engine against it.
translation-ncbi-genetic-codesBiopython113exact2026-10-06translation.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
orf-finder-ncbi-conventionsNCBI ORFfinder18exact, every field of every list2026-10-06orf.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
orf-finder-ncbi-conventionsCircular ORF derivation64exact, every field of every list, on the record and on every listed rotation2026-10-14orf-circular-v1.jsonRecorded for version 0.9.0; the test suite checks the current engine against it.
oligo-tm-nearest-neighbour, hairpin-dimer-dg37Buffer-admissibility derivation20verdict, rule and structure exact; monovalent and free Mg²⁺ within 1e-9 mM2026-10-12buffer-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-paceExpasy ProtParam22MW within 0.01 Da, pI within 0.01, ε280 exact2026-10-06protein.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-1998Biopython49within 0.1 °C under both concentration models; regime, every fitted-range note, refusals and acceptance exact2026-10-20oligo-tm-v2.jsonRecorded for version 0.9.0; the test suite checks the current engine against it.
hairpin-dimer-dg37primer3-py15within 0.4 kcal/mol on ntthal's own structures (8 cases here and 7 salt probes in hairpin-dimer-probes.json)2026-10-06hairpin-dimer.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
hairpin-dimer-dg37primer3-py16within 0.1 kcal/mol on ntthal's own structures (12 cases here and 4 salt probes in hairpin-dimer-probes.json)2026-10-06hairpin-dimer.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
nucleic-acid-average-massPython fractions5within 0.01 g/mol2026-10-06dna-mw.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
pcr-product-exact-pairExact-match derivation30exact, refusals included2026-10-10pcr-product.jsonRecorded for version 0.3.0; the test suite checks the current engine against it.
exact-fragment-searchExact-match derivation26exact, refusals included2026-10-10fragment-search.jsonRecorded for version 0.3.0; the test suite checks the current engine against it.
primer-design-bounded-flanksPrimer-design derivation13every returned pair, coordinate, product, count and cap exact; Tm and ranking terms within 1e-6 °C; refusals exact2026-10-11primer-design.jsonRecorded for version 0.5.0; the test suite checks the current engine against it.
sdm-primers-two-schemes, oligo-tm-nearest-neighbourMutagenesis-primer derivation18every primer sequence, coordinate, matched flank, count by reason, cap and refusal exact; GC within 1e-9; every melting temperature within 1e-6 °C2026-10-17sdm-primers-v1.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
exact-transform-global-edit-v2Revision-transform derivation10kind, map, hashes, withheld state and annotation finding exact; edit count equals the independent edit distance2026-10-10revision-transforms.jsonRecorded for version 0.4.0; the test suite checks the current engine against it.
dna-align-v1Biopython60the 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 first2026-10-20dna-align-v1.jsonRecorded for version 0.8.0; the test suite checks the current engine against it.
read-check-v1Biopython44kept 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 only2026-10-20pipeline/sequence-toolkit/fixtures/readcheck/readcheck-v1.jsonRecorded for version 0.10.0; the test suite checks the current engine against it.
peptide-smiles-linearRDKit101the same canonical SMILES on 89 peptides; the 12 refusals exact2026-10-06peptide-smiles.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
codon-adaptation-sharp-li-v1Codon adaptation derivation30CAI within 1e-9; the scored count, every left-out count, the replaced cells, the rare list and every withholding exact2026-11-07pipeline/sequence-toolkit/fixtures/codon-usage/cai-v1.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
dna-msa-v1Multiple alignment derivation19the alignment, merge order, scores and column counts exact; refusals exact2026-11-07pipeline/sequence-toolkit/fixtures/msa/msa-v1.jsonRecorded for version 0.12.0; the test suite checks the current engine against it.
protein-msa-v1Protein multiple alignment derivation23the alignment, merge order, scores, column counts and zero-scoring letters exact; refusals exact2026-11-07pipeline/sequence-toolkit/fixtures/protein-msa/protein-msa-v1.json
feature-annotationAnnotation suggestion derivation3every placement's entry, start, end, strand and mismatches exact, identity within 1e-12, and no other match call; partial calls and gapped alignments not covered2026-11-07pipeline/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-v1Codon recoding derivation5the recoded letters, the protein, the codon and base counts, the left-as-they-were list and every constraint count exact2026-11-07pipeline/sequence-toolkit/fixtures/codon-usage/recode-v1.jsonRecorded for version 0.11.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.

  • Biopython 1.88 (Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-06). frame translations and the oligo Tm fixtures (MeltingTemp.Tm_NN with the named tables and corrections)
  • Exact-match derivation exact_matches.py with Biopython 1.88 (MIT (the script); Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). the PCR product and fragment search fixtures, every window tested directly, one case worked by hand
  • Primer-design derivation primer_design.py with Biopython 1.88 (MIT (the script); Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-11). the bounded primer-design fixtures: every melting temperature from MeltingTemp.Tm_NN, the candidate windows, counts, ranking and caps derived in the script, exact binding by the exact-match derivation, one case worked by hand
  • Mutagenesis-primer derivation sdm_primers.py with Biopython 1.88 (MIT (the script); Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-17). the site-directed mutagenesis primer fixtures: the mutant sequence, the candidate windows, the matched flanks, GC, the ranking and the counts by reason derived in the script, every melting temperature from MeltingTemp.Tm_NN and every reverse complement from Bio.Seq, one case per scheme worked by hand
  • Revision-transform derivation revision-transforms.py with Biopython 1.88 (MIT (the script); Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). the design-revision review fixtures: hand-worked coordinate maps and an independent edit distance
  • primer3-py 2.3.1 (GPL-2.0-or-later; Oracle; 2026-10-06). hairpin, self-dimer and cross-dimer ΔG at 37 °C (libprimer3 2.6.1 thal, run offline as ntthal); never shipped and its parameter files never copied
  • NCBI ORFfinder 0.4.3 (Public domain (NCBI); Oracle; 2026-10-06). cross-checking the ORF fixtures
  • Circular ORF derivation orf_circular.py with Biopython 1.88 (MIT (the script); Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-14). the circular ORF fixtures: each strand read round the origin by the rules on the methods page, as seven copies read linearly and as a modular walk, agreeing exactly; Biopython translations; every listed rotation; the linear scan and NCBI ORFfinder 0.4.3 on each unrolled reading, and the linear scan on each ORF inside the numbering
  • Buffer-admissibility derivation buffer_admissibility.py with Biopython 1.88 (MIT (the script); Biopython License Agreement (BSD-3-Clause file by file); Oracle; 2026-10-12). the buffer verdicts shared by the Tm and the structure checks: the admissibility bounds restated, free Mg²⁺ by bisection, and MeltingTemp.Tm_NN on every admitted buffer
  • Expasy ProtParam web form, responses saved 2026-10-06 (SIB terms of use (To be checked); Oracle; 2026-10-06). molecular weight, isoelectric point and ε280 of 22 proteins and peptides
  • RDKit 2026.03.6 (BSD-3-Clause; Oracle; 2026-10-06). the canonical SMILES of 89 peptides (MolFromSequence) for the molecule hand-off
  • Python fractions 3.11.15 (Python-2.0; Oracle; 2026-10-06). exact arithmetic for the DNA molecular weight fixtures
  • Codon adaptation derivation cai_reference.py (Python fractions and decimal) (MIT (the script); Oracle; 2026-11-07). the codon adaptation index fixtures: every w a fraction, the product exact, the root in decimal at 60 digits, on 15 hand cases (the three-codon case primary) and three real coding sequences (E. coli lacZ, yeast ADH1 and human INS) against each of the five host tables; cross-checked against Biopython 1.88's CodonAdaptationIndex
  • Codon recount codon_recount.py (MIT (the script); Oracle; 2026-11-07). the second, independent count of each host's codon-usage table from the same RefSeq files, by a different route from the build script
  • Multiple alignment derivation msa_reference.py (MIT (the script); Oracle; 2026-11-07). the progressive multiple alignment fixtures, the method written apart from the engine
  • Protein multiple alignment derivation protein_msa_reference.py (MIT (the script); Oracle; 2026-11-07). the progressive multiple alignment fixtures for proteins: the method written apart from the engine, BLOSUM62 typed from NCBI's file with the file's hash asserted
  • MAFFT 7.505 (BSD-style; Oracle; 2026-11-07). an offline comparison on four DNA and four protein multiple alignment sets (--nuc and --amino), recorded, never the gate
  • Annotation suggestion derivation annotation_reference.py (MIT (the script); Oracle; 2026-11-07). the auto-annotation suggestions' hand-checkable set: every ungapped full-length placement of a library entry within the match threshold on pUC19 (as stated and read across the origin) and pBR322, found by shared words and checked letter by letter
  • Codon recoding derivation recode_reference.py (MIT (the script); Oracle; 2026-11-07). the recoding fixtures: a second implementation of the recoding rules with the finished-sequence constraint re-check written apart from the repair, the protein asserted identical before and after

Fixture tables, computed when the page was built

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.

Frame translations in genetic codes 1, 2 and 11

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…

InputExpectedOursDifferencePass
ins-mrna.t1.f+1.full155 aa, SPPGQAASEEAI…155 aa, SPPGQAASEEAI…identicalyes
ins-mrna.t1.f+1.to_stop45 aa, SPPGQAASEEAI…45 aa, SPPGQAASEEAI…identicalyes
ins-mrna.t1.f+2.full154 aa, ALQDRLHQKRPS…154 aa, ALQDRLHQKRPS…identicalyes
ins-mrna.t1.f+2.to_stop38 aa, ALQDRLHQKRPS…38 aa, ALQDRLHQKRPS…identicalyes
ins-mrna.t1.f+3.full154 aa, PSRTGCIRRGHQ…154 aa, PSRTGCIRRGHQ…identicalyes
ins-mrna.t1.f+3.to_stop129 aa, PSRTGCIRRGHQ…129 aa, PSRTGCIRRGHQ…identicalyes
ins-mrna.t1.f-1.full155 aa, AGSRALFHLSRC…155 aa, AGSRALFHLSRC…identicalyes
ins-mrna.t1.f-1.to_stop147 aa, AGSRALFHLSRC…147 aa, AGSRALFHLSRC…identicalyes
ins-mrna.t1.f-2.full154 aa, LVQGLYSISLGA…154 aa, LVQGLYSISLGA…identicalyes
ins-mrna.t1.f-2.to_stop94 aa, LVQGLYSISLGA…94 aa, LVQGLYSISLGA…identicalyes
ins-mrna.t1.f-3.full154 aa, WFKGFIPSLSVQ…154 aa, WFKGFIPSLSVQ…identicalyes
ins-mrna.t1.f-3.to_stop24 aa, WFKGFIPSLSVQ…24 aa, WFKGFIPSLSVQ…identicalyes

Open reading frames, every list field by field

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…

InputExpectedOursDifferencePass
ins-mrna.t1.atgOnly1 listed, 1 nested, 1 open1 listed, 1 nested, 1 openevery field equalyes
ins-mrna.t1.alternativeStarts2 listed, 6 nested, 1 open2 listed, 6 nested, 1 openevery field equalyes
ins-mrna.t2.atgOnly1 listed, 0 nested, 0 open1 listed, 0 nested, 0 openevery field equalyes
ins-mrna.t2.alternativeStarts3 listed, 1 nested, 0 open3 listed, 1 nested, 0 openevery field equalyes
ins-mrna.t11.atgOnly1 listed, 1 nested, 1 open1 listed, 1 nested, 1 openevery field equalyes
ins-mrna.t11.alternativeStarts3 listed, 4 nested, 2 open3 listed, 4 nested, 2 openevery field equalyes
mt-atp8-atp6-cox3.t1.atgOnly8 listed, 2 nested, 0 open8 listed, 2 nested, 0 openevery field equalyes
mt-atp8-atp6-cox3.t1.alternativeStarts9 listed, 2 nested, 1 open9 listed, 2 nested, 1 openevery field equalyes
mt-atp8-atp6-cox3.t2.atgOnly2 listed, 4 nested, 1 open2 listed, 4 nested, 1 openevery field equalyes
mt-atp8-atp6-cox3.t2.alternativeStarts3 listed, 7 nested, 1 open3 listed, 7 nested, 1 openevery field equalyes
mt-atp8-atp6-cox3.t11.atgOnly8 listed, 2 nested, 0 open8 listed, 2 nested, 0 openevery field equalyes
mt-atp8-atp6-cox3.t11.alternativeStarts9 listed, 11 nested, 1 open9 listed, 11 nested, 1 openevery field equalyes

Molecular weight, pI and ε280 of 22 proteins and peptides

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…

InputExpectedOursDifferencePass
P01 Human preproinsulin (signal, B chain, C peptide, A chain) (110 aa)11980.91 Da, pI 5.22, ε 17335/1696011980.91 Da, pI 5.22, ε 17335/16960MW -0.001, pI +0.00yes
P02 Aequorea victoria green fluorescent protein (238 aa)26886.32 Da, pI 5.67, ε 22015/2189026886.32 Da, pI 5.67, ε 22015/21890MW +0.001, pI +0.00yes
P03 Human ubiquitin (first unit of polyubiquitin-C) (76 aa)8564.84 Da, pI 6.56, ε 1490/14908564.84 Da, pI 6.56, ε 1490/1490MW +0.005, pI +0.00yes
P04 Hen egg-white lysozyme C, mature chain (129 aa)14313.14 Da, pI 9.32, ε 37970/3747014313.14 Da, pI 9.32, ε 37970/37470MW -0.001, pI +0.00yes
P05 Bovine serum albumin, mature chain (583 aa)66432.96 Da, pI 5.60, ε 42925/4080066432.96 Da, pI 5.60, ε 42925/40800MW -0.005, pI +0.00yes
P06 Human metallothionein-2 (61 aa)6042.16 Da, pI 8.23, ε 1250/06042.16 Da, pI 8.23, ε 1250/0MW +0.005, pI +0.00yes
P07 Human thymosin beta-4, mature chain (43 aa)4921.46 Da, pI 5.02, ε 0/04921.46 Da, pI 5.02, ε 0/0MW +0.002, pI +0.00yes
P08 Human prothymosin alpha, N-terminally processed chain (110 aa)12071.77 Da, pI 3.66, ε 0/012071.77 Da, pI 3.66, ε 0/0MW -0.001, pI +0.00yes
P09 Human macrophage migration inhibitory factor, mature chain (114 aa)12345.11 Da, pI 8.24, ε 13075/1295012345.11 Da, pI 8.24, ε 13075/12950MW -0.003, pI +0.00yes
P10 Human hemoglobin subunit alpha, mature chain (141 aa)15126.36 Da, pI 8.73, ε 9970/997015126.36 Da, pI 8.73, ε 9970/9970MW -0.004, pI +0.00yes
P11 Human myoglobin, mature chain (153 aa)17052.61 Da, pI 7.29, ε 13980/1398017052.61 Da, pI 7.29, ε 13980/13980MW +0.004, pI +0.00yes
P12 Human cytochrome c, mature chain (104 aa)11617.53 Da, pI 9.59, ε 13075/1295011617.53 Da, pI 9.59, ε 13075/12950MW +0.002, pI +0.00yes

Oligo Tm under both concentration models

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…

InputExpectedOursDifferencePass
T01 d15-at (50 mM Na⁺)31.08 / 28.66 °C31.08 / 28.66 °C+0.000 / +0.000yes
T02 d15-gc (50 mM Na⁺)65.33 / 62.76 °C65.33 / 62.76 °C+0.000 / +0.000yes
T03 M13F-20 (50 mM Na⁺)53.58 / 51.40 °C53.58 / 51.40 °C+0.000 / +0.000yes
T04 T7-promoter (50 mM Na⁺)47.60 / 45.70 °C47.60 / 45.70 °C+0.000 / +0.000yes
T05 T7-promoter (50 mM Na⁺)48.55 / 46.65 °C48.55 / 46.65 °C+0.000 / +0.000yes
T06 T7-promoter (1000 mM Na⁺)63.95 / 61.86 °C63.95 / 61.86 °C+0.000 / +0.000yes
T07 SP6 (50 mM Na⁺)42.77 / 40.68 °C42.77 / 40.68 °C+0.000 / +0.000yes
T08 sc16 (50 mM Na⁺)55.14 / 53.97 °C55.14 / 53.97 °C+0.000 / +0.000yes
T09 d30-at (1000 mM Na⁺)72.05 / 70.60 °C72.05 / 70.60 °C-0.000 / -0.000yes
T10 d35 (50 mM Na⁺)76.60 / 75.43 °C76.60 / 75.43 °C+0.000 / +0.000yes
T11 d40-at (50 mM Na⁺)51.96 / 51.00 °C51.96 / 51.00 °C+0.000 / +0.000yes
T12 d40-gc (1000 mM Na⁺)99.98 / 98.88 °C99.98 / 98.88 °C+0.000 / +0.000yes

DNA molecular weight

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…

InputExpectedOursDifferencePass
M01 dA (one nucleotide)251.246 g/mol251.246 g/mol+0.0000yes
M02 T7 promoter primer6125.053 g/mol6125.053 g/mol+0.0000yes
M03 M13 forward (-20) primer5228.467 g/mol5228.467 g/mol+0.0000yes
M04 oligo(dT)206021.936 g/mol6021.936 g/mol+0.0000yes
M05 designed 40-mer12320.042 g/mol12320.042 g/mol+0.0000yes

Predicted PCR products

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…

InputExpectedOursDifferencePass
pcr-hand-uniqueunique, 1 product(s), first 25 bpunique, 1 product(s), first 25 bpidenticalyes
pcr-two-forward-sitesambiguous, 2 product(s), first 37 bpambiguous, 2 product(s), first 37 bpidenticalyes
pcr-reverse-templateunique, 1 product(s), first 25 bpunique, 1 product(s), first 25 bpidenticalyes
pcr-circular-originunique, 1 product(s), first 25 bpunique, 1 product(s), first 25 bpidenticalyes
pcr-linear-no-wrapnone, 0 product(s)none, 0 product(s)identicalyes
pcr-site-across-originunique, 1 product(s), first 25 bpunique, 1 product(s), first 25 bpidenticalyes
pcr-palindromic-pairambiguous, 2 product(s), first 22 bpambiguous, 2 product(s), first 22 bpidenticalyes
pcr-tailsunique, 1 product(s), first 41 bpunique, 1 product(s), first 41 bpidenticalyes
pcr-tail-not-inferrednone, 0 product(s)none, 0 product(s)identicalyes
pcr-normalised-inputunique, 1 product(s), first 25 bpunique, 1 product(s), first 25 bpidenticalyes
pcr-overlap-onlyrefused: overlapping-sitesrefused: overlapping-sitesidenticalyes
pcr-adjacentunique, 1 product(s), first 20 bpunique, 1 product(s), first 20 bpidenticalyes

Exact fragment search

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…

InputExpectedOursDifferencePass
frag-forward3-8 +3-8 +identicalyes
frag-reverse3-8 -3-8 -identicalyes
frag-palindrome-once3-8 both; 11-16 both3-8 both; 11-16 bothidenticalyes
frag-homopolymer-overlaps2-5 +; 3-6 +; 4-7 +; 5-8 +2-5 +; 3-6 +; 4-7 +; 5-8 +identicalyes
frag-homopolymer-reverse2-5 -; 3-6 -; 4-7 -2-5 -; 3-6 -; 4-7 -identicalyes
frag-tandem-repeat1-8 +; 6-13 +; 11-18 +1-8 +; 6-13 +; 11-18 +identicalyes
frag-iupac-barrier6-11 +6-11 +identicalyes
frag-iupac-codes19-24 +19-24 +identicalyes
frag-linear-no-wrapno hitno hitidenticalyes
frag-circular-origin7-4 + wraps7-4 + wrapsidenticalyes
frag-circular-origin-reverse7-4 - wraps7-4 - wrapsidenticalyes
frag-circular-full-length3-2 + wraps3-2 + wrapsidenticalyes

Peptides as SMILES

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…

InputExpectedOursDifferencePass
N-A (3 residues)C[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)OC[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)Othe same canonical SMILESyes
M-A (3 residues)C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)OC[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)Othe same canonical SMILESyes
C-A (3 residues)C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)OC[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)Othe same canonical SMILESyes
1-A (1 residues)C[C@H](N)C(=O)OC[C@H](N)C(=O)Othe same canonical SMILESyes
N-C (3 residues)C[C@H](NC(=O)CNC(=O)[C@@H](N)CS)C(=O)OC[C@H](NC(=O)CNC(=O)[C@@H](N)CS)C(=O)Othe same canonical SMILESyes
M-C (3 residues)C[C@H](NC(=O)[C@H](CS)NC(=O)CN)C(=O)OC[C@H](NC(=O)[C@H](CS)NC(=O)CN)C(=O)Othe same canonical SMILESyes
C-C (3 residues)C[C@H](NC(=O)CN)C(=O)N[C@@H](CS)C(=O)OC[C@H](NC(=O)CN)C(=O)N[C@@H](CS)C(=O)Othe same canonical SMILESyes
1-C (1 residues)N[C@@H](CS)C(=O)ON[C@@H](CS)C(=O)Othe same canonical SMILESyes
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 SMILESyes
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 SMILESyes
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 SMILESyes
1-D (1 residues)N[C@@H](CC(=O)O)C(=O)ON[C@@H](CC(=O)O)C(=O)Othe same canonical SMILESyes

Hairpins against the oracle, case by case

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.

CaseSequencesOracle ΔGRescore of its structureGap and causeOur ΔGOur structureCoincidePass
H01 hairpinCCCCCATCCGATCAGGGGG-3.18-2.990.19one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end-2.99/////---------\\\\\yesyes
H02 hairpinGCGCGAAAAAACGCGC-4.79-4.420.37one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end-4.42/////------\\\\\yesyes
H03 hairpinATATATTTTTTATATATnonenoneyesyes
H04 hairpinACTGCAGGCTTGCGATTTTCGCAAGCC-9.21-8.990.21one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end-9.63------////////-----\\\\\\\\noyes
H05 hairpinTTTTTTTTTTTTTTTTTTTTnonenoneyesyes
H06 hairpinGAATTTATTGAAAACAATAAATTC-3.62-3.370.25one salt step: the oracle counts one pair fewer for a stem reaching the oligo's end-5.25//////////----\\\\\\\\\\noyes
H07 hairpinGGATCCGAATTCGGATCC-5.12-5.090.04-5.09///////----\\\\\\\yesyes
H08 hairpinTTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC-11.42-11.190.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end-14.36///////////////----------\\\\\\\\\\\\\\\----noyes
S01 hairpinTTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC-7.91-7.680.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end-9.89///////////////----------\\\\\\\\\\\\\\\----noyes
S02 hairpinTTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC-9.93-9.700.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end-12.46///////////////----------\\\\\\\\\\\\\\\----noyes
S03 hairpinTTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC-11.31-11.080.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end-14.22///////////////----------\\\\\\\\\\\\\\\----noyes
S04 hairpinTTGACCGAGTGCAACGTACGGATCTGTTGCACTCGGTCAATGAC-13.69-13.460.23the complementary-flank rule: the oracle keeps a single dangling end at a helix end-17.25///////////////----------\\\\\\\\\\\\\\\----noyes
S09 hairpinTGCGCGAAAAAACGCGCT-5.31-5.320.02-5.32-/////------\\\\\-yesyes
S10 hairpinGCGCGAAAAAACGCGC-5.82-5.790.02-5.79/////------\\\\\yesyes
S11 hairpinTGCGCGAAAAAACGCGCT-6.67-6.690.02-6.69-/////------\\\\\-yesyes

Dimers against the oracle, case by case

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.

CaseSequencesOracle ΔGRescore of its structureGap and causeOur ΔGOur structureCoincidePass
D01 self-dimerGCGAATTCGCATGCAAGCTT-12.06-12.140.07-12.14 ATGCAAGCTT GCGAATTCGC CGCTTAAGCG TTCGAACGTA ----------yesyes
D02 self-dimerTTGCCAGTCAAGTCAGCATGC-6.45-6.420.04-6.42TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTTyesyes
D03 self-dimerAAAAAAAAAAAAAAAAAAAAnonenoneyesyes
D04 self-dimerCTGACGTAAGCTTACGTCAG-21.11-21.110.00-21.11 CTGACGTAAGCTTACGTCAG GACTGCATTCGAATGCAGTC yesyes
D05 self-dimerTAATACGACTCACTATAGGG-3.80-3.760.05-3.76TAATACGACTCA GG---------- CTATAG GATATC GG ACTCAGCATAATyesyes
D06 self-dimerGGCCATTAGTCAGTACGGCC-3.56-3.550.00-5.03 ATTAGTCAGTACGGCC GGCC CCGG CCGGCATGACTGATTA ----------------noyes
X01 cross-dimerTAATACGACTCACTATAGGG / CCCTATAGTGAGTCGTATTA-17.31-17.310.00-17.31 TAATACGACTCACTATAGGG ATTATGCTGAGTGATATCCC yesyes
X02 cross-dimerAGCTTGACCTGAAGGCATGC / TCAGTCCATGGATGGCATGC-6.30-6.380.08-6.38AGCTTGACCTGAAG -------------- GCATGC CGTACG GTAGGTACCTGACTyesyes
X03 cross-dimerAAAAAAAAAAAAAAAAAAAA / CCCCCCCCCCCCCCCCCCCCnonenoneyesyes
X04 cross-dimerGTAAAACGACGGCCAGT / CAGGAAACAGCTATGAC-2.68-2.690.01-2.69GTAAAACGACGG AGT CC GG CAGTATCGACAAA AC-yesyes
X05 cross-dimerCGCAAATGGGCGGTAGGCGTG / TAGAAGGCACAGTCGAGG-2.71-2.730.02-2.73CGCAAA G GGTAGGCGTG TG GC AC CG GGAGCTG A GAAGAT----yesyes
X06 cross-dimerTAATACGACTCACTATAGGG / CCCTATAGTAAGTCGTATTA-12.49-12.490.00-12.49 C TAATACGACT ACTATAGGG ATTATGCTGA TGATATCCC Ayesyes
S05 self-dimerTTGCCAGTCAAGTCAGCATGC-4.86-4.820.04-4.82TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTTyesyes
S06 self-dimerTTGCCAGTCAAGTCAGCATGC-5.78-5.740.04-5.74TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTTyesyes
S07 self-dimerTTGCCAGTCAAGTCAGCATGC-6.40-6.370.04-6.37TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTTyesyes
S08 self-dimerTTGCCAGTCAAGTCAGCATGC-7.49-7.450.04-7.45TTGCCAGTCAAGTCA --------------- GCATGC CGTACG ACTGAACTGACCGTTyesyes