From 071b22421dc3c8aa1a07ea0b8c8d84934ae78de1 Mon Sep 17 00:00:00 2001 From: Peter Thestrup Waade Date: Tue, 3 Sep 2024 08:19:35 +0200 Subject: [PATCH 1/3] fixed and optimized get_history and get_states --- .../utils/get_history.jl | 30 +++++--------- .../utils/get_states.jl | 39 +++++++------------ 2 files changed, 23 insertions(+), 46 deletions(-) diff --git a/src/ActionModels_variations/utils/get_history.jl b/src/ActionModels_variations/utils/get_history.jl index 8b8ce6b..6013728 100644 --- a/src/ActionModels_variations/utils/get_history.jl +++ b/src/ActionModels_variations/utils/get_history.jl @@ -85,32 +85,20 @@ end function ActionModels.get_history(node::AbstractNode) - #Initialize dictionary - state_histories = Dict() - - #Go through all states in the node's history - for state_key in fieldnames(typeof(node.history)) + #Get the node's name and history + node_name = node.name + node_history = node.history - #And add their histories to the output - state_histories[String(state_key)] = getproperty(node.history, state_key) + #Return a dictionary of the node's history + Dict((node_name,string(key))=>getfield(node_history, key) for key ∈ fieldnames(typeof(node_history))) - end - - return state_histories end function ActionModels.get_history(hgf::HGF) - #Initialize dict for state histories - state_histories = Dict() - - #For each node - for node in hgf.ordered_nodes.all_nodes - #Get out the histories of the node - node_histories = get_history(node) - #And merge them with the dict - merge(state_histories, node_histories) - end + #Get the histories of all nodes + merge( + [get_history(node) for node in hgf.ordered_nodes.all_nodes]... + ) - return state_histories end diff --git a/src/ActionModels_variations/utils/get_states.jl b/src/ActionModels_variations/utils/get_states.jl index 104a667..5be0b5c 100644 --- a/src/ActionModels_variations/utils/get_states.jl +++ b/src/ActionModels_variations/utils/get_states.jl @@ -100,38 +100,27 @@ function ActionModels.get_states(hgf::HGF, node_name::String) throw(ArgumentError("The node $node_name does not exist")) end - #Initialize dict - states = Dict() - - #Get out the node - node = hgf.all_nodes[node_name] + #Get the states of the node + node = get_states(hgf.all_nodes[node_name]) +end - #For each state in the node - for state_key in fieldnames(typeof(node.states)) +function ActionModels.get_states(node::AbstractNode) - #Add it to the dictionary - states[(node_name, String(state_key))] = get_states(node, String(state_key)) + #Get the node's name and states + node_name = node.name + node_states = node.states - end + #Return a dictionary of the node's states + Dict((node_name,string(key))=>getfield(node_states, key) for key ∈ fieldnames(typeof(node_states))) - #Get its states - return states end - ### For getting all states of an HGF ### function ActionModels.get_states(hgf::HGF) - #Initialize dict for state states - states = Dict() - - #For each node - for node_name in keys(hgf.all_nodes) - #Get out the states of the node - node_states = get_states(hgf, node_name) - #And merge them with the dict - states = merge(states, node_states) - end - - return states + #Get the states of all nodes + merge( + [get_states(node) for node in hgf.ordered_nodes.all_nodes]... + ) + end From 8a6bf013cf9744d3e46ea62e7b017616ac845895 Mon Sep 17 00:00:00 2001 From: Peter Thestrup Waade Date: Fri, 13 Sep 2024 14:40:18 +0200 Subject: [PATCH 2/3] updated ActionModels dependency --- Project.toml | 2 +- docs/make.jl | 2 +- docs/src/{theory => }/images/genmod.png | Bin docs/src/{theory => }/images/genmod.svg | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename docs/src/{theory => }/images/genmod.png (100%) rename docs/src/{theory => }/images/genmod.svg (100%) diff --git a/Project.toml b/Project.toml index fbf2aba..87e8cca 100644 --- a/Project.toml +++ b/Project.toml @@ -13,7 +13,7 @@ Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" [compat] -ActionModels = "0.5" +ActionModels = "0.6" Distributions = "0.25" RecipesBase = "1" julia = "1.10" diff --git a/docs/make.jl b/docs/make.jl index a05db21..f273fdf 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -3,7 +3,7 @@ using Documenter using Literate -hgf_path = dirname(dirname(pathof(HierarchicalGaussianFiltering))) +hgf_path = dirname(pathof(HierarchicalGaussianFiltering)) juliafiles_path = hgf_path * "/docs/julia_files" user_guides_path = juliafiles_path * "/user_guide" diff --git a/docs/src/theory/images/genmod.png b/docs/src/images/genmod.png similarity index 100% rename from docs/src/theory/images/genmod.png rename to docs/src/images/genmod.png diff --git a/docs/src/theory/images/genmod.svg b/docs/src/images/genmod.svg similarity index 100% rename from docs/src/theory/images/genmod.svg rename to docs/src/images/genmod.svg From 1bd04e6dcbb030afceb0b40e81cb8910387723d1 Mon Sep 17 00:00:00 2001 From: Peter Thestrup Waade Date: Fri, 13 Sep 2024 02:41:20 -1000 Subject: [PATCH 3/3] version 0.5.0 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 87e8cca..f549f1b 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,7 @@ authors = [ "Peter Thestrup Waade ptw@cas.au.dk", "Anna Hedvig Møller hedvig.2808@gmail.com", "Jacopo Comoglio jacopo.comoglio@gmail.com", "Christoph Mathys chmathys@cas.au.dk"] -version = "0.5.4" +version = "0.5.5" [deps]