From 52313afa681e8a64b2ce4d9ee148673e84821885 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Mon, 30 Mar 2009 23:14:26 +0000 Subject: [PATCH] Add unit test to check that the crosstalk matrix was being saved and reloaded 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 | 13 ++++-- .../pipelines/test/test_runfolder_ipar130.py | 44 ++++++++++--------- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/htsworkflow/pipelines/bustard.py b/htsworkflow/pipelines/bustard.py index a8eb4c7..91929ec 100644 --- a/htsworkflow/pipelines/bustard.py +++ b/htsworkflow/pipelines/bustard.py @@ -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: diff --git a/htsworkflow/pipelines/test/test_runfolder_ipar130.py b/htsworkflow/pipelines/test/test_runfolder_ipar130.py index efa6fe1..c782e4f 100644 --- a/htsworkflow/pipelines/test/test_runfolder_ipar130.py +++ b/htsworkflow/pipelines/test/test_runfolder_ipar130.py @@ -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 -- 2.30.2