Recent IPAR xml config blocks include the runfolder name
[htsworkflow.git] / htsworkflow / pipelines / ipar.py
index e17db4b86c6844ae7d0575c3754f05005773a75c..8203f5e0f29fda173728e3f504522f6cd579520f 100644 (file)
@@ -19,7 +19,7 @@ import re
 import stat
 import time
 
-from htsworkflow.pipelines.runfolder import \
+from htsworkflow.pipelines import \
    ElementTree, \
    VERSION_RE, \
    EUROPEAN_STRPTIME
@@ -71,10 +71,31 @@ class IPAR(object):
     def __init__(self, xml=None):
         self.tree = None
         self.date = datetime.datetime.today()
-       self._tiles = None
+        self._tiles = None
         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:
+            raise ValueError("Can't determine software name, please load a run")
+        software = self.tree.xpath('Software')
+        if len(software) == 0:
+          return None
+        elif len(software) > 1:
+            raise RuntimeError("Too many software tags, please update ipar.py")
+        else:
+            return software[0].attrib['Name']
+    software = property(_get_software)
+
     def _get_time(self):
         return time.mktime(self.date.timetuple())
     def _set_time(self, value):
@@ -213,7 +234,8 @@ def ipar(pathname):
         # its still live.
 
     # look for parameter xml file
-    paramfiles = [os.path.join(pathname, 'config.xml'),
+    paramfiles = [os.path.join(pathname, 'RTAConfig.xml'),
+                  os.path.join(pathname, 'config.xml'),
                   os.path.join(path, '.params')]
     for paramfile in paramfiles:
         if os.path.exists(paramfile):