gam 0.3.116

Generalized penalized likelihood engine
Documentation
use crate::basis::{
    BasisOptions, Dense, KnotSource, create_basis, create_difference_penalty_matrix,
    create_ispline_derivative_dense,
};

use crate::faer_ndarray::{fast_ab, fast_abt, fast_atb};

use crate::families::custom_family::{
    BlockWorkingSet, BlockwiseFitOptions, CustomFamily, CustomFamilyBlockPsiDerivative,
    CustomFamilyPsiDerivativeOperator, CustomFamilyWarmStart, ExactNewtonJointGradientEvaluation,
    ExactNewtonJointHessianWorkspace, ExactNewtonJointPsiSecondOrderTerms,
    ExactNewtonJointPsiTerms, ExactNewtonJointPsiWorkspace, FamilyEvaluation,
    JointHessianSourcePreference, MaterializablePsiDerivativeOperator, MaterializationIntent,
    ParameterBlockSpec, ParameterBlockState, PenaltyMatrix, evaluate_custom_family_joint_hyper,
    evaluate_custom_family_joint_hyper_efs, fit_custom_family, fit_custom_family_fixed_log_lambdas,
};

use crate::families::gamlss::solve_penalizedweighted_projection;

use crate::families::spatial_psi_bridge::build_block_spatial_psi_derivatives;

use crate::families::wiggle::initializewiggle_knots_from_seed;

use crate::inference::model::{TRANSFORMATION_SCORE_PIT_CLIP_EPS, TransformationScoreCalibration};

use crate::matrix::{
    DenseDesignMatrix, DenseDesignOperator, DesignMatrix, LinearOperator, SymmetricMatrix,
    dense_rowwise_kronecker,
};

use crate::pirls::LinearInequalityConstraints;

use crate::probability::standard_normal_quantile;

use crate::resource::{MatrixMaterializationError, ResourcePolicy};

use crate::smooth::{
    ExactJointHyperSetup, SpatialLengthScaleOptimizationOptions, SpatialLogKappaCoords,
    TermCollectionDesign, TermCollectionSpec, build_term_collection_design,
    freeze_term_collection_from_design, optimize_spatial_length_scale_exact_joint,
    spatial_length_scale_term_indices,
};

use crate::solver::estimate::UnifiedFitResult;

use crate::solver::estimate::reml::unified::{
    DriftDerivResult, HyperOperator, ProjectedFactorCache, ProjectedFactorKey,
};

use ndarray::{Array1, Array2, ArrayView1, ArrayView2, ArrayViewMut2, s};

use std::cell::RefCell;

use std::sync::{Arc, Mutex, OnceLock};