From b3d5ec5165fd581259d08e1c8c2b79992c73bbd4 Mon Sep 17 00:00:00 2001 From: Christopher Paciorek Date: Wed, 1 Apr 2026 15:40:52 -0700 Subject: [PATCH 1/5] Bump version. --- packages/nimble/DESCRIPTION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nimble/DESCRIPTION b/packages/nimble/DESCRIPTION index 5ca30c937..8c9d46484 100644 --- a/packages/nimble/DESCRIPTION +++ b/packages/nimble/DESCRIPTION @@ -15,8 +15,8 @@ Description: A system for writing hierarchical statistical models largely of MCMC as the main goal of the 'BUGS'/'JAGS' language for writing models, one can use 'NIMBLE' for writing arbitrary other kinds of model-generic algorithms as well. A full User Manual is available at . -Version: 1.4.2 -Date: 2026-04-01 +Version: 1.4.3 +Date: 2026-05-01 Maintainer: Christopher Paciorek Authors@R: c( person("Perry", "de Valpine", role = "aut"), From a2729a775b229f80cc3ad869946bca8c95143c2e Mon Sep 17 00:00:00 2001 From: Christopher Paciorek Date: Wed, 1 Apr 2026 15:41:45 -0700 Subject: [PATCH 2/5] Update version in README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 86374faa9..1ea945e5b 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ NIMBLE. Journal of Computational and Graphical Statistics 26:403-413. [https://d In published work that uses NIMBLE, please also cite the package version: -de Valpine, P., C. Paciorek, D. Turek, N. Michaud, C. Anderson-Bergman, F. Obermeyer, C. Wehrhahn Cortes, A. Rodriguez, D. Temple Lang, W. Zhang, S. Paganin, and P. van Dam-Bates. 2024. NIMBLE: MCMC, Particle Filtering, and Programmable Hierarchical Modeling. doi: 10.5281/zenodo.1211190. R package version 1.4.1, https://cran.r-project.org/package=nimble. +de Valpine, P., C. Paciorek, D. Turek, N. Michaud, C. Anderson-Bergman, F. Obermeyer, C. Wehrhahn Cortes, A. Rodriguez, D. Temple Lang, W. Zhang, S. Paganin, and P. van Dam-Bates. 2024. NIMBLE: MCMC, Particle Filtering, and Programmable Hierarchical Modeling. doi: 10.5281/zenodo.1211190. R package version 1.4.2, https://cran.r-project.org/package=nimble. To help us track usage to justify funding support for NIMBLE, please include the DOI in the citation. From 54db0efba826f43b2e81db889eed5ef86638262f Mon Sep 17 00:00:00 2001 From: Christopher Paciorek Date: Sat, 15 Aug 2026 12:04:58 -0700 Subject: [PATCH 3/5] Fix typo causing bug in getConditionallyIndependentSets in non-used pathway (issue 1625). --- packages/nimble/R/BUGS_nimbleGraph.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nimble/R/BUGS_nimbleGraph.R b/packages/nimble/R/BUGS_nimbleGraph.R index 39900a585..a3d1d208a 100644 --- a/packages/nimble/R/BUGS_nimbleGraph.R +++ b/packages/nimble/R/BUGS_nimbleGraph.R @@ -194,7 +194,7 @@ getConditionallyIndependentSets <- function(model, if(!missing(nodes)) { if(missing(givenNodes)) - givenNodesIDs <- setdiff(givenNodeIDs, nodeIDs) + givenNodeIDs <- setdiff(givenNodeIDs, nodeIDs) } if(!missing(givenNodes)) { nodeIDs <- setdiff(nodeIDs, givenNodeIDs) From 3c3e7c81a4ce1a6be18462f3c878c9d1bbae1962 Mon Sep 17 00:00:00 2001 From: Christopher Paciorek Date: Sat, 15 Aug 2026 13:14:47 -0700 Subject: [PATCH 4/5] Try self=TRUE in setupMargNodes. --- packages/nimble/R/setupMargNodes.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nimble/R/setupMargNodes.R b/packages/nimble/R/setupMargNodes.R index ecb92c536..b8696d560 100644 --- a/packages/nimble/R/setupMargNodes.R +++ b/packages/nimble/R/setupMargNodes.R @@ -283,7 +283,7 @@ setupMargNodes <- function(model, paramNodes, randomEffectsNodes, calcNodes, tempDataNodesDefault <- model$getNodeNames(dataOnly = TRUE) if(paramsHandled) tempDataNodesDefault <- setdiff(tempDataNodesDefault, paramNodes) - tempDataNodesDefaultParents <- model$getParents(tempDataNodesDefault, upstream = TRUE, stochOnly = TRUE) + tempDataNodesDefaultParents <- model$getParents(tempDataNodesDefault, upstream = TRUE, stochOnly = TRUE, self = TRUE) # See comment above about why this is necessary: tempDataNodesDefaultParents <- setdiff(tempDataNodesDefaultParents, tempDataNodesDefault) reNodesDefault <- intersect(reNodesDefault, tempDataNodesDefaultParents) @@ -292,12 +292,12 @@ setupMargNodes <- function(model, paramNodes, randomEffectsNodes, calcNodes, if(paramsHandled) { # This means reProvided OR paramsProvided. Including parents allows checking # of potentially missing REs. reNodesDefault <- intersect(reNodesDefault, - model$getParents(calcNodes, upstream=TRUE, stochOnly = TRUE)) + model$getParents(calcNodes, upstream=TRUE, stochOnly = TRUE, self = TRUE)) } else { # This means !paramsHandled and hence !reProvided AND !paramsProvided reNodesDefault <- intersect(reNodesDefault, calcNodes) reNodesDefault <- intersect(reNodesDefault, - model$getParents(calcNodes, upstream=TRUE, stochOnly = TRUE)) + model$getParents(calcNodes, upstream=TRUE, stochOnly = TRUE, self = TRUE)) } } } From d2c84a7639bd859f109d6b3f7c7da9f67da0d19a Mon Sep 17 00:00:00 2001 From: Christopher Paciorek Date: Sun, 16 Aug 2026 09:00:14 -0700 Subject: [PATCH 5/5] Update test to seemingly fix randomEffectsNodes. --- packages/nimble/tests/testthat/test-setupMargNodes.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nimble/tests/testthat/test-setupMargNodes.R b/packages/nimble/tests/testthat/test-setupMargNodes.R index 9eea48df8..e844aa369 100644 --- a/packages/nimble/tests/testthat/test-setupMargNodes.R +++ b/packages/nimble/tests/testthat/test-setupMargNodes.R @@ -436,7 +436,7 @@ test_that("setupMargNodes finds correct randomEffectsNodes based on calcNodes in }) m <- nimbleModel(code, data = list(y = c(1, 2))) SMN <- setupMargNodes(m, calcNodes = c("r", "s")) - expect_identical(SMN$randomEffectsNodes, c("r[1]","r[2]")) + expect_identical(SMN$randomEffectsNodes, c("r[1]","r[2]","s[1]","s[2]")) expect_identical(SMN$paramNodes, c("p[1]","p[2]")) })