2020-02-25 15:41:05 +01:00
|
|
|
#' @title Remove too small
|
|
|
|
|
#' @description Muokkaa tulokset muotoon, jossa outlier yksilöt on poistettu.
|
|
|
|
|
#' Tarkalleen ottaen poistaa ne populaatiot, joissa on vähemmän kuin
|
|
|
|
|
#' 'alaraja':n verran yksilöit?
|
|
|
|
|
#' @param npops npops
|
|
|
|
|
#' @param rowsFromInd rowsFromInd
|
|
|
|
|
#' @param alaraja alaraja
|
2020-03-02 16:15:01 +01:00
|
|
|
#' @param PARTITION PARTITION
|
|
|
|
|
#' @param COUNTS COUNTS
|
|
|
|
|
#' @param SUMCOUNTS SUMCOUNTS
|
2020-02-25 15:41:05 +01:00
|
|
|
#' @export
|
|
|
|
|
poistaLiianPienet <- function (npops, rowsFromInd, alaraja,
|
2020-03-03 13:51:21 +01:00
|
|
|
PARTITION = matrix(NA, 0, 0), COUNTS = matrix(NA, 0, 0),
|
|
|
|
|
SUMCOUNTS = NA) {
|
2020-02-25 15:41:05 +01:00
|
|
|
popSize <- zeros(1,npops)
|
|
|
|
|
if (npops > 0) {
|
|
|
|
|
for (i in 1:npops) {
|
|
|
|
|
popSize[i] <- length(which(PARTITION == i))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
miniPops <- which(popSize < alaraja)
|
|
|
|
|
|
|
|
|
|
if (length(miniPops) == 0) {
|
|
|
|
|
return(npops)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
outliers <- matrix(NA, 0, 0)
|
|
|
|
|
for (pop in miniPops) {
|
|
|
|
|
inds <- which(PARTITION == pop)
|
|
|
|
|
cat('Removed individuals: ')
|
|
|
|
|
cat(as.character(inds))
|
|
|
|
|
outliers = matrix(c(outliers, inds), ncol=1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ninds <- length(PARTITION)
|
|
|
|
|
PARTITION[outliers] <- 0
|
|
|
|
|
korit <- unique(PARTITION(which(PARTITION > 0)))
|
|
|
|
|
for (n in 1:length(korit)) {
|
|
|
|
|
kori <- korit[n]
|
|
|
|
|
yksilot <- which(PARTITION == kori)
|
|
|
|
|
PARTITION[yksilot] == n
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# TODO: add COUNTS, SUMCOUNTS and PARTITION to return or use <<-
|
|
|
|
|
COUNTS[, , miniPops] <- NA
|
|
|
|
|
SUMCOUNTS[miniPops, ] <- NA
|
|
|
|
|
|
|
|
|
|
npops <- npops - length(miniPops)
|
|
|
|
|
|
|
|
|
|
return(npops)
|
|
|
|
|
}
|