shape_perturb — SHAPESTAT synth op

• Data kinds: points → points

• Call: import fullseye as fs; fs.ledger.shape_perturb(shape, amplitude: 'float' = 0.05, mode: 'str' = 'bulge', center=(1.0, 0.0, 0.0), sigma: 'float' = 0.4, seed: 'int' = 0) (to call the implementation directly, import shapestats; shapestats.shape_perturb(shape, amplitude: 'float' = 0.05, mode: 'str' = 'bulge', center=(1.0, 0.0, 0.0), sigma: 'float' = 0.4, seed: 'int' = 0); from the registry, opsshapestat.get("shape_perturb"))

Usage

Applies 1 known deformation to a shape. → (N, 3).

mode:

• "bulge" —— bulges outward with Gaussian weights around *center*. Applied to only one side, it becomes the ground truth of left-right asymmetry.

• "shift" —— uniform translation toward *center* (a component Procrustes removes).

• "scale" —— uniform enlargement (a component Procrustes with scaling=True removes).

• "noise" —— isotropic Gaussian noise (a floor that no method removes).

The 4 are provided so that "deformations Procrustes removes for you" and "deformations that must not be removed" can be tested separately. Cross-checking registration needs this distinction.

Detailed usage guide

• shape_statistics family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• shapestat_landmark_tour — py -3.11 examples/shapestat_landmark_tour.py

Ops the type connects to (they accept points as input)

procrustes_fit · procrustes_align · procrustes_distance · shape_project · shape_mahalanobis · mirror_plane_from_pairs · landmark_asymmetry · signed_surface_distance

Same category (synth)

shape_synth_family


*Provenance: shapestats.py — SHAPESTAT operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.