Create a class to convert contig names into genome/contig names
[htsworkflow.git] / htsworkflow / pipelines / test / test_genomemap.py
diff --git a/htsworkflow/pipelines/test/test_genomemap.py b/htsworkflow/pipelines/test/test_genomemap.py
new file mode 100644 (file)
index 0000000..8dc64d0
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+"""More direct synthetic test cases for the eland output file processing
+"""
+import os
+from StringIO import StringIO
+import shutil
+import tempfile
+import unittest
+
+from htsworkflow.pipelines.runfolder import ElementTree
+from htsworkflow.pipelines import genomemap
+
+class TestGenomeMap(unittest.TestCase):
+    def test_genomesizes_xml(self):
+        xml = ElementTree.fromstring("""<sequenceSizes>
+        <chromosome fileName="chr2.fa" contigName="chr2" totalBases="181748087"/>
+        <chromosome fileName="chr1.fa" contigName="chr1" totalBases="197195432"/>
+ </sequenceSizes>
+""")
+        g = genomemap.GenomeMap()
+        g.build_map_from_element(xml)
+
+        self.assertTrue('chr1.fa' in g)
+        self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
+
+    def test_simulated_genome_dir(self):
+        vlds = [genomemap.vldInfo('chr1.fa.vld', False),
+                genomemap.vldInfo('chr2.fa.vld', False),
+                genomemap.vldInfo('chr3.fa.vld', False),
+                genomemap.vldInfo('Lambda.fa.vld', True),]
+
+        g = genomemap.GenomeMap()
+        g.build_map_from_dir('mm9', vlds)
+
+        self.assertTrue('chr1.fa' in g)
+        self.assertEqual(len(g), 4)
+        self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
+        self.assertEqual(g['Lambda.fa'], 'Lambda.fa')
+
+    def test_genome_dir(self):
+        g = genomemap.GenomeMap()
+        names = ['chr1', 'chr2', 'chr3']
+        tempdir = None
+        try:
+            tempdir = tempfile.mkdtemp(prefix='tmp_mm9')
+            for base in names:
+                name = os.path.join(tempdir, base + '.fa.vld')
+                stream = open(name, 'w')
+                stream.write(name)
+                stream.close()
+            g.scan_genome_dir(tempdir)
+        finally:
+            if tempdir is not None:
+                shutil.rmtree(tempdir)
+
+        temppath, tempgenome = os.path.split(tempdir)
+        self.assertTrue('chr1.fa' in g)
+        self.assertEqual(len(g), 3)
+        self.assertEqual(g['chr1.fa'], '{0}/chr1.fa'.format(tempgenome))
+if __name__ == "__main__":
+    unittest.main()