diff --git a/R/indMix.R b/R/indMix.R index 405a250..5aa556d 100644 --- a/R/indMix.R +++ b/R/indMix.R @@ -565,25 +565,6 @@ indMix <- function(c, npops, dispText) { list(logml = logml, npops = npops, partitionSummary = partitionSummary) ) } - -# logml = logmlBest; -# npops = npopsBest; -# PARTITION = partitionBest; -# COUNTS = countsBest; -# SUMCOUNTS = sumCountsBest; -# POP_LOGML = pop_logmlBest; -# LOGDIFF = logdiffbest; - -# %-------------------------------------------------------------------------- - -# function clearGlobalVars - -# global COUNTS; COUNTS = []; -# global SUMCOUNTS; SUMCOUNTS = []; -# global PARTITION; PARTITION = []; -# global POP_LOGML; POP_LOGML = []; -# global LOGDIFF; LOGDIFF = []; - # %-------------------------------------------------------------------------- @@ -695,98 +676,6 @@ indMix <- function(c, npops, dispText) { # end # end -# %------------------------------------------------------------------------ - - -# %------------------------------------------------------------------------------------- - - -# function updateGlobalVariables(ind, i2, diffInCounts, ... -# adjprior, priorTerm) -# % Suorittaa globaalien muuttujien muutokset, kun yksil� ind -# % on siirret��n koriin i2. - -# global PARTITION; -# global COUNTS; -# global SUMCOUNTS; -# global POP_LOGML; -# global LOGDIFF; - -# 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); - -# POP_LOGML([i1 i2]) = computePopulationLogml([i1 i2], adjprior, priorTerm); - -# LOGDIFF(:,[i1 i2]) = -Inf; -# inx = [find(PARTITION==i1); find(PARTITION==i2)]; -# LOGDIFF(inx,:) = -Inf; - - -# %-------------------------------------------------------------------------- -# %-- - - -# function updateGlobalVariables2( ... -# i1, i2, diffInCounts, adjprior, priorTerm); -# % Suorittaa globaalien muuttujien muutokset, kun kaikki -# % korissa i1 olevat yksil�t siirret��n koriin i2. - -# global PARTITION; -# global COUNTS; -# global SUMCOUNTS; -# global POP_LOGML; -# global LOGDIFF; - -# inds = find(PARTITION==i1); -# 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); - -# POP_LOGML(i1) = 0; -# POP_LOGML(i2) = computePopulationLogml(i2, adjprior, priorTerm); - -# LOGDIFF(:,[i1 i2]) = -Inf; -# inx = [find(PARTITION==i1); find(PARTITION==i2)]; -# LOGDIFF(inx,:) = -Inf; - -# %------------------------------------------------------------------------------------ - - -# function updateGlobalVariables3(muuttuvat, diffInCounts, ... -# adjprior, priorTerm, i2); -# % Suorittaa globaalien muuttujien p�ivitykset, kun yksil�t 'muuttuvat' -# % siirret��n koriin i2. Ennen siirtoa yksil�iden on kuuluttava samaan -# % koriin. - -# global PARTITION; -# global COUNTS; -# global SUMCOUNTS; -# global POP_LOGML; -# global LOGDIFF; - -# i1 = PARTITION(muuttuvat(1)); -# 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); - -# POP_LOGML([i1 i2]) = computePopulationLogml([i1 i2], adjprior, priorTerm); - -# LOGDIFF(:,[i1 i2]) = -Inf; -# inx = [find(PARTITION==i1); find(PARTITION==i2)]; -# LOGDIFF(inx,:) = -Inf; - - # %---------------------------------------------------------------------------- diff --git a/R/updateGlobalVariables.R b/R/updateGlobalVariables.R new file mode 100644 index 0000000..4b17469 --- /dev/null +++ b/R/updateGlobalVariables.R @@ -0,0 +1,64 @@ +updateGlobalVariables <- function(ind, i2, diffInCounts, adjprior, priorTerm) { + # % Suorittaa globaalien muuttujien muutokset, kun yksil� ind + # % on siirret��n koriin 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] + + POP_LOGML[c(i1, i2)] <<- computePopulationLogml( + c(i1, i2), adjprior, priorTerm + ) + + LOGDIFF[, c(i1, i2)] <<- -Inf + inx <- c(find(PARTITION == i1), find(PARTITION==i2)) + LOGDIFF[inx, ] <<- -Inf +} + +updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) { + # % Suorittaa globaalien muuttujien muutokset, kun kaikki + # % korissa i1 olevat yksil�t siirret��n koriin i2. + + inds <- find(PARTITION == i1) + 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] + + POP_LOGML[i1] <- 0 + POP_LOGML[i2] <- computePopulationLogml(i2, adjprior, priorTerm) + + LOGDIFF[, c(i1, i2)] <- -Inf + inx <- c(find(PARTITION == i1), find(PARTITION == i2)) + LOGDIFF[inx, ] <- -Inf +} + +updateGlobalVariables3 <- function( + muuttuvat, diffInCounts, adjprior, priorTerm, i2 +) { + # % Suorittaa globaalien muuttujien p�ivitykset, kun yksil�t 'muuttuvat' + # % siirret��n koriin i2. Ennen siirtoa yksil�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, ] - sum[diffInCounts] + SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts] + + POP_LOGML[c(i1, i2)] <<- computePopulationLogml( + c(i1, i2), adjprior, priorTerm + ) + + LOGDIFF[, c(i1, i2)] <<- -Inf + inx <- c(find(PARTITION == i1), find(PARTITION == i2)) + LOGDIFF[inx, ] <<- -Inf +}