Skip to main content

CompiledMap

Struct CompiledMap 

Source
pub struct CompiledMap {
    pub raw_from_compiled: Array2<f64>,
    pub compiled_block_ranges: Vec<Range<usize>>,
    pub raw_block_ranges: Vec<Range<usize>>,
}
Expand description

Closed-form Gram-based compile output: a single p_raw × p_compiled reparam matrix T mapping compiled coordinates back to raw width. T · θ lifts a fitted compiled-width β back to raw width; predict-time row contribution is X_raw · T · θ where X_raw is the full raw design.

compiled_block_ranges[b] gives the column range inside T (and inside the compiled-width coefficient vector) attributable to raw block b. raw_block_ranges[b] gives the corresponding raw-width column range.

Fields§

§raw_from_compiled: Array2<f64>

(p_raw × p_compiled) raw-from-compiled reparam matrix.

§compiled_block_ranges: Vec<Range<usize>>

Per-block compiled-width column ranges, parallel to raw_block_ranges. Same length as the input ordering.

§raw_block_ranges: Vec<Range<usize>>

Per-block raw-width column ranges (copied through from input).

Implementations§

Source§

impl CompiledMap

Source

pub fn p_raw(&self) -> usize

Raw coefficient width (p_raw).

Source

pub fn p_compiled(&self) -> usize

Compiled (reduced) coefficient width (p_compiled).

Source

pub fn reduce_design( &self, raw_design: &Array2<f64>, ) -> Result<Array2<f64>, String>

Reparameterise a raw design into compiled coordinates: X_compiled = X_raw · T (n × p_compiled). Because the lift is β_raw = T β_compiled, the compiled design predicts identically to the raw design on every compiled coefficient: X_compiled · θ = X_raw · (T θ). Families that build directly in reduced coordinates feed this compiled design (and the reduce_penalties_with_map penalties) to the solver; the rank-deficient raw basis never reaches Newton.

Source

pub fn lift_coefficients( &self, beta_compiled: &Array1<f64>, ) -> Result<Array1<f64>, String>

Lift a fitted compiled-width coefficient vector back to raw width: β_raw = T · β_compiled. This is the exact inverse direction of the quotient reduction — the reduced coordinates are what Newton/REML operate in, and this map carries the final estimate (and any linear functional of it) back to the original parameterisation so reported coefficients and predictions match the raw design.

Trait Implementations§

Source§

impl CompiledBlockMap for CompiledMap

Neutral view of this compiled reparametrisation for the gauge layer (#1521): Gauge::from_compiled_map lives DOWN in gam-problem and names only the CompiledBlockMap trait, never the concrete CompiledMap (which lives ABOVE gam-problem). This impl supplies the inverted dependency edge.

Source§

fn raw_from_compiled(&self) -> &Array2<f64>

The (p_raw × p_compiled) raw-from-compiled reparam matrix T.
Source§

fn raw_block_ranges(&self) -> &[Range<usize>]

Per-block raw-width column ranges.
Source§

fn compiled_block_ranges(&self) -> &[Range<usize>]

Per-block compiled-width column ranges, parallel to Self::raw_block_ranges.
Source§

impl Debug for CompiledMap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> DistributionExt for T
where T: ?Sized,

Source§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V