ourMELONS/R/updateGlobalVariables.R
2024-04-11 09:47:29 +02:00

61 lines
2.2 KiB
R
Raw Blame History

updateGlobalVariables <- function(ind, i2, diffInCounts, adjprior, priorTerm) {
# % Suorittaa globaalien muuttujien muutokset, kun yksil<69> ind
# % on siirret<65><74>n koriin i2.
i1 <- globals$PARTITION[ind]
globals$PARTITION[ind] <- i2
globals$COUNTS[, , i1] <- globals$COUNTS[, , i1] - diffInCounts
globals$COUNTS[, , i2] <- globals$COUNTS[, , i2] + diffInCounts
globals$SUMCOUNTS[i1, ] <- globals$SUMCOUNTS[i1, ] - colSums(diffInCounts)
globals$SUMCOUNTS[i2, ] <- globals$SUMCOUNTS[i2, ] + colSums(diffInCounts)
globals$POP_LOGML[c(i1, i2)] <- computePopulationLogml(
c(i1, i2), adjprior, priorTerm
)
globals$LOGDIFF[, c(i1, i2)] <- -Inf
inx <- c(matlab2r::find(globals$PARTITION == i1), matlab2r::find(globals$PARTITION == i2))
globals$LOGDIFF[inx, ] <- -Inf
}
updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) {
# % Suorittaa globaalien muuttujien muutokset, kun kaikki
# % korissa i1 olevat yksil<69>t siirret<65><74>n koriin i2.
inds <- matlab2r::find(PARTITION == i1)
PARTITION[inds] <- i2
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - colSums(diffInCounts)
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + colSums(diffInCounts)
POP_LOGML[i1] <- 0
POP_LOGML[i2] <- computePopulationLogml(i2, adjprior, priorTerm)
LOGDIFF[, c(i1, i2)] <- -Inf
inx <- c(matlab2r::find(PARTITION == i1), matlab2r::find(PARTITION == i2))
LOGDIFF[inx, ] <- -Inf
}
updateGlobalVariables3 <- function(muuttuvat, diffInCounts, adjprior, priorTerm, i2) {
# % Suorittaa globaalien muuttujien p<>ivitykset, kun yksil<69>t 'muuttuvat'
# % siirret<65><74>n koriin i2. Ennen siirtoa yksil<69>iden on kuuluttava samaan
# % koriin.
i1 <- PARTITION[muuttuvat(1)]
PARTITION[muuttuvat] <- i2
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - colSums(diffInCounts)
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + colSums(diffInCounts)
POP_LOGML[c(i1, i2)] <- computePopulationLogml(
c(i1, i2), adjprior, priorTerm
)
LOGDIFF[, c(i1, i2)] <- -Inf
inx <- c(matlab2r::find(PARTITION == i1), matlab2r::find(PARTITION == i2))
LOGDIFF[inx, ] <- -Inf
}