Skip to main content

gam_terms/
lib.rs

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 grid_spline_2d;
47pub mod inference;
48mod isotropic_scale;
49pub mod kronecker;
50pub mod latent;
51pub mod penalty_spec;
52pub mod smooth;
53pub mod smooth_overrides;
54pub mod structure;
55pub mod term_builder;
56#[path = "smooth/torch_dispatch.rs"]
57pub mod torch_dispatch;
58
59pub mod terms {
60    pub use crate::*;
61}
62
63/// Re-export of the neutral estimation error so crate-local macros
64/// (`bail_invalid_estim!`) and call sites can reference `crate::EstimationError`.
65pub use gam_problem::EstimationError;
66pub use isotropic_scale::{
67    IsotropicScale,
68    IsotropicScaleError,
69    OriginalUnits,
70    StandardizedUnits,
71};
72pub use penalty_spec::{PenaltySpec, validate_penalty_spec_shape};
73
74pub use analytic_penalties::{
75    ARDPenalty,
76    AnalyticPenalty,
77    AnalyticPenaltyKind,
78    AnalyticPenaltyOp,
79    AnalyticPenaltyRegistry,
80    BlockOrthogonalityPenalty,
81    BlockSparsityPenalty,
82    DecoderIncoherencePenalty,
83    DifferenceOpKind,
84    EdgeRestriction,
85    FrozenAnalyticPenaltyOp,
86    HarmonicRoughnessPenalty,
87    IsometryDuchonRadialSource,
88    IsometryPenalty,
89    IsometryReference,
90    IvaeRidgeMeanGauge,
91    MechanismSparsityPenalty,
92    NestedPrefixPenalty,
93    NuclearNormPenalty,
94    OrderedBetaBernoulliHessianDiagThirdChannels,
95    OrderedBetaBernoulliPenalty,
96    OrthogonalityPenalty,
97    ParametricRowPrecisionPriorPenalty,
98    PenaltyConcavity,
99    PenaltyTier,
100    PsiSlice,
101    RowPrecisionPriorPenalty,
102    ScadMcpPenalty,
103    ScalarWeightSchedule,
104    ShapeMonotonicityPenalty,
105    SheafConsistencyPenalty,
106    SmoothThresholdPenalty,
107    SoftmaxAssignmentSparsityPenalty,
108    SparsityKind,
109    SparsityPenalty,
110    TopKActivationPenalty,
111    TotalVariationPenalty,
112    WeightField,
113};