tests/testthat/test-reference_data.R

# Test reference results from reference_results.rds against refResults.RData

testthat::test_that(
  "reference results match",
  {
    # environments to avoid name conflicts ----

    # new version
    env_new_v <- new.env()
    # get data if available, otherwise skip the test
    lst_new_v <- get_example_data("reference_results.rds")
    assign(x = "lst_new_v", value = lst_new_v, envir = env_new_v)
    rm(lst_new_v)

    # legacy version
    env_legacy_v <- new.env()
    file_legacy_v <- test_path("data", "refResults.RData")
    skip_if_not(file.exists(file_legacy_v))
    load(file = file_legacy_v, envir = env_legacy_v)

    # matching names between reference datasets
    match_names <- dplyr::tribble(
      ~legacy_v,                                   ~new_v,
      "t.test_results",                            "t_test",
      "t.test_results_paired",                     "t_test_paired",
      "wilcox.test_results",                       "wilcox_test",
      "wilcox.test_results_paired",                "wilcox_test_paired",
      "kruskal_results",                           "kruskal",
      "kruskal_posthoc_results",                   "kruskal_posthoc",
      "friedman_results",                          "friedman",
      "friedman_posthoc_results",                  "friedman_posthoc",
      "ordinalRegression_results",                 "ordinal_regression",
      "ordinalRegression_results_posthoc_results", "ordinal_regression_posthoc",
      "anova_results_1_site",                      "anova_site",
      "anova_posthoc_1_site",                      "anova_site_posthoc",
      "anova_results_1_time",                      "anova_time",
      "anova_posthoc_1_time",                      "anova_time_posthoc",
      "anova_results_1_siteTime",                  "anova_site_time",
      "lmer_results_1",                            "lmer",
      "lmer_results_1_posthoc",                    "lmer_posthoc",
      "normalization_results.bridged",             "normalization_bridge",
      "normalization_results.intensity",           "normalization_intensity",
      "normalization_results.subset",              "normalization_subset",
      "normalization_results.multi",               "normalization_multibatch",
      "randomized_result1",                        "randomized_samples",
      "randomized_result2",                        "randomized_subjects",
      "randomized_result3",                        "randomized_subjects_spots",
      "randomized_result4",                        "randomized_samples_spots",
      "procData",                                  "preprocessing_dim_red",
      "procData_missingData",                      "preprocessing_dim_red_miss",
      "bridge_samples_npx_data1",                  "bridge_samples_npx_data1",
      "bridge_samples_npx_data2",                  "bridge_samples_npx_data2"
    )

    # read NPX ----

    # This is tested within the tests for read_npx. Nothing to check here.

    # t-test ----

    # unpaired t-test
    row_n <- 1L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "t_test"
    )
    expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # paired t-test
    row_n <- 2L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "t_test_paired"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Mann-Whitney U Test ----

    # unpaired Mann-Whitney U Test
    row_n <- 3L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "wilcox_test"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # paired Mann-Whitney U Test
    row_n <- 4L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "wilcox_test_paired"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # One-way non-parametric test ----

    ## Kruskal-Wallis test ----

    # One-way Kruskal-Wallis test
    row_n <- 5L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "kruskal"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Posthoc test for the results from Kruskal-Wallis test
    row_n <- 6L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "kruskal_posthoc"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## Friedman test ----

    # One-way Friedman Test
    row_n <- 7L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "friedman"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Posthoc test for the results from Friedman test
    row_n <- 8L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "friedman_posthoc"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Ordinal regression ----

    # Two-way Ordinal Regression with CLM
    row_n <- 9L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "ordinal_regression"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Posthoc test for the results from Two-way Ordinal Regression with CLM
    row_n <- 10L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "ordinal_regression_posthoc"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # ANOVA ----

    ## ANOVA - site ----

    # ANOVA
    row_n <- 11L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "anova_site"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Posthoc ANOVA
    row_n <- 12L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "anova_site_posthoc"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## ANOVA - time ----

    # ANOVA
    row_n <- 13L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "anova_time"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Posthoc ANOVA
    row_n <- 14L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "anova_time_posthoc"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## ANOVA - site*time ----

    # ANOVA
    row_n <- 15L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "anova_site_time"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # LMER ----

    # lmer
    row_n <- 16L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "lmer"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # lmer posthoc
    row_n <- 17L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "lmer_posthoc"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Olink normalization ----

    ## Bridge normalization ----

    row_n <- 18L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "normalization_bridge"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## Intensity normalization ----

    row_n <- 19L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "normalization_intensity"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## Subset normalization ----

    row_n <- 20L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "normalization_subset"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## Multi-batch normalization ----

    row_n <- 21L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "normalization_multibatch"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # Plate randomization ----

    row_n <- 22L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "randomized_samples"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    row_n <- 23L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "randomized_subjects"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    row_n <- 24L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "randomized_subjects_spots"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    row_n <- 25L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "randomized_samples_spots"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    # NPX pre-processing for dimansionality reduction ----

    ## Pre-processing without missing data ----

    row_n <- 26L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "preprocessing_dim_red"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]$df_wide
    )

    ## Pre-processing with missing data ----

    row_n <- 27L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "preprocessing_dim_red_miss"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]$df_wide
    )

    # Bridge sample selection ----

    ## Bridge sample selection npx_data1 ----

    row_n <- 28L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "bridge_samples_npx_data1"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )

    ## Bridge sample selection npx_data2 ----

    row_n <- 29L
    expect_identical(
      object = match_names |>
        dplyr::slice(
          .env[["row_n"]]
        ) |>
        dplyr::pull(
          .data[["new_v"]]
        ),
      expected = "bridge_samples_npx_data2"
    )
    testthat::expect_equal(
      object = env_new_v$lst_new_v[[match_names$new_v[row_n]]],
      expected = env_legacy_v$ref_results[[match_names$legacy_v[row_n]]]
    )
  }
)

testthat::test_that(
  "reference manifest matches",
  {
    # legacy version
    env_legacy_v <- new.env()
    file_legacy_v <- test_path("..", "..", "data-raw", "ref_manifest.rds")
    skip_if_not(file.exists(file_legacy_v))
    env_legacy_v$manifest <- readRDS(file = file_legacy_v)

    testthat::expect_identical(
      object = manifest,
      expected = env_legacy_v$manifest
    )
  }
)

testthat::test_that(
  "reference npx_data1 matches",
  {
    # legacy version
    env_legacy_v <- new.env()
    file_legacy_v <- test_path("..", "..", "data-raw", "ref_npx_data1.rds")
    skip_if_not(file.exists(file_legacy_v))
    env_legacy_v$npx_data1 <- readRDS(file = file_legacy_v)

    testthat::expect_identical(
      object = npx_data1,
      expected = env_legacy_v$npx_data1
    )
  }
)

testthat::test_that(
  "reference npx_data2 matches",
  {
    # legacy version
    env_legacy_v <- new.env()
    file_legacy_v <- test_path("..", "..", "data-raw", "ref_npx_data2.rds")
    skip_if_not(file.exists(file_legacy_v))
    env_legacy_v$npx_data2 <- readRDS(file = file_legacy_v)

    testthat::expect_identical(
      object = npx_data2,
      expected = env_legacy_v$npx_data2
    )
  }
)

Try the OlinkAnalyze package in your browser

Any scripts or data that you put into this service are public.

OlinkAnalyze documentation built on June 24, 2026, 1:06 a.m.