pub struct GeneratorVerdict {
pub family: GeneratorFamily,
pub description: String,
pub unpinned: bool,
pub generator_norm: f64,
pub pinned_energy_fraction: f64,
pub lowering_error_scale: f64,
pub provenance: VerdictProvenance,
}Expand description
One enumerated symmetry generator and the certificate’s verdict on it.
Fields§
§family: GeneratorFamilyWhich symmetry family this generator realises.
description: StringHuman-readable description (which atom(s) / axes it acts on).
unpinned: booltrue ⇒ the converged objective is flat along this generator
(ξ ∈ ker(H)): a genuine residual gauge freedom the data + isometry
penalty leave unbroken. false ⇒ the generator is pinned — the data or
the isometry penalty gives it curvature (a pinned-energy fraction above
GENERATOR_FLAT_ENERGY_TOL).
generator_norm: f64‖ξ‖₂ of the realised tangent direction (0 ⇒ the generator was
structurally trivial — e.g. a rotation of a rank-deficient frame — and
is reported as pinned/absent, never as a spurious freedom).
pinned_energy_fraction: f64‖R ξ̂‖² / σ_max(R)² ∈ [0, 1]: curvature along the unit generator,
relative to the stiffest direction of the stacked curvature root R
(data + isometry penalty, in the metric). 0 ⇒ exactly flat, 1 ⇒ as
stiff as the stiffest direction; strictly-interior values are the
mixed regime — partial curvature that breaks the exact symmetry
(verdict pinned when above the tolerance) while leaving nearby flat
directions, kept visible here rather than collapsed into the boolean.
Relative-to-σ_max (not span membership) so the statistic stays
informative when the pinning span is full-rank, which production fits
always are. Structurally trivial generators (zero norm) report 1.0.
lowering_error_scale: f64The #995 lowering-error arm of this generator’s verdict tolerance: the
largest FittedAtom::lowering_error over the atoms the generator
touches (its own atom for within-atom families, the exchanged pair for
permutations, all atoms for global output-frame rotations). The verdict
is unpinned ⇔ pinned_energy_fraction ≤ max(GENERATOR_FLAT_ENERGY_TOL, lowering_error_scale) — curvature the
mean-frame compression cannot distinguish from gauge motion is never
read as a pin.
provenance: VerdictProvenanceHow this verdict was decided: by the curvature flatness test, or
pinned by the #1019 post-fit arc-length chart canonicalization
(see VerdictProvenance).
Trait Implementations§
Source§impl Clone for GeneratorVerdict
impl Clone for GeneratorVerdict
Source§fn clone(&self) -> GeneratorVerdict
fn clone(&self) -> GeneratorVerdict
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for GeneratorVerdict
impl RefUnwindSafe for GeneratorVerdict
impl Send for GeneratorVerdict
impl Sync for GeneratorVerdict
impl Unpin for GeneratorVerdict
impl UnsafeUnpin for GeneratorVerdict
impl UnwindSafe for GeneratorVerdict
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.