2020-07-14 15:47:01 +02:00
|
|
|
initialCounts <- function(partition, data, npops, rows, noalle, adjprior) {
|
2021-11-10 14:02:35 +01:00
|
|
|
nloci <- size(data, 2)
|
|
|
|
|
ninds <- size(rows, 1)
|
2020-07-14 15:47:01 +02:00
|
|
|
|
2023-08-11 16:23:02 +02:00
|
|
|
koot <- rows[1] - rows[2] + 1
|
2022-02-03 10:43:34 +01:00
|
|
|
maxSize <- base::max(koot)
|
2020-07-14 15:47:01 +02:00
|
|
|
|
2022-02-03 10:43:34 +01:00
|
|
|
counts <- zeros(base::max(noalle), nloci, npops)
|
2021-11-10 14:02:35 +01:00
|
|
|
sumcounts <- zeros(npops, nloci)
|
|
|
|
|
for (i in 1:npops) {
|
|
|
|
|
for (j in 1:nloci) {
|
2022-02-03 10:43:34 +01:00
|
|
|
havainnotLokuksessa <- matlab2r::find(partition == i & data[, j] >= 0)
|
2021-11-10 14:02:35 +01:00
|
|
|
sumcounts[i, j] <- length(havainnotLokuksessa)
|
|
|
|
|
for (k in 1:noalle[j]) {
|
|
|
|
|
alleleCode <- k
|
|
|
|
|
N_ijk <- length(
|
2022-02-03 10:43:34 +01:00
|
|
|
matlab2r::find(data[havainnotLokuksessa, j] == alleleCode)
|
2021-11-10 14:02:35 +01:00
|
|
|
)
|
|
|
|
|
counts[k, j, i] <- N_ijk
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
logml <- laskeLoggis(counts, sumcounts, adjprior)
|
|
|
|
|
return(list(sumcounts = sumcounts, counts = counts, logml = logml))
|
|
|
|
|
}
|