Skip to content

Peptide PK, uptake, and tissue-exposure results

mhctools.pred keeps pharmacokinetic and delivery endpoints distinct. It does not expose a generic delivery_score, because systemic half-life, clearance, exposure, CPP class confidence, quantitative cellular uptake, and tissue concentration are not interchangeable measurements.

Endpoint identity

The endpoint kinds are:

Kind Meaning
peptide_half_life Parent-peptide half-life in a context such as serum, a cell, or systemic PK
systemic_clearance Systemic or apparent clearance
distribution_volume Systemic or apparent distribution volume
systemic_exposure A study-defined systemic exposure quantity, such as AUC
cpp_classification CPP class label and model confidence
cellular_uptake Quantitative cellular uptake measurement or estimate
tissue_concentration Concentration in a named tissue or compartment

Serum, plasma, whole-blood, cellular, and systemic half-lives use one peptide_half_life kind. Matrix, compartment, and pk_scope retain the distinction. It remains separate from pMHC_stability, which describes the dissociation of a peptide-MHC complex. The old matrix-specific and systemic half-life strings are accepted as migration inputs and canonicalized.

Measurement context

Every Prediction carries an immutable MeasurementContext. Ordinary model outputs receive a minimal shared default automatically. Assay-specific results fill only what they know. Equal contexts are interned, so repeated predictions reuse one object. Optional fields preserve:

  • whether the result was observed, fitted, simulated, or ML-predicted;
  • whether it is available, unsupported, missing, out of domain, or failed;
  • analyte, compartment, assay matrix, unit, and linear value transform;
  • total versus unbound concentration and systemic versus apparent PK scope;
  • class label and the meaning of a predictor-native score; and
  • a time-series identifier, timepoint, unit, and time origin.

Unknown fields remain None; consumers must not replace them with biological defaults. A stored Prediction.value is a linear physical value with an explicit unit. A CPP class confidence belongs in score, alongside score_semantics and class_label, and is not a duration, uptake amount, or percentage delivered.

Unavailable results carry no stale numeric output. status="unsupported", "missing", "out_of_domain", or "failed" records the distinction and detail may explain it.

Concentration-time points share a series_id and have explicit timepoint, time_unit, and time_origin. These endpoints are MHC-independent, so their predictions have an empty allele; they must not be copied once per HLA allele.

Ordering and downstream projection

best_direction() and PeptideResult.best_by*() intentionally reject these context-dependent kinds. Greater organ accumulation, longer circulation, or a higher predictor-native output is not universally preferable. A downstream Topiary or Vaxrank integration may project explicitly selected fields and context, but it owns any use-specific ranking policy and clinical interpretation. mhctools only transports endpoint data and provenance.

The contract follows the distinctions used in the systemic peptide PK review by Nordell et al. and the cell-line-, cargo-, and assay-dependent quantitative uptake data in POSEIDON.