pub struct InnerAssembly<'dp> {Show 23 fields
pub log_likelihood: f64,
pub penalty_quadratic: f64,
pub beta: Array1<f64>,
pub n_observations: usize,
pub hessian_op: Arc<dyn HessianOperator>,
pub penalty_coords: Vec<PenaltyCoordinate>,
pub penalty_logdet: PenaltyLogdetDerivs,
pub dispersion: DispersionHandling,
pub rho_curvature_scale: f64,
pub rho_prior: RhoPrior,
pub hessian_logdet_correction: f64,
pub penalty_subspace_trace: Option<Arc<PenaltySubspaceTrace>>,
pub deriv_provider: Option<Box<dyn HessianDerivativeProvider + 'dp>>,
pub firth: Option<ExactJeffreysTerm>,
pub nullspace_dim: Option<f64>,
pub barrier_config: Option<BarrierConfig>,
pub kkt_residual: Option<ProjectedKktResidual>,
pub active_constraints: Option<Arc<ActiveLinearConstraintBlock>>,
pub ext_coords: Vec<HyperCoord>,
pub ext_coord_pair_fn: Option<Box<dyn Fn(usize, usize) -> HyperCoordPair + Send + Sync>>,
pub rho_ext_pair_fn: Option<Box<dyn Fn(usize, usize) -> HyperCoordPair + Send + Sync>>,
pub fixed_drift_deriv: Option<FixedDriftDerivFn>,
pub contracted_psi_second_order: Option<ContractedPsiSecondOrderFn>,
}Expand description
All ingredients needed to assemble an InnerSolution.
Callers fill in the required fields and override optional ones as needed.
The assembler builds the InnerSolution via InnerSolutionBuilder and
calls reml_laml_evaluate — the only production code path that does so.
Fields§
§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§rho_curvature_scale: f64§rho_prior: RhoPrior§hessian_logdet_correction: f64§penalty_subspace_trace: Option<Arc<PenaltySubspaceTrace>>§deriv_provider: Option<Box<dyn HessianDerivativeProvider + 'dp>>§firth: Option<ExactJeffreysTerm>Jeffreys/Firth scalar contribution to the LAML cost. Tier-A GLM callers
construct it from the dense operator (ExactJeffreysTerm::new); the
Tier-B coupled joint path installs the value-only carrier
(ExactJeffreysTerm::value_only) so the cost subtracts the same gated
Φ(β̂) its inner Newton optimized (gam#979).
nullspace_dim: Option<f64>§barrier_config: Option<BarrierConfig>§kkt_residual: Option<ProjectedKktResidual>§active_constraints: Option<Arc<ActiveLinearConstraintBlock>>Active linear-inequality constraint rows at the converged inner
iterate. When Some, the unified evaluator builds the
constraint-aware kernel K_T = K_S − K_S Aᵀ (A K_S Aᵀ)⁻¹ A K_S
for per-coordinate mode responses v_k = ∂β/∂ρ_k.
ext_coords: Vec<HyperCoord>§ext_coord_pair_fn: Option<Box<dyn Fn(usize, usize) -> HyperCoordPair + Send + Sync>>§rho_ext_pair_fn: Option<Box<dyn Fn(usize, usize) -> HyperCoordPair + Send + Sync>>§fixed_drift_deriv: Option<FixedDriftDerivFn>§contracted_psi_second_order: Option<ContractedPsiSecondOrderFn>Direction-contracted ψψ second-order hook (#740). When set, the
outer-Hessian operator builder skips the K² per-pair ψψ assembly and
applies this once per matvec.
Implementations§
Source§impl<'dp> InnerAssembly<'dp>
impl<'dp> InnerAssembly<'dp>
Auto Trait Implementations§
impl<'dp> !RefUnwindSafe for InnerAssembly<'dp>
impl<'dp> !UnwindSafe for InnerAssembly<'dp>
impl<'dp> Freeze for InnerAssembly<'dp>
impl<'dp> Send for InnerAssembly<'dp>
impl<'dp> Sync for InnerAssembly<'dp>
impl<'dp> Unpin for InnerAssembly<'dp>
impl<'dp> UnsafeUnpin for InnerAssembly<'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.