8dc64d0e6b619dc0cac4a5cdc1c4c10a587805fb
[htsworkflow.git] / htsworkflow / pipelines / test / test_genomemap.py
1 #!/usr/bin/env python
2 """More direct synthetic test cases for the eland output file processing
3 """
4 import os
5 from StringIO import StringIO
6 import shutil
7 import tempfile
8 import unittest
9
10 from htsworkflow.pipelines.runfolder import ElementTree
11 from htsworkflow.pipelines import genomemap
12
13 class TestGenomeMap(unittest.TestCase):
14     def test_genomesizes_xml(self):
15         xml = ElementTree.fromstring("""<sequenceSizes>
16         <chromosome fileName="chr2.fa" contigName="chr2" totalBases="181748087"/>
17         <chromosome fileName="chr1.fa" contigName="chr1" totalBases="197195432"/>
18  </sequenceSizes>
19 """)
20         g = genomemap.GenomeMap()
21         g.build_map_from_element(xml)
22
23         self.assertTrue('chr1.fa' in g)
24         self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
25
26     def test_simulated_genome_dir(self):
27         vlds = [genomemap.vldInfo('chr1.fa.vld', False),
28                 genomemap.vldInfo('chr2.fa.vld', False),
29                 genomemap.vldInfo('chr3.fa.vld', False),
30                 genomemap.vldInfo('Lambda.fa.vld', True),]
31
32         g = genomemap.GenomeMap()
33         g.build_map_from_dir('mm9', vlds)
34
35         self.assertTrue('chr1.fa' in g)
36         self.assertEqual(len(g), 4)
37         self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
38         self.assertEqual(g['Lambda.fa'], 'Lambda.fa')
39
40     def test_genome_dir(self):
41         g = genomemap.GenomeMap()
42         names = ['chr1', 'chr2', 'chr3']
43         tempdir = None
44         try:
45             tempdir = tempfile.mkdtemp(prefix='tmp_mm9')
46             for base in names:
47                 name = os.path.join(tempdir, base + '.fa.vld')
48                 stream = open(name, 'w')
49                 stream.write(name)
50                 stream.close()
51             g.scan_genome_dir(tempdir)
52         finally:
53             if tempdir is not None:
54                 shutil.rmtree(tempdir)
55
56         temppath, tempgenome = os.path.split(tempdir)
57         self.assertTrue('chr1.fa' in g)
58         self.assertEqual(len(g), 3)
59         self.assertEqual(g['chr1.fa'], '{0}/chr1.fa'.format(tempgenome))
60 if __name__ == "__main__":
61     unittest.main()