Optimization.jl, DataInterpolations.jl and Gradients

astrobc1
Wed, 19 Apr 2023 20:09:25 +0000
General Usage

Hello - This is sort of a follow-up to this post here which didn’t receive attention. Below I provide a more explicit example of what I’m trying to do with interpolating and gradients during optimization. I understand this is a stilly example because I could explicitly use a least squares spline, but in my actual problem there are extra steps to construct the full model before comparing with the data, so a simple least squares spline would not work, thus why I would like this functionality.

In this example, I try both AutoForwardDiff() and AutoZyote().

using Optimization, Optimisers, OptimizationOptimisers, OptimizationFlux, Zygote, ForwardDiff
using DataInterpolations, Distributions

function gauss(x, a, μ, σ)
    return @. a * exp(-0.5 * ((x - μ) / σ)^2)
end

function rmsloss(x, y)
    r = x .- y
    return sqrt(sum(r.^2) / length(r))
end

# Data on arbitrary grid
x = sort(rand(Uniform(-10, 10), 100))
ptrue = [1.0, 1.2, 2.5]
data = gauss.(x, ptrue...)

# Objective
function obj(pars, extra)
    y = DataInterpolations.CubicSpline(pars, extra[1]).(extra[2])
    return rmsloss(extra[3], y)
end
objfunc = OptimizationFunction(obj, Optimization.AutoForwardDiff())
#objfunc = OptimizationFunction(obj, Optimization.AutoZygote())


# Initial params
n_knots = 50
knots_x = collect(range(-10, stop=10, length=n_knots))
p0 = ones(n_knots)

# Extra params
extra = (knots_x, x, data)

# Opt problem
prob = OptimizationProblem(objfunc, p0, extra)

# Solve
result = solve(prob, ADAM(0.001, (0.9, 0.999)), maxiters=1000)

And I receive the following errors:

Zygote:

ERROR: LoadError: ArgumentError: new: too few arguments (expected 4)
Stacktrace:
  [1] __new__
    @ ~/.julia/packages/Zygote/SuKWp/src/tools/builtins.jl:9 [inlined]
  [2] adjoint
    @ ~/.julia/packages/Zygote/SuKWp/src/lib/lib.jl:296 [inlined]
  [3] _pullback
    @ ~/.julia/packages/ZygoteRules/AIbCs/src/adjoint.jl:65 [inlined]
  [4] _pullback
    @ /Applications/Julia-1.9.app/Contents/Resources/julia/share/julia/stdlib/v1.9/LinearAlgebra/src/tridiag.jl:498 [inlined]
  [5] _pullback(::Zygote.Context{false}, ::Type{LinearAlgebra.Tridiagonal{Float64, Vector{Float64}}}, ::Vector{Float64}, ::Vector{Float64}, ::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface2.jl:0
  [6] _pullback
    @ /Applications/Julia-1.9.app/Contents/Resources/julia/share/julia/stdlib/v1.9/LinearAlgebra/src/tridiag.jl:533 [inlined]
  [7] _pullback
    @ ~/.julia/packages/DataInterpolations/ivHqg/src/interpolation_caches.jl:160 [inlined]
  [8] _pullback(::Zygote.Context{false}, ::Type{CubicSpline}, ::Vector{Float64}, ::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface2.jl:0
  [9] _pullback
    @ ~/Desktop/test_interp1d2.jl:20 [inlined]
 [10] _pullback(::Zygote.Context{false}, ::typeof(obj), ::Vector{Float64}, ::Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface2.jl:0
 [11] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [12] adjoint
    @ ~/.julia/packages/Zygote/SuKWp/src/lib/lib.jl:203 [inlined]
 [13] _pullback
    @ ~/.julia/packages/ZygoteRules/AIbCs/src/adjoint.jl:65 [inlined]
 [14] _pullback
    @ ~/.julia/packages/SciMLBase/ys6dl/src/scimlfunctions.jl:3596 [inlined]
 [15] _pullback(::Zygote.Context{false}, ::OptimizationFunction{true, Optimization.AutoZygote, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, ::Vector{Float64}, ::Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface2.jl:0
 [16] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [17] adjoint
    @ ~/.julia/packages/Zygote/SuKWp/src/lib/lib.jl:203 [inlined]
 [18] _pullback
    @ ~/.julia/packages/ZygoteRules/AIbCs/src/adjoint.jl:65 [inlined]
 [19] _pullback
    @ ~/.julia/packages/Optimization/RHDsr/src/function/zygote.jl:31 [inlined]
 [20] _pullback(ctx::Zygote.Context{false}, f::Optimization.var"#138#147"{OptimizationFunction{true, Optimization.AutoZygote, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface2.jl:0
 [21] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [22] adjoint
    @ ~/.julia/packages/Zygote/SuKWp/src/lib/lib.jl:203 [inlined]
 [23] _pullback
    @ ~/.julia/packages/ZygoteRules/AIbCs/src/adjoint.jl:65 [inlined]
 [24] _pullback
    @ ~/.julia/packages/Optimization/RHDsr/src/function/zygote.jl:35 [inlined]
 [25] _pullback(ctx::Zygote.Context{false}, f::Optimization.var"#140#149"{Tuple{}, Optimization.var"#138#147"{OptimizationFunction{true, Optimization.AutoZygote, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}}, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface2.jl:0
 [26] pullback(f::Function, cx::Zygote.Context{false}, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface.jl:44
 [27] pullback
    @ ~/.julia/packages/Zygote/SuKWp/src/compiler/interface.jl:42 [inlined]
 [28] gradient(f::Function, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/SuKWp/src/compiler/interface.jl:96
 [29] (::Optimization.var"#139#148"{Optimization.var"#138#147"{OptimizationFunction{true, Optimization.AutoZygote, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}})(::Vector{Float64}, ::Vector{Float64})
    @ Optimization ~/.julia/packages/Optimization/RHDsr/src/function/zygote.jl:33
 [30] macro expansion
    @ ~/.julia/packages/OptimizationOptimisers/FWIuf/src/OptimizationOptimisers.jl:31 [inlined]
 [31] macro expansion
    @ ~/.julia/packages/Optimization/RHDsr/src/utils.jl:37 [inlined]
 [32] __solve(prob::OptimizationProblem{true, OptimizationFunction{true, Optimization.AutoZygote, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{Float64}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, opt::Optimisers.Adam{Float64}, data::Base.Iterators.Cycle{Tuple{Optimization.NullData}}; maxiters::Int64, callback::Function, progress::Bool, save_best::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ OptimizationOptimisers ~/.julia/packages/OptimizationOptimisers/FWIuf/src/OptimizationOptimisers.jl:30
 [33] __solve (repeats 2 times)
    @ ~/.julia/packages/OptimizationOptimisers/FWIuf/src/OptimizationOptimisers.jl:7 [inlined]
 [34] #solve#544
    @ ~/.julia/packages/SciMLBase/ys6dl/src/solve.jl:85 [inlined]
 [35] top-level scope
    @ ~/Desktop/test_interp1d2.jl:37
 [36] include(fname::String)
    @ Base.MainInclude ./client.jl:478
 [37] top-level scope
    @ REPL[2]:1
in expression starting at /Users/cale/Desktop/test_interp1d2.jl:37

julia>

ForwardDiff:

ERROR: LoadError: MethodError: no method matching Float64(::ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12})

Closest candidates are:
  (::Type{T})(::Real, ::RoundingMode) where T<:AbstractFloat
   @ Base rounding.jl:207
  (::Type{T})(::T) where T<:Number
   @ Core boot.jl:792
  (::Type{T})(::AbstractChar) where T<:Union{AbstractChar, Number}
   @ Base char.jl:50
  ...

Stacktrace:
  [1] convert(#unused#::Type{Float64}, x::ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12})
    @ Base ./number.jl:7
  [2] setindex!(A::Vector{Float64}, x::ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12}, i1::Int64)
    @ Base ./array.jl:969
  [3] _unsafe_copyto!(dest::Vector{Float64}, doffs::Int64, src::Vector{Real}, soffs::Int64, n::Int64)
    @ Base ./array.jl:250
  [4] unsafe_copyto!
    @ ./array.jl:304 [inlined]
  [5] _copyto_impl!
    @ ./array.jl:327 [inlined]
  [6] copyto!
    @ ./array.jl:314 [inlined]
  [7] copyto!
    @ ./array.jl:339 [inlined]
  [8] \(F::LinearAlgebra.LU{Float64, LinearAlgebra.Tridiagonal{Float64, Vector{Float64}}, Vector{Int64}}, B::Vector{Real})
    @ LinearAlgebra /Applications/Julia-1.9.app/Contents/Resources/julia/share/julia/stdlib/v1.9/LinearAlgebra/src/LinearAlgebra.jl:533
  [9] \(A::LinearAlgebra.Tridiagonal{Float64, Vector{Float64}}, B::Vector{Real})
    @ LinearAlgebra /Applications/Julia-1.9.app/Contents/Resources/julia/share/julia/stdlib/v1.9/LinearAlgebra/src/generic.jl:1115
 [10] CubicSpline(u::Vector{ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12}}, t::Vector{Float64})
    @ DataInterpolations ~/.julia/packages/DataInterpolations/ivHqg/src/interpolation_caches.jl:162
 [11] obj(pars::Vector{ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12}}, extra::Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}})
    @ Main ~/Desktop/test_interp1d2.jl:20
 [12] (::Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}})(::Vector{ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12}})
    @ Optimization ~/.julia/packages/Optimization/RHDsr/src/function/forwarddiff.jl:47
 [13] #72
    @ ~/.julia/packages/Optimization/RHDsr/src/function/forwarddiff.jl:51 [inlined]
 [14] chunk_mode_gradient!(result::Vector{Float64}, f::Optimization.var"#72#89"{Tuple{}, Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}}, x::Vector{Float64}, cfg::ForwardDiff.GradientConfig{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12}}})
    @ ForwardDiff ~/.julia/packages/ForwardDiff/vXysl/src/gradient.jl:123
 [15] gradient!
    @ ~/.julia/packages/ForwardDiff/vXysl/src/gradient.jl:39 [inlined]
 [16] (::Optimization.var"#71#88"{ForwardDiff.GradientConfig{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}, Float64}, Float64, 12}}}, Optimization.var"#70#87"{OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}}})(::Vector{Float64}, ::Vector{Float64})
    @ Optimization ~/.julia/packages/Optimization/RHDsr/src/function/forwarddiff.jl:51
 [17] macro expansion
    @ ~/.julia/packages/OptimizationOptimisers/FWIuf/src/OptimizationOptimisers.jl:31 [inlined]
 [18] macro expansion
    @ ~/.julia/packages/Optimization/RHDsr/src/utils.jl:37 [inlined]
 [19] __solve(prob::OptimizationProblem{true, OptimizationFunction{true, Optimization.AutoForwardDiff{nothing}, typeof(obj), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{Float64}, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, opt::Optimisers.Adam{Float64}, data::Base.Iterators.Cycle{Tuple{Optimization.NullData}}; maxiters::Int64, callback::Function, progress::Bool, save_best::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ OptimizationOptimisers ~/.julia/packages/OptimizationOptimisers/FWIuf/src/OptimizationOptimisers.jl:30
 [20] __solve (repeats 2 times)
    @ ~/.julia/packages/OptimizationOptimisers/FWIuf/src/OptimizationOptimisers.jl:7 [inlined]
 [21] #solve#544
    @ ~/.julia/packages/SciMLBase/ys6dl/src/solve.jl:85 [inlined]
 [22] top-level scope
    @ ~/Desktop/test_interp1d2.jl:39
 [23] include(fname::String)
    @ Base.MainInclude ./client.jl:478
 [24] top-level scope
    @ REPL[2]:1
in expression starting at /Users/cale/Desktop/test_interp1d2.jl:39

julia>

Package st:

Status `~/.julia/environments/v1.9/Project.toml`
  [a0f608ac] AffineInvariantMCMC v1.0.2
  [7d9fca2a] Arpack v0.5.4
  [5c4adb95] AstroAngles v0.1.3
  [c7932e45] AstroLib v0.4.2
  [c61b5328] AstroTime v0.7.0
  [6e4b80f9] BenchmarkTools v1.3.2
  [a5944310] CMPFit v0.3.5
  [336ed68f] CSV v0.10.9
  [49dc2e85] Calculus v0.5.1
  [5ae59095] Colors v0.12.10
  [861a8166] Combinatorics v1.0.2
  [717857b8] DSP v0.7.8
  [a93c6f00] DataFrames v1.5.0
  [82cc6244] DataInterpolations v4.0.0
  [864edb3b] DataStructures v0.18.13
  [8bb1440f] DelimitedFiles v1.9.1
⌃ [39dd38d3] Dierckx v0.5.2
⌃ [2b5f629d] DiffEqBase v6.119.0
  [31c24e10] Distributions v0.25.87
⌃ [7da242da] Enzyme v0.10.18
  [525bcba6] FITSIO v0.17.0
  [9aa1b823] FastClosures v0.3.2
  [d8961e24] FindPeaks1D v0.1.8
  [59287772] Formatting v0.4.2
  [f6369f11] ForwardDiff v0.10.35
⌃ [c27321d9] Glob v1.3.0
  [5903a43b] Infiltrator v1.6.3
  [842dd82b] InlineStrings v1.4.0
  [42fd0dbc] IterativeSolvers v0.9.2
⌃ [033835bb] JLD2 v0.4.30
  [b964fa9f] LaTeXStrings v1.3.0
  [fc60dff9] LombScargle v1.0.3
⌃ [bdcacae8] LoopVectorization v0.12.150
  [2fda8390] LsqFit v0.13.0
⌃ [23992714] MAT v0.10.3
  [6f286f6a] MultivariateStats v0.10.1
  [15e1cf62] NPZ v0.4.3
⌃ [b946abbf] NaNStatistics v0.6.24
  [86f7a689] NamedArrays v0.9.8
  [429524aa] Optim v1.7.5
  [87e2bd06] OptimBase v2.0.2
  [3bd65402] Optimisers v0.2.18
  [7f7a1694] Optimization v3.13.1
  [253f991c] OptimizationFlux v0.1.4
⌃ [36348300] OptimizationOptimJL v0.1.5
  [42dfb2eb] OptimizationOptimisers v0.1.2
  [2412ca09] ParameterHandling v0.4.6
  [18e31ff7] Peaks v0.4.3
  [fbb45041] Pickle v0.3.2
  [f0f68f2c] PlotlyJS v0.18.10
⌃ [ca7969ec] PlotlyLight v0.6.1
⌃ [f27b6e38] Polynomials v3.2.4
  [92933f4c] ProgressMeter v1.7.2
  [438e738f] PyCall v1.95.1
⌃ [d330b81b] PyPlot v2.11.0
  [6099a3de] PythonCall v0.9.12
  [1c8f45e8] RVModelingToolkit v0.1.0 `~/Development/RVModelingToolkit`
  [189a3867] Reexport v1.2.2
⌃ [295af30f] Revise v3.5.1
  [fdea26ae] SIMD v3.4.4
  [c4bf5708] SavitzkyGolay v0.6.2
⌃ [fc659fc5] SkyCoords v1.1.0
  [102930c3] SmoothingSplines v0.3.1
  [66db9d55] SnoopPrecompile v1.0.3
  [276daf66] SpecialFunctions v2.2.0
  [928aab9d] SpecialMatrices v3.0.0
⌃ [a25cea48] SpecialPolynomials v0.4.4
  [2913bbd2] StatsBase v0.33.21
  [bd369af6] Tables v1.10.1
  [1986cc42] Unitful v1.13.1
  [6112ee07] UnitfulAstro v1.2.0
  [e88e6eb3] Zygote v0.6.60
  [ade2ca70] Dates
  [8ba89e20] Distributed
  [37e2e46d] LinearAlgebra
  [2f01184e] SparseArrays

5 posts - 2 participants