tests/testthat/test_calculate_dPSI.R

expression <- read.table(text = "
                         transcript sample tpmCtrl tpmCase
                         A1 s1 1 1
                         A2 s1 1 1
                         A3 s1 1 1
                         A1 s2 3 NA
                         A2 s2 2 NA
                         A3 s2 1 NA
                         A1 s3 NA 1
                         A2 s3 NA 2
                         A3 s3 NA 3
                         A1 s4 3 1
                         A2 s4 2 2
                         A3 s4 1 3
                         ", header = TRUE, stringsAsFactors = FALSE)
tx2gene <- read.table(text = "
                      transcript gene
                      A1 A
                      A2 A
                      A3 A
                      B1 B
                      ", header = TRUE, stringsAsFactors = FALSE)

dPSI <- calculate_dPSI(expression, tx2gene)

test_that('output is as expected', {

    expect_true(is.data.frame(dPSI))
    expect_equal(ncol(dPSI), 8)

})

test_that('PSI calculation is correct', {

    # Ctrl
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A1')$psiCtrl, 1/3)
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A2')$psiCtrl, 1/3)
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A3')$psiCtrl, 1/3)
    expect_equal(subset(dPSI, sample == 's2' & transcript == 'A1')$psiCtrl, 1/2)
    expect_equal(subset(dPSI, sample == 's2' & transcript == 'A2')$psiCtrl, 1/3)
    expect_equal(subset(dPSI, sample == 's2' & transcript == 'A3')$psiCtrl, 1/6)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A1')$psiCtrl, 1/2)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A2')$psiCtrl, 1/3)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A3')$psiCtrl, 1/6)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A1')$psiCtrl, 1/2)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A2')$psiCtrl, 1/3)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A3')$psiCtrl, 1/6)

    # Case
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A1')$psiCase, 1/3)
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A2')$psiCase, 1/3)
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A3')$psiCase, 1/3)
    expect_true(is.na(subset(dPSI, sample == 's2' & transcript == 'A1')$psiCase), NA)
    expect_true(is.na(subset(dPSI, sample == 's2' & transcript == 'A2')$psiCase), NA)
    expect_true(is.na(subset(dPSI, sample == 's2' & transcript == 'A3')$psiCase), NA)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A1')$psiCase, 1/6)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A2')$psiCase, 1/3)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A3')$psiCase, 1/2)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A1')$psiCase, 1/6)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A2')$psiCase, 1/3)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A3')$psiCase, 1/2)

})

test_that('dPSI calculation is correct', {

    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A1')$dPSI, 0)
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A2')$dPSI, 0)
    expect_equal(subset(dPSI, sample == 's1' & transcript == 'A3')$dPSI, 0)
    expect_true(is.na(subset(dPSI, sample == 's2' & transcript == 'A1')$dPSI), NA)
    expect_true(is.na(subset(dPSI, sample == 's2' & transcript == 'A2')$dPSI), NA)
    expect_true(is.na(subset(dPSI, sample == 's2' & transcript == 'A3')$dPSI), NA)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A1')$dPSI, 1/2 - 1/6)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A2')$dPSI, 0)
    expect_equal(subset(dPSI, sample == 's3' & transcript == 'A3')$dPSI, 1/6 - 1/2)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A1')$dPSI, 1/2 - 1/6)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A2')$dPSI, 0)
    expect_equal(subset(dPSI, sample == 's4' & transcript == 'A3')$dPSI, 1/6 - 1/2)

})
hclimente/sword documentation built on May 25, 2019, 5:26 p.m.