diff --git a/R/computeCounts.R b/R/computeCounts.R new file mode 100644 index 0000000..fd946fc --- /dev/null +++ b/R/computeCounts.R @@ -0,0 +1,25 @@ +computeCounts <- function(cliques, separators, npops, PARTITION) { + ncliq <- size(cliques, 1) + nsep <- size(separators, 1) + + cliqPartition <- zeros(ncliq, size(cliques, 2)) + sepPartition <- zeros(nsep, size(separators, 2)) + + apuCliq <- find(cliques > 0) + apuSep <- find(separators > 0) + + cliqPartition[apuCliq] <- PARTITION[cliques[apuCliq]] + sepPartition[apuSep] <- PARTITION[separators[apuSep]] + + cliqcounts <- zeros(ncliq, npops) + for (i in 1:npops) { + cliqcounts[, i] <- rowSums(cliqPartition == i) + } + + sepcounts <- zeros(nsep, npops) + for (i in 1:npops) { + sepcounts[, i] <- rowSums(sepPartition == i) + } + + return(list(cliqcounts = cliqcounts, sepcounts = sepcounts)) +} diff --git a/tests/testthat/test-spatialMixture.R b/tests/testthat/test-spatialMixture.R new file mode 100644 index 0000000..969c2a0 --- /dev/null +++ b/tests/testthat/test-spatialMixture.R @@ -0,0 +1,9 @@ +context("Spatial mixture") + +test_that("functions work with basic input", { + x <- c(1, 3, 0, 2) + y <- array(c(1, 3, 2, 4, 5, 7, 6, 8), c(2, 2, 2)) + z <- computeCounts(x, 4, 5, y) + expect_equal(z$cliqcounts, t(c(1, 1, 1, 0, 0))) + expect_equal(z$sepcounts, t(c(0, 0, 0, 1, 0))) +})