2 """More direct synthetic test cases for the eland output file processing
5 from StringIO import StringIO
8 from unittest2 import TestCase
10 from htsworkflow.pipelines import ElementTree
11 from htsworkflow.pipelines import genomemap
13 MINI_GENOME_XML = '''<sequenceSizes>
14 <chromosome fileName="chr2.fa" contigName="chr2" totalBases="181748087"/>
15 <chromosome fileName="chr1.fa" contigName="chr1" totalBases="197195432"/>
18 class TestGenomeMap(TestCase):
19 def test_genomesizes_xml(self):
20 xml = ElementTree.fromstring(MINI_GENOME_XML)
21 g = genomemap.GenomeMap()
22 g.build_map_from_element(xml)
24 self.assertTrue('chr1.fa' in g)
25 self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
27 def test_genomesizes_file(self):
28 g = genomemap.GenomeMap()
30 tempdir = tempfile.mkdtemp(prefix='tmp_genome')
31 name = os.path.join(tempdir, '11111_NoIndex_L001_genomesize.xml')
32 stream = open(name, 'w')
33 stream.write(MINI_GENOME_XML)
35 g.parse_genomesize(name)
37 shutil.rmtree(tempdir)
39 self.assertTrue('chr1.fa' in g)
40 self.assertEqual(len(g), 2)
41 self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
43 def test_simulated_genome_dir(self):
44 vlds = [genomemap.vldInfo('chr1.fa.vld', False),
45 genomemap.vldInfo('chr2.fa.vld', False),
46 genomemap.vldInfo('chr3.fa.vld', False),
47 genomemap.vldInfo('Lambda.fa.vld', True),]
49 g = genomemap.GenomeMap()
50 g.build_map_from_dir('mm9', vlds)
52 self.assertTrue('chr1.fa' in g)
53 self.assertEqual(len(g), 4)
54 self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
55 self.assertEqual(g['Lambda.fa'], 'Lambda.fa')
57 def test_genome_dir(self):
58 g = genomemap.GenomeMap()
59 names = ['chr1', 'chr2', 'chr3']
62 tempdir = tempfile.mkdtemp(prefix='tmp_mm9')
64 name = os.path.join(tempdir, base + '.fa.vld')
65 stream = open(name, 'w')
68 g.scan_genome_dir(tempdir)
70 if tempdir is not None:
71 shutil.rmtree(tempdir)
73 temppath, tempgenome = os.path.split(tempdir)
74 self.assertTrue('chr1.fa' in g)
75 self.assertEqual(len(g), 3)
76 self.assertEqual(g['chr1.fa'], '{0}/chr1.fa'.format(tempgenome))
80 from unittest2 import TestSuite, defaultTestLoader
82 suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestGenomeMap))
86 if __name__ == "__main__":
87 from unittest2 import main
88 main(defaultTest="suite")