# Drybench Calc: methods and checks

How Drybench Calc reaches its results: every calculator, analysis or view with its methods, the references behind them, how far each has been checked, and the app's limits.

[Open Drybench Calc](https://www.drybench.com/calculators/app) · [What the levels mean](https://www.drybench.com/methods/levels) · [Every app's methods and checks](https://www.drybench.com/methods)

## Molarity and stocks

The mass to weigh for a concentration and volume, or the concentration a mass gives, with units that convert and the formula weight cited.

Its result goes through 2 methods. The lowest level among them: Checked against a reference.

**Equation**

```text
n = C·V; m = n·M / purity; V = m·purity / (C·M)
```

### Methods

#### Stock mass with salt form, hydrate and purity

- **Level:** Checked against a reference
- **How it was checked:** Checked against Python's exact rational arithmetic (fractions.Fraction) to nine significant figures on 31 fixtures (6 October 2026).

#### Formula weight from the molecular formula

- **Level:** Checked against a reference
- **Reference:** Prohaska T et al. Standard atomic weights of the elements 2021 (IUPAC Technical Report). Pure Appl Chem 2022;94:573-600. doi:10.1515/pac-2019-0603; ciaaw.org, read 6 October 2026. [doi:10.1515/pac-2019-0603](https://doi.org/10.1515/pac-2019-0603)
- **How it was checked:** Checked against a CIAAW 2021 sum in Python's decimal module, with the formula from RDKit 2026.03.6, exactly on 58 fixtures (6 October 2026).

## Recipe table

Masses or stock volumes for every component of a solution and, with the buffer section, the pH to set at make-up temperature so it reads the target at use temperature.

Its result goes through 3 methods. The lowest level among them: Checked against a reference.

**Equation**

```text
For each component: m = C·V·M / purity, or V_stock = C·V/C_stock
```

### Methods

#### Multi-component recipe

- **Level:** Checked against a reference
- **How it was checked:** Checked against Python's exact rational arithmetic (fractions.Fraction) to nine significant figures on 31 fixtures (6 October 2026).

#### Formula weight from the molecular formula

- **Level:** Checked against a reference
- **Reference:** Prohaska T et al. Standard atomic weights of the elements 2021 (IUPAC Technical Report). Pure Appl Chem 2022;94:573-600. doi:10.1515/pac-2019-0603; ciaaw.org, read 6 October 2026. [doi:10.1515/pac-2019-0603](https://doi.org/10.1515/pac-2019-0603)
- **How it was checked:** Checked against a CIAAW 2021 sum in Python's decimal module, with the formula from RDKit 2026.03.6, exactly on 58 fixtures (6 October 2026).

#### Buffer mass of the exact chemical form and the pH-meter setpoint at the preparation temperature

- **Level:** Checked against a reference
- **Reference:** m = C × V × M (CIAAW 2021 atomic weights); pH\_set(T\_prep) = pH\_target(T\_work) + pK(T\_prep) − pK(T\_work) with pK(T) from Goldberg, Kishore and Lennen 2002, equation 12, zero ionic strength. Suitability is checked at the working temperature.
- **How it was checked:** Checked against a CIAAW 2021 sum in Python's decimal module and Goldberg's equation 12 in NumPy 2.5.3 on 18 cases, 8 of them refusals: mass to nine significant figures, setpoint within 0.01 pH (10 October 2026).

## Percent solutions

Grams or millilitres of solute for a percent solution on an explicit basis, with no density assumed and the make-up-to-volume step stated.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

### Methods

#### Percent solutions on an explicit basis (w/v, w/w, laboratory v/v)

- **Level:** Checked against a reference
- **Reference:** w/v: g per 100 mL final solution; w/w: g per 100 g solution; laboratory v/v: mL per 100 mL final prepared solution, not the IUPAC constituent-volume fraction (IUPAC Gold Book V06643, read 10 October 2026).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions) on 8 cases, three of them refusals, to nine significant figures; refusals exact (10 October 2026).

## Buffer pKa at temperature

A buffer's pKa at 4, 25 or 37 °C from Goldberg et al. 2002, and where a pH set at 25 °C ends up on ice.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

**Equation**

```text
pK(T) = pK(Tr) − (ΔrH°/(R ln 10))(1/Tr − 1/T) − (ΔrCp°/(R ln 10))(Tr/T − 1 + ln(T/Tr)), Tr = 298.15 K
```

### Methods

#### pK at the working temperature

- **Level:** Checked against a reference
- **Reference:** Goldberg RN, Kishore N, Lennen RM. Thermodynamic quantities for the ionization reactions of buffers. J Phys Chem Ref Data 2002;31:231-370 (read 6 October 2026). [doi:10.1063/1.1416902](https://doi.org/10.1063/1.1416902)
- **How it was checked:** Checked against Goldberg's equation 12 in NumPy 2.4.6 within 0.01 on 15 buffers at 4, 25 and 37 °C (6 October 2026).

## C1V1 dilution

The stock volume and diluent for a dilution, with ng/µL to nM and percent to molar conversions handled by the units.

Its result goes through 2 methods. The lowest level among them: Checked against a reference.

**Equation**

```text
C1·V1 = C2·V2; diluent = V2 − V1
```

### Methods

#### Dilution by C1V1 = C2V2

- **Level:** Checked against a reference
- **How it was checked:** Checked against Python's exact rational arithmetic (fractions.Fraction) to nine significant figures on 31 fixtures (6 October 2026).

#### Constrained one-intermediate dilution

- **Level:** Checked against a reference
- **How it was checked:** Checked against an exact brute-force grid search (Python 3.11.15) on 13 cases; the plan within one grid step (10 October 2026).

## Serial dilution

Volumes per tube, the transfer and the stock to draw for a fold series, with pipetting flags below 2 µL and the DMSO at every point.

Its result goes through 3 methods. The lowest level among them: Tested, not reference-checked.

Below the top level: Transfers below 2 µL flagged (Tested, not reference-checked).

**Equation**

```text
Tube volume V = R·W·f/(f − 1); transfer V/f, every tube including the last, which keeps V/f over after its wells; stock s = V·C_top/C_stock; solvent fraction at a point = fraction in the stock × C_point/C_stock
```

### Methods

#### Serial dilution plan

- **Level:** Checked against a reference
- **How it was checked:** 2.0.0 makes the last tube like the others; 1.0.0 gave the last point C/(f − 1) instead of C/f. Checked against exact rational arithmetic (Python 3.13.16 fractions) on 10 cases to nine significant figures, each step exactly the fold (10 October 2026).

#### Transfers below 2 µL flagged

- **Level:** Tested, not reference-checked
- **Reference:** Bench convention set by the CSO, 6 October 2026; no external citation read.

#### Final percent DMSO across a series

- **Level:** Checked against a reference
- **How it was checked:** Checked against Python's exact rational arithmetic (fractions.Fraction) to nine significant figures on 31 fixtures (6 October 2026).

## Antibody dilution

Stock and diluent for a working antibody dilution by concentration or a stated 1:n ratio, for a batch of vessels with your overage and dead volume.

Its result goes through 3 methods. The lowest level among them: Checked against a reference.

### Methods

#### Antibody working dilution by C1V1 or a stated 1:n ratio, for a batch with chosen allowances

- **Level:** Checked against a reference
- **Reference:** C1V1 = C2V2; 1:n is one part stock in n total parts (Abcam antibody dilution calculator, read 10 October 2026); batch = N × V × (1 + overage) + dead volume, the master-mix allowance rule. The intermediate path uses the constrained one-intermediate planner.
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions) on 20 cases (10 without and 10 with batch allowances), six of them refusals, to nine significant figures; the intermediate path against the brute-force grid of the intermediate-dilution set (10 October 2026).

#### Dilution by C1V1 = C2V2

- **Level:** Checked against a reference
- **How it was checked:** Checked against Python's exact rational arithmetic (fractions.Fraction) to nine significant figures on 31 fixtures (6 October 2026).

#### Constrained one-intermediate dilution

- **Level:** Checked against a reference
- **How it was checked:** Checked against an exact brute-force grid search (Python 3.11.15) on 13 cases; the plan within one grid step (10 October 2026).

## Master mix

Per-reaction and total volumes for a shared master mix and per-well additions, with overage and the extra dead volume of your mix vessel.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

**Equation**

```text
M = final reaction volume − separate additions; B = N·M·(1 + extra%/100) + dead volume. Shared additions scale by B/M; separate additions by N. V_stock = C_final·V_final/C_stock.
```

### Methods

#### Master mix preparation

- **Level:** Checked against a reference
- **Reference:** Volume balance and C1V1 = C2V2; protocol-specific overage and user-supplied single-vessel dead volume. Thermo Fisher MAN0025706 B pp. 12–13; INTEGRA dead-volume technical note, read 9 October 2026.
- **How it was checked:** Checked against exact rational volume balance (Python 3.11.15) on 14 cases to nine significant figures (10 October 2026).

## A280 and A260

Concentration from an absorbance reading with ε280 and the molecular weight computed from the sequence by the Pace method.

Its result goes through 5 methods. The lowest level among them: Checked against a reference.

**Equation**

```text
ε280 = 5,500·nTrp + 1,490·nTyr + 125·n(cystine); c = A/(ε·l); mg/mL = c·MW
```

### Methods

#### Molar extinction coefficient at 280 nm

- **Level:** Checked against a reference
- **Reference:** Pace CN, Vajdos F, Fee L, Grimsley G, Gray T. How to measure and predict the molar absorption coefficient of a protein. Protein Sci 1995;4:2411-2423 (read 5 October 2026). [doi:10.1002/pro.5560041120](https://doi.org/10.1002/pro.5560041120)
- **How it was checked:** Checked against Biopython 1.85 ProtParam exactly on 22 sequences (6 October 2026); Biopython agrees with recorded ExPASy ProtParam outputs on 9 of them.

#### Average molecular weight from the sequence

- **Level:** Checked against a reference
- **Reference:** ExPASy ProtParam (Gasteiger et al. 2005); the fixtures are ProtParam's printed weights, retrieved 5 October 2026.
- **How it was checked:** Checked against recorded ExPASy ProtParam outputs within 0.02 Da on 9 UniProt sequences (5 October 2026), the protein app's own fixtures.

#### Protein concentration from A280

- **Level:** Checked against a reference
- **Reference:** Beer-Lambert law with the Pace 1995 ε280.
- **How it was checked:** Checked against exact rational arithmetic (Python fractions, 3.13.16) on 14 cases, ten of them refusals, with ε280 and the molar mass as inputs; tolerance relative 1e-9, refusals exact; 17 October 2026. ε280 is checked against Biopython 1.85 ProtParam exactly on 22 sequences (6 October 2026).

#### Nucleic acid concentration from A260 (rules of thumb)

- **Level:** Checked against a reference
- **Reference:** Rules of thumb, not measurements: 50 (dsDNA) and 40 (RNA) µg/mL per A260 unit as printed by Thermo Fisher (read 6 October 2026); 33 for ssDNA, the convention NanoDrop instruments apply (Thermo Fisher NanoDrop One FAQ and technical note MCS-TN1315-EN, read 17 October 2026), from ε260 10 mM⁻¹ cm⁻¹ per nucleotide (Cavaluzzi and Borer 2004, Nucleic Acids Res 32:e13, who measured 38 for non-repetitive ssDNA).
- **How it was checked:** Checked against exact rational arithmetic (Python fractions, 3.13.16) on 19 cases, seven of them refusals; tolerance relative 1e-9, refusals exact; 17 October 2026. The factors are conventions transcribed from Thermo Fisher and Cavaluzzi and Borer 2004, not measurements. Dilution is applied before the engine is called.

#### A260/A280 ratio (an observation)

- **Level:** Checked against a reference
- **Reference:** The ratio of the two readings, shown as an observation, not a purity measurement; refused when either reading is not finite and above zero (SCI-149).
- **How it was checked:** Checked against exact rational arithmetic (Python fractions, 3.13.16) on 10 cases, eight of them refusals; tolerance relative 1e-9, refusals exact; 17 October 2026. An observation, not a purity measurement.

## Cell seeding and splitting

Suspension and medium per vessel from a measured density and viability, with the counting dilution applied once, area or volume targets and a 1:n split.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

### Methods

#### Cell seeding from a measured density, and 1:n splitting

- **Level:** Checked against a reference
- **Reference:** Viable density from total density and viability, counting dilution applied once; stock per vessel = target / viable density (Thermo Fisher Gibco cell culture basics, maintaining cultured cells; read 10 October 2026).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions) on 13 cases, five of them refusals, to nine significant figures; refusals exact (10 October 2026).

## Cell counting and viability

Masses or stock volumes for every component of a solution and, with the buffer section, the pH to set at make-up temperature so it reads the target at use temperature.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

### Methods

#### Cell counting and viability from counted chamber volume

- **Level:** Checked against a reference
- **Reference:** Volume-weighted pooling across counted regions: density = (Σ counts) × dilution / (Σ volumes); viability = 100 × Σ live / (Σ live + Σ dead) (Contract 10; Thermo Fisher haemocytometer counting reference).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.9.6 fractions) from stored reference values on 28 cases, 15 of them refusals, plus 6 receipt-integrity cases; tolerance relative 1e-9, refusals exact (18 October 2026). The receipt reader is checked against stored reference values (0.9.0) on its 25 cell-counting receipts, 11 of them refused (20 October 2026).

## Cells from OD600 (estimate)

An estimate of cells, CFU or microsphere equivalents per mL from an OD600 reading and your own calibrated factor; no factor is built in.

Its result goes through 2 methods. The lowest level among them: Tested, not reference-checked.

Below the top level: OD600 estimate from your paired OD and count data (Tested, not reference-checked).

### Methods

#### Cells from OD600, an estimate from your own calibration factor

- **Level:** Checked against a reference
- **Reference:** Estimate per mL = (OD − blank) × dilution × k, with k, its basis and its calibrated range supplied by you; no default factor (Beal et al. 2020, doi:10.1038/s42003-020-01127-5; Stevenson et al. 2016, doi:10.1038/srep38828).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions) on 14 cases, 9 of them refusals, to nine significant figures; refusals exact (10 October 2026). Every factor in the cases is a stated example of a person's own calibration.

#### OD600 estimate from your paired OD and count data

- **Level:** Tested, not reference-checked
- **Reference:** Positive-slope linear standard curve of mean OD600 on counted density with a free intercept; interpolation only within measured densities. Stevenson et al. 2016, doi:10.1038/srep38828; scientific audit CALC-01, 11 October 2026.
- **How it was checked:** One hand case and the refusals; the linear calibration engine beneath is verified against stored reference values (10 October 2026).

## Dose per cell

Masses or stock volumes for every component of a solution and, with the buffer section, the pH to set at make-up temperature so it reads the target at use temperature.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

### Methods

#### Dose per cell quantity and stock volume calculation

- **Level:** Checked against a reference
- **Reference:** Quantity = cell count × dose per cell; stock volume = quantity / titre (Contract 10; Lock et al. 2010 for distinct vector quantity bases).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.9.6 fractions) from stored reference values on 35 cases, 23 of them refusals, plus 7 receipt-integrity cases; tolerance relative 1e-9, refusals exact (18 October 2026). The receipt reader is checked against stored reference values (0.9.0) on its 24 dose-plan receipts, 12 of them refused (20 October 2026).

## RCF and RPM

Relative centrifugal force from rotor speed and radius, or the speed for a force, with the radius convention stated and the published rounded coefficient.

Its result goes through 1 method. The lowest level among them: Checked against a reference.

### Methods

#### Centrifugal force from rotor speed and radius

- **Level:** Checked against a reference
- **Reference:** RCF = 1.118 × 10⁻⁵ × r(cm) × RPM², the published rounded coefficient (Thermo Fisher TR0040.1, read 10 October 2026).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions and decimal) on 10 cases, three of them refusals, to nine significant figures; the rounded coefficient is within 0.03% of (2π/60)²/gₙ (10 October 2026).

## Unit converter

Exact unit conversions within one quantity, Celsius and kelvin, and molar to mass units through the formula weight you supply.

It has a page of its own: [Unit converter](https://www.drybench.com/calculators/unit-converter).

Its result goes through 2 methods. The lowest level among them: Checked against a reference.

### Methods

#### Unit conversion within one quantity, with molar bridges through a supplied formula weight

- **Level:** Checked against a reference
- **Reference:** SI prefixes and the litre (BIPM SI Brochure, 9th edition, 2019, Tables 7 and 8); the dalton read as g/mol by the biochemical convention.
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions) with factors from the BIPM SI Brochure, 9th edition, on 44 cases, 16 of them refusals: prefix changes exactly as decimal strings, molar bridges to nine significant figures (10 October 2026).

#### Celsius and kelvin by the exact offset

- **Level:** Checked against a reference
- **Reference:** t/°C = T/K − 273.15 (BIPM SI Brochure, 9th edition, 2019, §2.3.1).
- **How it was checked:** Checked against exact rational arithmetic (Python 3.13.16 fractions) on 5 conversions and 2 refusals below absolute zero, exactly as decimal strings (10 October 2026).

## Data sources

- [IUPAC CIAAW standard atomic weights 2021](https://www.ciaaw.org/atomic-weights.htm): Values cited from the published table
- [Goldberg, Kishore and Lennen 2002, buffer ionisation thermodynamics](https://doi.org/10.1063/1.1416902): Values cited from the published table
- [Pace et al. 1995, molar absorption coefficients](https://doi.org/10.1002/pro.5560041120): Method (cited)
- [A260 conversion conventions (Thermo Fisher; Cavaluzzi and Borer 2004)](https://www.thermofisher.com/order/catalog/product/ND-ONE-W/faqs): Values cited from the published pages
- [ExPASy ProtParam residue masses and pK values](https://web.expasy.org/protparam/protparam-doc.html): Values cited from the documentation
- [PubChem (NCBI)](https://pubchem.ncbi.nlm.nih.gov/): No NCBI restrictions; depositor terms may apply
- [uqr 0.1.3](https://github.com/unjs/uqr): MIT
- [NIH Global Substance Registration System](https://gsrs.ncats.nih.gov/ginas/app/ui/substances/NOP2Y096GV): Cited public substance identity facts

## Limits

> Not medical advice. Nothing here is advice about any medicine, treatment or condition, and nothing here is an assessment of any person's variant, sample or molecule. Decisions made with it are yours.

- For research and education only, and not medical advice: the stock, dilution and buffer calculations here are not for dosing or clinical preparation.
- Formula weights use the IUPAC 2021 conventional atomic weights, so a vendor label may differ in the third decimal; a weight typed from the vial or a certificate of analysis overrides every computed value.
- pKa values are thermodynamic values at zero ionic strength from Goldberg et al. 2002; ionic strength and buffer concentration shift the working pKa and are not applied here, so a buffer's final pH is for a meter to confirm.
- ε280 is the Pace et al. 1995 estimate for a folded protein in water; the measured value can differ by several percent, and a tag changes it, so the sheet computes the tagged construct when you give it.
- The A260 conversions (50 µg/mL per unit for double-stranded DNA, 40 for RNA, 33 for single-stranded DNA) are rules of thumb; an oligonucleotide's ε260 by nearest neighbour is not computed here.
- The 2 µL pipetting flag and the 0.5 percent DMSO flag are bench rules of thumb, not instrument specifications.
- The reagent table holds 75 common reagents as single compounds; mixtures such as kanamycin lots, polymers such as Triton X-100 and proteins such as albumin have no single formula weight and are not in it.
- No offline use: the pages are served by the site, and nothing is installed.
- A link keeps the inputs after the # of the address; it is not sent to a server, but it does stay in browser history and in any chat the link is pasted into.
- A compound record that arrives from another app carries that app's formula weight as reported; the weight shown here is recomputed from its formula with the CIAAW 2021 table, and the two can differ in the second decimal.
- The serial-dilution planner assumes each tube is made in one step from the tube before it and that the diluent carries no solvent of its own. Every tube, the last included, is made to the same volume with the same transfer, so the last keeps one transfer's volume over. Serial dilution 1.0.0: last point under-diluted by f/(f − 1); any plan printed from 1.0.0 is affected.
- The plate preparation sheet gives planned volumes and concentrations, not measured ones; volumes are treated as additive, dead volume is charged once per source and the overage in bulk unless you choose otherwise. Repeated wells share a stock; they are not independent replicates.
- RCF and RPM convert with the published rounded coefficient 1.118 × 10⁻⁵ and the radius you supply; no centrifugation time, rotor model or rotor limit is supplied or certified.
- Percent solutions need an explicit basis (w/v, w/w or laboratory v/v); no density is assumed, so no basis converts to another or to molarity.
- Cell seeding uses the density, viability and targets you supply; it recommends no density, predicts no growth or confluence, and a 1:n split predicts nothing.
- Antibody dilutions use the stock and target, or the 1:n ratio, that you or your datasheet supply; no dilution is recommended and specificity is not predicted.
- Buffer setpoints correct the pK for temperature only (Goldberg et al. 2002, zero ionic strength), for the 15 buffers transcribed twice, between 274 and 350 K; ionic strength, other solutes and titrant amounts are not modelled.
- OD600 estimates use only the factor you supply with its basis, source and calibrated range; readings outside that range are refused, and an estimate is never a count or a viable count.
- The unit converter scales within one quantity and converts molar to mass units only through the formula weight you supply for the exact form; it offers no conversion that needs a density, and reads Da as g/mol.
