Skip to content

Commit

Permalink
Merge pull request #212 from ReactionMechanismGenerator/debug_threadedsa
Browse files Browse the repository at this point in the history
Convert Dict{Any,Any} to Dict{Symbol,Float64} for pyrms compatibility + formatting
  • Loading branch information
mjohnson541 committed May 13, 2023
2 parents 78b0518 + a3409bb commit 0d8574c
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions src/ThreadedSensitivities.jl
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,24 @@ with odesolver, senssolver, odekwargs and senskwargs
returns a dictionary mapping the index of the parameter to the ODESolution object
corresponding to the associated sensitivities of every variable to that parameter
"""
function threadedsensitivities(react,paramindices; odesolver=nothing,senssolver=nothing,
odekwargs=Dict([:abstol=>1e-20,:reltol=>1e-6]),senskwargs=Dict([:abstol=>1e-6,:reltol=>1e-3]))
function threadedsensitivities(react, paramindices; odesolver=nothing, senssolver=nothing,
odekwargs::Dict{Symbol,T1}=Dict([:abstol => 1e-20, :reltol => 1e-6]),
senskwargs::Dict{Symbol,T2}=Dict([:abstol => 1e-6, :reltol => 1e-3])) where {T1,T2}

if odesolver===nothing
if odesolver === nothing
odesolver = react.recommendedsolver
end
if senssolver===nothing
if senssolver === nothing
senssolver = react.recommendedsolver
end

sol = solve(react.ode, odesolver; odekwargs...)

reactsens = Reactor(react.domain,react.y0,react.tspan,react.interfaces; p=react.p,
forwardsensitivities=true,forwarddiff=react.forwarddiff,modelingtoolkit=react.modelingtoolkit,
tau=react.tau)
reactsens = Reactor(react.domain, react.y0, react.tspan, react.interfaces; p=react.p,
forwardsensitivities=true, forwarddiff=react.forwarddiff, modelingtoolkit=react.modelingtoolkit,
tau=react.tau)

salist = generatesensitivityodes(react,sol)
salist = generatesensitivityodes(react, sol)

# Parallelize the SA calculations
solutiondictionary = Dict()
Expand All @@ -80,6 +81,18 @@ function threadedsensitivities(react,paramindices; odesolver=nothing,senssolver=

return solutiondictionary
end

function threadedsensitivities(react, paramindices; odesolver=nothing, senssolver=nothing,
odekwargs::Dict{Any,Any},
senskwargs::Dict{Any,Any})
# Convert to Dict{Symbol, T}
# Needed for pyrms compatability: Python string gets converted to String and runs into expected Symbol, got a value of type String error
odekwargs = Dict(Symbol(key) => value for (key, value) in odekwargs)
senskwargs = Dict(Symbol(key) => value for (key, value) in senskwargs)
return threadedsensitivities(react, paramindices; odesolver=odesolver, senssolver=senssolver,
odekwargs=odekwargs, senskwargs=senskwargs)
end

export threadedsensitivities

"""
Expand Down

0 comments on commit 0d8574c

Please sign in to comment.