1#[macro_export]
2macro_rules! bail_invalid_basis {
3 ($fmt:literal $(, $($arg:tt)*)?) => {
4 return Err($crate::basis::BasisError::InvalidInput(format!($fmt $(, $($arg)*)?)))
5 };
6 ($msg:expr $(,)?) => {
7 return Err($crate::basis::BasisError::InvalidInput($msg))
8 };
9}
10
11#[macro_export]
12macro_rules! bail_dim_basis {
13 ($fmt:literal $(, $($arg:tt)*)?) => {
14 return Err($crate::basis::BasisError::DimensionMismatch(format!($fmt $(, $($arg)*)?)))
15 };
16 ($msg:expr $(,)?) => {
17 return Err($crate::basis::BasisError::DimensionMismatch($msg))
18 };
19}
20
21#[macro_export]
22macro_rules! bail_invalid_estim {
23 ($fmt:literal $(, $($arg:tt)*)?) => {
24 return Err($crate::EstimationError::InvalidInput(format!($fmt $(, $($arg)*)?)))
25 };
26 ($msg:expr $(,)?) => {
27 return Err($crate::EstimationError::InvalidInput($msg))
28 };
29}
30
31#[macro_export]
32macro_rules! gpu_bail {
33 ($($arg:tt)*) => {
34 return ::std::result::Result::Err(gam_gpu::gpu_error::GpuError::DriverCallFailed {
35 reason: ::std::format!($($arg)*),
36 })
37 };
38}
39
40pub mod analytic_penalties;
41pub mod basis;
42pub mod chunked_kernel_design;
43pub mod construction;
44pub mod decoders;
45pub mod dictionary;
46pub mod geometry;
47pub mod grid_spline_2d;
48pub mod inference;
49mod isotropic_scale;
50pub mod kronecker;
51pub mod latent;
52pub mod penalty_spec;
53pub mod smooth;
54pub mod smooth_overrides;
55pub mod structure;
56pub mod term_builder;
57
58#[path = "smooth/torch_dispatch.rs"]
59pub mod torch_dispatch;
60
61pub mod terms {
62 pub use crate::*;
63}
64
65pub use gam_problem::EstimationError;
68pub use isotropic_scale::{IsotropicScale, IsotropicScaleError};
69pub use penalty_spec::{PenaltySpec, validate_penalty_spec_shape};
70
71pub use analytic_penalties::{
72 ARDPenalty, AnalyticPenalty, AnalyticPenaltyKind, AnalyticPenaltyOp, AnalyticPenaltyRegistry,
73 BlockOrthogonalityPenalty, BlockSparsityPenalty, DecoderIncoherencePenalty, DifferenceOpKind,
74 EdgeRestriction, FrozenAnalyticPenaltyOp, HarmonicRoughnessPenalty, IsometryDuchonRadialSource,
75 IsometryPenalty, IsometryReference, IvaeRidgeMeanGauge, MechanismSparsityPenalty,
76 NestedPrefixPenalty, NuclearNormPenalty, OrderedBetaBernoulliHessianDiagThirdChannels,
77 OrderedBetaBernoulliPenalty, OrthogonalityPenalty, ParametricRowPrecisionPriorPenalty,
78 PenaltyConcavity, PenaltyTier, PsiSlice, RowPrecisionPriorPenalty, ScadMcpPenalty,
79 ScalarWeightSchedule, ShapeMonotonicityPenalty, SheafConsistencyPenalty,
80 SmoothThresholdPenalty, SoftmaxAssignmentSparsityPenalty, SparsityKind, SparsityPenalty,
81 TopKActivationPenalty, TotalVariationPenalty, WeightField,
82};