Skip to content
Methods

Reference checks

Reference checks: Drybench Plasmid

This page lists the reference checks published for Drybench Plasmid. 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

The .dna file set uses synthetic files built from NCBI records only; files saved by other programs are checked at a later pass.

Published sets

Published verification sets

MethodsOracleFixturesToleranceDateFile
sequence-primer-featuresIndependent Sequence handoff43full incorporated PCR primers, exact witnessed template sites, wrapped strands, refusal and omission counts exact; supplied annotations preserved2026-10-11sequence-handoff-v1.jsonRecorded for version 0.12.0; the test suite checks the current engine against it.
ds-fragment-ends, restriction-cloning, golden-gateBiopython67strand chemistry and paired cores exact; circular products identical up to rotation and strand; overlapping cuts refused2026-10-11assembly-boundaries.jsonRecorded for version 0.9.0; the test suite checks the current engine against it.
ds-fragment-ends, restriction-cloningBiopython1coincident top cuts with distinct opposite-strand cuts refused2026-10-11assembly-cut-refusals-v1.jsonRecorded for version 0.10.0; the test suite checks the current engine against it.
assembly-recordIndependent assembly records10shape, exact hashes, topology, parent references and method-specific accounting; malformed provenance refused, stale provenance dropped with reason2026-10-11assembly-record-v2.jsonRecorded for version 0.9.0; the test suite checks the current engine against it.
assembly-recordIndependent assembly records19exact input/junction totals, parent roles, junction counts and method-specific alternatives; balanced false claims refused2026-10-11assembly-record-refusals-v1.jsonRecorded for version 0.11.0; the test suite checks the current engine against it.
restriction-sites, restriction-digestBiopython446cut positions and fragment lengths exact; the unique-cutter sets identical2026-10-06digests.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
dam-dcm-blockingMcClelland et al. 1994, Table I21outcomes exact2026-10-06methylation.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
diagnostic-digest-pickerBiopython4157the pool, bands and verdicts exact (gel rules 2)2026-10-17trio-v2.jsonRecorded for version 0.13.0; the test suite checks the current engine against it.
gel-schematicHand-worked band grouping11bands exact2026-10-17gel-bands-v1.jsonRecorded for version 0.13.0; the test suite checks the current engine against it.
feature-annotationBiopython38identity and coverage within 0.1 percentage points; place, strand, call and score exact2026-10-06features.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
feature-annotationBiopython4017every pair of library 2's parts aligned with the same scoring: calls, places, strands and buckets exact; no call on the random controls2026-10-17specificity-v2.jsonRecorded for version 0.14.0; the test suite checks the current engine against it.
feature-annotationBiopython14the call shown at each locus, the parts named beside it and the inside labels exact2026-10-17specificity-display.jsonRecorded for version 0.14.0; the test suite checks the current engine against it.
dam-dcm-blockingIndependent second implementation (reference.py can_carry)82which enzymes' sites can carry a dam or dcm methylated base, exact; whether Table I lists the enzymes without a row is not checked2026-10-17methylation-absence-rule.jsonRecorded for version 0.14.0; the test suite checks the current engine against it.
plasmid-dna-amountsPython fractions11full double precision (1e-12 relative)2026-10-06amounts.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
snapgene-readBiopython10sequence and topology identical; every feature recovered; refusals for the stated reason2026-10-06dna-files.jsonRecorded for version 0.1.0; the test suite checks the current engine against it.
ds-fragment-endsHand-worked double-stranded ends13every overhang, polarity and compatibility verdict exact2026-10-10ds-ends.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
restriction-cloningHand-worked restriction clones5every product exact up to rotation and strand; refusals for the stated reason; material conserved2026-10-10restriction-cloning.jsonRecorded for version 0.3.0; the test suite checks the current engine against it.
golden-gateHand-worked Golden Gate assemblies7the scarless product exact up to rotation and strand, no recognition site surviving; refusals for the stated reason2026-10-10golden-gate.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
gibson-styleHand-worked Gibson assemblies7the product exact (a circle up to rotation and strand), each overlap collapsed once, material conserved; refusals for the stated reason2026-10-10gibson.jsonRecorded for version 0.7.0; the test suite checks the current engine against it.
crispr-spcas9-guidesIndependent SpCas9 enumeration21every position, strand, protospacer, PAM, GC, homopolymer run, within-sequence count and origin crossing exact; no score2026-10-10crispr.jsonRecorded for version 0.7.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.

  • Independent Sequence handoff sequence-handoff.py with Biopython 1.88 (MIT (script); Biopython License Agreement; Oracle; 2026-10-11). independently re-extracted product and template footprints, paired omissions, immutable qualifications and malformed receipt refusals
  • Independent assembly records assembly-boundaries.py (MIT; Oracle; 2026-10-11). hand-authored record cases based on previously published independent products, with Python hashlib hashes and method-specific conservation
  • Biopython 1.88 (Biopython Licence Agreement or BSD-3-Clause; Oracle; 2026-10-06). Bio.Restriction to check every enzyme row and cut position, PairwiseAligner for the feature alignments, and the SnapGene reader for the synthetic .dna files; never shipped
  • Independent second implementation (reference.py can_carry) reference.py absences (MIT; Oracle; 2026-10-17). which enzymes' sites can carry a dam or dcm methylated base, by expanding each site's IUPAC codes; shares no code with the engine and calls no Biopython
  • Python fractions 3.11 (PSF-2.0; Oracle; 2026-10-06). exact arithmetic for the bench numbers
  • Hand-worked band grouping reference.py gel (MIT; Oracle; 2026-10-17). band-grouping cases worked by hand with exact fractions
  • McClelland et al. 1994, Table I Nucleic Acids Res 22:3640 (Cited data (read by hand); Oracle; 2026-10-06). the methylation outcomes, each case worked by hand from the table's entries
  • Hand-worked double-stranded ends ds-ends.py with Biopython 1.88 (MIT (the script); Biopython Licence Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). the overhang, polarity and compatibility of restriction ends, each case worked by hand and re-derived from a two-strand drawing
  • Hand-worked restriction clones restriction-cloning.py with Biopython 1.88 (MIT (the script); Biopython Licence Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). recombinant products worked out by hand and round-tripped by Bio.Restriction, which digests each product back into the insert and backbone cores; reverse complements by Biopython
  • Hand-worked Golden Gate assemblies golden-gate.py with Biopython 1.88 (MIT (the script); Biopython Licence Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). BsaI and BsmBI assemblies built around a chosen scarless product; Bio.Restriction confirms the released overhangs and that no recognition site survives in the product; reverse complements by Biopython
  • Hand-worked Gibson assemblies gibson.py with Biopython 1.88 (MIT (the script); Biopython Licence Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). exact-overlap assemblies built from a chosen product; the product is re-derived by an independent concatenation and base-accounted; reverse complements by Biopython
  • Independent SpCas9 enumeration crispr.py with Biopython 1.88 (MIT (the script); Biopython Licence Agreement (BSD-3-Clause file by file); Oracle; 2026-10-10). every NGG guide found by one regular-expression search for a protospacer and its PAM, run over the sequence for the + strand and over the Biopython reverse complement for the − strand with positions mapped back, one case worked by hand base by base with a write-refusal guard, and GC, homopolymer run and the within-sequence occurrence count computed independently; no score

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/plasmid-map/reference.py wrote and whose hashes its manifest records. No value in a file comes from the engine under test.

Every enzyme's cut positions and fragments on pUC19 and pBR322, and the double digests

Biopython 1.88 Bio.Restriction (REBASE release 404, an offline oracle); tolerance: exact. 458 cases, all passing; the first 12 shown. digests.json sha256 4b39c25d5bb5f091

Uses no annotation library.

CaseOracleThis enginePass
AarI on L09137.2no siteno siteyes
AarI on J01749.1no siteno siteyes
AatII on L09137.2cuts after 2,622cuts after 2,622yes
AatII on J01749.1cuts after 4,289cuts after 4,289yes
AbsI on L09137.2no siteno siteyes
AbsI on J01749.1no siteno siteyes
Acc65I on L09137.2cuts after 409cuts after 409yes
Acc65I on J01749.1no siteno siteyes
AccI on L09137.2cuts after 431cuts after 431yes
AccI on J01749.1cuts after 653, 2,246cuts after 653, 2,246yes
AciI on L09137.2cuts after 76, 115, 125, 151, 189, 202, 228, 285, 497, 600, 656, 666, 690, 733, 740, 761, 852, 880, 1,007, 1,026, 1,147, 1,257, 1,392, 1,401, 1,763, 1,854, 2,045, 2,091, 2,212, 2,256, 2,333, 2,442, 2,541, 2,588cuts after 76, 115, 125, 151, 189, 202, 228, 285, 497, 600, 656, 666, 690, 733, 740, 761, 852, 880, 1,007, 1,026, 1,147, 1,257, 1,392, 1,401, 1,763, 1,854, 2,045, 2,091, 2,212, 2,256, 2,333, 2,442, 2,541, 2,588yes
AciI on J01749.1cuts after 40, 182, 290, 299, 302, 426, 579, 582, 585, 704, 724, 803, 843, 892, 939, 1,024, 1,039, 1,107, 1,140, 1,165, 1,210, 1,234, 1,246, 1,288, 1,342, 1,395, 1,411, 1,417, 1,498, 1,636, 1,765, 1,768, 1,779, 1,935, 1,951, 2,006, 2,062, 2,147, 2,186, 2,196, 2,238, 2,263, 2,301, 2,314, 2,340, 2,357, 2,400, 2,407, 2,428, 2,519, 2,547, 2,674, 2,693, 2,814, 2,924, 3,059, 3,068, 3,430, 3,521, 3,712, 3,758, 3,879, 3,923, 4,000, 4,109, 4,208, 4,255cuts after 40, 182, 290, 299, 302, 426, 579, 582, 585, 704, 724, 803, 843, 892, 939, 1,024, 1,039, 1,107, 1,140, 1,165, 1,210, 1,234, 1,246, 1,288, 1,342, 1,395, 1,411, 1,417, 1,498, 1,636, 1,765, 1,768, 1,779, 1,935, 1,951, 2,006, 2,062, 2,147, 2,186, 2,196, 2,238, 2,263, 2,301, 2,314, 2,340, 2,357, 2,400, 2,407, 2,428, 2,519, 2,547, 2,674, 2,693, 2,814, 2,924, 3,059, 3,068, 3,430, 3,521, 3,712, 3,758, 3,879, 3,923, 4,000, 4,109, 4,208, 4,255yes

dam and dcm outcomes, worked by hand

McClelland et al. 1994, Table I; tolerance: exact. 19 cases, all passing; the first 12 shown. methylation.json sha256 3b72a819ada98d26

Uses no annotation library.

CaseOracleThis enginePass
M01: XbaI, dam on, dcm oncutcutyes
M02: XbaI, dam on, dcm onblockedblockedyes
M03: XbaI, dam on, dcm onblockedblockedyes
M04: BamHI, dam on, dcm onnot-blockednot-blockedyes
M05: BsaWI, dam on, dcm onnot-recordednot-recordedyes
M06: AhdI, dam on, dcm onnot-recordednot-recordedyes
M07: EcoRII, dam on, dcm onblockedblockedyes
M08: BstNI, dam on, dcm onnot-blockednot-blockedyes
M09: StuI, dam on, dcm onblockedblockedyes
M10: XbaI, dam on, dcm onblockedblockedyes
M11: BglI, dam on, dcm onnot-recordednot-recordedyes
M12: DpnI, dam on, dcm oncuts-methylatedcuts-methylatedyes

The digest picker on the correct, empty and reversed trio (trio v2, gel rules 2)

Biopython 1.88 Bio.Restriction; tolerance: the pool, every band and every verdict exact. 4,158 cases, all passing; the first 12 shown. trio-v2.json sha256 fd62948a014229b7

Uses no annotation library.

CaseOracleThis enginePass
the constructs and the pool95 enzymes; the constructs' SHA-25695 enzymes; the same constructsyes
AatIIdoes notdoes notyes
Acc65Idoes notdoes notyes
AccIdoes notdoes notyes
AclIdoes notdoes notyes
AcuItells all three aparttells all three apartyes
AflIIIdoes notdoes notyes
AhdIdoes notdoes notyes
AlwNIdoes notdoes notyes
ApaLIdoes notdoes notyes
ApoIdoes notdoes notyes
AseIdoes notdoes notyes

Band grouping on the schematic gel, worked by hand

Hand-worked cases with exact fractions; tolerance: every band exact; the 5 percent boundary inclusive. 11 cases, all passing; the first 11 shown. gel-bands-v1.json sha256 565950590c2bf04a

Uses no annotation library.

CaseOracleThis enginePass
chain-1000-960-922: 1000, 960, 922 bp[1000, 960] [922][1000, 960] [922]yes
boundary-inclusive: 1000, 950 bp[1000, 950][1000, 950]yes
boundary-just-over: 1000, 949 bp[1000] [949][1000] [949]yes
four-member-run: 2000, 1980, 1950, 1900 bp[2000, 1980, 1950, 1900][2000, 1980, 1950, 1900]yes
long-run-splits: 2000, 1960, 1920, 1880, 1840 bp[2000, 1960, 1920] [1880, 1840][2000, 1960, 1920] [1880, 1840]yes
under-100-not-drawn: 3000, 100, 99, 60 bp[3000] [100][3000] [100]yes
near-100: 105, 100 bp[105, 100][105, 100]yes
equal-sizes: 500, 500, 500 bp[500, 500, 500][500, 500, 500]yes
equal-then-boundary: 1000, 1000, 950, 949 bp[1000, 1000, 950] [949][1000, 1000, 950] [949]yes
unsorted-input: 922, 1000, 960 bp[1000, 960] [922][1000, 960] [922]yes
all-under-100: 99, 50, 10 bpno bandno bandyes

Feature alignments and threshold boundaries

Biopython 1.88 PairwiseAligner; tolerance: identity and coverage within 0.1 percentage points; place, call and score exact. 26 cases, all passing; the first 12 shown. features.json sha256 a523a03a76efcc1a

Checked against annotation library 1.

CaseOracleThis enginePass
F01: bla on X65304.3match, 99.77% identity, 100.00% coverage at 1265match, 99.77% identity, 100.00% coverage at 1265yes
F02: bla on U47120.2match, 99.77% identity, 100.00% coverage at 3780match, 99.77% identity, 100.00% coverage at 3780yes
F03: bla on AF025843.2match, 99.77% identity, 100.00% coverage at 2393match, 99.77% identity, 100.00% coverage at 2393yes
F04: bla on U13853.1match, 100.00% identity, 100.00% coverage at 1377match, 100.00% identity, 100.00% coverage at 1377yes
F05: nptII on U55762.1match, 99.75% identity, 100.00% coverage at 2629match, 99.75% identity, 100.00% coverage at 2629yes
F06: nptII on U47120.2match, 100.00% identity, 100.00% coverage at 2463match, 100.00% identity, 100.00% coverage at 2463yes
F07: nptII on AY048743.1match, 100.00% identity, 100.00% coverage at 459match, 100.00% identity, 100.00% coverage at 459yes
F08: cat on LC760188.1match, 100.00% identity, 100.00% coverage at 3344match, 100.00% identity, 100.00% coverage at 3344yes
F09: lacI on U13853.1match, 99.91% identity, 100.00% coverage at 3318match, 99.91% identity, 100.00% coverage at 3318yes
F10: egfp on U55763.1match, 100.00% identity, 99.72% coverage at 613match, 100.00% identity, 99.72% coverage at 613yes
F11: cmvEnhancer on AF025843.2match, 99.85% identity, 99.85% coverage at 7match, 99.85% identity, 99.85% coverage at 7yes
F12: cmvPromoter on AF025843.2match, 100.00% identity, 100.00% coverage at 667match, 100.00% identity, 100.00% coverage at 667yes

ng, pmol, copies, ligation and the weights

Python fractions (exact arithmetic); tolerance: 1e-12 relative. 11 cases, all passing; the first 11 shown. amounts.json sha256 b796d93baed8c741

Uses no annotation library.

CaseOracleThis enginePass
A01: pmol0.60252088350938960.6025208835093896yes
A02: pmol0.185541212865623470.18554121286562347yes
A03: copies-per-ul3628465571.3331073628465571.333107yes
A04: copies-per-ul223471060.13158152223471060.13158152yes
A05: ligation-insert-ng40.2084884586746140.20848845867461yes
A06: ligation-insert-ng26.80565897244973826.80565897244974yes
A07: ligation-insert-ng57.3263013070396757.32630130703967yes
A08: pmol-approximate0.57277049086431060.5727704908643106yes
A09: ng-for-copies27.55985912889887527.559859128898875yes
A10: mw1659693.511659693.51yes
A11: mw2694819.0772694819.077yes

Synthetic .dna files and refusals

Biopython 1.88 SnapGene reader; tolerance: sequence and topology identical; every feature recovered; refusals for the stated reason. 10 cases, all passing; the first 10 shown. dna-files.json sha256 74f5f2b35995cb89

Uses no annotation library.

CaseOracleThis enginePass
dna/refuse-length-mismatch.dnarefused: length-mismatchrefused: length-mismatchyes
dna/refuse-truncated.dnarefused: truncatedrefused: truncatedyes
dna/refuse-unknown-packet.dnarefused: unknown-packetrefused: unknown-packetyes
dna/refuse-unknown-version.dnarefused: unknown-versionrefused: unknown-versionyes
dna/synthetic-2micron-origin.dna6318 bp circular; 40 features6318 bp circular; 40 of 40 recoveredyes
dna/synthetic-lac-linear.dna7477 bp linear; 15 features7477 bp linear; 15 of 15 recoveredyes
dna/synthetic-pbr322.dna4361 bp circular; 46 features4361 bp circular; 46 of 46 recoveredyes
dna/synthetic-pcineo.dna5472 bp circular; 13 features5472 bp circular; 13 of 13 recoveredyes
dna/synthetic-pgem3z-origin.dna2743 bp circular; 13 features2743 bp circular; 13 of 13 recoveredyes
dna/synthetic-puc19-linear.dna2686 bp linear; 0 features2686 bp linear; 0 of 0 recoveredyes

The GenBank export read back

Biopython 1.88 GenBank parser; tolerance: translations equal or refused alike; ACCESSION '.'; no identifier on a person's feature. 11 cases, all passing; the first 11 shown. genbank.json sha256 da83de6798455d21

Uses no annotation library.

CaseOracleThis enginePass
pbr322-edits CDS 1 (edited)Biopython refusesnone written (Final codon 'ATG' is not a stop codon)yes
pbr322-edits CDS 2 (library)Biopython's translation/translation writtenyes
pbr322-edits CDS 3 (edited)Biopython's translation/translation writtenyes
pbr322-edits CDS 4 (as received)Biopython's translation/translation writtenyes
pbr322-edits CDS 5 (added)Biopython refusesnone written (First codon 'ACC' is not a start codon)yes
pbr322-edits CDS 6 (library)Biopython's translation/translation writtenyes
pbr322-edits CDS 7 (as received)Biopython's translation/translation writtenyes
puc19-edits misc_feature 1 (added)ASCII notes, no identifierASCII notes, no identifieryes
puc19-edits CDS 2 (edited)Biopython's translation/translation writtenyes
puc19-edits CDS 3 (added)Biopython refusesnone written (First codon 'GAG' is not a start codon)yes
puc19-edits CDS 4 (added)Biopython refusesnone written (Final codon 'TGG' is not a stop codon)yes

The worked examples' golden fixtures (every file the examples manifest lists, published beside it)

Biopython 1.88; tolerance: exact. 30 cases, all passing; the first 12 shown. examples-manifest.json sha256 791b9d3b5df5cdec

Each file is checked against its own annotation library: library 1 for puc19@1.json and pbr322@1.json; library 2 for puc19@2.json and pbr322@2.json and pbluescript-sk@1.json and pbluescript-ks@1.json and pgem-3z@1.json and pacyc184@1.json and pegfp-n1@1.json and pgex-4t-1@1.json.

CaseOracleThis enginePass
puc19@1.json: calls and UniProt checks6 calls6 callsyes
puc19@1.json: primer sites44yes
puc19@1.json: cut counts223 enzymes223 agreeyes
pbr322@1.json: calls and UniProt checks4 calls4 callsyes
pbr322@1.json: primer sites00yes
pbr322@1.json: cut counts223 enzymes223 agreeyes
puc19@2.json: calls and UniProt checks7 calls7 callsyes
puc19@2.json: primer sites44yes
puc19@2.json: cut counts223 enzymes223 agreeyes
pbr322@2.json: calls and UniProt checks5 calls5 callsyes
pbr322@2.json: primer sites00yes
pbr322@2.json: cut counts223 enzymes223 agreeyes