tpapp / TransformVariables.jl

Transformations to contrained variables from ℝⁿ.
Other
66 stars 14 forks source link

inverse of NamedTuple transformations from different ordering/superset #100

Open tpapp opened 2 years ago

tpapp commented 2 years ago

Currrently inverse for NamedTuple aggregators does not accept different orderings or supersets. Eg

julia> using TransformVariables

julia> t = as((a = asℝ, b = asℝ));

julia> inverse(t, (a = 1.0, b = 2.0))
2-element Vector{Float64}:
 1.0
 2.0

julia> inverse(t, (b = 1.0, a = 2.0))
ERROR: ArgumentError: keys(transformations) == keys(y) must hold. Got
keys(transformations) => (:a, :b)
keys(y) => (:b, :a)

julia> inverse(t, (a = 1.0, b = 2.0, c = 3.0))
ERROR: ArgumentError: keys(transformations) == keys(y) must hold. Got
keys(transformations) => (:a, :b)
keys(y) => (:a, :b, :c)

This is OK, but the user should be provided with a method to "regularize" NamedTuples (eg user input may mix up ordering).