context("Matrix conversion functions")
get_test_parameters <- function(slices) {
n_row <- sample(2:20, size = 1)
n_col <- sample(2:20, size = 1)
p_zero <- runif(1)
mat <- create_example_sparse_matrix(n_row, n_col, p_zero = p_zero)
out <- list()
out[["mat"]] <- mat
if (slices) {
out[["row_slice"]] <- sample(x = 1:n_row, size = 2, replace = FALSE) %>% sort()
out[["col_slice"]] <- sample(x = 1:n_col, size = 2, replace = FALSE) %>% sort()
}
return(out)
}
test_that("Extract columns from compressed sparse column", {
for (i in 1:50) {
supplies <- get_test_parameters(TRUE)
mat <- supplies$mat; row_slice <- supplies$row_slice; col_slice <- supplies$col_slice
mat_csc <- get_compressed_matrix_representation(mat, "column")
expect_equal(mat, extract_column_from_csc_matrix(col_nos = 1:ncol(mat), csc_mat = mat_csc))
expect_equal(mat[row_slice, col_slice], extract_column_from_csc_matrix(col_nos = col_slice, csc_mat = mat_csc, row_subset = row_slice))
expect_equal(mat[row_slice[1],], extract_column_from_csc_matrix(col_nos = 1:ncol(mat), csc_mat = mat_csc, row_subset = row_slice[1]))
expect_equal(mat[,col_slice[1]], extract_column_from_csc_matrix(col_nos = col_slice[1], csc_mat = mat_csc, row_subset = 1:nrow(mat)))
expect_equal(mat[row_slice[1], col_slice[1]], extract_column_from_csc_matrix(col_nos = col_slice[1], csc_mat = mat_csc, row_subset = row_slice[1]))
}
})
test_that("Extract rows from compressed sparse row", {
for (i in 1:50) {
supplies <- get_test_parameters(TRUE)
mat <- supplies$mat; row_slice <- supplies$row_slice; col_slice <- supplies$col_slice
mat_csr <- get_compressed_matrix_representation(mat, "row")
expect_equal(mat, extract_row_from_csr_matrix(row_nos = 1:nrow(mat), csr_mat = mat_csr))
expect_equal(mat[row_slice, col_slice], extract_row_from_csr_matrix(row_nos = row_slice, csr_mat = mat_csr, col_subset = col_slice))
expect_equal(mat[row_slice[1],], extract_row_from_csr_matrix(row_nos = row_slice[1], csr_mat = mat_csr))
expect_equal(mat[,col_slice[1]], extract_row_from_csr_matrix(row_nos = 1:nrow(mat), csr_mat = mat_csr, col_subset = col_slice[1]))
expect_equal(mat[row_slice[1], col_slice[1]], extract_row_from_csr_matrix(row_nos = row_slice[1], csr_mat = mat_csr, col_subset = col_slice[1]))
}
})
test_that("Flip sparse column to sparse row", {
for (i in 1:50) {
supplies <- get_test_parameters(FALSE)
A <- supplies$mat
A_csc <- get_compressed_matrix_representation(A, "column")
A_csr <- flip_csc_matrix(A_csc)
A_new <- extract_row_from_csr_matrix(row_nos = 1:nrow(A), csr_mat = A_csr, col_subset = 1:ncol(A))
expect_equal(A, A_new)
}
})
test_that("Flip sparse row to sparse column", {
for (i in 1:50) {
supplies <- get_test_parameters(FALSE)
B <- supplies$mat
B_csr <- get_compressed_matrix_representation(B, "row")
B_csc <- flip_csr_matrix(B_csr)
B_new <- extract_column_from_csc_matrix(col_nos = 1:ncol(B), csc_mat = B_csc)
}
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.