Add unit test to check that the crosstalk matrix was being saved and reloaded
authorDiane Trout <diane@caltech.edu>
Mon, 30 Mar 2009 23:14:26 +0000 (23:14 +0000)
committerDiane Trout <diane@caltech.edu>
Mon, 30 Mar 2009 23:14:26 +0000 (23:14 +0000)
Aparently if your unit test fails to check something there's no guarantee
that it happens.
Also actually add an implementation for saving the matrix.

htsworkflow/pipelines/bustard.py
htsworkflow/pipelines/test/test_runfolder_ipar130.py

index a8eb4c7b7b3d3b6875b2013a5c6737cf40477f83..91929ec2b07caf99029c709a415e9648e81f3e55 100644 (file)
@@ -189,7 +189,7 @@ class Bustard(object):
         self.date = date.today()
         self.user = None
         self.phasing = {}
-        self.crosstalk = {}
+        self.crosstalk = None
         self.pathname = None
         self.bustard_config = None
 
@@ -215,10 +215,15 @@ class Bustard(object):
         user.text = self.user
         params = ElementTree.SubElement(root, Bustard.PARAMETERS)
 
+        # add phasing parameters
         for lane in LANE_LIST:
             params.append(self.phasing[lane].get_elements())
-            #params.append(self.crosstalk[lane].get_elements())
-        
+
+        # add crosstalk matrix if it exists
+        if self.crosstalk is not None:
+            root.append(self.crosstalk.get_elements())
+       
+        # add bustard config if it exists
         if self.bustard_config is not None:
             root.append(self.bustard_config)
         return root
@@ -240,6 +245,8 @@ class Bustard(object):
                 for param in element:
                     p = Phasing(xml=param)
                     self.phasing[p.lane] = p
+            elif element.tag == CrosstalkMatrix.CROSSTALK:
+                self.crosstalk = CrosstalkMatrix(xml=element)
             elif element.tag == Bustard.BUSTARD_CONFIG:
                 self.bustard_config = element
             else:
index efa6fe1e97409947d251ba6bed110684793f2742..c782e4f642920f01ee0cdeac830cb99f6c140101 100644 (file)
@@ -89,6 +89,27 @@ class RunfolderTests(unittest.TestCase):
         """
         construct a bustard object
         """
+        def check_crosstalk(crosstalk):
+            self.failUnlessAlmostEqual(crosstalk.base['A'][0],  1.27)
+            self.failUnlessAlmostEqual(crosstalk.base['A'][1],  0.20999999999999)
+            self.failUnlessAlmostEqual(crosstalk.base['A'][2], -0.02)
+            self.failUnlessAlmostEqual(crosstalk.base['A'][3], -0.03)
+
+            self.failUnlessAlmostEqual(crosstalk.base['C'][0],  0.57)
+            self.failUnlessAlmostEqual(crosstalk.base['C'][1],  0.58)
+            self.failUnlessAlmostEqual(crosstalk.base['C'][2], -0.01)
+            self.failUnlessAlmostEqual(crosstalk.base['C'][3], -0.01)
+
+            self.failUnlessAlmostEqual(crosstalk.base['T'][0], -0.02)
+            self.failUnlessAlmostEqual(crosstalk.base['T'][1], -0.02)
+            self.failUnlessAlmostEqual(crosstalk.base['T'][2],  0.80)
+            self.failUnlessAlmostEqual(crosstalk.base['T'][3],  1.07)
+
+            self.failUnlessAlmostEqual(crosstalk.base['G'][0], -0.03)
+            self.failUnlessAlmostEqual(crosstalk.base['G'][1], -0.04)
+            self.failUnlessAlmostEqual(crosstalk.base['G'][2],  1.51)
+            self.failUnlessAlmostEqual(crosstalk.base['G'][3], -0.02)
+
         b = bustard.bustard(self.bustard_dir)
         self.failUnlessEqual(b.version, '1.3.2')
         self.failUnlessEqual(b.date,    date(2008,3,15))
@@ -96,28 +117,10 @@ class RunfolderTests(unittest.TestCase):
         self.failUnlessEqual(len(b.phasing), 8)
         self.failUnlessAlmostEqual(b.phasing[8].phasing, 0.0099)
         self.failUnlessEqual(b.crosstalk.base.keys(), ['A','C','T','G'])
-
-        self.failUnlessAlmostEqual(b.crosstalk.base['A'][0],  1.27)
-        self.failUnlessAlmostEqual(b.crosstalk.base['A'][1],  0.20999999999999)
-        self.failUnlessAlmostEqual(b.crosstalk.base['A'][2], -0.02)
-        self.failUnlessAlmostEqual(b.crosstalk.base['A'][3], -0.03)
-
-        self.failUnlessAlmostEqual(b.crosstalk.base['C'][0],  0.57)
-        self.failUnlessAlmostEqual(b.crosstalk.base['C'][1],  0.58)
-        self.failUnlessAlmostEqual(b.crosstalk.base['C'][2], -0.01)
-        self.failUnlessAlmostEqual(b.crosstalk.base['C'][3], -0.01)
-
-        self.failUnlessAlmostEqual(b.crosstalk.base['T'][0], -0.02)
-        self.failUnlessAlmostEqual(b.crosstalk.base['T'][1], -0.02)
-        self.failUnlessAlmostEqual(b.crosstalk.base['T'][2],  0.80)
-        self.failUnlessAlmostEqual(b.crosstalk.base['T'][3],  1.07)
-
-        self.failUnlessAlmostEqual(b.crosstalk.base['G'][0], -0.03)
-        self.failUnlessAlmostEqual(b.crosstalk.base['G'][1], -0.04)
-        self.failUnlessAlmostEqual(b.crosstalk.base['G'][2],  1.51)
-        self.failUnlessAlmostEqual(b.crosstalk.base['G'][3], -0.02)
+        check_crosstalk(b.crosstalk)
 
         xml = b.get_elements()
+        print ElementTree.dump(xml)
         b2 = bustard.Bustard(xml=xml)
         self.failUnlessEqual(b.version, b2.version)
         self.failUnlessEqual(b.date,    b2.date )
@@ -130,6 +133,7 @@ class RunfolderTests(unittest.TestCase):
                                  b2.phasing[key].phasing)
             self.failUnlessEqual(b.phasing[key].prephasing,
                                  b2.phasing[key].prephasing)
+        check_crosstalk(b2.crosstalk)
 
     def test_gerald(self):
         # need to update gerald and make tests for it