-
-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Currently, StructuralIdentifiability.jl cannot assess identifiability for models where there is a parameter in an exponent. When using the package directly, there is an error when trying to create such a model. However, for ModelingToolkit, there error happens when assess_identifiability
is called, and is rather non-intuitive. I.e.
using Catalyst, StructuralIdentifiability
rn = @reaction_network begin
X^n, ∅ --> X
d, X --> 0
end
assess_identifiability(rn; measured_quantities = [:X])
yields a
ERROR: MethodError: no method matching isless(::Int64, ::Nemo.QQMPolyRingElem)
The function `isless` exists, but no method is defined for this combination of argument types.
Closest candidates are:
isless(::Integer, ::ForwardDiff.Dual{Ty}) where Ty
@ ForwardDiff ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:149
isless(::Real, ::Num)
@ Symbolics ~/.julia/packages/Symbolics/sc64L/src/num.jl:140
isless(::Real, ::ForwardDiff.Dual{Ty}) where Ty
@ ForwardDiff ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:149
...
Stacktrace:
[1] <(x::Int64, y::Nemo.QQMPolyRingElem)
@ Base ./operators.jl:353
[2] <=(x::Int64, y::Nemo.QQMPolyRingElem)
@ Base ./operators.jl:402
[3] >=(x::Nemo.QQMPolyRingElem, y::Int64)
@ Base ./operators.jl:426
[4] eval_at_nemo(e::SymbolicUtils.BasicSymbolic{Real}, vals::Dict{SymbolicUtils.BasicSymbolic{Real}, Nemo.QQMPolyRingElem})
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:45
[5] (::ModelingToolkitSIExt.var"#1#2"{Dict{…}})(a::SymbolicUtils.BasicSymbolic{Real})
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:37
[6] iterate
@ ./generator.jl:48 [inlined]
[7] _collect(c::SymbolicUtils.SmallVec{…}, itr::Base.Generator{…}, ::Base.EltypeUnknown, isz::Base.HasShape{…})
@ Base ./array.jl:811
[8] collect_similar(cont::SymbolicUtils.SmallVec{…}, itr::Base.Generator{…})
@ Base ./array.jl:720
[9] map(f::Function, A::SymbolicUtils.SmallVec{Any, Vector{Any}})
@ Base ./abstractarray.jl:3371
[10] eval_at_nemo(e::SymbolicUtils.BasicSymbolic{Real}, vals::Dict{SymbolicUtils.BasicSymbolic{Real}, Nemo.QQMPolyRingElem})
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:36
[11] __mtk_to_si(de::ODESystem, measured_quantities::Vector{Tuple{String, SymbolicUtils.BasicSymbolic{Real}}})
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:259
[12] mtk_to_si(de::ODESystem, measured_quantities::Vector{Equation})
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:111
[13] _assess_identifiability(ode::ODESystem; measured_quantities::Vector{…}, funcs_to_check::Vector{…}, known_ic::Vector{…}, prob_threshold::Float64)
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:411
[14] _assess_identifiability
@ ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:404 [inlined]
[15] SciML/ModelingToolkit.jl#56
@ ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:394 [inlined]
[16] with_logstate(f::ModelingToolkitSIExt.var"#56#57"{…}, logstate::Base.CoreLogging.LogState)
@ Base.CoreLogging ./logging/logging.jl:522
[17] with_logger
@ ./logging/logging.jl:632 [inlined]
[18] assess_identifiability(ode::ODESystem; measured_quantities::Vector{…}, funcs_to_check::Vector{…}, known_ic::Vector{…}, prob_threshold::Float64, loglevel::Base.CoreLogging.LogLevel)
@ ModelingToolkitSIExt ~/.julia/packages/StructuralIdentifiability/r7Tss/ext/ModelingToolkitSIExt.jl:393
[19] assess_identifiability(::ReactionSystem{…}; measured_quantities::Vector{…}, known_p::Vector{…}, funcs_to_check::Vector{…}, remove_conserved::Bool, ignore_no_measured_warn::Bool, kwargs::@Kwargs{})
@ CatalystStructuralIdentifiabilityExtension ~/.julia/packages/Catalyst/8qDWw/ext/CatalystStructuralIdentifiabilityExtension/structural_identifiability_extension.jl:118
For someone not rather familiar with the package, there is more or less not way to figure out what the issue with this case is.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working