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;
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
57#[path = "smooth/torch_dispatch.rs"]
58pub mod torch_dispatch;
59
60pub mod terms {
61 pub use crate::*;
62}
63
64pub use gam_problem::EstimationError;
67pub use penalty_spec::{PenaltySpec, validate_penalty_spec_shape};
68
69pub use analytic_penalties::{
70 ARDPenalty, AnalyticPenalty, AnalyticPenaltyKind, AnalyticPenaltyOp, AnalyticPenaltyRegistry,
71 BlockOrthogonalityPenalty, BlockSparsityPenalty, DecoderIncoherencePenalty, DifferenceOpKind,
72 EdgeRestriction, FrozenAnalyticPenaltyOp, IBPAssignmentPenalty, IbpHessianDiagThirdChannels,
73 IsometryDuchonRadialSource, IsometryPenalty, IsometryReference, IvaeRidgeMeanGauge,
74 JumpReLUPenalty, MechanismSparsityPenalty, NestedPrefixPenalty, NuclearNormPenalty,
75 OrthogonalityPenalty, ParametricRowPrecisionPriorPenalty, PenaltyConcavity, PenaltyTier,
76 PsiSlice, RowPrecisionPriorPenalty, ScadMcpPenalty, ScalarWeightSchedule,
77 ShapeMonotonicityPenalty, SheafConsistencyPenalty, SoftmaxAssignmentSparsityPenalty,
78 SparsityKind, SparsityPenalty, TopKActivationPenalty, TotalVariationPenalty, WeightField,
79};