{
  "dataset_id": "peptideschool-calculator-test-vectors",
  "version": "1.0.0",
  "title": "PeptideSchool Calculator Test Vectors",
  "description": "Synthetic mass, liquid-volume, concentration, unit-conversion, capacity, and rejection cases for reproducing the arithmetic used by the PeptideSchool Calculator.",
  "canonical_page": "https://www.peptideschool.org/peptide-calculator-test-vectors",
  "published_at": "2026-08-11",
  "updated_at": "2026-08-11",
  "language": "en-US",
  "license": {
    "name": "Creative Commons Attribution 4.0 International",
    "spdx": "CC-BY-4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "scope": {
    "synthetic_examples_only": true,
    "contains_compound_names": false,
    "contains_personalized_recommendations": false,
    "contains_product_verification": false,
    "notice": "These vectors test arithmetic behavior only. They are not protocols, prescriptions, product instructions, or medical advice."
  },
  "numeric_tolerance": {
    "absolute": 1e-9,
    "note": "Compare numeric outputs within the stated absolute tolerance. Display rounding is outside this dataset contract."
  },
  "method": {
    "mass_conversion": "When requested_unit is mcg and vial_unit is mg, requested_amount_mg = requested_amount / 1000.",
    "concentration": "concentration = vial_amount / water_ml",
    "output_volume": "output_volume_ml = requested_amount_in_vial_unit / concentration",
    "u100_scale": "u100_scale_equivalent = output_volume_ml * 100",
    "quantities_per_container": "quantities_per_container = vial_amount / requested_amount_in_vial_unit",
    "capacity_flag": "exceeds_measuring_capacity is true when output_volume_ml is greater than measuring_capacity_ml."
  },
  "vectors": [
    {
      "vector_id": "mass-mg-basic",
      "case_type": "valid",
      "purpose": "Checks the direct milligram-to-milligram concentration and volume path.",
      "input": {
        "vial_amount": 10,
        "vial_unit": "mg",
        "water_ml": 2,
        "requested_amount": 1,
        "requested_unit": "mg",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 5,
        "concentration_unit": "mg/ml",
        "output_volume_ml": 0.2,
        "u100_scale_equivalent": 20,
        "quantities_per_container": 10,
        "exceeds_measuring_capacity": false,
        "error_code": null,
        "error_message": null
      }
    },
    {
      "vector_id": "mass-mcg-conversion",
      "case_type": "valid",
      "purpose": "Checks one explicit microgram-to-milligram conversion before division.",
      "input": {
        "vial_amount": 5,
        "vial_unit": "mg",
        "water_ml": 2,
        "requested_amount": 250,
        "requested_unit": "mcg",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 2.5,
        "concentration_unit": "mg/ml",
        "output_volume_ml": 0.1,
        "u100_scale_equivalent": 10,
        "quantities_per_container": 20,
        "exceeds_measuring_capacity": false,
        "error_code": null,
        "error_message": null
      }
    },
    {
      "vector_id": "mass-decimal",
      "case_type": "valid",
      "purpose": "Checks decimal input without relying on display rounding.",
      "input": {
        "vial_amount": 7.5,
        "vial_unit": "mg",
        "water_ml": 3,
        "requested_amount": 0.5,
        "requested_unit": "mg",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 2.5,
        "concentration_unit": "mg/ml",
        "output_volume_ml": 0.2,
        "u100_scale_equivalent": 20,
        "quantities_per_container": 15,
        "exceeds_measuring_capacity": false,
        "error_code": null,
        "error_message": null
      }
    },
    {
      "vector_id": "small-mass-conversion",
      "case_type": "valid",
      "purpose": "Checks a smaller synthetic mass after conversion from micrograms.",
      "input": {
        "vial_amount": 2,
        "vial_unit": "mg",
        "water_ml": 4,
        "requested_amount": 50,
        "requested_unit": "mcg",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 0.5,
        "concentration_unit": "mg/ml",
        "output_volume_ml": 0.1,
        "u100_scale_equivalent": 10,
        "quantities_per_container": 40,
        "exceeds_measuring_capacity": false,
        "error_code": null,
        "error_message": null
      }
    },
    {
      "vector_id": "capacity-flag",
      "case_type": "valid",
      "purpose": "Checks that a valid arithmetic result is flagged when it exceeds the stated measuring capacity.",
      "input": {
        "vial_amount": 4,
        "vial_unit": "mg",
        "water_ml": 2,
        "requested_amount": 2,
        "requested_unit": "mg",
        "measuring_capacity_ml": 0.5
      },
      "expected": {
        "concentration_value": 2,
        "concentration_unit": "mg/ml",
        "output_volume_ml": 1,
        "u100_scale_equivalent": 100,
        "quantities_per_container": 2,
        "exceeds_measuring_capacity": true,
        "error_code": null,
        "error_message": null
      }
    },
    {
      "vector_id": "zero-liquid-volume",
      "case_type": "invalid",
      "purpose": "Checks rejection of a zero liquid-volume denominator.",
      "input": {
        "vial_amount": 10,
        "vial_unit": "mg",
        "water_ml": 0,
        "requested_amount": 1,
        "requested_unit": "mg",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 0,
        "concentration_unit": null,
        "output_volume_ml": 0,
        "u100_scale_equivalent": 0,
        "quantities_per_container": 0,
        "exceeds_measuring_capacity": false,
        "error_code": "NON_POSITIVE_INPUT",
        "error_message": "Water, vial quantity, and dose must be greater than zero."
      }
    },
    {
      "vector_id": "mass-activity-unit-mismatch",
      "case_type": "invalid",
      "purpose": "Checks rejection when a mass-labeled input is paired with an incompatible activity unit.",
      "input": {
        "vial_amount": 10,
        "vial_unit": "mg",
        "water_ml": 2,
        "requested_amount": 10,
        "requested_unit": "ui",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 0,
        "concentration_unit": null,
        "output_volume_ml": 0,
        "u100_scale_equivalent": 0,
        "quantities_per_container": 0,
        "exceeds_measuring_capacity": false,
        "error_code": "UNIT_MISMATCH",
        "error_message": "With vial in mg, choose mg or mcg in dose (UI only with vial in UI)."
      }
    },
    {
      "vector_id": "negative-requested-quantity",
      "case_type": "invalid",
      "purpose": "Checks rejection of a negative requested quantity.",
      "input": {
        "vial_amount": 10,
        "vial_unit": "mg",
        "water_ml": 2,
        "requested_amount": -1,
        "requested_unit": "mg",
        "measuring_capacity_ml": 1
      },
      "expected": {
        "concentration_value": 0,
        "concentration_unit": null,
        "output_volume_ml": 0,
        "u100_scale_equivalent": 0,
        "quantities_per_container": 0,
        "exceeds_measuring_capacity": false,
        "error_code": "NON_POSITIVE_INPUT",
        "error_message": "Water, vial quantity, and dose must be greater than zero."
      }
    }
  ],
  "citation": "PeptideSchool Team. PeptideSchool Calculator Test Vectors, version 1.0.0. August 11, 2026. https://www.peptideschool.org/peptide-calculator-test-vectors"
}
