Initial port to python3
[htsworkflow.git] / htsworkflow / pipelines / test / test_runfolder_rta1_12.py
index c6233d99a7aa21043873122f3771c421696434c1..00a3de5734093278ff0ee0c839c0e24a151364ec 100644 (file)
@@ -5,7 +5,7 @@ import logging
 import os
 import tempfile
 import shutil
-import unittest
+from unittest import TestCase
 
 from htsworkflow.pipelines import eland
 from htsworkflow.pipelines.samplekey import SampleKey
@@ -13,7 +13,7 @@ from htsworkflow.pipelines import ipar
 from htsworkflow.pipelines import bustard
 from htsworkflow.pipelines import gerald
 from htsworkflow.pipelines import runfolder
-from htsworkflow.pipelines.runfolder import ElementTree
+from htsworkflow.pipelines import ElementTree
 
 from htsworkflow.pipelines.test.simulate_runfolder import *
 
@@ -26,10 +26,13 @@ def make_runfolder(obj=None):
     flowcell_id = 'D07K6ACXX'
     temp_dir = tempfile.mkdtemp(prefix='tmp_runfolder_')
 
-    runfolder_dir = os.path.join(temp_dir,
-                                 '110815_SN787_0101_A{0}'.format(flowcell_id))
+    runfolder_dir = os.path.join(
+        temp_dir,
+        '110815_SN787_0101_A{0}'.format(flowcell_id))
     os.mkdir(runfolder_dir)
 
+    make_runinfo(runfolder_dir, flowcell_id)
+
     data_dir = os.path.join(runfolder_dir, 'Data')
     os.mkdir(data_dir)
 
@@ -43,6 +46,7 @@ def make_runfolder(obj=None):
     os.mkdir(unaligned_dir)
     make_unaligned_fastqs_1_12(unaligned_dir, flowcell_id)
     make_unaligned_config_1_12(unaligned_dir)
+    make_unaligned_status_1_12(unaligned_dir, flowcell_id)
 
     aligned_dir = os.path.join(runfolder_dir, "Aligned")
     os.mkdir(aligned_dir)
@@ -50,6 +54,7 @@ def make_runfolder(obj=None):
     make_aligned_config_1_12(aligned_dir)
 
     if obj is not None:
+        obj.flowcell_id = flowcell_id
         obj.temp_dir = temp_dir
         obj.runfolder_dir = runfolder_dir
         obj.data_dir = data_dir
@@ -59,7 +64,7 @@ def make_runfolder(obj=None):
         obj.reads = 2
 
 
-class RunfolderTests(unittest.TestCase):
+class RunfolderTests(TestCase):
     """
     Test components of the runfolder processing code
     which includes firecrest, bustard, and gerald
@@ -93,8 +98,8 @@ class RunfolderTests(unittest.TestCase):
 
         self.failUnlessEqual(g.software, 'CASAVA')
         self.failUnlessEqual(g.version, '1.8.1')
-        self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
-        self.failUnlessEqual(len(g.lanes), len(g.lanes.items()))
+        self.failUnlessEqual(len(g.lanes), len(list(g.lanes.keys())))
+        self.failUnlessEqual(len(g.lanes), len(list(g.lanes.items())))
 
         # list of genomes, matches what was defined up in
         # make_gerald_config.
@@ -136,11 +141,11 @@ class RunfolderTests(unittest.TestCase):
         self.failUnlessEqual(g.software, g2.software)
         self.failUnlessEqual(g.version, g2.version)
         self.failUnlessEqual(g.date, g2.date)
-        self.failUnlessEqual(len(g.lanes.keys()), len(g2.lanes.keys()))
-        self.failUnlessEqual(len(g.lanes.items()), len(g2.lanes.items()))
+        self.failUnlessEqual(len(list(g.lanes.keys())), len(list(g2.lanes.keys())))
+        self.failUnlessEqual(len(list(g.lanes.items())), len(list(g2.lanes.items())))
 
         # test lane specific parameters from gerald config file
-        for i in g.lanes.keys():
+        for i in list(g.lanes.keys()):
             g_lane = g.lanes[i]
             g2_lane = g2.lanes[i]
             self.failUnlessEqual(g_lane.analysis, g2_lane.analysis)
@@ -166,13 +171,13 @@ class RunfolderTests(unittest.TestCase):
                 if isinstance(g_results, eland.ElandLane):
                   self.failUnlessEqual(len(g_results.mapped_reads),
                                        len(g2_results.mapped_reads))
-                  for k in g_results.mapped_reads.keys():
+                  for k in list(g_results.mapped_reads.keys()):
                       self.failUnlessEqual(g_results.mapped_reads[k],
                                            g2_results.mapped_reads[k])
 
                   self.failUnlessEqual(len(g_results.match_codes),
                                        len(g2_results.match_codes))
-                  for k in g_results.match_codes.keys():
+                  for k in list(g_results.match_codes.keys()):
                       self.failUnlessEqual(g_results.match_codes[k],
                                            g2_results.match_codes[k])
 
@@ -192,7 +197,7 @@ class RunfolderTests(unittest.TestCase):
 
         eland_container = gerald.eland(self.gerald_dir, genome_maps=genome_maps)
 
-        for lane in eland_container.values():
+        for lane in list(eland_container.values()):
             # I added sequence lanes to the last 2 lanes of this test case
             if lane.sample_name == '11113':
                 self.assertEqual(lane.reads, 24)
@@ -232,49 +237,50 @@ class RunfolderTests(unittest.TestCase):
             if isinstance(l1, eland.ElandLane):
               self.failUnlessEqual(len(l1.mapped_reads), len(l2.mapped_reads))
               self.failUnlessEqual(len(l1.mapped_reads), 1)
-              for k in l1.mapped_reads.keys():
+              for k in list(l1.mapped_reads.keys()):
                   self.failUnlessEqual(l1.mapped_reads[k],
                                        l2.mapped_reads[k])
 
               self.failUnlessEqual(len(l1.match_codes), 9)
               self.failUnlessEqual(len(l1.match_codes), len(l2.match_codes))
-              for k in l1.match_codes.keys():
+              for k in list(l1.match_codes.keys()):
                   self.failUnlessEqual(l1.match_codes[k],
                                        l2.match_codes[k])
             elif isinstance(l1, eland.SequenceLane):
                 self.failUnlessEqual(l1.sequence_type, l2.sequence_type)
 
     def test_runfolder(self):
-        return
         runs = runfolder.get_runs(self.runfolder_dir)
 
         # do we get the flowcell id from the filename?
         self.failUnlessEqual(len(runs), 1)
-        name = 'run_4286GAAXX_%s.xml' % ( date.today().strftime('%Y-%m-%d'),)
-        self.failUnlessEqual(runs[0].name, name)
-
-        # do we get the flowcell id from the FlowcellId.xml file
-        make_flowcell_id(self.runfolder_dir, '207BTAAXY')
-        runs = runfolder.get_runs(self.runfolder_dir)
-        self.failUnlessEqual(len(runs), 1)
-        name = 'run_207BTAAXY_%s.xml' % ( date.today().strftime('%Y-%m-%d'),)
-        self.failUnlessEqual(runs[0].name, name)
+        self.assertEqual(runs[0].flowcell_id, self.flowcell_id)
+        name = 'run_%s_%s.xml' % ( self.flowcell_id,
+                                   date.today().strftime('%Y-%m-%d'),)
+        self.failUnlessEqual(runs[0].serialization_filename, name)
 
+        bustard_dir = os.path.join(self.runfolder_dir, 'Unaligned')
         r1 = runs[0]
+        self.failUnlessEqual(r1.bustard.sequence_format, 'fastq')
+        self.failUnlessEqual(r1.bustard.pathname, bustard_dir)
+        self.failUnlessEqual(r1.gerald.runfolder_name, 'Unaligned')
+
         xml = r1.get_elements()
         xml_str = ElementTree.tostring(xml)
 
         r2 = runfolder.PipelineRun(xml=xml)
-        self.failUnlessEqual(r1.name, r2.name)
+        self.failUnlessEqual(r1.serialization_filename, r2.serialization_filename)
         self.failIfEqual(r2.image_analysis, None)
         self.failIfEqual(r2.bustard, None)
         self.failIfEqual(r2.gerald, None)
 
-
 def suite():
-    return unittest.makeSuite(RunfolderTests,'test')
+    from unittest import TestSuite, defaultTestLoader
+    suite = TestSuite()
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(RunfolderTests))
+    return suite
 
-if __name__ == "__main__":
-    logging.basicConfig(level=logging.WARN)
-    unittest.main(defaultTest="suite")
 
+if __name__ == "__main__":
+    from unittest import main
+    main(defaultTest="suite")