{
 "about": "Expected values for the dilution module's unit tests, worked exactly with Python's fractions.Fraction (rational arithmetic) and written as decimal strings; display values rounded half up once. Not produced by the engine under test.",
 "oracle": {
  "name": "Python fractions and decimal",
  "version": "3.11.15",
  "script": "pipeline/lab-calculators/reference.py",
  "command": "python pipeline/lab-calculators/reference.py dilution"
 },
 "constants": {
  "pipetteMinimumL": "0.000002",
  "dmsoWarnFraction": "0.005",
  "source": "Bench convention set by the CSO, 6 October 2026"
 },
 "recordedOn": "2026-10-06",
 "count": 31,
 "cases": [
  {
   "id": "mass-nacl-150mm",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "58.44",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "150",
     "unit": "mM"
    },
    "volume": {
     "value": "1",
     "unit": "L"
    }
   },
   "expected": {
    "mass": {
     "value": "8.766",
     "unit": "g"
    },
    "massMg": {
     "value": "8766",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "8.766",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "8.77"
   },
   "note": "NaCl 150 mM in 1 L"
  },
  {
   "id": "mass-imatinib-mesylate-10mm",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "589.715",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "10",
     "unit": "mM"
    },
    "volume": {
     "value": "1",
     "unit": "mL"
    }
   },
   "expected": {
    "mass": {
     "value": "0.00589715",
     "unit": "g"
    },
    "massMg": {
     "value": "5.89715",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "5.89715",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "5.90"
   },
   "note": "imatinib mesylate 10 mM in 1 mL, FW CIAAW 2021"
  },
  {
   "id": "mass-erlotinib-hydrochloride-5mm",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "429.901",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "5",
     "unit": "mM"
    },
    "volume": {
     "value": "2",
     "unit": "mL"
    }
   },
   "expected": {
    "mass": {
     "value": "0.00429901",
     "unit": "g"
    },
    "massMg": {
     "value": "4.29901",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "2.149505",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "2.15"
   },
   "note": "erlotinib hydrochloride 5 mM in 2 mL, FW CIAAW 2021: the guided walk's stock (the CSO, 6 October 2026: below every DMSO solubility listed for the salt)"
  },
  {
   "id": "mass-tris-1m",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "121.135",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "1",
     "unit": "M"
    },
    "volume": {
     "value": "500",
     "unit": "mL"
    }
   },
   "expected": {
    "mass": {
     "value": "60.5675",
     "unit": "g"
    },
    "massMg": {
     "value": "60567.5",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "121.135",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "121.14"
   },
   "note": "Tris base 1 M in 500 mL"
  },
  {
   "id": "mass-hepes-20mm",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "238.301",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "20",
     "unit": "mM"
    },
    "volume": {
     "value": "250",
     "unit": "mL"
    }
   },
   "expected": {
    "mass": {
     "value": "1.191505",
     "unit": "g"
    },
    "massMg": {
     "value": "1191.505",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "4.76602",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "4.77"
   },
   "note": "HEPES 20 mM in 250 mL"
  },
  {
   "id": "mass-glucose-5um",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "180.156",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "5",
     "unit": "µM"
    },
    "volume": {
     "value": "10",
     "unit": "mL"
    }
   },
   "expected": {
    "mass": {
     "value": "0.0000090078",
     "unit": "g"
    },
    "massMg": {
     "value": "0.0090078",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "0.00090078",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "0.00"
   },
   "note": "glucose 5 µM in 10 mL, a sub-milligram mass"
  },
  {
   "id": "mass-edta-500mm",
   "method": "mass-for-molarity",
   "input": {
    "formulaWeight": {
     "value": "372.236",
     "unit": "g/mol"
    },
    "concentration": {
     "value": "500",
     "unit": "mM"
    },
    "volume": {
     "value": "100",
     "unit": "mL"
    }
   },
   "expected": {
    "mass": {
     "value": "18.6118",
     "unit": "g"
    },
    "massMg": {
     "value": "18611.8",
     "unit": "mg"
    },
    "massPerVolume": {
     "value": "186.118",
     "unit": "mg/mL"
    },
    "massPerVolumeDisplay": "186.12"
   },
   "note": "Na2EDTA·2H2O 0.5 M in 100 mL"
  },
  {
   "id": "conc-weighed-imatinib-mesylate",
   "method": "molarity-from-mass",
   "input": {
    "mass": {
     "value": "11.37",
     "unit": "mg"
    },
    "formulaWeight": {
     "value": "589.715",
     "unit": "g/mol"
    },
    "volume": {
     "value": "1.93",
     "unit": "mL"
    }
   },
   "expected": {
    "concentration": {
     "value": "0.009989896322536410953583049403991099766775",
     "unit": "mol/L"
    },
    "concentrationMm": {
     "value": "9.989896322536410953583049403991099766775",
     "unit": "mM"
    }
   },
   "note": "11.37 mg imatinib mesylate in 1.93 mL"
  },
  {
   "id": "conc-weighed-bsa",
   "method": "molarity-from-mass",
   "input": {
    "mass": {
     "value": "25",
     "unit": "mg"
    },
    "formulaWeight": {
     "value": "66.430",
     "unit": "kDa"
    },
    "volume": {
     "value": "5",
     "unit": "mL"
    }
   },
   "expected": {
    "concentration": {
     "value": "0.00007526719855486978774650007526719855486979",
     "unit": "mol/L"
    },
    "concentrationMm": {
     "value": "0.07526719855486978774650007526719855486979",
     "unit": "mM"
    }
   },
   "note": "25 mg BSA in 5 mL with a kDa molar mass"
  },
  {
   "id": "conc-weighed-dtt",
   "method": "molarity-from-mass",
   "input": {
    "mass": {
     "value": "154.3",
     "unit": "mg"
    },
    "formulaWeight": {
     "value": "154.25",
     "unit": "g/mol"
    },
    "volume": {
     "value": "10",
     "unit": "mL"
    }
   },
   "expected": {
    "concentration": {
     "value": "0.1000324149108589951377633711507293354943",
     "unit": "mol/L"
    },
    "concentrationMm": {
     "value": "100.0324149108589951377633711507293354943",
     "unit": "mM"
    }
   },
   "note": "DTT 154.3 mg in 10 mL, about 100 mM"
  },
  {
   "id": "volume-for-mass-imatinib-mesylate",
   "method": "volume-for-mass",
   "input": {
    "mass": {
     "value": "11.37",
     "unit": "mg"
    },
    "concentration": {
     "value": "10",
     "unit": "mM"
    },
    "formulaWeight": {
     "value": "589.715",
     "unit": "g/mol"
    }
   },
   "expected": {
    "volume": {
     "value": "0.001928049990249527314041528534970282254988",
     "unit": "L"
    },
    "volumeMl": {
     "value": "1.928049990249527314041528534970282254988",
     "unit": "mL"
    },
    "volumeMlDisplay": "1.928"
   },
   "note": "the brief's 11.37 mg of imatinib mesylate for exactly 10 mM"
  },
  {
   "id": "volume-for-mass-staurosporine",
   "method": "volume-for-mass",
   "input": {
    "mass": {
     "value": "1.00",
     "unit": "mg"
    },
    "concentration": {
     "value": "1",
     "unit": "mM"
    },
    "formulaWeight": {
     "value": "466.541",
     "unit": "g/mol"
    }
   },
   "expected": {
    "volume": {
     "value": "0.002143434339104173052314801914515551687847",
     "unit": "L"
    },
    "volumeMl": {
     "value": "2.143434339104173052314801914515551687847",
     "unit": "mL"
    },
    "volumeMlDisplay": "2.143"
   },
   "note": "1.00 mg staurosporine for 1 mM"
  },
  {
   "id": "volume-for-mass-small",
   "method": "volume-for-mass",
   "input": {
    "mass": {
     "value": "0.25",
     "unit": "mg"
    },
    "concentration": {
     "value": "50",
     "unit": "µM"
    },
    "formulaWeight": {
     "value": "350.0",
     "unit": "g/mol"
    }
   },
   "expected": {
    "volume": {
     "value": "0.01428571428571428571428571428571428571429",
     "unit": "L"
    },
    "volumeMl": {
     "value": "14.28571428571428571428571428571428571429",
     "unit": "mL"
    },
    "volumeMlDisplay": "14.286"
   },
   "note": "0.25 mg of a 350 g/mol compound for 50 µM, a large volume"
  },
  {
   "id": "c1v1-10mm-to-50um",
   "method": "c1v1",
   "input": {
    "stock": {
     "value": "10",
     "unit": "mM"
    },
    "final": {
     "value": "50",
     "unit": "µM"
    },
    "finalVolume": {
     "value": "200",
     "unit": "µL"
    }
   },
   "expected": {
    "stockVolume": {
     "value": "0.000001",
     "unit": "L"
    },
    "stockVolumeUl": {
     "value": "1",
     "unit": "µL"
    },
    "diluentVolume": {
     "value": "0.000199",
     "unit": "L"
    }
   },
   "note": "10 mM stock to 50 µM in 200 µL"
  },
  {
   "id": "c1v1-1m-to-150mm",
   "method": "c1v1",
   "input": {
    "stock": {
     "value": "1",
     "unit": "M"
    },
    "final": {
     "value": "150",
     "unit": "mM"
    },
    "finalVolume": {
     "value": "50",
     "unit": "mL"
    }
   },
   "expected": {
    "stockVolume": {
     "value": "0.0075",
     "unit": "L"
    },
    "stockVolumeUl": {
     "value": "7500",
     "unit": "µL"
    },
    "diluentVolume": {
     "value": "0.0425",
     "unit": "L"
    }
   },
   "note": "1 M to 150 mM in 50 mL"
  },
  {
   "id": "c1v1-ng-ul-to-nm",
   "method": "c1v1",
   "input": {
    "stock": {
     "value": "50",
     "unit": "ng/µL"
    },
    "final": {
     "value": "100",
     "unit": "nM"
    },
    "finalVolume": {
     "value": "1",
     "unit": "mL"
    },
    "molarMass": {
     "value": "25",
     "unit": "kDa"
    }
   },
   "expected": {
    "stockVolume": {
     "value": "0.00005",
     "unit": "L"
    },
    "stockVolumeUl": {
     "value": "50",
     "unit": "µL"
    },
    "diluentVolume": {
     "value": "0.00095",
     "unit": "L"
    }
   },
   "note": "ng/µL of a 25 kDa protein to nM: 50 ng/µL is 2 µM, so 100 nM in 1 mL needs 50 µL"
  },
  {
   "id": "c1v1-percent-wv-to-m",
   "method": "c1v1",
   "input": {
    "stock": {
     "value": "10",
     "unit": "%w/v"
    },
    "final": {
     "value": "150",
     "unit": "mM"
    },
    "finalVolume": {
     "value": "1",
     "unit": "L"
    },
    "formulaWeight": {
     "value": "58.44",
     "unit": "g/mol"
    }
   },
   "expected": {
    "stockVolume": {
     "value": "0.08766",
     "unit": "L"
    },
    "stockVolumeUl": {
     "value": "87660",
     "unit": "µL"
    },
    "diluentVolume": {
     "value": "0.91234",
     "unit": "L"
    }
   },
   "note": "10 percent w/v NaCl (100 g/L, 1.7111 M) to 150 mM in 1 L"
  },
  {
   "id": "c1v1-stock-weaker",
   "method": "c1v1",
   "input": {
    "stock": {
     "value": "10",
     "unit": "µM"
    },
    "final": {
     "value": "50",
     "unit": "µM"
    },
    "finalVolume": {
     "value": "1",
     "unit": "mL"
    }
   },
   "expected": {
    "problem": "stock-weaker-than-final"
   },
   "note": "a stock weaker than the final concentration: refused"
  },
  {
   "id": "stock-mass-purity-98",
   "method": "mass-for-stock-with-purity",
   "input": {
    "concentration": {
     "value": "10",
     "unit": "mM"
    },
    "volume": {
     "value": "1",
     "unit": "mL"
    },
    "formulaWeight": {
     "value": "589.715",
     "unit": "g/mol"
    },
    "purity": "0.98"
   },
   "expected": {
    "mass": {
     "value": "0.0060175",
     "unit": "g"
    },
    "massMgDisplay": "6.02"
   },
   "note": "imatinib mesylate at 98 percent purity"
  },
  {
   "id": "stock-mass-purity-100",
   "method": "mass-for-stock-with-purity",
   "input": {
    "concentration": {
     "value": "10",
     "unit": "mM"
    },
    "volume": {
     "value": "1",
     "unit": "mL"
    },
    "formulaWeight": {
     "value": "589.715",
     "unit": "g/mol"
    },
    "purity": "1"
   },
   "expected": {
    "mass": {
     "value": "0.00589715",
     "unit": "g"
    },
    "massMgDisplay": "5.90"
   },
   "note": "the same at 100 percent"
  },
  {
   "id": "stock-mass-purity-95-hydrate",
   "method": "mass-for-stock-with-purity",
   "input": {
    "concentration": {
     "value": "100",
     "unit": "mM"
    },
    "volume": {
     "value": "50",
     "unit": "mL"
    },
    "formulaWeight": {
     "value": "147.014",
     "unit": "g/mol"
    },
    "purity": "0.95"
   },
   "expected": {
    "mass": {
     "value": "0.7737578947368421052631578947368421052632",
     "unit": "g"
    },
    "massMgDisplay": "773.76"
   },
   "note": "CaCl2·2H2O at 95 percent"
  },
  {
   "id": "parent-equivalent-imatinib-mesylate",
   "method": "parent-equivalent",
   "input": {
    "mass": {
     "value": "11.37",
     "unit": "mg"
    },
    "parentWeight": {
     "value": "493.615",
     "unit": "g/mol"
    },
    "formulaWeight": {
     "value": "589.715",
     "unit": "g/mol"
    }
   },
   "expected": {
    "fraction": {
     "value": "0.837040"
    },
    "shortfallPercent": {
     "value": "16.296"
    },
    "parentMass": {
     "value": "0.009517143959370204251206091077893558752957",
     "unit": "g"
    },
    "parentMassMgDisplay": "9.52",
    "counterIonMass": {
     "value": "96.1",
     "unit": "g/mol"
    }
   },
   "note": "the brief's case: weighing the parent mass of imatinib for its mesylate falls short by about 16 percent (16.296)"
  },
  {
   "id": "serial-3-fold-8-points",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "100",
     "unit": "µM"
    },
    "fold": "3",
    "points": 8,
    "replicates": 3,
    "wellVolume": {
     "value": "50",
     "unit": "µL"
    },
    "stock": {
     "value": "10",
     "unit": "mM"
    },
    "stockSolventFraction": "1"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.000225",
     "unit": "L"
    },
    "transfer": {
     "value": "0.000075",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.00015",
     "unit": "L"
    },
    "stockVolume": {
     "value": "0.00000225",
     "unit": "L"
    },
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.0001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00000225",
       "unit": "L"
      },
      "solventFraction": "0.01"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.00003333333333333333333333333333333333333333",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.003333333333333333333333333333333333333333"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.00001111111111111111111111111111111111111111",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.001111111111111111111111111111111111111111"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.000003703703703703703703703703703703703703704",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.0003703703703703703703703703703703703703704"
     },
     {
      "index": 4,
      "concentration": {
       "value": "0.000001234567901234567901234567901234567901235",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.0001234567901234567901234567901234567901235"
     },
     {
      "index": 5,
      "concentration": {
       "value": "0.0000004115226337448559670781893004115226337449",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.00004115226337448559670781893004115226337449"
     },
     {
      "index": 6,
      "concentration": {
       "value": "0.0000001371742112482853223593964334705075445816",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000225",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.00001371742112482853223593964334705075445816"
     },
     {
      "index": 7,
      "concentration": {
       "value": "0.00000004572473708276177411979881115683584819387",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00015",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000075",
       "unit": "L"
      },
      "solventFraction": "0.000004572473708276177411979881115683584819387"
     }
    ],
    "flags": [
     {
      "kind": "solvent-above-threshold",
      "step": 0
     }
    ]
   },
   "note": "a 3-fold series from 100 µM, 8 points, triplicate 50 µL wells, a 10 mM stock in neat DMSO: 1 percent DMSO at the top"
  },
  {
   "id": "serial-4-fold-8-points-10um",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "10",
     "unit": "µM"
    },
    "fold": "4",
    "points": 8,
    "replicates": 3,
    "wellVolume": {
     "value": "50",
     "unit": "µL"
    },
    "stock": {
     "value": "5",
     "unit": "mM"
    },
    "stockSolventFraction": "1"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.0002",
     "unit": "L"
    },
    "transfer": {
     "value": "0.00005",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.00015",
     "unit": "L"
    },
    "stockVolume": {
     "value": "0.0000004",
     "unit": "L"
    },
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.00001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0000004",
       "unit": "L"
      },
      "solventFraction": "0.002"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.0000025",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.0005"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.000000625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.000125"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.00000015625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.00003125"
     },
     {
      "index": 4,
      "concentration": {
       "value": "0.0000000390625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.0000078125"
     },
     {
      "index": 5,
      "concentration": {
       "value": "0.000000009765625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.000001953125"
     },
     {
      "index": 6,
      "concentration": {
       "value": "0.00000000244140625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.00000048828125"
     },
     {
      "index": 7,
      "concentration": {
       "value": "0.0000000006103515625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00015",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0.0000001220703125"
     }
    ],
    "flags": [
     {
      "kind": "transfer-below-minimum",
      "step": 0
     }
    ]
   },
   "note": "the guided walk's series: 4-fold from 10 µM, 8 points, triplicate 50 µL wells, a 5 mM stock in neat DMSO: 0.2 percent DMSO at the top, and a 0.4 µL stock transfer, below the 2 µL minimum (the CSO, 6 October 2026)"
  },
  {
   "id": "serial-2-fold-12-points",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "1",
     "unit": "mM"
    },
    "fold": "2",
    "points": 12,
    "replicates": 2,
    "wellVolume": {
     "value": "100",
     "unit": "µL"
    },
    "stock": {
     "value": "100",
     "unit": "mM"
    },
    "stockSolventFraction": "1"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.0004",
     "unit": "L"
    },
    "transfer": {
     "value": "0.0002",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.0002",
     "unit": "L"
    },
    "stockVolume": {
     "value": "0.000004",
     "unit": "L"
    },
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000004",
       "unit": "L"
      },
      "solventFraction": "0.01"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.0005",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.005"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.00025",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.0025"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.000125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.00125"
     },
     {
      "index": 4,
      "concentration": {
       "value": "0.0000625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.000625"
     },
     {
      "index": 5,
      "concentration": {
       "value": "0.00003125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.0003125"
     },
     {
      "index": 6,
      "concentration": {
       "value": "0.000015625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.00015625"
     },
     {
      "index": 7,
      "concentration": {
       "value": "0.0000078125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.000078125"
     },
     {
      "index": 8,
      "concentration": {
       "value": "0.00000390625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.0000390625"
     },
     {
      "index": 9,
      "concentration": {
       "value": "0.000001953125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.00001953125"
     },
     {
      "index": 10,
      "concentration": {
       "value": "0.0000009765625",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.000009765625"
     },
     {
      "index": 11,
      "concentration": {
       "value": "0.00000048828125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0002",
       "unit": "L"
      },
      "solventFraction": "0.0000048828125"
     }
    ],
    "flags": [
     {
      "kind": "solvent-above-threshold",
      "step": 0
     }
    ]
   },
   "note": "a 2-fold series, 12 points, duplicate 100 µL wells"
  },
  {
   "id": "serial-root-10",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "10",
     "unit": "µM"
    },
    "fold": "3.1622776601683795",
    "points": 6,
    "replicates": 3,
    "wellVolume": {
     "value": "20",
     "unit": "µL"
    },
    "stock": {
     "value": "1",
     "unit": "mM"
    },
    "stockSolventFraction": "1"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.00008774851773445586005736709572787731484258",
     "unit": "L"
    },
    "transfer": {
     "value": "0.00002774851773445586005736709572787731484258",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.00006",
     "unit": "L"
    },
    "stockVolume": {
     "value": "0.0000008774851773445586005736709572787731484258",
     "unit": "L"
    },
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.00001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00008774851773445586005736709572787731484258",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0000008774851773445586005736709572787731484258",
       "unit": "L"
      },
      "solventFraction": "0.01"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.000003162277660168379163997787088865445992769",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00008774851773445586005736709572787731484258",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00002774851773445586005736709572787731484258",
       "unit": "L"
      },
      "solventFraction": "0.003162277660168379163997787088865445992769"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.0000009999999999999998937467708343979862897487",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00008774851773445586005736709572787731484258",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00002774851773445586005736709572787731484258",
       "unit": "L"
      },
      "solventFraction": "0.0009999999999999998937467708343979862897487"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.0000003162277660168378827995574177730927686858",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00008774851773445586005736709572787731484258",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00002774851773445586005736709572787731484258",
       "unit": "L"
      },
      "solventFraction": "0.0003162277660168378827995574177730927686858"
     },
     {
      "index": 4,
      "concentration": {
       "value": "0.00000009999999999999997874935416687959838692461",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00008774851773445586005736709572787731484258",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00002774851773445586005736709572787731484258",
       "unit": "L"
      },
      "solventFraction": "0.00009999999999999997874935416687959838692461"
     },
     {
      "index": 5,
      "concentration": {
       "value": "0.00000003162277660168378491993361266596445082268",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00006",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00002774851773445586005736709572787731484258",
       "unit": "L"
      },
      "solventFraction": "0.00003162277660168378491993361266596445082268"
     }
    ],
    "flags": [
     {
      "kind": "transfer-below-minimum",
      "step": 0
     },
     {
      "kind": "solvent-above-threshold",
      "step": 0
     }
    ]
   },
   "note": "a √10-fold series (the fold as the engine takes it, a double)"
  },
  {
   "id": "serial-transfer-at-minimum",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "100",
     "unit": "µM"
    },
    "fold": "2",
    "points": 4,
    "replicates": 1,
    "wellVolume": {
     "value": "2",
     "unit": "µL"
    },
    "stock": {
     "value": "200",
     "unit": "µM"
    },
    "stockSolventFraction": "0"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.000004",
     "unit": "L"
    },
    "transfer": {
     "value": "0.000002",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.000002",
     "unit": "L"
    },
    "stockVolume": {
     "value": "0.000002",
     "unit": "L"
    },
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.0001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000002",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.00005",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000002",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.000025",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000004",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000002",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.0000125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.000002",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.000002",
       "unit": "L"
      },
      "solventFraction": "0"
     }
    ],
    "flags": []
   },
   "note": "every pipetting step exactly 2 µL (the stock volume V·C_top/C_stock = 4 µL/2 and the transfers R·W/(f − 1) with R = 1, W = 2 µL, f = 2): not flagged"
  },
  {
   "id": "serial-transfer-below-minimum",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "100",
     "unit": "µM"
    },
    "fold": "2",
    "points": 4,
    "replicates": 1,
    "wellVolume": {
     "value": "1.9999",
     "unit": "µL"
    },
    "stock": {
     "value": "200",
     "unit": "µM"
    },
    "stockSolventFraction": "0"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.0000039998",
     "unit": "L"
    },
    "transfer": {
     "value": "0.0000019999",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.0000019999",
     "unit": "L"
    },
    "stockVolume": {
     "value": "0.0000019999",
     "unit": "L"
    },
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.0001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0000039998",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0000019999",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.00005",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0000039998",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0000019999",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.000025",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0000039998",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0000019999",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.0000125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0000019999",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.0000019999",
       "unit": "L"
      },
      "solventFraction": "0"
     }
    ],
    "flags": [
     {
      "kind": "transfer-below-minimum",
      "step": 0
     },
     {
      "kind": "transfer-below-minimum",
      "step": 1
     },
     {
      "kind": "transfer-below-minimum",
      "step": 2
     },
     {
      "kind": "transfer-below-minimum",
      "step": 3
     }
    ]
   },
   "note": "every pipetting step 1.9999 µL: flagged on every tube"
  },
  {
   "id": "serial-stock-weaker-than-top",
   "method": "serial-dilution",
   "input": {
    "top": {
     "value": "100",
     "unit": "µM"
    },
    "fold": "2",
    "points": 4,
    "replicates": 1,
    "wellVolume": {
     "value": "50",
     "unit": "µL"
    },
    "stock": {
     "value": "50",
     "unit": "µM"
    },
    "stockSolventFraction": "0"
   },
   "expected": {
    "tubeVolume": {
     "value": "0.0001",
     "unit": "L"
    },
    "transfer": {
     "value": "0.00005",
     "unit": "L"
    },
    "lastTubeVolume": {
     "value": "0.00005",
     "unit": "L"
    },
    "stockVolume": null,
    "steps": [
     {
      "index": 0,
      "concentration": {
       "value": "0.0001",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0001",
       "unit": "L"
      },
      "transferIn": {
       "value": "0",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 1,
      "concentration": {
       "value": "0.00005",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0001",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 2,
      "concentration": {
       "value": "0.000025",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.0001",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0"
     },
     {
      "index": 3,
      "concentration": {
       "value": "0.0000125",
       "unit": "mol/L"
      },
      "tubeVolume": {
       "value": "0.00005",
       "unit": "L"
      },
      "transferIn": {
       "value": "0.00005",
       "unit": "L"
      },
      "solventFraction": "0"
     }
    ],
    "flags": [
     {
      "kind": "stock-weaker-than-top",
      "step": 0
     }
    ]
   },
   "note": "the stock is weaker than the top: flagged, no stock volume"
  },
  {
   "id": "top-volume-for-minimum-transfer-10um-5mm",
   "method": "top-volume-for-minimum-transfer",
   "input": {
    "top": {
     "value": "10",
     "unit": "µM"
    },
    "stock": {
     "value": "5",
     "unit": "mM"
    },
    "pipetteMinimum": {
     "value": "2",
     "unit": "µL"
    }
   },
   "expected": {
    "volume": {
     "value": "0.001",
     "unit": "L"
    },
    "volumeMlDisplay": "1.000"
   },
   "note": "a 10 µM top point from a 5 mM stock: 1 mL takes the 2 µL minimum"
  },
  {
   "id": "recipe-lysis-buffer",
   "method": "recipe",
   "input": {
    "volume": {
     "value": "500",
     "unit": "mL"
    },
    "components": [
     {
      "name": "Tris",
      "concentration": {
       "value": "50",
       "unit": "mM"
      },
      "formulaWeight": "121.135"
     },
     {
      "name": "NaCl",
      "concentration": {
       "value": "150",
       "unit": "mM"
      },
      "formulaWeight": "58.44"
     },
     {
      "name": "EDTA",
      "concentration": {
       "value": "1",
       "unit": "mM"
      },
      "formulaWeight": "372.236"
     },
     {
      "name": "Triton X-100 (from 10 % w/v)",
      "concentration": {
       "value": "1",
       "unit": "%w/v"
      },
      "stock": {
       "value": "10",
       "unit": "%w/v"
      }
     }
    ]
   },
   "expected": {
    "masses": {
     "Tris": {
      "value": "3.028375",
      "unit": "g"
     },
     "NaCl": {
      "value": "4.383",
      "unit": "g"
     },
     "EDTA": {
      "value": "0.186118",
      "unit": "g"
     }
    },
    "stockVolumes": {
     "Triton X-100 (from 10 % w/v)": {
      "value": "0.05",
      "unit": "L"
     }
    }
   },
   "note": "a four-component buffer: three weighed, one from a 10 percent stock"
  }
 ]
}
