context("Plot DNA")
test_that("Check if indexToRange works",{
expect_equal(indexToRange(c(1:5,10:7)), data.frame('start'=c(1,7),'end'=c(5,10)))
expect_equal(indexToRange(c(1:5,6:10,9999:11)), data.frame('start'=c(1),'end'=c(9999)))
expect_equal(indexToRange(c(1:5,6:10,9999:11,1:5,1:5)), data.frame('start'=c(1),'end'=c(9999)))
expect_equal(nrow(indexToRange(seq(1,999,2))), 500)
})
test_that("Check if gapToNoGap works",{
expect_equal(gapToNoGap('AAAAAAAAAAA',1:5), 1:5)
expect_true(is.na(gapToNoGap('AAAAAAAAAAA',99)))
expect_true(is.na(gapToNoGap('AA',3)))
expect_true(is.na(gapToNoGap('AA',-1)))
expect_true(is.na(gapToNoGap('AA',0)))
expect_equal(is.na(gapToNoGap('AA',c(0,-1,100))), c(TRUE,TRUE,TRUE))
expect_equal(gapToNoGap('AA',2), 2)
expect_equal(gapToNoGap('A-A',2), 1)
expect_equal(gapToNoGap('A----A',5), 1)
expect_equal(gapToNoGap('A----A',6), 2)
expect_equal(gapToNoGap('A----A',1:6), c(1,1,1,1,1,2))
expect_equal(gapToNoGap('Z--Z--Z',1:7), c(1,1,1,2,2,2,3))
expect_equal(gapToNoGap('--A--A--A',1:9), c(0,0,1,1,1,2,2,2,3))
expect_equal(is.na(gapToNoGap('--A--A--A',c(NA,NA,1))), c(TRUE,TRUE,FALSE))
})
test_that("Check if noGapToGap works",{
expect_equal(noGapToGap('AAAAAAAAAAA',1:5), 1:5)
expect_true(is.na(noGapToGap('AAAAAAAAAAA',99)))
expect_true(is.na(noGapToGap('AA',3)))
expect_true(is.na(noGapToGap('AA',-1)))
expect_true(is.na(noGapToGap('AA',0)))
expect_equal(is.na(noGapToGap('AA',c(0,-100,100))), c(TRUE,TRUE,TRUE))
expect_equal(noGapToGap('AA',2), 2)
expect_equal(noGapToGap('A-A',2), 3)
expect_equal(noGapToGap('A----A',2), 6)
expect_equal(noGapToGap('A----A-A--A',3), 8)
expect_equal(noGapToGap('A--A--A-AA--A',1:6), c(1,4,7,9,10,13))
expect_equal(noGapToGap('--Z--Z--Z---',1:3), c(3,6,9))
expect_equal(is.na(noGapToGap('--A--A--A',c(NA,NA,1))), c(TRUE,TRUE,FALSE))
})
test_that("Check if seqSplit works",{
expect_equal(dim(seqSplit('AAA','AAZ')), c(2,3))
expect_equal(dim(seqSplit('AAA','AAZ','AAT')), c(3,3))
expect_error(dim(seqSplit('AAA','AAZ','A')), 'same length')
expect_equal(dim(seqSplit('AAA','AAZ','A',fill='-')), c(3,3))
expect_equal(dim(seqSplit(c('AAA','AAZ'),'A',fill='-')), c(3,3))
expect_equal(dim(seqSplit(c('AAA','AAZ'),c('A','TT'),fill='-')), c(4,3))
expect_error(seqSplit(c('AAA','AAZ'),NA,fill='-'), 'NA sequence found')
expect_equal(seqSplit(c('AAA','AAZ',''),fill='*')[3,], c('*','*','*'))
expect_equal(seqSplit('AA','AAZA','',fill='-')[3,], rep('-',4))
expect_equal(dim(seqSplit(sapply(0:1000,function(x)paste(sample(letters,x,TRUE),collapse='')),fill='~')), c(1001,1000))
expect_equal(seqSplit(c("AAA","CCC","CTC"))[,1],c('A','C','C'))
expect_equal(seqSplit(c("AAA","CCC","CTC"))[1,],c('A','A','A'))
expect_error(seqSplit(c("AAA","CC","CTC"))[1,],'length')
expect_error(seqSplit(c("AAA",NA,"CTC"))[1,],'NA')
expect_error(seqSplit(c("AAA",NA,"CTC"),fill='-')[1,],'NA')
expect_equal(seqSplit(c("AAA",'CC',"CTC"),fill='-')[,3],c('A','-','C'))
expect_equal(seqSplit(c("AAA",'CC',"CTC"),fill='@')[,3],c('A','@','C'))
expect_equal(dim(seqSplit(replicate(123,paste(sample(letters,543,TRUE),collapse='')))),c(123,543))
expect_equal(dim(seqSplit(c('A',replicate(123,paste(sample(letters,543,TRUE),collapse=''))),fill='!')),c(124,543))
expect_equal(dim(seqSplit(c('A',replicate(123,paste(sample(letters,543,TRUE),collapse=''))),fill='THISISSILLYBUTDOESNTBREAK')),c(124,543))
})
test_that("Check if replaceOuterGaps works",{
expect_equal(replaceOuterGaps(c('AAA','AAZZZ')), c('AAA','AAZZZ'))
expect_equal(replaceOuterGaps(c('AA--A','AAZ-------ZZ')), c('AA--A','AAZ-------ZZ'))
expect_equal(replaceOuterGaps(c('---AA--A','AAZ-------ZZ----','--A-')), c('...AA--A','AAZ-------ZZ....','..A.'))
expect_equal(replaceOuterGaps(c('---AA--A','AAZ-------ZZ----','--A-'),leftEnd=FALSE), c('---AA--A','AAZ-------ZZ....','--A.'))
expect_equal(replaceOuterGaps(c('---AA--A','AAZ-------ZZ----','--A-'),rightEnd=FALSE), c('...AA--A','AAZ-------ZZ----','..A-'))
expect_equal(replaceOuterGaps(c('---AA--A','AAZ-------ZZ----','--A-'),rightEnd=FALSE,leftEnd=FALSE), c('---AA--A','AAZ-------ZZ----','--A-'))
expect_error(replaceOuterGaps(c(NA,'---AA--A','AAZ-------ZZ----','--A-')), 'NA sequence found')
})
test_that("Check if removeGapCols works",{
expect_equal(removeGapCols(c('AAAZZ','AAZZZ')), c('AAAZZ','AAZZZ'))
expect_equal(removeGapCols(c('AA--A','AAZZZ')), c('AA--A','AAZZZ'))
expect_equal(removeGapCols(c('A-A','C-C','C-C','TAT'),maxGapProp=.74), c('AA','CC','CC','TT'))
expect_equal(removeGapCols(c('A-A','C-C','C-C','TAT'),maxGapProp=.75), c('A-A','C-C','C-C','TAT'))
expect_equal(removeGapCols(c(rep('ZZZ',1e4),'-AA','C-C','TA-'),maxGapProp=0), rep('',1e4+3))
expect_equal(removeGapCols(c('A-A','C-C','C-C','T-T'),maxGapProp=1), c('A-A','C-C','C-C','T-T'))
expect_error(removeGapCols(c(NA,'---AA--A','AAZ-------ZZ----','--A-')), 'NA sequence found')
})
test_that("Check if replaceAfterStop works",{
expect_equal(replaceAfterStop(c('AAA','AAZZZ')), c('AAA','AAZZZ'))
expect_equal(replaceAfterStop(c('AA--A','AAZ-------ZZ')), c('AA--A','AAZ-------ZZ'))
expect_equal(replaceAfterStop(c('AXAAXAA','AAAAAAAA','AAAX')), c('AXXXXXX','AAAAAAAA','AAAX'))
expect_equal(replaceAfterStop(c('AXAAXAA','AAAAAAAA','AAAX'),'Z'), c('AXAAXAA','AAAAAAAA','AAAX'))
expect_equal(replaceAfterStop(c('AXZAZAA','AAAAXAAA','AAAZ'),'Z'), c('AXZXXXX','AAAAXAAA','AAAZ'))
expect_equal(replaceAfterStop(c('AZAAZAA','AAAAAAAA','AAAZ'),'Z','!'), c('AZ!!!!!','AAAAAAAA','AAAZ'))
expect_error(replaceAfterStop(c('AAAXA','AAZXXAAAXA',NA,'ASDASADS')), 'NA sequence found')
})
test_that("Check if indexToRange works",{
expect_equal(indexToRange(1:10)$start, 1)
expect_equal(indexToRange(1:100)$start, 1)
expect_equal(indexToRange(c(1:100,123:234))$start, c(1,123))
expect_equal(indexToRange(c(1:100,10:234))$start, c(1))
expect_equal(indexToRange(c(1,3,5,6))$start, c(1,3,5))
expect_equal(indexToRange(1:10)$end, 10)
expect_equal(indexToRange(1:100)$end, 100)
expect_equal(indexToRange(c(1:100,123:234))$end, c(100,234))
expect_equal(indexToRange(c(1:100,10:234))$end, c(234))
expect_equal(indexToRange(c(1,3,5,6))$end, c(1,3,6))
})
test_that("plotDNA works",{
expect_null(plotDNA(c("AAA","CCC","CTC")))
expect_null(plotDNA(c("ZZXZX","CCC","CTC")))
expect_null(plotDNA(c("AA-","CC.","CTC")))
expect_equal(plotDNA(c("AA-","CC.","CTC"),groups=c(1,1,2)),c('1'=1.5,'2'=3))
expect_error(plotDNA(c("AA-","CC.","CTC"),groups=c(1,1)),'[Ll]ength')
expect_null(plotDNA(c("AA-","CC.","CTC"),seqCounts=c(1,1,100)))
expect_equal(plotDNA(c("AA-","CC.","CTC"),groups=c(1,1,2),seqCounts=c(1,2,3)),c('1'=2,'2'=5))
expect_error(plotDNA(c()),'missing') #is this desired?
expect_error(plotDNA(NULL),'missing') #is this desired?
expect_null(plotDNA(c("AA-","CC.","CTC"),refSeq='A-A'))
expect_error(plotDNA(c("AA-","CC.","CTC"),seqCounts=c(1,1)),'[Ll]ength')
expect_error(plotDNA(c("AA-","CC.","CTC"),groups=c(1,1,NA)),'NA')
expect_error(plotDNA(c("AA-","CC.","CTC")),NA)
expect_error(plotDNA(c("AA-","CC.","CTC"),cols=dnaplotr::aminoCols),NA)
})
test_that("plotAA works",{
expect_null(plotAA(c("AAA","CCC","CTC")))
expect_null(plotAA(c("ZZXZX","CCC","CTC")))
expect_null(plotAA(c("AA-","CC.","CTC")))
})
test_that("createFakeDNA works",{
expect_equal(length(createFakeDNA(500)),500+1)
expect_equal(length(createFakeDNA(10)),10+1)
expect_equal(length(unique(nchar(createFakeDNA(500,400)))),1)
expect_equal(unique(nchar(createFakeDNA(500,500))),500)
expect_equal(unique(nchar(createFakeDNA(1000,20))),20)
expect_equal(unique(nchar(createFakeDNA(1000,20,nSplit=0))),20)
expect_equal(any(grepl('[^ACTG-]',(createFakeDNA(1000,500)))),FALSE)
expect_equal(any(grepl('[^ZYX-]',(createFakeDNA(1000,500,bases=c('Z','Y','X'))))),FALSE)
expect_equal(any(grepl('[^ZYX]',(createFakeDNA(1000,500,pGap=0,bases=c('Z','Y','X'))))),FALSE)
expect_equal(length(unique(createFakeDNA(1000,500,pGap=0,pMutation=0,pNoise=0,bases=c('Z','Y','X')))),1)
})
test_that("createFakeAA works",{
expect_equal(length(createFakeAA(500)),500+1)
expect_equal(length(createFakeAA(10)),10+1)
expect_equal(length(unique(nchar(createFakeAA(500,400)))),1)
expect_equal(unique(nchar(createFakeAA(500,500))),500)
expect_equal(unique(nchar(createFakeAA(1000,20))),20)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.