From a9f24445cd73eb7ba1bb1b4ce41f886dde565418 Mon Sep 17 00:00:00 2001 From: aduvermy <arnaud.duvermy@ens-lyon.fr> Date: Fri, 5 Apr 2024 09:35:16 +0200 Subject: [PATCH] normal_distrib = 'univariate' as default behavior Former-commit-id: 702392f90154be2cfa1b9290a268c7043a2640ea Former-commit-id: 6fc27d8a3326e5b470155c5f647fcbd1d6f40f83 Former-commit-id: 1e4392d3ae9eb809adbdd073ddd9afbd3c592a67 --- R/mock_rnaseq.R | 6 +++--- R/simulation.R | 6 +++--- dev/flat_full.Rmd | 24 ++++++++++----------- man/getInput2simulation.Rd | 6 +++--- man/mock_rnaseq.Rd | 6 +++--- tests/testthat/test-actual_mainfixeffects.R | 8 +++---- tests/testthat/test-evaluate_dispersion.R | 2 +- tests/testthat/test-simulation.R | 2 +- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/R/mock_rnaseq.R b/R/mock_rnaseq.R index f727fa5..8af2643 100644 --- a/R/mock_rnaseq.R +++ b/R/mock_rnaseq.R @@ -102,9 +102,9 @@ warning_too_low_mu_ij_row <- function(mu_ij_matrix, threshold = 1 ){ #' @param sequencing_depth Sequencing depth #' @param basal_expression base expression gene #' @param dispersion User-provided dispersion vector (optional) -#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' or 'multivariate' (default). +#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' (default) or 'multivariate' . #' - 'univariate': Effects are drawn independently from univariate normal distributions. -#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. +#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. (not recommended) #' @return List containing the ground truth, counts, and metadata #' @export #' @examples @@ -113,7 +113,7 @@ warning_too_low_mu_ij_row <- function(mu_ij_matrix, threshold = 1 ){ #' max_replicates = 4) mock_rnaseq <- function(list_var, n_genes, min_replicates, max_replicates, sequencing_depth = NULL, basal_expression = 0 , dispersion = stats::runif(n_genes, min = 0, max = 1000), - normal_distr = "multivariate") { + normal_distr = "univariate") { ## -- get my effect df_inputSimulation <- getInput2simulation(list_var, n_genes, normal_distr ) diff --git a/R/simulation.R b/R/simulation.R index 22f27ad..8c7bcc9 100644 --- a/R/simulation.R +++ b/R/simulation.R @@ -7,9 +7,9 @@ #' #' @param list_var A list of variables (already initialized) #' @param n_genes Number of genes to simulate (default: 1) -#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' or 'multivariate' (default). +#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' (default) or 'multivariate' . #' - 'univariate': Effects are drawn independently from univariate normal distributions. -#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. +#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. (not recommended) #' @param input2mvrnorm Input to the \code{mvrnorm} function for simulating data from multivariate normal distribution (default: NULL) #' @return A data frame with input coefficients for simulation #' @export @@ -17,7 +17,7 @@ #' # Example usage #' list_var <- init_variable() #' getInput2simulation(list_var, n_genes = 10) -getInput2simulation <- function(list_var, n_genes = 1, normal_distr = "multivariate", input2mvrnorm = NULL) { +getInput2simulation <- function(list_var, n_genes = 1, normal_distr = "univariate", input2mvrnorm = NULL) { stopifnot( normal_distr %in% c("multivariate", "univariate") ) diff --git a/dev/flat_full.Rmd b/dev/flat_full.Rmd index ab6be46..4b0e9e6 100644 --- a/dev/flat_full.Rmd +++ b/dev/flat_full.Rmd @@ -1529,9 +1529,9 @@ test_that("set_correlation sets the correlation between variables correctly", { #' #' @param list_var A list of variables (already initialized) #' @param n_genes Number of genes to simulate (default: 1) -#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' or 'multivariate' (default). +#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' (default) or 'multivariate' . #' - 'univariate': Effects are drawn independently from univariate normal distributions. -#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. +#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. (not recommended) #' @param input2mvrnorm Input to the \code{mvrnorm} function for simulating data from multivariate normal distribution (default: NULL) #' @return A data frame with input coefficients for simulation #' @export @@ -1539,7 +1539,7 @@ test_that("set_correlation sets the correlation between variables correctly", { #' # Example usage #' list_var <- init_variable() #' getInput2simulation(list_var, n_genes = 10) -getInput2simulation <- function(list_var, n_genes = 1, normal_distr = "multivariate", input2mvrnorm = NULL) { +getInput2simulation <- function(list_var, n_genes = 1, normal_distr = "univariate", input2mvrnorm = NULL) { stopifnot( normal_distr %in% c("multivariate", "univariate") ) @@ -2020,7 +2020,7 @@ test_that("get_effects_from_rnorm generates correct effects", { test_that("getInput2simulation returns a data frame", { list_var <- init_variable() set.seed(101) - result <- getInput2simulation(list_var) + result <- getInput2simulation(list_var, normal_distr = 'multivariate') expect_is(result, "data.frame") expected <- data.frame(geneID = c("gene1", "gene1"), label_myVariable = as.factor(c("myVariable1", "myVariable2")), myVariable = c(-0.1414214,0.1414214)) @@ -2408,9 +2408,9 @@ warning_too_low_mu_ij_row <- function(mu_ij_matrix, threshold = 1 ){ #' @param sequencing_depth Sequencing depth #' @param basal_expression base expression gene #' @param dispersion User-provided dispersion vector (optional) -#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' or 'multivariate' (default). +#' @param normal_distr Specifies the distribution type for generating effects. Choose between 'univariate' (default) or 'multivariate' . #' - 'univariate': Effects are drawn independently from univariate normal distributions. -#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. +#' - 'multivariate': Effects are drawn jointly from a multivariate normal distribution. (not recommended) #' @return List containing the ground truth, counts, and metadata #' @export #' @examples @@ -2419,7 +2419,7 @@ warning_too_low_mu_ij_row <- function(mu_ij_matrix, threshold = 1 ){ #' max_replicates = 4) mock_rnaseq <- function(list_var, n_genes, min_replicates, max_replicates, sequencing_depth = NULL, basal_expression = 0 , dispersion = stats::runif(n_genes, min = 0, max = 1000), - normal_distr = "multivariate") { + normal_distr = "univariate") { ## -- get my effect df_inputSimulation <- getInput2simulation(list_var, n_genes, normal_distr ) @@ -4992,7 +4992,7 @@ extract_tmbDispersion <- function(list_tmb) { test_that("extract_tmbDispersion function extracts dispersion correctly", { - N_GENES = 100 + N_GENES = 50 MAX_REPLICATES = 5 MIN_REPLICATES = 5 input_var_list <- init_variable(name = "varA", mu = 10, sd = 0.1, level = 3) @@ -5656,7 +5656,7 @@ test_that("subsetByTermLabel with non-existent term label", { test_that("getActualMainFixEff", { input_var_list <- init_variable() set.seed(101) - mock_data <- mock_rnaseq(input_var_list, 2, 2, 2) + mock_data <- mock_rnaseq(input_var_list, 2, 2, 2, normal_distr = "multivariate") data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL) inference <- fitModelParallel(kij ~ myVariable , group_by = "geneID", data2fit, n.cores = 1) @@ -5683,7 +5683,7 @@ test_that("getData2computeActualFixEffect return correct output",{ # Prepare the test data input_var_list <- init_variable() set.seed(101) - mock_data <- mock_rnaseq(input_var_list, 2, 2, 2) + mock_data <- mock_rnaseq(input_var_list, 2, 2, 2, normal_distr = "multivariate") data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL) inference <- fitModelParallel(kij ~ myVariable, group_by = "geneID", data2fit, n.cores = 1) tidy_inference <- tidy_tmb(inference) @@ -5706,8 +5706,8 @@ test_that("generateActualForMainFixEff returns correct values for main fixed eff # Prepare the test data input_var_list <- init_variable() set.seed(101) - mock_data <- mock_rnaseq(input_var_list, 2, 2, 2) - data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL) + mock_data <- mock_rnaseq(input_var_list, 2, 2, 2, normal_distr = "multivariate") + data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL ) fixEff_dataActual <- getData2computeActualFixEffect(mock_data$groundTruth$effects) actual_intercept <- getActualIntercept(fixEff_dataActual) df_term <- generateActualForMainFixEff("myVariable2", actual_intercept, fixEff_dataActual$data, fixEff_dataActual$categorical_vars) diff --git a/man/getInput2simulation.Rd b/man/getInput2simulation.Rd index f50ce20..2e65d14 100644 --- a/man/getInput2simulation.Rd +++ b/man/getInput2simulation.Rd @@ -7,7 +7,7 @@ getInput2simulation( list_var, n_genes = 1, - normal_distr = "multivariate", + normal_distr = "univariate", input2mvrnorm = NULL ) } @@ -16,10 +16,10 @@ getInput2simulation( \item{n_genes}{Number of genes to simulate (default: 1)} -\item{normal_distr}{Specifies the distribution type for generating effects. Choose between 'univariate' or 'multivariate' (default). +\item{normal_distr}{Specifies the distribution type for generating effects. Choose between 'univariate' (default) or 'multivariate' . \itemize{ \item 'univariate': Effects are drawn independently from univariate normal distributions. -\item 'multivariate': Effects are drawn jointly from a multivariate normal distribution. +\item 'multivariate': Effects are drawn jointly from a multivariate normal distribution. (not recommended) }} \item{input2mvrnorm}{Input to the \code{mvrnorm} function for simulating data from multivariate normal distribution (default: NULL)} diff --git a/man/mock_rnaseq.Rd b/man/mock_rnaseq.Rd index c68b463..2c303e8 100644 --- a/man/mock_rnaseq.Rd +++ b/man/mock_rnaseq.Rd @@ -12,7 +12,7 @@ mock_rnaseq( sequencing_depth = NULL, basal_expression = 0, dispersion = stats::runif(n_genes, min = 0, max = 1000), - normal_distr = "multivariate" + normal_distr = "univariate" ) } \arguments{ @@ -30,10 +30,10 @@ mock_rnaseq( \item{dispersion}{User-provided dispersion vector (optional)} -\item{normal_distr}{Specifies the distribution type for generating effects. Choose between 'univariate' or 'multivariate' (default). +\item{normal_distr}{Specifies the distribution type for generating effects. Choose between 'univariate' (default) or 'multivariate' . \itemize{ \item 'univariate': Effects are drawn independently from univariate normal distributions. -\item 'multivariate': Effects are drawn jointly from a multivariate normal distribution. +\item 'multivariate': Effects are drawn jointly from a multivariate normal distribution. (not recommended) }} } \value{ diff --git a/tests/testthat/test-actual_mainfixeffects.R b/tests/testthat/test-actual_mainfixeffects.R index c8ca602..68f8081 100644 --- a/tests/testthat/test-actual_mainfixeffects.R +++ b/tests/testthat/test-actual_mainfixeffects.R @@ -138,7 +138,7 @@ test_that("subsetByTermLabel with non-existent term label", { test_that("getActualMainFixEff", { input_var_list <- init_variable() set.seed(101) - mock_data <- mock_rnaseq(input_var_list, 2, 2, 2) + mock_data <- mock_rnaseq(input_var_list, 2, 2, 2, normal_distr = "multivariate") data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL) inference <- fitModelParallel(kij ~ myVariable , group_by = "geneID", data2fit, n.cores = 1) @@ -165,7 +165,7 @@ test_that("getData2computeActualFixEffect return correct output",{ # Prepare the test data input_var_list <- init_variable() set.seed(101) - mock_data <- mock_rnaseq(input_var_list, 2, 2, 2) + mock_data <- mock_rnaseq(input_var_list, 2, 2, 2, normal_distr = "multivariate") data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL) inference <- fitModelParallel(kij ~ myVariable, group_by = "geneID", data2fit, n.cores = 1) tidy_inference <- tidy_tmb(inference) @@ -188,8 +188,8 @@ test_that("generateActualForMainFixEff returns correct values for main fixed eff # Prepare the test data input_var_list <- init_variable() set.seed(101) - mock_data <- mock_rnaseq(input_var_list, 2, 2, 2) - data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL) + mock_data <- mock_rnaseq(input_var_list, 2, 2, 2, normal_distr = "multivariate") + data2fit <- prepareData2fit(mock_data$counts, mock_data$metadata, normalization = NULL ) fixEff_dataActual <- getData2computeActualFixEffect(mock_data$groundTruth$effects) actual_intercept <- getActualIntercept(fixEff_dataActual) df_term <- generateActualForMainFixEff("myVariable2", actual_intercept, fixEff_dataActual$data, fixEff_dataActual$categorical_vars) diff --git a/tests/testthat/test-evaluate_dispersion.R b/tests/testthat/test-evaluate_dispersion.R index 5537b9c..60ba9bb 100644 --- a/tests/testthat/test-evaluate_dispersion.R +++ b/tests/testthat/test-evaluate_dispersion.R @@ -4,7 +4,7 @@ test_that("extract_tmbDispersion function extracts dispersion correctly", { - N_GENES = 100 + N_GENES = 50 MAX_REPLICATES = 5 MIN_REPLICATES = 5 input_var_list <- init_variable(name = "varA", mu = 10, sd = 0.1, level = 3) diff --git a/tests/testthat/test-simulation.R b/tests/testthat/test-simulation.R index 6bd5328..39e9bd4 100644 --- a/tests/testthat/test-simulation.R +++ b/tests/testthat/test-simulation.R @@ -27,7 +27,7 @@ test_that("get_effects_from_rnorm generates correct effects", { test_that("getInput2simulation returns a data frame", { list_var <- init_variable() set.seed(101) - result <- getInput2simulation(list_var) + result <- getInput2simulation(list_var, normal_distr = 'multivariate') expect_is(result, "data.frame") expected <- data.frame(geneID = c("gene1", "gene1"), label_myVariable = as.factor(c("myVariable1", "myVariable2")), myVariable = c(-0.1414214,0.1414214)) -- GitLab