Fixed global variable handling

This commit is contained in:
Waldir Leoncio 2020-11-19 08:09:04 +01:00
parent 46a9249e5a
commit de9683dd7d
5 changed files with 33 additions and 33 deletions

View file

@ -1,8 +1,7 @@
clearGlobalVars <- function() {
# COUNTS <- SUMCOUNTS <- PARTITION <- POP_LOGML <- vector() # placeholders
COUNTS <<- vector()
SUMCOUNTS <<- vector()
PARTITION <<- vector()
POP_LOGML <<- vector()
LOGDIFF <<- vector()
COUNTS <- vector()
SUMCOUNTS <- vector()
PARTITION <- vector()
POP_LOGML <- vector()
LOGDIFF <- vector()
}

1
R/globals.R Normal file
View file

@ -0,0 +1 @@
utils::globalVariables(c("PARTITION", "COUNTS", "SUMCOUNTS", "LOGDIFF", "POP_LOGML"))

View file

@ -41,7 +41,7 @@ poistaLiianPienet <- function (npops, rowsFromInd, alaraja,
PARTITION[yksilot] == n
}
# TODO: add COUNTS, SUMCOUNTS and PARTITION to return or use <<-
# TODO: add COUNTS, SUMCOUNTS and PARTITION to return or use <-
COUNTS[, , miniPops] <- NA
SUMCOUNTS[miniPops, ] <- NA

View file

@ -2,13 +2,13 @@ poistaTyhjatPopulaatiot <- function(npops) {
# % Poistaa tyhjentyneet populaatiot COUNTS:ista ja
# % SUMCOUNTS:ista. P<>ivitt<74><74> npops:in ja PARTITION:in.
notEmpty <- find(any(SUMCOUNTS, 2))
COUNTS <<- COUNTS[, , notEmpty]
SUMCOUNTS <<- SUMCOUNTS[notEmpty, ]
LOGDIFF <<- LOGDIFF[, notEmpty]
COUNTS <- COUNTS[, , notEmpty]
SUMCOUNTS <- SUMCOUNTS[notEmpty, ]
LOGDIFF <- LOGDIFF[, notEmpty]
for (n in 1:length(notEmpty)) {
apu <- find(PARTITION == notEmpty(n))
PARTITION(apu) <<- n
PARTITION[apu] <- n
}
npops <- length(notEmpty)
return(npops)

View file

@ -2,21 +2,21 @@ updateGlobalVariables <- function(ind, i2, diffInCounts, adjprior, priorTerm) {
# % Suorittaa globaalien muuttujien muutokset, kun yksil<69> ind
# % on siirret<65><74>n koriin i2.
i1 <- PARTITION(ind)
PARTITION(ind) <<- i2
i1 <- PARTITION[ind]
PARTITION[ind] <- i2
COUNTS[, , i1] <<- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <<- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <<- SUMCOUNTS[i1, ] - sum[diffInCounts]
SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts]
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - sum[diffInCounts]
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + sum[diffInCounts]
POP_LOGML[c(i1, i2)] <<- computePopulationLogml(
POP_LOGML[c(i1, i2)] <- computePopulationLogml(
c(i1, i2), adjprior, priorTerm
)
LOGDIFF[, c(i1, i2)] <<- -Inf
LOGDIFF[, c(i1, i2)] <- -Inf
inx <- c(find(PARTITION == i1), find(PARTITION==i2))
LOGDIFF[inx, ] <<- -Inf
LOGDIFF[inx, ] <- -Inf
}
updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) {
@ -24,12 +24,12 @@ updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) {
# % korissa i1 olevat yksil<69>t siirret<65><74>n koriin i2.
inds <- find(PARTITION == i1)
PARTITION(inds) <<- i2
PARTITION[inds] <- i2
COUNTS[, , i1] <<- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <<- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <<- SUMCOUNTS[i1, ] - sum[diffInCounts]
SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts]
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - sum[diffInCounts]
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + sum[diffInCounts]
POP_LOGML[i1] <- 0
POP_LOGML[i2] <- computePopulationLogml(i2, adjprior, priorTerm)
@ -47,18 +47,18 @@ updateGlobalVariables3 <- function(
# % koriin.
i1 <- PARTITION[muuttuvat(1)]
PARTITION[muuttuvat] <<- i2
PARTITION[muuttuvat] <- i2
COUNTS[, , i1] <<- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <<- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <<- SUMCOUNTS[i1, ] - sum[diffInCounts]
SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts]
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - sum[diffInCounts]
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + sum[diffInCounts]
POP_LOGML[c(i1, i2)] <<- computePopulationLogml(
POP_LOGML[c(i1, i2)] <- computePopulationLogml(
c(i1, i2), adjprior, priorTerm
)
LOGDIFF[, c(i1, i2)] <<- -Inf
LOGDIFF[, c(i1, i2)] <- -Inf
inx <- c(find(PARTITION == i1), find(PARTITION == i2))
LOGDIFF[inx, ] <<- -Inf
LOGDIFF[inx, ] <- -Inf
}