Merge branch 'poistaLiianPienet' into dev
This commit is contained in:
commit
9ce7a4c6a6
7 changed files with 86 additions and 53 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
50
R/admix1.R
50
R/admix1.R
|
|
@ -351,53 +351,3 @@ admix1 <- function(tietue) {
|
||||||
# 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
49
R/poistaLiianPienet.R
Normal 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)
|
||||||
|
}
|
||||||
|
|
@ -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
27
man/poistaLiianPienet.Rd
Normal 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?
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -228,3 +228,8 @@ 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)
|
||||||
|
})
|
||||||
Loading…
Add table
Reference in a new issue