pub enum DenseDesignMatrix {
Materialized(Arc<Array2<f64>>),
Lazy(LazyDense),
}Variants§
Implementations§
Source§impl DenseDesignMatrix
impl DenseDesignMatrix
Sourcepub fn cache_identity(&self) -> usize
pub fn cache_identity(&self) -> usize
Stable identity for cache keying.
Returns the address of the inner shared Arc, which Clone shares by
reference. Two DenseDesignMatrix values produced by cloning the same
origin (e.g. the k per-coordinate GlmCurvatureCorrectionOperators all
built from one converged design) report the same identity, so a X·F
projection memoized under this id is reused across them within a single
outer REML evaluation instead of being re-streamed once per coordinate.
pub fn nrows(&self) -> usize
pub fn ncols(&self) -> usize
pub fn as_dense_ref(&self) -> Option<&Array2<f64>>
pub const fn is_materialized_dense(&self) -> bool
pub const fn is_operator_backed(&self) -> bool
pub fn to_dense(&self) -> Array2<f64>
pub fn to_dense_arc(&self) -> Arc<Array2<f64>> ⓘ
pub fn try_to_dense_arc( &self, context: &str, ) -> Result<Arc<Array2<f64>>, String>
Sourcepub fn try_to_dense_arc_with_policy(
&self,
context: &str,
policy: &ResourcePolicy,
) -> Result<Arc<Array2<f64>>, String>
pub fn try_to_dense_arc_with_policy( &self, context: &str, policy: &ResourcePolicy, ) -> Result<Arc<Array2<f64>>, String>
Policy-aware variant of Self::try_to_dense_arc.
Uses the supplied policy’s max_single_materialization_bytes cap when
deciding whether to densify a lazy operator-backed design. The default
try_to_dense_arc always uses ResourcePolicy::default_library() (the
1 GiB cap suitable for ad-hoc dense conversions, matching the
CoefficientTransformOperator::MATERIALIZE_MAX_BYTES ceiling); cache
layers that have their own larger cap (e.g.
CoefficientTransformOperator::MATERIALIZE_MAX_BYTES) can call this
method to consume the inner under their own threshold without forcing
the conservative default on every consumer.
pub fn try_row_chunk( &self, rows: Range<usize>, ) -> Result<Array2<f64>, MatrixMaterializationError>
pub fn row_chunk_into( &self, rows: Range<usize>, out: ArrayViewMut2<'_, f64>, ) -> Result<(), MatrixMaterializationError>
Trait Implementations§
Source§impl Clone for DenseDesignMatrix
impl Clone for DenseDesignMatrix
Source§fn clone(&self) -> DenseDesignMatrix
fn clone(&self) -> DenseDesignMatrix
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DenseDesignMatrix
impl Debug for DenseDesignMatrix
Source§impl DenseDesignOperator for DenseDesignMatrix
impl DenseDesignOperator for DenseDesignMatrix
fn compute_xtwy( &self, weights: &Array1<f64>, y: &Array1<f64>, ) -> Result<Array1<f64>, String>
fn quadratic_form_diag( &self, middle: &Array2<f64>, ) -> Result<Array1<f64>, String>
Source§fn as_dense_ref(&self) -> Option<&Array2<f64>>
fn as_dense_ref(&self) -> Option<&Array2<f64>>
Source§fn materialization_policy(&self) -> Option<MaterializationPolicy>
fn materialization_policy(&self) -> Option<MaterializationPolicy>
Source§fn row_chunk_into(
&self,
rows: Range<usize>,
out: ArrayViewMut2<'_, f64>,
) -> Result<(), MatrixMaterializationError>
fn row_chunk_into( &self, rows: Range<usize>, out: ArrayViewMut2<'_, f64>, ) -> Result<(), MatrixMaterializationError>
Source§fn to_dense(&self) -> Array2<f64>
fn to_dense(&self) -> Array2<f64>
Source§fn to_dense_arc(&self) -> Arc<Array2<f64>> ⓘ
fn to_dense_arc(&self) -> Arc<Array2<f64>> ⓘ
Source§fn try_row_chunk(
&self,
rows: Range<usize>,
) -> Result<Array2<f64>, MatrixMaterializationError>
fn try_row_chunk( &self, rows: Range<usize>, ) -> Result<Array2<f64>, MatrixMaterializationError>
row_chunk_into.Source§fn apply_columns(&self, cols: &[usize]) -> Array2<f64>
fn apply_columns(&self, cols: &[usize]) -> Array2<f64>
nrows × cols.len() dense block
whose k-th column is apply(e_{cols[k]}). Read morefn estimated_dense_bytes(&self) -> usize
fn try_to_dense_with_policy( &self, policy: &MaterializationPolicy, context: &'static str, ) -> Result<Arc<Array2<f64>>, MatrixMaterializationError>
Source§fn try_to_dense_governed_with_policy(
&self,
policy: &MaterializationPolicy,
context: &'static str,
) -> Result<Governed<Array2<f64>>, MatrixMaterializationError>
fn try_to_dense_governed_with_policy( &self, policy: &MaterializationPolicy, context: &'static str, ) -> Result<Governed<Array2<f64>>, MatrixMaterializationError>
Source§impl<T> From<Arc<T>> for DenseDesignMatrixwhere
T: DenseDesignOperator + 'static,
impl<T> From<Arc<T>> for DenseDesignMatrixwhere
T: DenseDesignOperator + 'static,
Source§impl From<DenseDesignMatrix> for DesignMatrix
impl From<DenseDesignMatrix> for DesignMatrix
Source§fn from(value: DenseDesignMatrix) -> Self
fn from(value: DenseDesignMatrix) -> Self
Source§impl LinearOperator for DenseDesignMatrix
impl LinearOperator for DenseDesignMatrix
fn nrows(&self) -> usize
fn ncols(&self) -> usize
fn apply(&self, vector: &Array1<f64>) -> Array1<f64>
fn apply_transpose(&self, vector: &Array1<f64>) -> Array1<f64>
fn diag_xtw_x(&self, weights: &Array1<f64>) -> Result<Array2<f64>, String>
fn diag_gram(&self, weights: &Array1<f64>) -> Result<Array1<f64>, String>
fn apply_weighted_normal( &self, weights: FiniteSignedWeightsView<'_>, vector: &Array1<f64>, penalty: Option<&Array2<f64>>, ridge: f64, ) -> Array1<f64>
fn uses_matrix_free_pcg(&self) -> bool
Source§fn xt_diag_x_signed_op(
&self,
weights: FiniteSignedWeightsView<'_>,
) -> Result<Array2<f64>, String>
fn xt_diag_x_signed_op( &self, weights: FiniteSignedWeightsView<'_>, ) -> Result<Array2<f64>, String>
XᵀWX with sign-honest
weights. Returns a dense Array2<f64> because the result is symmetric
but not guaranteed PSD (so consumers cannot assume the SymmetricMatrix
PSD contract). Default impl delegates to diag_xtw_x for legacy
operators; overriding impls may take a sign-aware fast path.Source§fn xt_diag_x_psd_op(
&self,
weights: PsdWeightsView<'_>,
) -> Result<SymmetricMatrix, String>
fn xt_diag_x_psd_op( &self, weights: PsdWeightsView<'_>, ) -> Result<SymmetricMatrix, String>
XᵀWX with w ≥ 0 discharged at the
PsdWeightsView constructor. Returns a typed SymmetricMatrix so
downstream consumers can route through PSD-only solvers (Cholesky).
Default impl wraps the signed path’s Array2 in SymmetricMatrix::Dense.fn solve_system_matrix_free_pcg_try( &self, weights: &Array1<f64>, rhs: &Array1<f64>, penalty: Option<&Array2<f64>>, baseridge: f64, ) -> Result<Array1<f64>, String>
fn solve_system_matrix_free_pcg_with_info_try( &self, weights: &Array1<f64>, rhs: &Array1<f64>, penalty: Option<&Array2<f64>>, baseridge: f64, ) -> Result<(Array1<f64>, PcgSolveInfo), String>
fn factorize_system( &self, weights: &Array1<f64>, penalty: Option<&Array2<f64>>, ) -> Result<Box<dyn FactorizedSystem>, String>
fn solve_system( &self, weights: &Array1<f64>, rhs: &Array1<f64>, penalty: Option<&Array2<f64>>, ) -> Result<Array1<f64>, String>
fn solve_systemwith_policy( &self, weights: &Array1<f64>, rhs: &Array1<f64>, penalty: Option<&Array2<f64>>, ridge_floor: f64, ridge_policy: RidgePolicy, ) -> Result<Array1<f64>, String>
Auto Trait Implementations§
impl !RefUnwindSafe for DenseDesignMatrix
impl !UnwindSafe for DenseDesignMatrix
impl Freeze for DenseDesignMatrix
impl Send for DenseDesignMatrix
impl Sync for DenseDesignMatrix
impl Unpin for DenseDesignMatrix
impl UnsafeUnpin for DenseDesignMatrix
Blanket Implementations§
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 more