Adde basic elements of simulateAllFreqs
This commit is contained in:
parent
94cf8b02c0
commit
1ac54301a6
4 changed files with 47 additions and 28 deletions
|
|
@ -14,6 +14,7 @@ export(proportion2str)
|
||||||
export(rand)
|
export(rand)
|
||||||
export(randdir)
|
export(randdir)
|
||||||
export(repmat)
|
export(repmat)
|
||||||
|
export(simulateAllFreqs)
|
||||||
export(simulateIndividuals)
|
export(simulateIndividuals)
|
||||||
export(simuloiAlleeli)
|
export(simuloiAlleeli)
|
||||||
export(suoritaMuutos)
|
export(suoritaMuutos)
|
||||||
|
|
|
||||||
29
R/admix1.R
29
R/admix1.R
|
|
@ -426,31 +426,4 @@ admix1 <- function(tietue) {
|
||||||
# end
|
# end
|
||||||
# prioriAlleelit = repmat(prioriAlleelit, [1,1,npops]);
|
# prioriAlleelit = repmat(prioriAlleelit, [1,1,npops]);
|
||||||
# counts = COUNTS + prioriAlleelit;
|
# counts = COUNTS + prioriAlleelit;
|
||||||
# allFreqs = counts./sumCounts;
|
# allFreqs = counts./sumCounts;
|
||||||
|
|
||||||
|
|
||||||
# function allfreqs = simulateAllFreqs(noalle)
|
|
||||||
# % Lisää jokaista alleelia joka populaation joka lokukseen j 1/noalle(j)
|
|
||||||
# % verran. Näin saatuja counts:eja vastaavista Dirichlet-jakaumista
|
|
||||||
# % simuloidaan arvot populaatioiden alleelifrekvensseille.
|
|
||||||
|
|
||||||
# global COUNTS;
|
|
||||||
|
|
||||||
# max_noalle = size(COUNTS,1);
|
|
||||||
# nloci = size(COUNTS,2);
|
|
||||||
# npops = size(COUNTS,3);
|
|
||||||
|
|
||||||
# prioriAlleelit = zeros(max_noalle,nloci);
|
|
||||||
# for j=1:nloci
|
|
||||||
# prioriAlleelit(1:noalle(j),j) = 1/noalle(j);
|
|
||||||
# end
|
|
||||||
# prioriAlleelit = repmat(prioriAlleelit, [1,1,npops]);
|
|
||||||
# counts = COUNTS + prioriAlleelit;
|
|
||||||
# allfreqs = zeros(size(counts));
|
|
||||||
|
|
||||||
# for i=1:npops
|
|
||||||
# for j=1:nloci
|
|
||||||
# simuloidut = randdir(counts(1:noalle(j),j,i) , noalle(j));
|
|
||||||
# allfreqs(1:noalle(j),j,i) = simuloidut;
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
28
R/simulateAllFreqs.R
Normal file
28
R/simulateAllFreqs.R
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#' @title Simulate All Frequencies
|
||||||
|
#' @description Lisää jokaista alleelia joka populaation joka lokukseen j1/noalle(j) verran. Näin saatuja counts:eja vastaavista Dirichlet-jakaumista simuloidaan arvot populaatioiden alleelifrekvensseille.
|
||||||
|
#' Add each allele to each locus in each population by j 1 / noalle(j). The Dirichlet distributions corresponding to the counts thus obtained simulate values for the allele frequencies of the populations.
|
||||||
|
#' @param noalle noalle
|
||||||
|
#' @param COUNTS COUNTS
|
||||||
|
#' @export
|
||||||
|
|
||||||
|
simulateAllFreqs <- function(noalle, COUNTS = matrix(0)) {
|
||||||
|
max_noalle <- size(COUNTS, 1)
|
||||||
|
nloci <- size(COUNTS, 2)
|
||||||
|
npops <- size(COUNTS, 3)
|
||||||
|
|
||||||
|
prioriAlleelit <- zeros(max_noalle, nloci)
|
||||||
|
for (j in 1:nloci) {
|
||||||
|
prioriAlleelit[1:noalle[j], j] <- 1 / noalle[j]
|
||||||
|
}
|
||||||
|
prioriAlleelit <- repmat(prioriAlleelit, matrix(c(1, 1, npops), ncol = 1))
|
||||||
|
counts <- COUNTS + prioriAlleelit
|
||||||
|
allfreqs <- zeros(size(counts))
|
||||||
|
|
||||||
|
for (i in 1:npops) {
|
||||||
|
for (j in 1:nloci) {
|
||||||
|
simuloidut <- randdir(counts[1:noalle[j], j, i] , noalle[j])
|
||||||
|
allfreqs[1:noalle[j], j, i] <- simuloidut
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(allfreqs)
|
||||||
|
}
|
||||||
17
man/simulateAllFreqs.Rd
Normal file
17
man/simulateAllFreqs.Rd
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
% Generated by roxygen2: do not edit by hand
|
||||||
|
% Please edit documentation in R/simulateAllFreqs.R
|
||||||
|
\name{simulateAllFreqs}
|
||||||
|
\alias{simulateAllFreqs}
|
||||||
|
\title{Simulate All Frequencies}
|
||||||
|
\usage{
|
||||||
|
simulateAllFreqs(noalle, COUNTS = matrix(0))
|
||||||
|
}
|
||||||
|
\arguments{
|
||||||
|
\item{noalle}{noalle}
|
||||||
|
|
||||||
|
\item{COUNTS}{COUNTS}
|
||||||
|
}
|
||||||
|
\description{
|
||||||
|
Lisää jokaista alleelia joka populaation joka lokukseen j1/noalle(j) verran. Näin saatuja counts:eja vastaavista Dirichlet-jakaumista simuloidaan arvot populaatioiden alleelifrekvensseille.
|
||||||
|
Add each allele to each locus in each population by j 1 / noalle(j). The Dirichlet distributions corresponding to the counts thus obtained simulate values for the allele frequencies of the populations.
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue