X-Git-Url: https://git.arvados.org/lightning.git/blobdiff_plain/3bd8fa5ccd85a4f8155ab2837433671aff5ddf38..e4839e500e2da73b476f095425c0347ae7c5de97:/tilelib_test.go diff --git a/tilelib_test.go b/tilelib_test.go index 4e6ca0afa5..5801b9baf3 100644 --- a/tilelib_test.go +++ b/tilelib_test.go @@ -1,125 +1,143 @@ -package main +// Copyright (C) The Lightning Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package lightning import ( "bytes" + "regexp" + "strings" "gopkg.in/check.v1" ) -type tilelibSuite struct{} +type tilelibSuite struct { + tag []string + taglib tagLibrary +} var _ = check.Suite(&tilelibSuite{}) -func (s *tilelibSuite) TestSkipOOO(c *check.C) { - var taglib tagLibrary - err := taglib.Load(bytes.NewBufferString(`>0000.00 +func (s *tilelibSuite) SetUpSuite(c *check.C) { + fasta := `>0000.00 ggagaactgtgctccgccttcaga acacatgctagcgcgtcggggtgg gactctagcagagtggccagccac cctcccgagccgagccacccgtca gttattaataataacttatcatca -`)) +` + err := s.taglib.Load(bytes.NewBufferString(fasta)) c.Assert(err, check.IsNil) + for _, seq := range strings.Split(fasta, "\n") { + if len(seq) > 0 && seq[0] != '>' { + s.tag = append(s.tag, seq+"\n") + } + } +} + +func (s *tilelibSuite) TestSkipOOO(c *check.C) { + matchAllChromosomes := regexp.MustCompile(".") // tags appear in seq: 4, 0, 2 (but skipOOO is false) - tilelib := &tileLibrary{taglib: &taglib, skipOOO: false} - tseq, err := tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -gttattaataataacttatcatca -ggggggggggggggggggggggg -ggagaactgtgctccgccttcaga -cccccccccccccccccccc -gactctagcagagtggccagccac -`)) + tilelib := &tileLibrary{taglib: &s.taglib, skipOOO: false} + tseq, _, err := tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[4]+ + "ggggggggggggggggggggggg\n"+ + s.tag[0]+ + "cccccccccccccccccccc\n"+ + s.tag[2]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{4, 1}, {0, 1}, {2, 1}}}) // tags appear in seq: 0, 1, 2 -> don't skip - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -ggagaactgtgctccgccttcaga -cccccccccccccccccccc -acacatgctagcgcgtcggggtgg -ggggggggggggggggggggggg -gactctagcagagtggccagccac -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[0]+ + "cccccccccccccccccccc\n"+ + s.tag[1]+ + "ggggggggggggggggggggggg\n"+ + s.tag[2]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}, {2, 1}}}) // tags appear in seq: 2, 3, 4 -> don't skip - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -gactctagcagagtggccagccac -cccccccccccccccccccc -cctcccgagccgagccacccgtca -ggggggggggggggggggggggg -gttattaataataacttatcatca -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[2]+ + "cccccccccccccccccccc\n"+ + s.tag[3]+ + "ggggggggggggggggggggggg\n"+ + s.tag[4]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{2, 1}, {3, 1}, {4, 1}}}) // tags appear in seq: 4, 0, 2 -> skip 4 - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -gttattaataataacttatcatca -cccccccccccccccccccc -ggagaactgtgctccgccttcaga -ggggggggggggggggggggggg -gactctagcagagtggccagccac -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[4]+ + "cccccccccccccccccccc\n"+ + s.tag[0]+ + "ggggggggggggggggggggggg\n"+ + s.tag[2]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {2, 1}}}) // tags appear in seq: 0, 2, 1 -> skip 2 - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -ggagaactgtgctccgccttcaga -cccccccccccccccccccc -gactctagcagagtggccagccac -ggggggggggggggggggggggg -acacatgctagcgcgtcggggtgg -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[0]+ + "cccccccccccccccccccc\n"+ + s.tag[2]+ + "ggggggggggggggggggggggg\n"+ + s.tag[1]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}}}) // tags appear in seq: 0, 1, 1, 2 -> skip second tag1 - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -ggagaactgtgctccgccttcaga -cccccccccccccccccccc -acacatgctagcgcgtcggggtgg -ggggggggggggggggggggggg -acacatgctagcgcgtcggggtgg -ggggggggggggggggggggggg -gactctagcagagtggccagccac -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[0]+ + "cccccccccccccccccccc\n"+ + s.tag[1]+ + "ggggggggggggggggggggggg\n"+ + s.tag[1]+ + "ggggggggggggggggggggggg\n"+ + s.tag[2]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}, {2, 1}}}) // tags appear in seq: 0, 1, 3, 0, 4 -> skip second tag0 - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -ggagaactgtgctccgccttcaga -cccccccccccccccccccc -acacatgctagcgcgtcggggtgg -ggggggggggggggggggggggg -cctcccgagccgagccacccgtca -ggggggggggggggggggggggg -ggagaactgtgctccgccttcaga -ggggggggggggggggggggggg -gttattaataataacttatcatca -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[0]+ + "cccccccccccccccccccc\n"+ + s.tag[1]+ + "ggggggggggggggggggggggg\n"+ + s.tag[3]+ + "ggggggggggggggggggggggg\n"+ + s.tag[0]+ + "ggggggggggggggggggggggg\n"+ + s.tag[4]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}, {3, 1}, {4, 1}}}) // tags appear in seq: 0, 1, 3 -> don't skip - tilelib = &tileLibrary{taglib: &taglib, skipOOO: true} - tseq, err = tilelib.TileFasta("test-label", bytes.NewBufferString(`>test-seq -ggagaactgtgctccgccttcaga -cccccccccccccccccccc -acacatgctagcgcgtcggggtgg -ggggggggggggggggggggggg -cctcccgagccgagccacccgtca -`)) + tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true} + tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+ + s.tag[0]+ + "cccccccccccccccccccc\n"+ + s.tag[1]+ + "ggggggggggggggggggggggg\n"+ + s.tag[3]+ + "\n"), matchAllChromosomes, false) c.Assert(err, check.IsNil) c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}, {3, 1}}}) }