Merge branch 'poistaLiianPienet' into dev

This commit is contained in:
Waldir Leoncio 2020-02-25 15:41:53 +01:00
commit 9ce7a4c6a6
7 changed files with 86 additions and 53 deletions

View file

@ -11,6 +11,7 @@ export(etsiParas)
export(laskeMuutokset4) export(laskeMuutokset4)
export(learn_simple_partition) export(learn_simple_partition)
export(ownNum2Str) export(ownNum2Str)
export(poistaLiianPienet)
export(proportion2str) export(proportion2str)
export(rand) export(rand)
export(randdir) export(randdir)

View file

@ -350,54 +350,4 @@ admix1 <- function(tietue) {
# save([pathname filename], 'tietue', '-v7.3'); # added by Lu Cheng, 08.06.2012 # save([pathname filename], 'tietue', '-v7.3'); # added by Lu Cheng, 08.06.2012
# end # end
# end # end
} }
# function [npops] = poistaLiianPienet(npops, rowsFromInd, alaraja)
# % 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?
# global PARTITION;
# global COUNTS;
# global SUMCOUNTS;
# popSize=zeros(1,npops);
# for i=1:npops
# popSize(i)=length(find(PARTITION==i));
# end
# miniPops = find(popSize<alaraja);
# if length(miniPops)==0
# return;
# end
# outliers = [];
# for pop = miniPops
# inds = find(PARTITION==pop);
# disp('Removed individuals: ');
# disp(num2str(inds));
# outliers = [outliers; inds];
# end
# ninds = length(PARTITION);
# PARTITION(outliers) = 0;
# korit = unique(PARTITION(find(PARTITION>0)));
# for n=1:length(korit)
# kori = korit(n);
# yksilot = find(PARTITION==kori);
# PARTITION(yksilot) = n;
# end
# COUNTS(:,:,miniPops) = [];
# SUMCOUNTS(miniPops,:) = [];
# npops = npops-length(miniPops);
# %------------------------------------------------------------------------
# function clearGlobalVars
# global COUNTS; COUNTS = [];
# global SUMCOUNTS; SUMCOUNTS = [];
# global PARTITION; PARTITION = [];
# global POP_LOGML; POP_LOGML = [];

49
R/poistaLiianPienet.R Normal file
View file

@ -0,0 +1,49 @@
#' @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
#' @export
poistaLiianPienet <- function (npops, rowsFromInd, alaraja,
PARTITION = matrix(NA, 0, 0), COUNTS = matrix(NA, 0, 0),
SUMCOUNTS = NA) {
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)
}

View file

@ -4,7 +4,7 @@
\alias{computeAllFreqs2} \alias{computeAllFreqs2}
\title{Compute all freqs - version 2} \title{Compute all freqs - version 2}
\usage{ \usage{
computeAllFreqs2(noalle, COUNTS = matrix(NA, 0, 0), SUMCOUNTS = sum(COUNTS)) computeAllFreqs2(noalle, COUNTS = matrix(NA, 0, 0), SUMCOUNTS = NA)
} }
\arguments{ \arguments{
\item{noalle}{noalle} \item{noalle}{noalle}

27
man/poistaLiianPienet.Rd Normal file
View file

@ -0,0 +1,27 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/poistaLiianPienet.R
\name{poistaLiianPienet}
\alias{poistaLiianPienet}
\title{Remove too small}
\usage{
poistaLiianPienet(
npops,
rowsFromInd,
alaraja,
PARTITION = matrix(NA, 0, 0),
COUNTS = matrix(NA, 0, 0),
SUMCOUNTS = NA
)
}
\arguments{
\item{npops}{npops}
\item{rowsFromInd}{rowsFromInd}
\item{alaraja}{alaraja}
}
\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?
}

View file

@ -9,7 +9,8 @@ repmat(mx, n)
\arguments{ \arguments{
\item{mx}{matrix} \item{mx}{matrix}
\item{n}{either a scalar with the number of replications in both rows and columns or a 2-length vector with individual repetitions.} \item{n}{either a scalar with the number of replications in both rows and
columns or a <= 3-length vector with individual repetitions.}
} }
\value{ \value{
matrix replicated over `ncol(mx) * n` columns and `nrow(mx) * n` rows matrix replicated over `ncol(mx) * n` columns and `nrow(mx) * n` rows

View file

@ -227,4 +227,9 @@ test_that("simulateAllFreqs works as expected", {
test_that("computeAllFreqs2 works as expected", { test_that("computeAllFreqs2 works as expected", {
expect_equivalent(computeAllFreqs2(10), matrix(NA, 0, 0)) expect_equivalent(computeAllFreqs2(10), matrix(NA, 0, 0))
})
test_that("poistaLiianPienet works as expected", {
expect_equal(poistaLiianPienet(100, matrix(1:4, 2), 0), 100)
expect_equal(poistaLiianPienet(100, matrix(1:4, 2), -5), 100)
}) })