22abstract type AbstractMaxMixtureSolver end
33
44
5+ abstract type CalcFactor{T<: AbstractFactor } end
6+
7+
58"""
69$TYPEDEF
710
2124
2225DevNotes
2326- Follow the Github project in IIF to better consolidate CCW FMD CPT CF CFM
24-
27+ - TODO CalcFactorNormSq is a step towards having a dedicated structure for non-parametric solve.
28+ CalcFactorNormSq will calculate the Norm Squared of the factor.
2529Related
2630
2731[`CalcFactorMahalanobis`](@ref), [`CommonConvWrapper`](@ref)
2832"""
29- struct CalcFactor {
33+ struct CalcFactorNormSq {
3034 FT <: AbstractFactor ,
3135 X,
3236 C,
3337 VT <: Tuple ,
3438 M <: AbstractManifold
35- }
39+ } <: CalcFactor{FT}
3640 """ the interface compliant user object functor containing the data and logic """
3741 factor:: FT
3842 """ what is the sample (particle) id for which the residual is being calculated """
@@ -54,7 +58,15 @@ struct CalcFactor{
5458 manifold:: M
5559end
5660
57-
61+ # TODO deprecate after CalcFactor is updated to CalcFactorNormSq
62+ function CalcFactor (args... ; kwargs... )
63+ Base. depwarn (
64+ " `CalcFactor` changed to an abstract type, use CalcFactorNormSq, CalcFactorMahalanobis, or CalcFactorResidual" ,
65+ :CalcFactor
66+ )
67+
68+ CalcFactorNormSq (args... ; kwargs... )
69+ end
5870
5971"""
6072$TYPEDEF
@@ -65,32 +77,47 @@ Related
6577
6678[`CalcFactor`](@ref)
6779"""
68- struct CalcFactorMahalanobis{N, D, L, S <: Union{Nothing, AbstractMaxMixtureSolver} }
80+ struct CalcFactorMahalanobis{
81+ FT,
82+ N,
83+ C,
84+ MEAS<: AbstractArray ,
85+ D,
86+ L,
87+ S <: Union{Nothing, AbstractMaxMixtureSolver}
88+ } <: CalcFactor{FT}
6989 faclbl:: Symbol
70- calcfactor!:: CalcFactor
90+ factor:: FT
91+ cache:: C
7192 varOrder:: Vector{Symbol}
72- meas:: NTuple{N, <:AbstractArray }
93+ meas:: NTuple{N, MEAS }
7394 iΣ:: NTuple{N, SMatrix{D, D, Float64, L}}
7495 specialAlg:: S
7596end
7697
7798
78-
79-
80- struct CalcFactorManopt{
99+ struct CalcFactorResidual{
100+ FT <: AbstractFactor ,
101+ C,
81102 D,
82103 L,
83- FT <: AbstractFactor ,
84- M <: AbstractManifold ,
104+ P,
85105 MEAS <: AbstractArray ,
86- }
106+ N
107+ } <: CalcFactor{FT}
87108 faclbl:: Symbol
88- calcfactor!:: CalcFactor{FT, Nothing, Nothing, Tuple{}, M}
89- varOrder:: Vector{Symbol}
90- varOrderIdxs:: Vector{Int}
109+ factor:: FT
110+ cache:: C
111+ varOrder:: NTuple{N, Symbol}
112+ varOrderIdxs:: NTuple{N, Int}
113+ points:: P # TODO remove or not?
91114 meas:: MEAS
92- iΣ:: SMatrix{D, D, Float64, L}
115+ iΣ:: SMatrix{D, D, Float64, L} # TODO remove or not?
93116 sqrt_iΣ:: SMatrix{D, D, Float64, L}
94117end
95118
119+ _nvars (:: CalcFactorResidual{FT, C, D, L, P, MEAS, N} ) where {FT, C, D, L, P, MEAS, N} = N
120+ # _typeof_meas(::CalcFactorManopt{FT, C, D, L, MEAS, N}) where {FT, C, D, L, MEAS, N} = MEAS
121+ DFG. getDimension (:: CalcFactorResidual{FT, C, D, L, P, MEAS, N} ) where {FT, C, D, L, P, MEAS, N} = D
122+
96123
0 commit comments