Docs /parable

github.com/Paralia-Labs/parable · install and quickstart live in the repo README — this page covers the why and the parts that don’t fit in a README.

parable generates anatomically plausible synthetic limb data with known ground truth, applies controlled damage to it, and runs the platform against it to measure accuracy — see How it fits together for the full loop. This page goes deeper on the two analysis tools that loop produces, and how the underlying shape model was built.

Severity sweeps — dose-response curves

A plain parable run draws each case’s damage severity independently at random per perturbation — good for exploratory, realistic-mix testing, but it doesn’t directly answer “at what severity does the platform start to fail?” A severity sweep answers that directly: it tests one kind of damage at a time across a configured range, with every other kind switched off, so any accuracy drop is attributable to that one cause alone.

Running a sweep produces a severity-curve panel per swept perturbation: mean accuracy (± standard error) plotted against severity, with a dashed acceptance line at a configurable pass threshold and a marked crossing point — the concrete answer to “how much damage can this tolerate before it breaks.”

Defect similarity — the birds-eye view

Every case parable runs — plain or sweep — records its own damage severities and, when scored against the live platform, an accuracy result. The defect similarity panel turns that into two views:

  • Impact on accuracy ranks each varying kind of damage by how strongly it correlates with case outcome — which one matters most, for any run, not just sweeps.
  • Defect similarity (UMAP) positions every case in a run as a point, placed by how similar its combination of defects is to other cases’, colored on a gradient from well-below to comfortably-above the accuracy threshold. Cases don’t fail independently — this view surfaces whether certain combinations of damage cluster into recognizable failure modes, something a per-perturbation ranking alone can’t show.

Built on a real shape model, not a placeholder

Synthetic limb generation is a real, working port of OpenLimbTT’s PCA statistical shape model — sample calibrated shape coefficients, run them through a bundled regression model, reconstruct a mesh. Porting it surfaced and fixed two real bugs in the original: an unparenthesized vertex-sum statement in the reference implementation silently dropped most of the reconstruction’s shape modes (this port sums across all of them), and the original sampling was unseeded (this port takes an explicit seed, since the seed itself is a ground-truth field worth recording). OpenLimbTT’s vendored data is meter-scale; every downstream perturbation magnitude and evaluation metric in parable assumes millimeters, so the conversion happens once, at the source, immediately after reconstruction — every consumer downstream inherits correct scale without its own conversion logic.

Where this is headed

Shape generation, all five perturbation stages, the full evaluation/metrics layer, severity sweeps, defect-similarity aggregation, and the review viewer are built and working today. The confirmed next direction: topology defects beyond today’s discontinuities and duplicate boundaries — self-intersections, orphan fragments, and scan-boundary defects like a jagged or tilted proximal rim — the remaining gap in the kinds of realistic scan damage parable can simulate.

License

parable is BSD-2-Clause, except the vendored generators/openlimbtt/ directory, which carries OpenLimbTT’s own CC BY-SA 4.0 license. See Open source for why this is the one open-source piece of the platform.