pub struct FittedAtom {
pub name: String,
pub topology: AtomTopology,
pub frame: Array2<f64>,
pub ard_variances: Option<Array1<f64>>,
pub lowering_error: f64,
pub chart_canonicalized: bool,
pub inner_fit: Option<AtomInnerFit>,
}Expand description
One fitted atom as the certificate sees it.
frame is the fitted decoder frame whose columns the isometry generators
rotate: an (output_dim, latent_dim) matrix whose column a is the fitted
image of latent axis a in output space (e.g. the decoder Jacobian columns
at the atom’s centroid, or the leading decoder directions). The isometry
generators of Isom(M_k) act on these columns; the certificate lifts that
action to a tangent direction on the flattened decoder frame.
Fields§
§name: String§topology: AtomTopology§frame: Array2<f64>(output_dim, latent_dim) fitted decoder frame.
ard_variances: Option<Array1<f64>>ARD prior variances (one per latent axis of this atom), used to detect
equal-ARD eigenspaces inside which a rotation is unpinned by the prior.
None ⇒ no ARD prior on this atom (every within-frame rotation is then
a candidate generator, pinned-or-not decided solely by the data + the
isometry penalty).
lowering_error: f64Lowering-error scale (#995), in [0, 1]: the mass-weighted relative
dispersion of the atom’s per-row decoder tangents around the mean
frame the certificate compresses them into,
Σ_n a_n Σ_ax ‖t_ax(n) − frame[:,ax]‖² / Σ_n a_n Σ_ax ‖t_ax(n)‖².
0 ⇒ the frame represents every row exactly (hand-built fixtures, flat
decoders) and the certificate’s verdicts within this atom are at full
resolution. Values toward 1 ⇒ a curved decoder whose tangent field
disperses strongly (e.g. a full circle, whose tangents average to ≈ 0):
the mean-frame lowering then cannot distinguish gauge motion from
genuine curvature, so the verdict tolerance for generators touching
this atom is calibrated up to this scale — the certificate refuses to
claim a pin it cannot resolve, the same honesty contract as the
diffeomorphism-unpinned escalation.
chart_canonicalized: bool#1019 stage 1: true when the atom’s d = 1 latent chart was pinned
post-fit to its arc-length (unit-speed) canonical representative. #1019
stage 2: true as well when a d = 2 torus atom’s chart was pinned
post-fit to the minimum-isometry-defect flow representative, in which
case the residual chart freedom is Isom(T², flat) = U(1)² ⋊ D₄. The
certificate then records that this atom’s continuous chart
(reparameterization) freedom is pinned by canonicalization — a
provenance distinct from curvature/penalty pinning
(VerdictProvenance::PinnedByCanonicalization) — and that the
residual chart freedom is the finite isometry group of the reference
manifold for d = 1 charts: rotation + reflection (O(2)) on the
circle, reflection + translation on the interval.
inner_fit: Option<AtomInnerFit>Per-atom inner-decoder-smooth byproducts harvested at fit time, the
single source the post-PIRLS atom inference reports
(AtomFunctionalReport #1097, AtomSmoothSignificance #1103)
consume in dictionary_report.
The certificate path that builds FittedSaeManifold does so without a
fit harness in scope, so it leaves this None; callers that own the
fitted term attach it through FittedAtom::with_inner_fit (the term
builder fills it from the live per-atom basis, decoder, assignment mass,
and smoothness Gram). When None, both reports below are None: the
genuine prerequisite — the post-fit inner-smooth design, penalized
Hessian, and row scores — is simply not present on a bare
certificate-only FittedSaeManifold.
Implementations§
Source§impl FittedAtom
impl FittedAtom
Sourcepub fn with_inner_fit(self, inner_fit: AtomInnerFit) -> Self
pub fn with_inner_fit(self, inner_fit: AtomInnerFit) -> Self
Attach the inner-decoder-smooth byproducts harvested at fit time. The
term builder calls this so dictionary_report can produce the three
post-PIRLS atom inference reports.
Trait Implementations§
Source§impl Clone for FittedAtom
impl Clone for FittedAtom
Source§fn clone(&self) -> FittedAtom
fn clone(&self) -> FittedAtom
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 FittedAtom
impl RefUnwindSafe for FittedAtom
impl Send for FittedAtom
impl Sync for FittedAtom
impl Unpin for FittedAtom
impl UnsafeUnpin for FittedAtom
impl UnwindSafe for FittedAtom
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.