Closed ablaom closed 2 months ago
julia> data = patient_data(); julia> record = data[16] julia> times = record.T_weeks julia> volumes = record.Lesion_normvol # volumes normalized by max over dataset julia> problem = CalibrationProblem(times, volumes, bertalanffy_numerical) CalibrationProblem: model: bertalanffy_numerical current solution: v0=0.0133 v∞=0.0148 ω=0.0421 λ=0.333 julia> solve!(problem, 1) ERROR: MethodError: no method matching (::SciMLSensitivity.var"#df_oop#309"{…})(::SubArray{…}, ::Float64, ::Vector{…}, ::Float64, ::Int64) Closest candidates are: (::SciMLSensitivity.var"#df_oop#309")(::Any, ::Any, ::Any, ::Any; outtype) @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/swmp8/src/concrete_solve.jl:471 Stacktrace: [1] (::SciMLSensitivity.ReverseLossCallback{…})(integrator::OrdinaryDiffEq.ODEIntegrator{…}) @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/swmp8/src/adjoint_common.jl:514 [2] (::DiffEqCallbacks.var"#112#115"{…})(c::SciMLBase.DiscreteCallback{…}, u::Vector{…}, t ::Float64, integrator::OrdinaryDiffEq.ODEIntegrator{…}) @ DiffEqCallbacks ~/.julia/packages/DiffEqCallbacks/uVI0B/src/preset_time.jl:52 [3] initialize! @ ~/.julia/packages/DiffEqBase/eLhx9/src/callbacks.jl:18 [inlined] [4] initialize! @ ~/.julia/packages/DiffEqBase/eLhx9/src/callbacks.jl:7 [inlined] [5] initialize_callbacks!(integrator::OrdinaryDiffEq.ODEIntegrator{…}, initialize_save::Bool) @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/D4BiZ/src/solve.jl:648 [6] __init(prob::SciMLBase.ODEProblem{…}, alg::OrdinaryDiffEq.Tsit5{…}, timeseries_init::Tuple{}, ts_init::Tuple{}, ks_init::Tuple{}, recompile::Type{…}; saveat::Vector{…}, tstops::Vector{…}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_on::Bool, save_start::Bool, save_end::Nothing, callback::SciMLBase.CallbackSet{…}, dense::Bool, calck::Bool, dt::Float64, dtmin::Float64, dtmax::Float64, force_dtmin::Bool, adaptive::Bool, gamma::Rational{…}, abstol::Float64, reltol::Float64, qmin::Rational{…}, qmax::Int64, qsteady_min::Int64, qsteady_max::Int64, beta1::Nothing, beta2::Nothing, qoldinit::Rational{…}, controller::Nothing, fullnormalize::Bool, failfactor::Int64, maxiters::Int64, internalnorm::typeof(DiffEqBase.ODE_DEFAULT_NORM), internalopnorm::typeof(LinearAlgebra.opnorm), isoutofdomain::typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), unstable_check::typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), verbose::Bool, timeseries_errors::Bool, dense_errors::Bool, advance_to_tstop::Bool, stop_at_next_tstop::Bool, initialize_save::Bool, progress::Bool, progress_steps::Int64, progress_name::String, progress_message::typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), progress_id::Symbol, userdata::Nothing, allow_extrapolation::Bool, initialize_integrator::Bool, alias_u0::Bool, alias_du0::Bool, initializealg::OrdinaryDiffEq.DefaultInit, kwargs::@Kwargs{}) @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/D4BiZ/src/solve.jl:511 [7] kwcall(::NamedTuple, ::typeof(SciMLBase.__init), prob::Union{…}, alg::Union{…}, timeseries_init::Any, ts_init::Any, ks_init::Any, recompile::Type{…}) where recompile_flag (repeats 5 times) @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/D4BiZ/src/solve.jl:10 [inlined] [8] __solve(prob::Union{…}, alg::Union{…}, args::Vararg{…}; kwargs...) @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/D4BiZ/src/solve.jl:5 [inlined] [9] __solve @ ~/.julia/packages/OrdinaryDiffEq/D4BiZ/src/solve.jl:1 [inlined] [10] solve_call(_prob::SciMLBase.ODEProblem{…}, args::OrdinaryDiffEq.Tsit5{…}; merge_callbacks::Bool, kwargshandle::Nothing, kwargs::@Kwargs{…}) @ DiffEqBase ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:609 [11] solve_call @ DiffEqBase ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:567 [inlined] [12] #solve_up#42 @ DiffEqBase ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:1058 [inlined] [13] solve_up @ DiffEqBase ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:1044 [inlined] [14] #solve#40 @ DiffEqBase ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:981 [inlined] [15] _adjoint_sensitivities(sol::SciMLBase.ODESolution{…}, sensealg::SciMLSensitivity.InterpolatingAdjoint{…}, alg::OrdinaryDiffEq.Tsit5{…}; t::Vector{…}, dgdu_discrete::Function, dgdp_discrete::Nothing, dgdu_continuous::Nothing, dgdp_continuous::Nothing, g::Nothing, abstol::Float64, reltol::Float64, checkpoints::Vector{…}, corfunc_analytical::Nothing, callback::Nothing, kwargs::@Kwargs{…}) @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/swmp8/src/sensitivity_interface.jl:432 [16] _adjoint_sensitivities @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/swmp8/src/sensitivity_interface.jl:390 [inlined] [17] #adjoint_sensitivities#63 @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/swmp8/src/sensitivity_interface.jl:386 [inlined] [18] (::SciMLSensitivity.var"#adjoint_sensitivity_backpass#307"{…})(Δ::SciMLBase.ODESolution{…}) @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/swmp8/src/concrete_solve.jl:542 [19] ZBack @ ~/.julia/packages/Zygote/jxHJc/src/compiler/chainrules.jl:211 [inlined] [20] (::Zygote.var"#kw_zpullback#53"{…})(dy::SciMLBase.ODESolution{…}) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/chainrules.jl:237 [21] #291 @ Zygote ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:206 [inlined] [22] (::Zygote.var"#2169#back#293"{…})(Δ::SciMLBase.ODESolution{…}) @ Zygote ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:72 [23] #solve#40 @ ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:981 [inlined] [24] (::Zygote.Pullback{…})(Δ::SciMLBase.ODESolution{…}) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0 [25] #291 @ Zygote ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:206 [inlined] [26] (::Zygote.var"#2169#back#293"{…})(Δ::SciMLBase.ODESolution{…}) @ Zygote ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:72 [27] solve @ ~/.julia/packages/DiffEqBase/eLhx9/src/solve.jl:971 [inlined] [28] (::Zygote.Pullback{…})(Δ::SciMLBase.ODESolution{…}) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0 [29] #bertalanffy_numerical#9 @ ~/Julia/TumorGrowth/src/solutions.jl:73 [inlined] [30] (::Zygote.Pullback{Tuple{…}, Tuple{…}})(Δ::Vector{Float64}) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0 [31] bertalanffy_numerical @ ~/Julia/TumorGrowth/src/solutions.jl:57 [inlined] [32] (::Zygote.Pullback{Tuple{…}, Tuple{…}})(Δ::Vector{Float64}) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0 [33] f @ ~/Julia/TumorGrowth/src/optimisers.jl:133 [inlined] [34] (::Zygote.Pullback{Tuple{TumorGrowth.var"#f#28"{…}, ComponentArrays.ComponentVector{…}}, Any})(Δ::Float64) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0 [35] (::Zygote.var"#75#76"{Zygote.Pullback{Tuple{…}, Any}})(Δ::Float64) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:91 [36] gradient(f::Function, args::ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{…}}}) @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:148 [37] train!(problem::TumorGrowth.OptimisationProblem{…}, n::Int64) @ TumorGrowth ~/Julia/TumorGrowth/src/optimisers.jl:70 [38] train! @ TumorGrowth ~/Julia/TumorGrowth/src/optimisers.jl:144 [inlined] [39] train!(c::CalibrationProblem{Float64, typeof(bertalanffy_numerical), TumorGrowth.CurveOptimisationProblem{…}}, n::Int64) @ TumorGrowth ~/Julia/TumorGrowth/src/calibration.jl:339 [40] solve!(::CalibrationProblem{…}, ::Vararg{…}; kwargs::@Kwargs{}) @ TumorGrowth ~/Julia/TumorGrowth/src/optimisers.jl:169 [41] top-level scope @ REPL[127]:1 Some type information was truncated. Use `show(err)` to see complete types.
Maybe we need to make the scalar volume a 1-d vector, like we do for neural.
neural