diff --git a/src/experimental/ProbabilisticGraphicalModels/ProbabilisticGraphicalModels.jl b/src/experimental/ProbabilisticGraphicalModels/ProbabilisticGraphicalModels.jl index c770479c..ee61742f 100644 --- a/src/experimental/ProbabilisticGraphicalModels/ProbabilisticGraphicalModels.jl +++ b/src/experimental/ProbabilisticGraphicalModels/ProbabilisticGraphicalModels.jl @@ -2,34 +2,24 @@ module ProbabilisticGraphicalModels using BangBang using Graphs +using MetaGraphsNext using Distributions using JuliaBUGS -using JuliaBUGS: BUGSGraph, VarName -using JuliaBUGS.MetaGraphsNext - -import Graphs: edges -import JuliaBUGS.MetaGraphsNext: labels +using JuliaBUGS: BUGSGraph, VarName, NodeInfo include("bayesian_network.jl") include("conditioning.jl") include("functions.jl") -struct NodeInfo{F} - is_stochastic::Bool - is_observed::Bool - node_function_expr::Expr - node_function::F - node_args::Tuple{Vararg{Symbol}} - loop_vars::NamedTuple -end - -export BayesianNetwork, condition, condition!, s -decondition, -decondition!, -ancestral_sampling, -is_conditionally_independent, -add_deterministic_vertex!, -add_stochastic_vertex!, -add_vertex!, -translate_BUGSGraph_to_BayesianNetwork +export BayesianNetwork, + condition, + condition!, + decondition, + decondition!, + ancestral_sampling, + is_conditionally_independent, + add_deterministic_vertex!, + add_stochastic_vertex!, + add_vertex!, + translate_BUGSGraph_to_BayesianNetwork end diff --git a/temp.jl b/temp.jl new file mode 100644 index 00000000..a22a8b77 --- /dev/null +++ b/temp.jl @@ -0,0 +1,38 @@ +using JuliaBUGS + +(; model_def, data) = JuliaBUGS.BUGSExamples.rats + +model = compile(model_def, data) + +ni = model.g[@varname(var"beta.tau")] +nf = ni.node_function + +nf(model.evaluation_env, ()) + +model.g[@varname(Y[1, 1])] + +vn + +using AbstractPPL +getsym(vn) +getoptic(vn) + +y = rand(5, 5) + +getoptic(vn)(y) + +AbstractPPL.get(model.evaluation_env, vn) + +ex = :( +function foo(x) + return JuliaBUGS.dnorm(x, 1) +end +) + +Base.eval(:(using JuliaBUGS)) + +f = Base.eval(ex) + +dist = f(1) + +f