Skip to content

Commit

Permalink
fix distribution when values are String
Browse files Browse the repository at this point in the history
  • Loading branch information
joshday committed Jul 19, 2023
1 parent a87efae commit c99cc7e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
10 changes: 8 additions & 2 deletions src/operations.jl
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,12 @@ function amr_get(amr::JSON3.Object, sys::ODESystem, ::Val{:priors})
@info "Invalid distribution type! Distribution type was $(p.distribution.type)"
end

dist = EasyModelAnalysis.Distributions.Uniform(p.distribution.parameters.minimum, p.distribution.parameters.maximum)
# TODO: figure out why parameters are (sometimes?) String
(; minimum, maximum) = p.distribution.parameters
minimum = minimum isa String ? parse(minimum, Float64) : minimum
maximum = maximum isa String ? parse(maximum, Float64) : maximum

dist = EasyModelAnalysis.Distributions.Uniform(minimum, maximum)
paramlist[findfirst(x->x==Symbol(p.id),namelist)] => dist
end
end
Expand Down Expand Up @@ -211,7 +216,7 @@ function solve(o::Calibrate; callback)
init_params = Pair.(EasyModelAnalysis.ModelingToolkit.Num.(first.(o.priors)), Statistics.mean.(last.(o.priors)))
fit = EasyModelAnalysis.datafit(prob, init_params, o.data)
else

init_params = Pair.(EasyModelAnalysis.ModelingToolkit.Num.(first.(o.priors)), tuple.(minimum.(last.(o.priors)), maximum.(last.(o.priors))))
fit = EasyModelAnalysis.global_datafit(prob, init_params, o.data)
end
Expand Down Expand Up @@ -249,6 +254,7 @@ function Ensemble{T}(o::OperationRequest) where {T}
temp.df = o.df
temp.timespan = o.timespan
temp.model = model
temp.obj = o.obj
T(temp)
end
Ensemble{T}(model_ids, operations, weights, sol_mappings)
Expand Down
8 changes: 7 additions & 1 deletion test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,19 @@ end

body = JSON3.write(obj)

# create ensemble-simulte
o = OperationRequest()
o.route = "ensemble-simulate"
o.obj = JSON3.read(JSON3.write(obj))
o.models = [amr for _ in 1:4]
o.timespan = (0, 30)

en = Ensemble{Simulate}(o)

# create ensemble-calibrate
# o = OperationRequest()
# o.route = "ensemble-calibrate"
# json = JSON3.read(here("examples", "sir_calibrate", "sir_calibrate_request"), Dict)
# delete!(json, "modelConfigId")
end

@testset "Real Calibrate Payload" begin
Expand Down

0 comments on commit c99cc7e

Please sign in to comment.