using MarkovProcesses import Distributions: rand, pdf, product_distribution load_model("SIR") tol = 0.0 dist = Uniform(0.0, 1.0) pm = ParametricModel(SIR, (:kr, dist)) test1 = !insupport(pm, [2.0]) dist = Normal() pm = ParametricModel(SIR, (:kr, dist)) test2 = isapprox(prior_pdf(pm, [0.05]), pdf(dist, 0.05); atol = tol) mat_u = [[rand()] for i = 1:10] vec_u = [mat_u[i][1] for i = 1:10] _prior_pdf(x::Vector{Float64}) = prior_pdf(pm, x) test3 = isapprox(_prior_pdf.(mat_u), pdf.(dist, vec_u); atol = tol) dist, dist2 = Normal(), Normal(1.0, 2.0) prod_dist = product_distribution([dist, dist2]) pm = ParametricModel(SIR, (:ki, dist), (:kr, dist2)) mat_u = rand(2,10) vec_u = [mat_u[:,i] for i = 1:10] vec_res = zeros(10) prior_pdf!(vec_res, pm, mat_u) test4 = isapprox(vec_res, [pdf(prod_dist, vec_u[i]) for i = 1:10]; atol = tol) return test1 && test2 && test3 && test4