Skip to content

Commit ea56c1e

Browse files
add a test and rename internal function
1 parent 97e460b commit ea56c1e

4 files changed

Lines changed: 20 additions & 17 deletions

File tree

R/func_kinsim.R

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ kinsim <- function(
137137
sigma_a[4, 1] <- cov_a * r_all[i]
138138
sigma_a[3, 2] <- cov_a * r_all[i]
139139
sigma_a[2, 3] <- cov_a * r_all[i]
140-
A.r <- rmvn(n,
140+
A.r <- .rmvn(n,
141141
sigma = sigma_a
142142
)
143143

@@ -154,7 +154,7 @@ kinsim <- function(
154154
sigma_c[4, 1] <- cov_c * 1
155155
sigma_c[3, 2] <- cov_c * 1
156156
sigma_c[2, 3] <- cov_c * 1
157-
C.r <- rmvn(n,
157+
C.r <- .rmvn(n,
158158
sigma = sigma_c
159159
)
160160
C.r[, 1:2] <- C.r[, 1:2] * sC[1]
@@ -166,7 +166,7 @@ kinsim <- function(
166166
sigma_e[3, 1] <- cov_e
167167
sigma_e[2, 4] <- cov_e
168168
sigma_e[4, 2] <- cov_e
169-
E.r <- rmvn(n,
169+
E.r <- .rmvn(n,
170170
sigma = sigma_e
171171
)
172172
E.r[, 1:2] <- E.r[, 1:2] * sE[1]
@@ -225,7 +225,7 @@ kinsim <- function(
225225
sigma_a[3, 2] <- cov_a * r_val
226226
sigma_a[2, 3] <- cov_a * r_val
227227

228-
A_tmp <- rmvn(n_sub, sigma = sigma_a)
228+
A_tmp <- .rmvn(n_sub, sigma = sigma_a)
229229

230230
A.r[idx, 1:2] <- A_tmp[, 1:2] * sA[1]
231231
A.r[idx, 3:4] <- A_tmp[, 3:4] * sA[2]
@@ -241,7 +241,7 @@ kinsim <- function(
241241
sigma_c[3, 2] <- cov_c * 1
242242
sigma_c[2, 3] <- cov_c * 1
243243

244-
C_tmp <- rmvn(n_sub, sigma = sigma_c)
244+
C_tmp <- .rmvn(n_sub, sigma = sigma_c)
245245
C.r[idx, 1:2] <- C_tmp[, 1:2] * sC[1]
246246
C.r[idx, 3:4] <- C_tmp[, 3:4] * sC[2]
247247

@@ -252,7 +252,7 @@ kinsim <- function(
252252
sigma_e[2, 4] <- cov_e
253253
sigma_e[4, 2] <- cov_e
254254

255-
E_tmp <- rmvn(n_sub, sigma = sigma_e)
255+
E_tmp <- .rmvn(n_sub, sigma = sigma_e)
256256
E.r[idx, 1:2] <- E_tmp[, 1:2] * sE[1]
257257
E.r[idx, 3:4] <- E_tmp[, 3:4] * sE[2]
258258
}

R/helpers_simulation.R

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#' @return Matrix of dimension \code{n × ncol(sigma)} containing random samples
99
#' from the multivariate normal distribution.
1010
#' @keywords internal
11-
rmvn <- function(n, sigma) {
11+
.rmvn <- function(n, sigma) {
1212
Sh <- with(
1313
svd(sigma),
1414
v %*% diag(sqrt(d)) %*% t(u)
@@ -89,16 +89,17 @@ kinsim_internal <- function(
8989

9090

9191
# Generate data for each relatedness group
92-
for (i in 1:length(r)) {
92+
# for (i in 1:length(r)) {
93+
for (i in seq_along(r)) {
9394
n <- npergroup[i]
9495

9596
# Generate correlated genetic components based on relatedness
96-
A.r <- sA * rmvn(n, sigma = diag(2) + S2 * r[i])
97+
A.r <- sA * .rmvn(n, sigma = diag(2) + S2 * r[i])
9798

9899
# Generate shared environmental components (same for both members)
99100
# C.r <- stats::rnorm(n,sd = sC)
100101
# C.r <- cbind(C.r,C.r )
101-
C.r <- sC * rmvn(n, sigma = diag(2) + S2 * c_rel)
102+
C.r <- sC * .rmvn(n, sigma = diag(2) + S2 * c_rel)
102103

103104
# Generate non-shared environmental components (different for each member)
104105
E.r <- cbind(
@@ -140,7 +141,7 @@ kinsim_internal <- function(
140141
# Generate genetic components for each unique relatedness value
141142
for (i in 1:length(unique_r)) {
142143
n <- length(r_vector[r_vector == unique_r[i]])
143-
A.rz <- sA * rmvn(n, sigma = diag(2) + S2 * unique_r[i])
144+
A.rz <- sA * .rmvn(n, sigma = diag(2) + S2 * unique_r[i])
144145
data_vector$A.r1[data_vector$r_vector == unique_r[i]] <- A.rz[, 1]
145146
data_vector$A.r2[data_vector$r_vector == unique_r[i]] <- A.rz[, 2]
146147
}
@@ -149,7 +150,7 @@ kinsim_internal <- function(
149150
data_vector$A.r1,
150151
data_vector$A.r2
151152
), ncol = 2)
152-
C.r <- sC * rmvn(n, sigma = diag(2) + S2 * c_rel)
153+
C.r <- sC * .rmvn(n, sigma = diag(2) + S2 * c_rel)
153154

154155
E.r <- cbind(
155156
stats::rnorm(n, sd = sE),

man/rmvn.Rd renamed to man/dot-rmvn.Rd

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-kinsim.R

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,13 @@ test_that("genetic correlation between variables is present when cov_a is non-ze
161161
expect_gt(cor_val, 0.1) # minimal expected correlation
162162
})
163163

164-
test_that("kinsim handles r_vector input correctly", {
164+
test_that("kinsim handles r_vector and c_vecttor input correctly", {
165165
r_vec <- rep(c(1, 0.5), each = 100)
166-
df <- kinsim(r_vector = r_vec)
166+
c_vector <- rep(1, 200)
167+
df <- kinsim(r_vector = r_vec, c_vector = c_vector)
167168
expect_equal(nrow(df), 200)
168169
expect_equal(df$r, r_vec)
170+
expect_equal(df$C1_1, df$C1_2)
169171
})
170172

171173
test_that("output has correct ID range", {

0 commit comments

Comments
 (0)