Reference checks
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.
The .dna file set uses synthetic files built from NCBI records only; files saved by other programs are checked at a later pass.
| Methods | Oracle | Fixtures | Tolerance | Date | File |
|---|---|---|---|---|---|
| sequence-primer-features | Independent Sequence handoff | 43 | full incorporated PCR primers, exact witnessed template sites, wrapped strands, refusal and omission counts exact; supplied annotations preserved | 2026-10-11 | sequence-handoff-v1.jsonRecorded for version 0.12.0; the test suite checks the current engine against it. |
| ds-fragment-ends, restriction-cloning, golden-gate | Biopython | 67 | strand chemistry and paired cores exact; circular products identical up to rotation and strand; overlapping cuts refused | 2026-10-11 | assembly-boundaries.jsonRecorded for version 0.9.0; the test suite checks the current engine against it. |
| ds-fragment-ends, restriction-cloning | Biopython | 1 | coincident top cuts with distinct opposite-strand cuts refused | 2026-10-11 | assembly-cut-refusals-v1.jsonRecorded for version 0.10.0; the test suite checks the current engine against it. |
| assembly-record | Independent assembly records | 10 | shape, exact hashes, topology, parent references and method-specific accounting; malformed provenance refused, stale provenance dropped with reason | 2026-10-11 | assembly-record-v2.jsonRecorded for version 0.9.0; the test suite checks the current engine against it. |
| assembly-record | Independent assembly records | 19 | exact input/junction totals, parent roles, junction counts and method-specific alternatives; balanced false claims refused | 2026-10-11 | assembly-record-refusals-v1.jsonRecorded for version 0.11.0; the test suite checks the current engine against it. |
| restriction-sites, restriction-digest | Biopython | 446 | cut positions and fragment lengths exact; the unique-cutter sets identical | 2026-10-06 | digests.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| dam-dcm-blocking | McClelland et al. 1994, Table I | 21 | outcomes exact | 2026-10-06 | methylation.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| diagnostic-digest-picker | Biopython | 4157 | the pool, bands and verdicts exact (gel rules 2) | 2026-10-17 | trio-v2.jsonRecorded for version 0.13.0; the test suite checks the current engine against it. |
| gel-schematic | Hand-worked band grouping | 11 | bands exact | 2026-10-17 | gel-bands-v1.jsonRecorded for version 0.13.0; the test suite checks the current engine against it. |
| feature-annotation | Biopython | 38 | identity and coverage within 0.1 percentage points; place, strand, call and score exact | 2026-10-06 | features.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| feature-annotation | Biopython | 4017 | every pair of library 2's parts aligned with the same scoring: calls, places, strands and buckets exact; no call on the random controls | 2026-10-17 | specificity-v2.jsonRecorded for version 0.14.0; the test suite checks the current engine against it. |
| feature-annotation | Biopython | 14 | the call shown at each locus, the parts named beside it and the inside labels exact | 2026-10-17 | specificity-display.jsonRecorded for version 0.14.0; the test suite checks the current engine against it. |
| dam-dcm-blocking | Independent second implementation (reference.py can_carry) | 82 | which enzymes' sites can carry a dam or dcm methylated base, exact; whether Table I lists the enzymes without a row is not checked | 2026-10-17 | methylation-absence-rule.jsonRecorded for version 0.14.0; the test suite checks the current engine against it. |
| plasmid-dna-amounts | Python fractions | 11 | full double precision (1e-12 relative) | 2026-10-06 | amounts.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| snapgene-read | Biopython | 10 | sequence and topology identical; every feature recovered; refusals for the stated reason | 2026-10-06 | dna-files.jsonRecorded for version 0.1.0; the test suite checks the current engine against it. |
| ds-fragment-ends | Hand-worked double-stranded ends | 13 | every overhang, polarity and compatibility verdict exact | 2026-10-10 | ds-ends.jsonRecorded for version 0.7.0; the test suite checks the current engine against it. |
| restriction-cloning | Hand-worked restriction clones | 5 | every product exact up to rotation and strand; refusals for the stated reason; material conserved | 2026-10-10 | restriction-cloning.jsonRecorded for version 0.3.0; the test suite checks the current engine against it. |
| golden-gate | Hand-worked Golden Gate assemblies | 7 | the scarless product exact up to rotation and strand, no recognition site surviving; refusals for the stated reason | 2026-10-10 | golden-gate.jsonRecorded for version 0.7.0; the test suite checks the current engine against it. |
| gibson-style | Hand-worked Gibson assemblies | 7 | the product exact (a circle up to rotation and strand), each overlap collapsed once, material conserved; refusals for the stated reason | 2026-10-10 | gibson.jsonRecorded for version 0.7.0; the test suite checks the current engine against it. |
| crispr-spcas9-guides | Independent SpCas9 enumeration | 21 | every position, strand, protospacer, PAM, GC, homopolymer run, within-sequence count and origin crossing exact; no score | 2026-10-10 | crispr.jsonRecorded for version 0.7.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/plasmid-map/reference.py wrote and whose hashes its manifest records. No value in a file comes from the engine under test.
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| AarI on L09137.2 | no site | no site | yes |
| AarI on J01749.1 | no site | no site | yes |
| AatII on L09137.2 | cuts after 2,622 | cuts after 2,622 | yes |
| AatII on J01749.1 | cuts after 4,289 | cuts after 4,289 | yes |
| AbsI on L09137.2 | no site | no site | yes |
| AbsI on J01749.1 | no site | no site | yes |
| Acc65I on L09137.2 | cuts after 409 | cuts after 409 | yes |
| Acc65I on J01749.1 | no site | no site | yes |
| AccI on L09137.2 | cuts after 431 | cuts after 431 | yes |
| AccI on J01749.1 | cuts after 653, 2,246 | cuts after 653, 2,246 | yes |
| AciI on L09137.2 | cuts 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,588 | cuts 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,588 | yes |
| AciI on J01749.1 | cuts 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,255 | cuts 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,255 | yes |
McClelland et al. 1994, Table I; tolerance: exact. 19 cases, all passing; the first 12 shown. methylation.json sha256 3b72a819ada98d26
Uses no annotation library.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| M01: XbaI, dam on, dcm on | cut | cut | yes |
| M02: XbaI, dam on, dcm on | blocked | blocked | yes |
| M03: XbaI, dam on, dcm on | blocked | blocked | yes |
| M04: BamHI, dam on, dcm on | not-blocked | not-blocked | yes |
| M05: BsaWI, dam on, dcm on | not-recorded | not-recorded | yes |
| M06: AhdI, dam on, dcm on | not-recorded | not-recorded | yes |
| M07: EcoRII, dam on, dcm on | blocked | blocked | yes |
| M08: BstNI, dam on, dcm on | not-blocked | not-blocked | yes |
| M09: StuI, dam on, dcm on | blocked | blocked | yes |
| M10: XbaI, dam on, dcm on | blocked | blocked | yes |
| M11: BglI, dam on, dcm on | not-recorded | not-recorded | yes |
| M12: DpnI, dam on, dcm on | cuts-methylated | cuts-methylated | yes |
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| the constructs and the pool | 95 enzymes; the constructs' SHA-256 | 95 enzymes; the same constructs | yes |
| AatII | does not | does not | yes |
| Acc65I | does not | does not | yes |
| AccI | does not | does not | yes |
| AclI | does not | does not | yes |
| AcuI | tells all three apart | tells all three apart | yes |
| AflIII | does not | does not | yes |
| AhdI | does not | does not | yes |
| AlwNI | does not | does not | yes |
| ApaLI | does not | does not | yes |
| ApoI | does not | does not | yes |
| AseI | does not | does not | yes |
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| 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 bp | no band | no band | yes |
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| F01: bla on X65304.3 | match, 99.77% identity, 100.00% coverage at 1265 | match, 99.77% identity, 100.00% coverage at 1265 | yes |
| F02: bla on U47120.2 | match, 99.77% identity, 100.00% coverage at 3780 | match, 99.77% identity, 100.00% coverage at 3780 | yes |
| F03: bla on AF025843.2 | match, 99.77% identity, 100.00% coverage at 2393 | match, 99.77% identity, 100.00% coverage at 2393 | yes |
| F04: bla on U13853.1 | match, 100.00% identity, 100.00% coverage at 1377 | match, 100.00% identity, 100.00% coverage at 1377 | yes |
| F05: nptII on U55762.1 | match, 99.75% identity, 100.00% coverage at 2629 | match, 99.75% identity, 100.00% coverage at 2629 | yes |
| F06: nptII on U47120.2 | match, 100.00% identity, 100.00% coverage at 2463 | match, 100.00% identity, 100.00% coverage at 2463 | yes |
| F07: nptII on AY048743.1 | match, 100.00% identity, 100.00% coverage at 459 | match, 100.00% identity, 100.00% coverage at 459 | yes |
| F08: cat on LC760188.1 | match, 100.00% identity, 100.00% coverage at 3344 | match, 100.00% identity, 100.00% coverage at 3344 | yes |
| F09: lacI on U13853.1 | match, 99.91% identity, 100.00% coverage at 3318 | match, 99.91% identity, 100.00% coverage at 3318 | yes |
| F10: egfp on U55763.1 | match, 100.00% identity, 99.72% coverage at 613 | match, 100.00% identity, 99.72% coverage at 613 | yes |
| F11: cmvEnhancer on AF025843.2 | match, 99.85% identity, 99.85% coverage at 7 | match, 99.85% identity, 99.85% coverage at 7 | yes |
| F12: cmvPromoter on AF025843.2 | match, 100.00% identity, 100.00% coverage at 667 | match, 100.00% identity, 100.00% coverage at 667 | yes |
Python fractions (exact arithmetic); tolerance: 1e-12 relative. 11 cases, all passing; the first 11 shown. amounts.json sha256 b796d93baed8c741
Uses no annotation library.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| A01: pmol | 0.6025208835093896 | 0.6025208835093896 | yes |
| A02: pmol | 0.18554121286562347 | 0.18554121286562347 | yes |
| A03: copies-per-ul | 3628465571.333107 | 3628465571.333107 | yes |
| A04: copies-per-ul | 223471060.13158152 | 223471060.13158152 | yes |
| A05: ligation-insert-ng | 40.20848845867461 | 40.20848845867461 | yes |
| A06: ligation-insert-ng | 26.805658972449738 | 26.80565897244974 | yes |
| A07: ligation-insert-ng | 57.32630130703967 | 57.32630130703967 | yes |
| A08: pmol-approximate | 0.5727704908643106 | 0.5727704908643106 | yes |
| A09: ng-for-copies | 27.559859128898875 | 27.559859128898875 | yes |
| A10: mw | 1659693.51 | 1659693.51 | yes |
| A11: mw | 2694819.077 | 2694819.077 | yes |
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| dna/refuse-length-mismatch.dna | refused: length-mismatch | refused: length-mismatch | yes |
| dna/refuse-truncated.dna | refused: truncated | refused: truncated | yes |
| dna/refuse-unknown-packet.dna | refused: unknown-packet | refused: unknown-packet | yes |
| dna/refuse-unknown-version.dna | refused: unknown-version | refused: unknown-version | yes |
| dna/synthetic-2micron-origin.dna | 6318 bp circular; 40 features | 6318 bp circular; 40 of 40 recovered | yes |
| dna/synthetic-lac-linear.dna | 7477 bp linear; 15 features | 7477 bp linear; 15 of 15 recovered | yes |
| dna/synthetic-pbr322.dna | 4361 bp circular; 46 features | 4361 bp circular; 46 of 46 recovered | yes |
| dna/synthetic-pcineo.dna | 5472 bp circular; 13 features | 5472 bp circular; 13 of 13 recovered | yes |
| dna/synthetic-pgem3z-origin.dna | 2743 bp circular; 13 features | 2743 bp circular; 13 of 13 recovered | yes |
| dna/synthetic-puc19-linear.dna | 2686 bp linear; 0 features | 2686 bp linear; 0 of 0 recovered | yes |
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| pbr322-edits CDS 1 (edited) | Biopython refuses | none written (Final codon 'ATG' is not a stop codon) | yes |
| pbr322-edits CDS 2 (library) | Biopython's translation | /translation written | yes |
| pbr322-edits CDS 3 (edited) | Biopython's translation | /translation written | yes |
| pbr322-edits CDS 4 (as received) | Biopython's translation | /translation written | yes |
| pbr322-edits CDS 5 (added) | Biopython refuses | none written (First codon 'ACC' is not a start codon) | yes |
| pbr322-edits CDS 6 (library) | Biopython's translation | /translation written | yes |
| pbr322-edits CDS 7 (as received) | Biopython's translation | /translation written | yes |
| puc19-edits misc_feature 1 (added) | ASCII notes, no identifier | ASCII notes, no identifier | yes |
| puc19-edits CDS 2 (edited) | Biopython's translation | /translation written | yes |
| puc19-edits CDS 3 (added) | Biopython refuses | none written (First codon 'GAG' is not a start codon) | yes |
| puc19-edits CDS 4 (added) | Biopython refuses | none written (Final codon 'TGG' is not a stop codon) | yes |
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.
| Case | Oracle | This engine | Pass |
|---|---|---|---|
| puc19@1.json: calls and UniProt checks | 6 calls | 6 calls | yes |
| puc19@1.json: primer sites | 4 | 4 | yes |
| puc19@1.json: cut counts | 223 enzymes | 223 agree | yes |
| pbr322@1.json: calls and UniProt checks | 4 calls | 4 calls | yes |
| pbr322@1.json: primer sites | 0 | 0 | yes |
| pbr322@1.json: cut counts | 223 enzymes | 223 agree | yes |
| puc19@2.json: calls and UniProt checks | 7 calls | 7 calls | yes |
| puc19@2.json: primer sites | 4 | 4 | yes |
| puc19@2.json: cut counts | 223 enzymes | 223 agree | yes |
| pbr322@2.json: calls and UniProt checks | 5 calls | 5 calls | yes |
| pbr322@2.json: primer sites | 0 | 0 | yes |
| pbr322@2.json: cut counts | 223 enzymes | 223 agree | yes |