tests/testthat/test-generics.R

context("test-generics")


#
## n(): The tally function for GWAS Catalog S4 objects.
#

### n() applied on studies
test_that("n(): empty_studies", {
  empty_studies <- studies()
  expect_identical(n(empty_studies), 0L)
})

test_that("n(): studies that are NA", {
  studies_tbl1 <-
    studies_tbl(
      study_id = NA_character_,
      reported_trait = 'blah',
      initial_sample_size = 'blah',
      replication_sample_size = 'blah',
      gxe = TRUE,
      gxg = TRUE,
      snp_count = 42,
      qualifier = 'blah',
      imputed = FALSE,
      pooled = FALSE,
      study_design_comment = 'blah',
      full_pvalue_set = FALSE,
      user_requested = TRUE
    )
  NA_studies <- studies(studies = studies_tbl1)
  # n() returns 0 studies because a study_id == NA_character_
  # is dropped inside studies().
  expect_identical(n(NA_studies), 0L)
})

with_mock_api({
  test_that("n(): 2 studies: GCST002420, GCST000392", {
    study_ids <- c('GCST002420', 'GCST000392')
    my_studies <- get_studies(study_id = study_ids)
    expect_is(my_studies, 'studies')
    expect_identical(n(my_studies), 2L)
  })
})

### n() applied on associations
test_that("n(): empty_associations", {
  empty_associations <- associations()
  expect_identical(n(empty_associations), 0L)
})

test_that("n(): associations that are NA", {
  associations_tbl1 <-
    associations_tbl(
      association_id = NA_character_,
      pvalue = 3.14,
      pvalue_description = 'blah',
      pvalue_mantissa = 42L,
      pvalue_exponent = 42L,
      multiple_snp_haplotype = TRUE,
      snp_interaction = TRUE,
      snp_type = 'blah',
      standard_error = 3.14,
      range = 'blah',
      or_per_copy_number = 3.13,
      beta_number = 3.14,
      beta_unit = 'blah',
      beta_direction = 'blah',
      beta_description = 'blah',
      last_mapping_date = lubridate::ymd_hms("2013-01-24 19:39:07.880-0600"),
      last_update_date = lubridate::ymd_hms("2013-01-24 19:39:07.880-0600")
    )
  NA_associations <- associations(associations = associations_tbl1)
  # n() returns 0 associations because an association_id == NA_character_
  # is dropped inside associations().
  expect_identical(n(NA_associations), 0L)
})

with_mock_api({
  test_that("n(): 1 association: '15608'", {
    my_association <- get_associations(association_id = '15608')
    expect_is(my_association, 'associations')
    expect_identical(n(my_association), 1L)
  })
})

### n() applied on variants
test_that("n(): empty_variants", {
  empty_variants <- variants()
  expect_identical(n(empty_variants), 0L)
})

test_that("n(): variants that are NA", {
  variants_tbl1 <-
    variants_tbl(
      variant_id = NA_character_,
      merged = 42,
      functional_class = 'blah',
      chromosome_name = 'blah',
      chromosome_position = 42,
      chromosome_region = 'blah',
      last_update_date = lubridate::ymd_hms("2013-01-24 19:39:07.880-0600")
    )
  NA_variants <- variants(variants = variants_tbl1)
  # n() returns 0 variants because a variant_id == NA_character_
  # is dropped inside variants().
  expect_identical(n(NA_variants), 0L)
})

with_mock_api({
  test_that("n(): 2 variants: ", {
    variant_ids <- c('rs3798440', 'rs7329174')
    my_variants <- get_variants(variant_id = variant_ids)
    expect_is(my_variants, 'variants')
    expect_identical(n(my_variants), 2L)
  })
})


### n() applied on traits
test_that("n(): empty_traits", {
  empty_traits <- traits()
  expect_identical(n(empty_traits), 0L)
})

test_that("n(): traits that are NA", {
  traits_tbl1 <-
    traits_tbl(
      efo_id = NA_character_,
      trait = 'blah',
      uri = 'blah'
    )
  NA_traits <- traits(traits = traits_tbl1)
  # n() returns 0 traits because a study_id == NA_character_
  # is dropped inside traits().
  expect_identical(n(NA_traits), 0L)
})

with_mock_api({
  test_that("n(): 2 traits: ", {
    trait_ids <- c('EFO_0005924', 'EFO_0004291')
    my_traits <- get_traits(efo_id = trait_ids)
    expect_is(my_traits, 'traits')
    expect_identical(n(my_traits), 2L)
  })
})

test_that("n() on studies, testing 'unique' parameter", {
  expect_identical(n(studies_ex01), 2L)
  expect_identical(n(studies_ex02), 2L)
  expect_identical(n(bind(studies_ex01, studies_ex02), unique = FALSE), 4L)
  expect_identical(n(bind(studies_ex01, studies_ex02), unique = TRUE), 3L)
})


test_that("n() on associations, testing 'unique' parameter", {
  expect_identical(n(associations_ex01), 4L)
  expect_identical(n(associations_ex02), 3L)
  expect_identical(n(bind(associations_ex01, associations_ex02), unique = FALSE), 7L)
  expect_identical(n(bind(associations_ex01, associations_ex02), unique = TRUE), 6L)
})

test_that("n() on variants, testing 'unique' parameter", {
  expect_identical(n(variants_ex01), 3L)
  expect_identical(n(variants_ex02), 4L)
  expect_identical(n(bind(variants_ex01, variants_ex02), unique = FALSE), 7L)
  expect_identical(n(bind(variants_ex01, variants_ex02), unique = TRUE), 5L)
})

test_that("n() on traits, testing the 'unique' parameter", {
  expect_identical(n(traits_ex01), 3L)
  expect_identical(n(traits_ex02), 4L)
  expect_identical(n(bind(traits_ex01, traits_ex02), unique = FALSE), 7L)
  expect_identical(n(bind(traits_ex01, traits_ex02), unique = TRUE), 6L)
})

#
## filter_by_id: Filter GWAS Catalog S4 objects by identifier.
#

test_that("filter_by_id() studies", {
  my_studies <- filter_by_id(studies_ex01, 'GCST001585')
  expect_is(my_studies, 'studies')
  expect_identical(my_studies@studies$study_id, 'GCST001585')
  expect_identical(n(my_studies), 1L)
})

test_that("filter_by_id() associations", {
  my_associations <- filter_by_id(associations_ex01, '19537565')
  expect_is(my_associations, 'associations')
  expect_identical(my_associations@associations$association_id, '19537565')
  expect_identical(n(my_associations), 1L)
})

test_that("filter_by_id() variants", {
  my_variants <- filter_by_id(variants_ex01, 'rs56261590')
  expect_is(my_variants, 'variants')
  expect_identical(my_variants@variants$variant_id, 'rs56261590')
  expect_identical(n(my_variants), 1L)
})

test_that("filter_by_id() traits", {
  my_traits <- filter_by_id(traits_ex01, 'EFO_0004884')
  expect_is(my_traits, 'traits')
  expect_identical(my_traits@traits$efo_id, 'EFO_0004884')
  expect_identical(n(my_traits), 1L)
})

#
## `[`(): Subset operator for GWAS Catalog S4 objects.
#

### studies
with_mock_api({
  test_that("subsetting studies with `[`", {
    study_ids <- c('GCST002420', 'GCST000392')
    my_studies <- get_studies(study_id = study_ids)
    expect_is(my_studies, 'studies')
    expect_identical(my_studies, my_studies[])
    expect_identical(my_studies['GCST002420']@studies$study_id, 'GCST002420')
    expect_identical(my_studies['GCST002420'], my_studies[1])
    expect_identical(my_studies['GCST000392']@studies$study_id, 'GCST000392')
    expect_identical(my_studies['GCST000392'], my_studies[2])
  })
})

### associations
with_mock_api({
  test_that("subsetting associations with `[`", {
    association_ids <- c('15608', '24300113')
    my_associations <- get_associations(association_id = association_ids)
    expect_is(my_associations, 'associations')
    expect_identical(my_associations, my_associations[])
    expect_identical(my_associations['15608']@associations$association_id, '15608')
    expect_identical(my_associations['15608'], my_associations[1])
    expect_identical(my_associations['24300113']@associations$association_id, '24300113')
    expect_identical(my_associations['24300113'], my_associations[2])
  })
})

### variants
with_mock_api({
  test_that("subsetting variants with `[`", {
    my_variants <- get_variants(variant_id = c('rs3798440', 'rs7329174'))
    expect_is(my_variants, 'variants')
    expect_identical(my_variants, my_variants[])
    expect_identical(my_variants['rs3798440']@variants$variant_id, 'rs3798440')
    expect_identical(my_variants['rs3798440'], my_variants[1])
    expect_identical(my_variants['rs7329174']@variants$variant_id, 'rs7329174')
    expect_identical(my_variants['rs7329174'], my_variants[2])
  })
})

### traits
with_mock_api({
  test_that("subsetting traits with `[`", {
    trait_ids <- c('EFO_0005924', 'EFO_0004291')
    my_traits <- get_traits(efo_id = trait_ids)
    expect_is(my_traits, 'traits')
    expect_identical(my_traits, my_traits[])
    expect_identical(my_traits['EFO_0005924']@traits$efo_id, 'EFO_0005924')
    expect_identical(my_traits['EFO_0005924'], my_traits[1])
    expect_identical(my_traits['EFO_0004291']@traits$efo_id, 'EFO_0004291')
    expect_identical(my_traits['EFO_0004291'], my_traits[2])
  })
})

#
## Set operations: GWAS Catalog S4 studies.
#
with_mock_api({
  test_that("set operations on S4 studies", {
    s1 <- get_studies(study_id = 'GCST002420')
    s2 <- get_studies(study_id = 'GCST000392')
    s3 <- get_studies(study_id = c('GCST002420', 'GCST000392'))
    expect_is(s1, 'studies')
    expect_is(s2, 'studies')
    expect_is(s3, 'studies')
    # union
    expect_identical(union(s1, s2), s3)
    expect_identical(union(s3, s3), s3)
   # intersection
    expect_identical(intersect(s1, s3), s1)
    expect_identical(intersect(s2, s3), s2)
    expect_identical(intersect(s3, s3), s3)
    # setdiff
    expect_identical(setdiff(s3, s1), s2)
    expect_identical(setdiff(s3, s2), s1)
    expect_identical(setdiff(s3, s3), studies())
    # setequal
    expect_true(setequal(s1, s1))
    expect_true(setequal(union(s1, s2), union(s2, s1))) # setequal is invariant to order
  })
})

#
## Set operations: GWAS Catalog S4 associations.
#
with_mock_api({
  test_that("set operations on S4 associations", {
    a1 <- get_associations(association_id = '15608')
    a2 <- get_associations(association_id = '24300113')
    a3 <- get_associations(association_id = c('15608', '24300113'))
    expect_is(a1, 'associations')
    expect_is(a2, 'associations')
    expect_is(a3, 'associations')
    # union
    expect_identical(union(a1, a2), a3)
    expect_identical(union(a3, a3), a3)
    # intersection
    expect_identical(intersect(a1, a3), a1)
    expect_identical(intersect(a2, a3), a2)
    expect_identical(intersect(a3, a3), a3)
    # setdiff
    expect_identical(setdiff(a3, a1), a2)
    expect_identical(setdiff(a3, a2), a1)
    expect_identical(setdiff(a3, a3), associations())
    # setequal
    expect_true(setequal(a1, a1))
    expect_true(setequal(union(a1, a2), union(a2, a1))) # setequal is invariant to order
  })
})

#
## Set operations: GWAS Catalog S4 variants.
#
with_mock_api({
  test_that("set operations on S4 variants", {
    v1 <- get_variants(variant_id = 'rs3798440')
    v2 <- get_variants(variant_id = 'rs7329174')
    v3 <- get_variants(variant_id = c('rs3798440', 'rs7329174'))
    expect_is(v1, 'variants')
    expect_is(v2, 'variants')
    expect_is(v3, 'variants')
    # union
    expect_identical(union(v1, v2), v3)
    expect_identical(union(v3, v3), v3)
    # intersection
    expect_identical(intersect(v1, v3), v1)
    expect_identical(intersect(v2, v3), v2)
    expect_identical(intersect(v3, v3), v3)
    # setdiff
    expect_identical(setdiff(v3, v1), v2)
    expect_identical(setdiff(v3, v2), v1)
    expect_identical(setdiff(v3, v3), variants())
    # setequal
    expect_true(setequal(v1, v1))
    expect_true(setequal(union(v1, v2), union(v2, v1))) # setequal is invariant to order
  })
})

#
## Set operations: GWAS Catalog S4 traits.
#
with_mock_api({
  test_that("set operations on S4 traits", {
    t1 <- get_traits(efo_id = 'EFO_0005924')
    t2 <- get_traits(efo_id = 'EFO_0004291')
    t3 <- get_traits(efo_id = c('EFO_0005924', 'EFO_0004291'))
    expect_is(t1, 'traits')
    expect_is(t2, 'traits')
    expect_is(t3, 'traits')
    # union
    expect_identical(union(t1, t2), t3)
    expect_identical(union(t3, t3), t3)
    # intersection
    expect_identical(intersect(t1, t3), t1)
    expect_identical(intersect(t2, t3), t2)
    expect_identical(intersect(t3, t3), t3)
    # setdiff
    expect_identical(setdiff(t3, t1), t2)
    expect_identical(setdiff(t3, t2), t1)
    expect_identical(setdiff(t3, t3), traits())
    # setequal
    expect_true(setequal(t1, t1))
    expect_true(setequal(union(t1, t2), union(t2, t1))) # setequal is invariant to order
  })
})

#
## bind() on S4 studies.
#
with_mock_api({
  test_that("bind S4 studies", {
    s1 <- get_studies(study_id = 'GCST002420')
    s2 <- get_studies(study_id = 'GCST000392')
    s3 <- get_studies(study_id = c('GCST002420', 'GCST000392'))
    expect_is(s1, 'studies')
    expect_is(s2, 'studies')
    expect_is(s3, 'studies')
    expect_true(identical(bind(s1, s2), s3))
    expect_false(identical(bind(s2, s1), s3))
  })
})

#
## bind() on S4 associations.
#
with_mock_api({
  test_that("bind S4 associations", {
    a1 <- get_associations(association_id = '15608')
    a2 <- get_associations(association_id = '24300113')
    a3 <- get_associations(association_id = c('15608', '24300113'))
    expect_is(a1, 'associations')
    expect_is(a2, 'associations')
    expect_is(a3, 'associations')
    expect_true(identical(bind(a1, a2), a3))
    expect_false(identical(bind(a2, a1), a3))
  })
})

#
## bind() on S4 variants.
#
with_mock_api({
  test_that("bind S4 variants", {
    v1 <- get_variants(variant_id = 'rs3798440')
    v2 <- get_variants(variant_id = 'rs7329174')
    v3 <- get_variants(variant_id = c('rs3798440', 'rs7329174'))
    expect_is(v1, 'variants')
    expect_is(v2, 'variants')
    expect_is(v3, 'variants')
    expect_true(identical(bind(v1, v2), v3))
    expect_false(identical(bind(v2, v1), v3))
  })
})

#
## bind() on S4 traits.
#
with_mock_api({
  test_that("bind S4 traits", {
    t1 <- get_traits(efo_id = 'EFO_0005924')
    t2 <- get_traits(efo_id = 'EFO_0004291')
    t3 <- get_traits(efo_id = c('EFO_0005924', 'EFO_0004291'))
    expect_is(t1, 'traits')
    expect_is(t2, 'traits')
    expect_is(t3, 'traits')
    expect_true(identical(bind(t1, t2), t3))
    expect_false(identical(bind(t2, t1), t3))
  })
})

Try the gwasrapidd package in your browser

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

gwasrapidd documentation built on Dec. 28, 2022, 2:16 a.m.