{
 "about": {
  "method": "unit-conversion, temperature-offset",
  "recordedOn": "2026-10-10",
  "script": "pipeline/lab-calculators/unit_converter_reference.py",
  "scriptSha256": "ffa3c989bfa64b8f16478363792e3fe816aceb719e5cf4f4b8596d649ae7e216",
  "source": "BIPM SI Brochure, 9th edition (2019): SI prefixes (Table 7), the litre and the dalton (Table 8), the Celsius temperature (section 2.3.1); the dalton read as g/mol by the biochemical convention, 3.5e-10 relative from the 2019 molar mass constant",
  "tolerances": {
   "prefix and temperature": "exact decimal strings",
   "molar bridges": "within 1e-9 relative",
   "refusals": "exact"
  }
 },
 "oracle": {
  "name": "Python fractions and decimal",
  "version": "3.13.16"
 },
 "count": 44,
 "recordedOn": "2026-10-10",
 "cases": [
  {
   "name": "worked-microlitre-to-litre",
   "about": "1.1 µL is exactly 0.0000011 L",
   "input": {
    "value": "1.1",
    "from": "µL",
    "to": "L"
   },
   "expected": {
    "expect": "exact",
    "value": "0.0000011"
   }
  },
  {
   "name": "worked-37-celsius",
   "about": "37 °C is 310.15 K",
   "input": {
    "value": "37",
    "from": "°C",
    "to": "K"
   },
   "expected": {
    "expect": "exact",
    "value": "310.15"
   }
  },
  {
   "name": "litre-to-microlitre",
   "about": "and back again",
   "input": {
    "value": "0.0000011",
    "from": "L",
    "to": "µL"
   },
   "expected": {
    "expect": "exact",
    "value": "1.1"
   }
  },
  {
   "name": "mass-mg-to-g",
   "about": "250 mg is 0.25 g",
   "input": {
    "value": "250",
    "from": "mg",
    "to": "g"
   },
   "expected": {
    "expect": "exact",
    "value": "0.25"
   }
  },
  {
   "name": "mass-kg-to-ug",
   "about": "0.002 kg is 2,000,000 µg",
   "input": {
    "value": "0.002",
    "from": "kg",
    "to": "µg"
   },
   "expected": {
    "expect": "exact",
    "value": "2000000"
   }
  },
  {
   "name": "volume-nl-to-ml",
   "about": "75 nL is 0.000075 mL",
   "input": {
    "value": "75",
    "from": "nL",
    "to": "mL"
   },
   "expected": {
    "expect": "exact",
    "value": "0.000075"
   }
  },
  {
   "name": "amount-umol-to-fmol",
   "about": "3.5 µmol is 3,500,000,000 fmol",
   "input": {
    "value": "3.5",
    "from": "µmol",
    "to": "fmol"
   },
   "expected": {
    "expect": "exact",
    "value": "3500000000"
   }
  },
  {
   "name": "molarity-mm-to-nm",
   "about": "0.25 mM is 250,000 nM",
   "input": {
    "value": "0.25",
    "from": "mM",
    "to": "nM"
   },
   "expected": {
    "expect": "exact",
    "value": "250000"
   }
  },
  {
   "name": "mass-concentration-ng-ul-to-ug-ml",
   "about": "ng/µL and µg/mL are one unit",
   "input": {
    "value": "12.5",
    "from": "ng/µL",
    "to": "µg/mL"
   },
   "expected": {
    "expect": "exact",
    "value": "12.5"
   }
  },
  {
   "name": "mass-concentration-mg-ml-to-g-l",
   "about": "mg/mL and g/L are one unit",
   "input": {
    "value": "3",
    "from": "mg/mL",
    "to": "g/L"
   },
   "expected": {
    "expect": "exact",
    "value": "3"
   }
  },
  {
   "name": "mass-concentration-ng-ml-to-mg-l",
   "about": "500 ng/mL is 0.0005 mg/L",
   "input": {
    "value": "500",
    "from": "ng/mL",
    "to": "mg/L"
   },
   "expected": {
    "expect": "exact",
    "value": "0.5"
   }
  },
  {
   "name": "molar-mass-kda-to-g-mol",
   "about": "66.5 kDa is 66,500 g/mol by the dalton convention",
   "input": {
    "value": "66.5",
    "from": "kDa",
    "to": "g/mol"
   },
   "expected": {
    "expect": "exact",
    "value": "66500"
   }
  },
  {
   "name": "length-mm-to-cm",
   "about": "70 mm is 7 cm",
   "input": {
    "value": "70",
    "from": "mm",
    "to": "cm"
   },
   "expected": {
    "expect": "exact",
    "value": "7"
   }
  },
  {
   "name": "area-m2-to-cm2",
   "about": "a square unit squares its prefix: 0.0025 m² is 25 cm²",
   "input": {
    "value": "0.0025",
    "from": "m²",
    "to": "cm²"
   },
   "expected": {
    "expect": "exact",
    "value": "25"
   }
  },
  {
   "name": "area-mm2-to-cm2",
   "about": "950 mm² is 9.5 cm²",
   "input": {
    "value": "950",
    "from": "mm²",
    "to": "cm²"
   },
   "expected": {
    "expect": "exact",
    "value": "9.5"
   }
  },
  {
   "name": "cell-density-ml-to-ul",
   "about": "1,500,000 cells/mL is 1,500 cells/µL",
   "input": {
    "value": "1500000",
    "from": "cells/mL",
    "to": "cells/µL"
   },
   "expected": {
    "expect": "exact",
    "value": "1500"
   }
  },
  {
   "name": "cell-surface-mm2-to-cm2",
   "about": "200 cells/mm² is 20,000 cells/cm²",
   "input": {
    "value": "200",
    "from": "cells/mm²",
    "to": "cells/cm²"
   },
   "expected": {
    "expect": "exact",
    "value": "20000"
   }
  },
  {
   "name": "absorbance-mau-to-au",
   "about": "120 mAU is 0.12 AU",
   "input": {
    "value": "120",
    "from": "mAU",
    "to": "AU"
   },
   "expected": {
    "expect": "exact",
    "value": "0.12"
   }
  },
  {
   "name": "zero-stays-zero",
   "about": "zero converts to zero",
   "input": {
    "value": "0",
    "from": "mL",
    "to": "µL"
   },
   "expected": {
    "expect": "exact",
    "value": "0"
   }
  },
  {
   "name": "kelvin-to-celsius",
   "about": "310.15 K is 37 °C",
   "input": {
    "value": "310.15",
    "from": "K",
    "to": "°C"
   },
   "expected": {
    "expect": "exact",
    "value": "37"
   }
  },
  {
   "name": "celsius-on-ice",
   "about": "4 °C is 277.15 K",
   "input": {
    "value": "4",
    "from": "°C",
    "to": "K"
   },
   "expected": {
    "expect": "exact",
    "value": "277.15"
   }
  },
  {
   "name": "absolute-zero",
   "about": "0 K is −273.15 °C",
   "input": {
    "value": "0",
    "from": "K",
    "to": "°C"
   },
   "expected": {
    "expect": "exact",
    "value": "-273.15"
   }
  },
  {
   "name": "negative-celsius",
   "about": "−20 °C is 253.15 K (a negative Celsius value is a temperature, not an error)",
   "input": {
    "value": "-20",
    "from": "°C",
    "to": "K"
   },
   "expected": {
    "expect": "exact",
    "value": "253.15"
   }
  },
  {
   "name": "bridge-mm-to-mg-ml",
   "about": "10 mM of imatinib mesylate (589.72 g/mol) is 5.8972 mg/mL",
   "input": {
    "value": "10",
    "from": "mM",
    "to": "mg/mL",
    "formulaWeight": "589.72"
   },
   "expected": {
    "expect": "molar",
    "value": 5.8972,
    "exactInBaseUnit": "14743/2500",
    "toDimension": "massConcentration"
   }
  },
  {
   "name": "bridge-mg-ml-to-um",
   "about": "1 mg/mL of a 25,000 g/mol protein is 40 µM",
   "input": {
    "value": "1",
    "from": "mg/mL",
    "to": "µM",
    "formulaWeight": "25000"
   },
   "expected": {
    "expect": "molar",
    "value": 40.0,
    "exactInBaseUnit": "1/25000",
    "toDimension": "molarity"
   }
  },
  {
   "name": "bridge-g-to-mmol",
   "about": "6.057 g of Tris base (121.136 g/mol) is 50.0016... mmol",
   "input": {
    "value": "6.057",
    "from": "g",
    "to": "mmol",
    "formulaWeight": "121.136"
   },
   "expected": {
    "expect": "molar",
    "value": 50.00165103685114,
    "exactInBaseUnit": "6057/121136",
    "toDimension": "amount"
   }
  },
  {
   "name": "bridge-umol-to-mg",
   "about": "50 µmol of Tris base is 6.0568 mg",
   "input": {
    "value": "50",
    "from": "µmol",
    "to": "mg",
    "formulaWeight": "121.136"
   },
   "expected": {
    "expect": "molar",
    "value": 6.0568,
    "exactInBaseUnit": "7571/1250000",
    "toDimension": "mass"
   }
  },
  {
   "name": "bridge-ng-ul-to-nm",
   "about": "50 ng/µL of a 25 kDa protein is 2,000 nM",
   "input": {
    "value": "50",
    "from": "ng/µL",
    "to": "nM",
    "formulaWeight": "25000"
   },
   "expected": {
    "expect": "molar",
    "value": 2000.0,
    "exactInBaseUnit": "1/500000",
    "toDimension": "molarity"
   }
  },
  {
   "name": "refused-mass-to-volume",
   "about": "mass to volume needs a density",
   "input": {
    "value": "5",
    "from": "mg",
    "to": "mL"
   },
   "expected": {
    "expect": "refused",
    "problem": "density"
   }
  },
  {
   "name": "refused-percent",
   "about": "a percentage to molarity needs a basis and a density",
   "input": {
    "value": "5",
    "from": "%",
    "to": "M"
   },
   "expected": {
    "expect": "refused",
    "problem": "density"
   }
  },
  {
   "name": "refused-molality",
   "about": "molarity to molality needs a density",
   "input": {
    "value": "1",
    "from": "M",
    "to": "mol/kg"
   },
   "expected": {
    "expect": "refused",
    "problem": "density"
   }
  },
  {
   "name": "refused-normality",
   "about": "normality is not converted",
   "input": {
    "value": "1",
    "from": "N",
    "to": "M"
   },
   "expected": {
    "expect": "refused",
    "problem": "normality"
   }
  },
  {
   "name": "refused-activity",
   "about": "activity units are not a mass",
   "input": {
    "value": "100",
    "from": "U",
    "to": "mg"
   },
   "expected": {
    "expect": "refused",
    "problem": "activity"
   }
  },
  {
   "name": "refused-international-units",
   "about": "international units are not a mass",
   "input": {
    "value": "1000",
    "from": "IU",
    "to": "µg"
   },
   "expected": {
    "expect": "refused",
    "problem": "activity"
   }
  },
  {
   "name": "refused-ppm",
   "about": "ppm has an ambiguous basis",
   "input": {
    "value": "10",
    "from": "ppm",
    "to": "mg/L"
   },
   "expected": {
    "expect": "refused",
    "problem": "ppm"
   }
  },
  {
   "name": "refused-fold",
   "about": "a × stock strength is not a concentration",
   "input": {
    "value": "10",
    "from": "×",
    "to": "M"
   },
   "expected": {
    "expect": "refused",
    "problem": "fold"
   }
  },
  {
   "name": "refused-od-to-cells",
   "about": "OD600 to cells belongs to the OD600 page",
   "input": {
    "value": "0.5",
    "from": "OD600",
    "to": "cells/mL"
   },
   "expected": {
    "expect": "refused",
    "problem": "od"
   }
  },
  {
   "name": "refused-rpm-to-g",
   "about": "RPM to g belongs to the centrifuge page",
   "input": {
    "value": "5000",
    "from": "RPM",
    "to": "× g"
   },
   "expected": {
    "expect": "refused",
    "problem": "rpm"
   }
  },
  {
   "name": "refused-below-absolute-zero",
   "about": "kelvin below zero",
   "input": {
    "value": "-5",
    "from": "K",
    "to": "°C"
   },
   "expected": {
    "expect": "refused",
    "problem": "below-absolute-zero"
   }
  },
  {
   "name": "refused-celsius-below-absolute-zero",
   "about": "−300 °C is below absolute zero",
   "input": {
    "value": "-300",
    "from": "°C",
    "to": "K"
   },
   "expected": {
    "expect": "refused",
    "problem": "below-absolute-zero"
   }
  },
  {
   "name": "refused-negative-mass",
   "about": "a negative mass",
   "input": {
    "value": "-1",
    "from": "mg",
    "to": "g"
   },
   "expected": {
    "expect": "refused",
    "problem": "negative"
   }
  },
  {
   "name": "refused-bridge-without-weight",
   "about": "molarity to mass concentration without a formula weight",
   "input": {
    "value": "10",
    "from": "mM",
    "to": "mg/mL"
   },
   "expected": {
    "expect": "refused",
    "problem": "formula-weight"
   }
  },
  {
   "name": "refused-temperature-to-mass",
   "about": "a temperature is not a mass",
   "input": {
    "value": "37",
    "from": "°C",
    "to": "mg"
   },
   "expected": {
    "expect": "refused",
    "problem": "incompatible"
   }
  },
  {
   "name": "refused-cells-to-volume",
   "about": "a cell count is not a volume",
   "input": {
    "value": "1000",
    "from": "cells",
    "to": "mL"
   },
   "expected": {
    "expect": "refused",
    "problem": "incompatible"
   }
  }
 ]
}
