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
63pub 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};