pub struct InnerSolutionBuilder<'dp> { /* private fields */ }Expand description
Builder for InnerSolution that provides sensible defaults and
auto-computes derived quantities (nullspace_dim).
Implementations§
Source§impl<'dp> InnerSolutionBuilder<'dp>
impl<'dp> InnerSolutionBuilder<'dp>
Sourcepub fn new(
log_likelihood: f64,
penalty_quadratic: f64,
beta: Array1<f64>,
n_observations: usize,
hessian_op: Arc<dyn HessianOperator>,
penalty_coords: Vec<PenaltyCoordinate>,
penalty_logdet: PenaltyLogdetDerivs,
dispersion: DispersionHandling,
) -> Self
pub fn new( log_likelihood: f64, penalty_quadratic: f64, beta: Array1<f64>, n_observations: usize, hessian_op: Arc<dyn HessianOperator>, penalty_coords: Vec<PenaltyCoordinate>, penalty_logdet: PenaltyLogdetDerivs, dispersion: DispersionHandling, ) -> Self
Create a builder with the required core fields.
pub fn deriv_provider(self, p: Box<dyn HessianDerivativeProvider + 'dp>) -> Self
Sourcepub fn firth_term(self, term: Option<ExactJeffreysTerm>) -> Self
pub fn firth_term(self, term: Option<ExactJeffreysTerm>) -> Self
Install a pre-built Jeffreys/Firth term (Tier-A operator-backed via
ExactJeffreysTerm::new, or the Tier-B value-only carrier via
ExactJeffreysTerm::value_only).
pub fn hessian_logdet_correction(self, correction: f64) -> Self
Sourcepub fn penalty_subspace_trace(
self,
kernel: Option<Arc<PenaltySubspaceTrace>>,
) -> Self
pub fn penalty_subspace_trace( self, kernel: Option<Arc<PenaltySubspaceTrace>>, ) -> Self
Install the projected-logdet trace kernel that pairs with the
hessian_logdet_correction on a rank-deficient penalty surface.
See PenaltySubspaceTrace for the derivation and when it is
required for gradient consistency.
pub fn rho_curvature_scale(self, scale: f64) -> Self
pub fn rho_prior(self, prior: RhoPrior) -> Self
Sourcepub fn nullspace_dim_override(self, dim: f64) -> Self
pub fn nullspace_dim_override(self, dim: f64) -> Self
Override the auto-computed nullspace dimension.
By default, build() computes nullspace_dim as
beta.len() - sum(penalty_coord.rank()). Use this when the caller
has a different authoritative value (e.g. from stored per-penalty dims).
pub fn ext_coords(self, coords: Vec<HyperCoord>) -> Self
pub fn ext_coord_pair_fn( self, f: Box<dyn Fn(usize, usize) -> HyperCoordPair + Send + Sync>, ) -> Self
pub fn rho_ext_pair_fn( self, f: Box<dyn Fn(usize, usize) -> HyperCoordPair + Send + Sync>, ) -> Self
pub fn fixed_drift_deriv(self, f: FixedDriftDerivFn) -> Self
Sourcepub fn contracted_psi_second_order(
self,
f: Option<ContractedPsiSecondOrderFn>,
) -> Self
pub fn contracted_psi_second_order( self, f: Option<ContractedPsiSecondOrderFn>, ) -> Self
Install the direction-contracted second-order ψ hook (#740). When set,
the outer-Hessian operator builder uses it instead of the K² per-pair
base_h2 ψψ assembly. See ContractedPsiSecondOrderFn.
pub fn barrier_config(self, config: Option<BarrierConfig>) -> Self
pub fn kkt_residual(self, residual: Option<ProjectedKktResidual>) -> Self
Sourcepub fn active_constraints(
self,
block: Option<Arc<ActiveLinearConstraintBlock>>,
) -> Self
pub fn active_constraints( self, block: Option<Arc<ActiveLinearConstraintBlock>>, ) -> Self
Stash the active linear-inequality constraint block carried alongside the
inner solution. Used by PenaltySubspaceTrace::with_active_constraints
at REML/LAML evaluation time to form the constraint-aware kernel
K_T = K_S − K_S Aᵀ (A K_S Aᵀ)⁻¹ A K_S.
Sourcepub fn build(self) -> InnerSolution<'dp>
pub fn build(self) -> InnerSolution<'dp>
Build the InnerSolution, auto-computing nullspace_dim from penalty coordinates.
Auto Trait Implementations§
impl<'dp> !RefUnwindSafe for InnerSolutionBuilder<'dp>
impl<'dp> !UnwindSafe for InnerSolutionBuilder<'dp>
impl<'dp> Freeze for InnerSolutionBuilder<'dp>
impl<'dp> Send for InnerSolutionBuilder<'dp>
impl<'dp> Sync for InnerSolutionBuilder<'dp>
impl<'dp> Unpin for InnerSolutionBuilder<'dp>
impl<'dp> UnsafeUnpin for InnerSolutionBuilder<'dp>
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> 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.