From 5644e2bfe7c1f7e5af99289cd918f783b61c441a Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Thu, 5 Dec 2013 14:45:59 -0800 Subject: [PATCH] Recent IPAR xml config blocks include the runfolder name I was previously extracting it in the gerald step, but since we have a number of runfolders with no aligned directory that wasn't working. --- htsworkflow/pipelines/ipar.py | 8 ++++++++ htsworkflow/pipelines/runfolder.py | 8 +++++--- htsworkflow/pipelines/test/test_runfolder_rta180.py | 10 ++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/htsworkflow/pipelines/ipar.py b/htsworkflow/pipelines/ipar.py index f818b34..8203f5e 100644 --- a/htsworkflow/pipelines/ipar.py +++ b/htsworkflow/pipelines/ipar.py @@ -75,6 +75,14 @@ class IPAR(object): if xml is not None: self.set_elements(xml) + def _get_runfolder_name(self): + """Return runfolder name""" + if self.tree is None: + raise ValueError("Can't query an empty run") + runfolder = self.tree.xpath('RunParameters/Runfolder') + return runfolder + runfolder_name = property(_get_runfolder) + def _get_software(self): """Return software name""" if self.tree is None: diff --git a/htsworkflow/pipelines/runfolder.py b/htsworkflow/pipelines/runfolder.py index 7c06e21..26c592c 100644 --- a/htsworkflow/pipelines/runfolder.py +++ b/htsworkflow/pipelines/runfolder.py @@ -129,10 +129,12 @@ class PipelineRun(object): return path_fields[-1] def _get_runfolder_name(self): - if self.gerald is None: - return None - else: + if self.gerald: return self.gerald.runfolder_name + elif hasattr(self.image_analysis, 'runfolder_name'): + return self.image_analysis.runfolder_name + else: + return None runfolder_name = property(_get_runfolder_name) def _get_run_dirname(self): diff --git a/htsworkflow/pipelines/test/test_runfolder_rta180.py b/htsworkflow/pipelines/test/test_runfolder_rta180.py index 63b4a8d..0db7857 100644 --- a/htsworkflow/pipelines/test/test_runfolder_rta180.py +++ b/htsworkflow/pipelines/test/test_runfolder_rta180.py @@ -25,9 +25,8 @@ def make_runfolder(obj=None): temp_dir = tempfile.mkdtemp(prefix='tmp_runfolder_') flowcell_id = '4286GAAXX' - runfolder_dir = os.path.join( - temp_dir, - '090608_HWI-EAS229_0117_{0}'.format(flowcell_id)) + runfolder = '090608_HWI-EAS229_0117_{0}'.format(flowcell_id) + runfolder_dir = os.path.join(temp_dir, runfolder) os.mkdir(runfolder_dir) data_dir = os.path.join(runfolder_dir, 'Data') @@ -50,6 +49,7 @@ def make_runfolder(obj=None): if obj is not None: obj.flowcell_id = flowcell_id obj.temp_dir = temp_dir + obj.runfolder = runfolder obj.runfolder_dir = runfolder_dir obj.data_dir = data_dir obj.image_analysis_dir = intensities_dir @@ -262,8 +262,9 @@ class RunfolderTests(TestCase): # 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'),) + name = 'run_4286GAAXX_%s.xml' % ( date.today().strftime('%Y-%m-%d'),) self.failUnlessEqual(runs[0].serialization_filename, name) + self.assertEqual(runs[0].runfolder_name, '090220_HWI-EAS229_0093_30VR0AAXX') # do we get the flowcell id from the FlowcellId.xml file make_flowcell_id(self.runfolder_dir, '207BTAAXY') @@ -272,6 +273,7 @@ class RunfolderTests(TestCase): name = 'run_207BTAAXY_%s.xml' % ( date.today().strftime('%Y-%m-%d'),) self.failUnlessEqual(runs[0].serialization_filename, name) + r1 = runs[0] xml = r1.get_elements() xml_str = ElementTree.tostring(xml) -- 2.30.2