pub struct CoactivationStats {
pub n_obs: usize,
pub n_a: usize,
pub n_b: usize,
pub n_joint: usize,
pub p_a_given_b: f64,
pub p_b_given_a: f64,
pub lift: f64,
pub weight_correlation: f64,
}Expand description
Pairwise co-activation summary for two atoms (see
SparseAtomCodes::coactivation). All probabilities are empirical
popcount ratios over the active-support masks.
Fields§
§n_obs: usizeTotal number of observations the codes cover.
n_a: usizeRows where atom a is active.
n_b: usizeRows where atom b is active.
n_joint: usizeRows where both are active.
p_a_given_b: f64P(a active | b active); 0 when b is never active.
p_b_given_a: f64P(b active | a active); 0 when a is never active.
lift: f64P(a∧b) / (P(a)·P(b)); 1 for independent atoms, 0 when either
marginal is empty.
weight_correlation: f64Pearson correlation of the two atoms’ activation WEIGHTS over the
jointly-active rows (see SparseAtomCodes::weight_codependence) — the
amplitude/interaction half of the fusion criterion. 0 when the joint
support is too small or a weight is constant there.
Implementations§
Source§impl CoactivationStats
impl CoactivationStats
Sourcepub fn dependence(&self) -> f64
pub fn dependence(&self) -> f64
Symmetric code dependence min(P(a|b), P(b|a)) — the canonical-order
trigger for FUSION proposals (descending). Near 0 for independent or
disjoint atoms; near 1 only when the two supports essentially coincide,
which is the shattering signature.
Sourcepub fn absorption_asymmetry(&self) -> f64
pub fn absorption_asymmetry(&self) -> f64
Conditional asymmetry |P(a|b) − P(b|a)| — large when one atom’s
support nests inside the other’s (the A⇒B absorption signature, where
P(parent|child) ≈ 1 but not conversely). Flags the pair for a
targeted within-atom substructure audit; it is never itself an
acceptance criterion.
Sourcepub fn fusion_evidence(&self) -> f64
pub fn fusion_evidence(&self) -> f64
#976 — the combined FUSION evidence: dependence · |weight_correlation|.
A fusion proposal needs BOTH halves — the atoms must co-activate (support
dependence) AND their amplitudes must be dependent on the joint support
(the interaction evidence that a single curved family was shattered). Two
independent atoms that happen to co-fire score near 0 on the second factor
and so are NOT proposed for fusion even at high support overlap; a genuine
shattered pair scores high on both. This is the scalar the canonical-order
fusion ranking (“fusions by code dependence descending”) should sort on,
and the threshold the e-process acceptance gate guards.
Trait Implementations§
Source§impl Clone for CoactivationStats
impl Clone for CoactivationStats
Source§fn clone(&self) -> CoactivationStats
fn clone(&self) -> CoactivationStats
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for CoactivationStats
Source§impl Debug for CoactivationStats
impl Debug for CoactivationStats
Source§impl PartialEq for CoactivationStats
impl PartialEq for CoactivationStats
Source§fn eq(&self, other: &CoactivationStats) -> bool
fn eq(&self, other: &CoactivationStats) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CoactivationStats
Auto Trait Implementations§
impl Freeze for CoactivationStats
impl RefUnwindSafe for CoactivationStats
impl Send for CoactivationStats
impl Sync for CoactivationStats
impl Unpin for CoactivationStats
impl UnsafeUnpin for CoactivationStats
impl UnwindSafe for CoactivationStats
Blanket Implementations§
impl<T> Allocation for T
impl<T> Boilerplate 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,
impl<T> Scalar for T
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.