Add a software (name) property to firecrest, ipar, bustard, gerald
authorDiane Trout <diane@caltech.edu>
Tue, 12 Jun 2012 00:03:49 +0000 (17:03 -0700)
committerDiane Trout <diane@caltech.edu>
Tue, 12 Jun 2012 00:03:49 +0000 (17:03 -0700)
This property should return the proper illumina name for any
of their various software components I've been trying to capture.

NOTE: Now requires lxml.

I prefer the xpath searching api, and that's not in element tree.
so this now requires lxml.

15 files changed:
htsworkflow/pipelines/bustard.py
htsworkflow/pipelines/firecrest.py
htsworkflow/pipelines/gerald.py
htsworkflow/pipelines/ipar.py
htsworkflow/pipelines/runfolder.py
htsworkflow/pipelines/test/test_runfolder026.py
htsworkflow/pipelines/test/test_runfolder030.py
htsworkflow/pipelines/test/test_runfolder110.py
htsworkflow/pipelines/test/test_runfolder_casava_1_7.py
htsworkflow/pipelines/test/test_runfolder_ipar100.py
htsworkflow/pipelines/test/test_runfolder_ipar130.py
htsworkflow/pipelines/test/test_runfolder_pair.py
htsworkflow/pipelines/test/test_runfolder_rta160.py
htsworkflow/pipelines/test/test_runfolder_rta180.py
htsworkflow/pipelines/test/test_runfolder_rta1_12.py

index acdc60ea7a511c3a30386beaf0c9b6d10e777f0c..2c68f674ad77a7d1cfdc637e2553fc57ffcbd87f 100644 (file)
@@ -208,7 +208,7 @@ class Bustard(object):
     BUSTARD_CONFIG = 'BaseCallAnalysis'
 
     def __init__(self, xml=None):
-        self.version = None
+        self._path_version = None # version number from directory name
         self.date = None
         self.user = None
         self.phasing = {}
@@ -233,11 +233,40 @@ class Bustard(object):
 
         groups = name.split("_")
         version = re.search(VERSION_RE, groups[0])
-        self.version = version.group(1)
+        self._path_version = version.group(1)
         t = time.strptime(groups[1], EUROPEAN_STRPTIME)
         self.date = date(*t[0:3])
         self.user = groups[2]
 
+    def _get_software_version(self):
+        """return software name, version tuple"""
+        if self.bustard_config is None:
+            if self._path_version is not None:
+                return 'Bustard', self._path_version
+            else:
+                return None
+        software_nodes = self.bustard_config.xpath('Run/Software')
+        if len(software_nodes) == 0:
+            return None
+        elif len(software_nodes) > 1:
+            raise RuntimeError("Too many software XML elements for bustard.py")
+        else:
+            return (software_nodes[0].attrib['Name'],
+                    software_nodes[0].attrib['Version'])
+
+    def _get_software(self):
+        """Return software name"""
+        software_version = self._get_software_version()
+        return software_version[0] if software_version is not None else None
+    software = property(_get_software)
+
+    def _get_version(self):
+        """Return software name"""
+        software_version = self._get_software_version()
+        return software_version[1] if software_version is not None else None
+    version = property(_get_version)
+
+
     def _get_time(self):
         if self.date is None:
             return None
@@ -283,7 +312,7 @@ class Bustard(object):
             LOGGER.warn('Bustard XML tree is a higher version than this class')
         for element in list(tree):
             if element.tag == Bustard.SOFTWARE_VERSION:
-                self.version = element.text
+                self._path_version = element.text
             elif element.tag == Bustard.DATE:
                 self.date = date.fromtimestamp(float(element.text))
             elif element.tag == Bustard.USER:
@@ -339,7 +368,7 @@ def bustard_from_ga1(pathname):
     b.pathname = pathname
     b.update_attributes_from_pathname()
     version = re.search(VERSION_RE, groups[0])
-    b.version = version.group(1)
+    b._path_version = version.group(1)
     t = time.strptime(groups[1], EUROPEAN_STRPTIME)
     b.date = date(*t[0:3])
     b.user = groups[2]
@@ -371,8 +400,6 @@ def bustard_from_ga2(pathname, config_filename):
     b.bustard_config = bustard_config_root.getroot()
     b.crosstalk = crosstalk_matrix_from_bustard_config(b.pathname,
                                                        b.bustard_config)
-    software = bustard_config_root.find('*/Software')
-    b.version = software.attrib['Version']
     add_phasing(b)
 
     return b
@@ -382,8 +409,6 @@ def bustard_from_hiseq(pathname, config_filename):
     b.pathname = pathname
     bustard_config_root = ElementTree.parse(config_filename)
     b.bustard_config = bustard_config_root.getroot()
-    software = bustard_config_root.find('*/Software')
-    b.version = software.attrib['Version']
     add_phasing(b)
     return b
 
index 7d92050866369f70892b4e2b969f5a3bc16af4cf..de6b042a5ddd7cc06d0b7c28e99841edc5579ce9 100644 (file)
@@ -49,6 +49,10 @@ class Firecrest(object):
         if xml is not None:
             self.set_elements(xml)
 
+    def _get_software(self):
+        return "Firecrest"
+    software = property(_get_software)
+
     def _get_time(self):
         return time.mktime(self.date.timetuple())
     time = property(_get_time, doc='return run time as seconds since epoch')
index 12d83029be6cc1e8deb717f1f06f3abbfc2c0c60..f768b227e260cea6d82febfc638793055b48178c 100644 (file)
@@ -126,17 +126,31 @@ class Gerald(Alignment):
 
     runfolder_name = property(_get_runfolder_name)
 
-    def _get_version(self):
+    def _get_software_version(self):
         if self.tree is None:
             return None
         ga_version = self.tree.findtext(
             'ChipWideRunParameters/SOFTWARE_VERSION')
         if ga_version is not None:
-            match = re.match("@.*GERALD.pl,v (?P<version>\d+(\.\d+)+)",
+            gerald = re.match("@.*GERALD.pl,v (?P<version>\d+(\.\d+)+)",
                              ga_version)
-            if match:
-                return match.group('version')
-            return ga_version
+            if gerald:
+                return ('GERALD', gerald.group('version'))
+            casava = re.match('CASAVA-(?P<version>\d+[.\d]*)',
+                              ga_version)
+            if casava:
+                return ('CASAVA', casava.group('version'))
+
+    def _get_software(self):
+        """Return name of analysis software package"""
+        software_version = self._get_software_version()
+        return software_version[0] if software_version is not None else None
+    software = property(_get_software)
+
+    def _get_version(self):
+        """Return version number of software package"""
+        software_version = self._get_software_version()
+        return software_version[1] if software_version is not None else None
     version = property(_get_version)
 
 class CASAVA(Alignment):
@@ -156,12 +170,29 @@ class CASAVA(Alignment):
 
     runfolder_name = property(_get_runfolder_name)
 
-    def _get_version(self):
+    def _get_software_version(self):
+        if self.tree is None:
+            return None
         if self.tree is None:
             return None
         hiseq_software_node = self.tree.find('Software')
-        hiseq_version = hiseq_software_node.attrib['Version']
-        return hiseq_version
+        software_version = hiseq_software_node.attrib.get('Version',None)
+        if software_version is None:
+            return None
+        return software_version.split('-')
+
+    def _get_software(self):
+        software_version = self._get_software_version()
+        if software_version is None:
+            return None
+        return software_version[0]
+    software = property(_get_software)
+
+    def _get_version(self):
+        software_version = self._get_software_version()
+        if software_version is None:
+            return None
+        return software_version[1]
     version = property(_get_version)
 
 
index e17db4b86c6844ae7d0575c3754f05005773a75c..7a55fa249cefd05e69c1cac4ac06b1ce229ace82 100644 (file)
@@ -75,6 +75,19 @@ class IPAR(object):
         if xml is not None:
             self.set_elements(xml)
 
+    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):
index 04c1377821b33833ddd8ff4261f661cd7422481e..0fce8f840f49cd5c6ca3aea92e203051ff40d45f 100644 (file)
@@ -12,10 +12,7 @@ import sys
 import tarfile
 import time
 
-try:
-    from xml.etree import ElementTree
-except ImportError, e:
-    from elementtree import ElementTree
+import lxml.etree as ElementTree
 
 LOGGER = logging.getLogger(__name__)
 
index 9ab17225a28949331616beee30457d917bfed395..218ba44e9318ad0d74bc253c583102972c7ef1f4 100644 (file)
@@ -273,6 +273,7 @@ class RunfolderTests(unittest.TestCase):
         Construct a firecrest object
         """
         f = firecrest.firecrest(self.firecrest_dir)
+        self.failUnlessEqual(f.software, 'Firecrest')
         self.failUnlessEqual(f.version, '1.8.28')
         self.failUnlessEqual(f.start, 1)
         self.failUnlessEqual(f.stop, 33)
@@ -284,17 +285,19 @@ class RunfolderTests(unittest.TestCase):
         xml_str = ElementTree.tostring(xml)
 
         f2 = firecrest.Firecrest(xml=xml)
-        self.failUnlessEqual(f.version, f2.version)
-        self.failUnlessEqual(f.start,   f2.start)
-        self.failUnlessEqual(f.stop,    f2.stop)
-        self.failUnlessEqual(f.user,    f2.user)
-        self.failUnlessEqual(f.date,    f2.date)
+        self.failUnlessEqual(f.software, f2.software)
+        self.failUnlessEqual(f.version,  f2.version)
+        self.failUnlessEqual(f.start,    f2.start)
+        self.failUnlessEqual(f.stop,     f2.stop)
+        self.failUnlessEqual(f.user,     f2.user)
+        self.failUnlessEqual(f.date,     f2.date)
 
     def test_bustard(self):
         """
         construct a bustard object
         """
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'Bustard')
         self.failUnlessEqual(b.version, '1.8.28')
         self.failUnlessEqual(b.date,    date(2008,4,12))
         self.failUnlessEqual(b.user,    'diane')
@@ -303,9 +306,10 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
-        self.failUnlessEqual(b.version, b2.version)
-        self.failUnlessEqual(b.date,    b2.date )
-        self.failUnlessEqual(b.user,    b2.user)
+        self.failUnlessEqual(b.software, b2.software)
+        self.failUnlessEqual(b.version,  b2.version)
+        self.failUnlessEqual(b.date,     b2.date )
+        self.failUnlessEqual(b.user,     b2.user)
         self.failUnlessEqual(len(b.phasing), len(b2.phasing))
         for key in b.phasing.keys():
             self.failUnlessEqual(b.phasing[key].lane,
@@ -319,6 +323,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.68.2.2')
         self.failUnlessEqual(g.date, datetime(2008,4,19,19,8,30))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
index a995c39accf59b3116fe2533cad74851ef9a3e99..2958d1df5439577a30a7fee88ad32f4a893171f4 100644 (file)
@@ -695,6 +695,7 @@ class RunfolderTests(unittest.TestCase):
         Construct a firecrest object
         """
         f = firecrest.firecrest(self.firecrest_dir)
+        self.failUnlessEqual(f.software, 'Firecrest')
         self.failUnlessEqual(f.version, '1.8.28')
         self.failUnlessEqual(f.start, 1)
         self.failUnlessEqual(f.stop, 33)
@@ -706,17 +707,19 @@ class RunfolderTests(unittest.TestCase):
         xml_str = ElementTree.tostring(xml)
 
         f2 = firecrest.Firecrest(xml=xml)
-        self.failUnlessEqual(f.version, f2.version)
-        self.failUnlessEqual(f.start,   f2.start)
-        self.failUnlessEqual(f.stop,    f2.stop)
-        self.failUnlessEqual(f.user,    f2.user)
-        self.failUnlessEqual(f.date,    f2.date)
+        self.failUnlessEqual(f.software, f2.software)
+        self.failUnlessEqual(f.version,  f2.version)
+        self.failUnlessEqual(f.start,    f2.start)
+        self.failUnlessEqual(f.stop,     f2.stop)
+        self.failUnlessEqual(f.user,     f2.user)
+        self.failUnlessEqual(f.date,     f2.date)
 
     def test_bustard(self):
         """
         construct a bustard object
         """
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'Bustard')
         self.failUnlessEqual(b.version, '1.8.28')
         self.failUnlessEqual(b.date,    date(2008,4,12))
         self.failUnlessEqual(b.user,    'diane')
@@ -725,9 +728,10 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
-        self.failUnlessEqual(b.version, b2.version)
-        self.failUnlessEqual(b.date,    b2.date )
-        self.failUnlessEqual(b.user,    b2.user)
+        self.failUnlessEqual(b.software, b2.software)
+        self.failUnlessEqual(b.version,  b2.version)
+        self.failUnlessEqual(b.date,     b2.date )
+        self.failUnlessEqual(b.user,     b2.user)
         self.failUnlessEqual(len(b.phasing), len(b2.phasing))
         for key in b.phasing.keys():
             self.failUnlessEqual(b.phasing[key].lane,
@@ -741,6 +745,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.68.2.2')
         self.failUnlessEqual(g.date, datetime(2008,4,19,19,8,30))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
index d9c57a0ebe5fe5995ebd12426275db911306ca23..f9508b4b8873fb438549c814e4abd174f194381a 100644 (file)
@@ -75,6 +75,7 @@ class RunfolderTests(unittest.TestCase):
         Construct a firecrest object
         """
         f = firecrest.firecrest(self.image_analysis_dir)
+        self.failUnlessEqual(f.software, 'Firecrest')
         self.failUnlessEqual(f.version, '1.9.6')
         self.failUnlessEqual(f.start, 1)
         self.failUnlessEqual(f.stop, 37)
@@ -86,6 +87,7 @@ class RunfolderTests(unittest.TestCase):
         xml_str = ElementTree.tostring(xml)
 
         f2 = firecrest.Firecrest(xml=xml)
+        self.failUnlessEqual(f.software, f2.software)
         self.failUnlessEqual(f.version, f2.version)
         self.failUnlessEqual(f.start,   f2.start)
         self.failUnlessEqual(f.stop,    f2.stop)
@@ -96,6 +98,7 @@ class RunfolderTests(unittest.TestCase):
         construct a bustard object
         """
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'Bustard')
         self.failUnlessEqual(b.version, '1.9.6')
         self.failUnlessEqual(b.date,    date(2008,10,20))
         self.failUnlessEqual(b.user,    'diane')
@@ -104,6 +107,7 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
+        self.failUnlessEqual(b.software, b2.software)
         self.failUnlessEqual(b.version, b2.version)
         self.failUnlessEqual(b.date,    b2.date )
         self.failUnlessEqual(b.user,    b2.user)
@@ -120,6 +124,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.171')
         self.failUnlessEqual(g.date, datetime(2009,2,22,21,15,59))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
@@ -175,6 +180,7 @@ class RunfolderTests(unittest.TestCase):
         g2 = gerald.Gerald(xml=xml)
 
         # do it all again after extracting from the xml file
+        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()))
index 5a792d729fcc9722861760facf70c9ecb9fb9ef9..9f26a43d84648fcc40f4b24b665b393a1da480cf 100644 (file)
@@ -71,6 +71,7 @@ class RunfolderTests(unittest.TestCase):
     def test_bustard(self):
         """Construct a bustard object"""
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'RTA')
         self.failUnlessEqual(b.version, '1.10.36.0')
         self.failUnlessEqual(b.date,    None)
         self.failUnlessEqual(b.user,    None)
@@ -78,16 +79,17 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
-        self.failUnlessEqual(b.version, b2.version)
-        self.failUnlessEqual(b.date,    b2.date )
-        self.failUnlessEqual(b.user,    b2.user)
+        self.failUnlessEqual(b.software, b2.software)
+        self.failUnlessEqual(b.version,  b2.version)
+        self.failUnlessEqual(b.date,     b2.date )
+        self.failUnlessEqual(b.user,     b2.user)
 
     def test_gerald(self):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
-        self.failUnlessEqual(g.version,
-            'CASAVA-1.7.0')
+        self.failUnlessEqual(g.software, 'CASAVA')
+        self.failUnlessEqual(g.version, '1.7.0')
         self.failUnlessEqual(g.date, datetime(2011,5,2,19,19,49))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.items()))
@@ -150,6 +152,7 @@ class RunfolderTests(unittest.TestCase):
         g2 = gerald.Gerald(xml=xml)
 
         # do it all again after extracting from the xml file
+        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()))
index ec647b83e8523c0cf57713ad7770a8edbd26b03a..7913ed079a045c64e910a51addf625a4132c223b 100644 (file)
@@ -75,6 +75,7 @@ class RunfolderTests(unittest.TestCase):
         Construct a firecrest object
         """
         i = ipar.ipar(self.image_analysis_dir)
+        self.failUnlessEqual(i.software, 'IPAR')
         self.failUnlessEqual(i.version, '2.01.192.0')
         self.failUnlessEqual(i.start, 1)
         self.failUnlessEqual(i.stop, 37)
@@ -84,6 +85,7 @@ class RunfolderTests(unittest.TestCase):
         xml_str = ElementTree.tostring(xml)
 
         i2 = ipar.IPAR(xml=xml)
+        self.failUnlessEqual(i.software, i2.software)
         self.failUnlessEqual(i.version, i2.version)
         self.failUnlessEqual(i.start,   i2.start)
         self.failUnlessEqual(i.stop,    i2.stop)
@@ -95,6 +97,7 @@ class RunfolderTests(unittest.TestCase):
         construct a bustard object
         """
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'Bustard')
         self.failUnlessEqual(b.version, '1.8.28')
         self.failUnlessEqual(b.date,    date(2008,4,12))
         self.failUnlessEqual(b.user,    'diane')
@@ -103,6 +106,7 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
+        self.failUnlessEqual(b.software, b2.software)
         self.failUnlessEqual(b.version, b2.version)
         self.failUnlessEqual(b.date,    b2.date )
         self.failUnlessEqual(b.user,    b2.user)
@@ -119,6 +123,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.171')
         self.failUnlessEqual(g.date, datetime(2009,2,22,21,15,59))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
@@ -172,6 +177,7 @@ class RunfolderTests(unittest.TestCase):
         g2 = gerald.Gerald(xml=xml)
 
         # do it all again after extracting from the xml file
+        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()))
index 46a26f01892983a8f3fc2adc4177323f75433335..011a993a484339d7eff1ca88876ca0af73b00f8b 100644 (file)
@@ -73,6 +73,7 @@ class RunfolderTests(unittest.TestCase):
         Construct a firecrest object
         """
         i = ipar.ipar(self.image_analysis_dir)
+        self.failUnlessEqual(i.software, 'IPAR')
         self.failUnlessEqual(i.version, '2.01.192.0')
         self.failUnlessEqual(i.start, 1)
         self.failUnlessEqual(i.stop, 37)
@@ -82,6 +83,7 @@ class RunfolderTests(unittest.TestCase):
         xml_str = ElementTree.tostring(xml)
 
         i2 = ipar.IPAR(xml=xml)
+        self.failUnlessEqual(i.software, i2.software)
         self.failUnlessEqual(i.version, i2.version)
         self.failUnlessEqual(i.start,   i2.start)
         self.failUnlessEqual(i.stop,    i2.stop)
@@ -114,6 +116,7 @@ class RunfolderTests(unittest.TestCase):
             self.failUnlessAlmostEqual(crosstalk.base['G'][3], -0.02)
 
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'Bustard')
         self.failUnlessEqual(b.version, '1.3.2')
         self.failUnlessEqual(b.date,    date(2008,3,15))
         self.failUnlessEqual(b.user,    'diane')
@@ -124,6 +127,7 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
+        self.failUnlessEqual(b.software, b2.software)
         self.failUnlessEqual(b.version, b2.version)
         self.failUnlessEqual(b.date,    b2.date )
         self.failUnlessEqual(b.user,    b2.user)
@@ -141,6 +145,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.171')
         self.failUnlessEqual(g.date, datetime(2009,2,22,21,15,59))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
@@ -194,6 +199,7 @@ class RunfolderTests(unittest.TestCase):
         g2 = gerald.Gerald(xml=xml)
 
         # do it all again after extracting from the xml file
+        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()))
index 1ef2797ee901b24fe5c1c2dc57dd747c2c48e6b1..7483fe2887c1dcaa2f8d9b4f283d2496c8f66231 100644 (file)
@@ -75,6 +75,7 @@ class RunfolderTests(unittest.TestCase):
         Construct a firecrest object
         """
         f = firecrest.firecrest(self.image_analysis_dir)
+        self.failUnlessEqual(f.software, 'Firecrest')
         self.failUnlessEqual(f.version, '1.9.6')
         self.failUnlessEqual(f.start, 1)
         self.failUnlessEqual(f.stop, 152)
@@ -88,6 +89,7 @@ class RunfolderTests(unittest.TestCase):
         xml_str = ElementTree.tostring(xml)
 
         f2 = firecrest.Firecrest(xml=xml)
+        self.failUnlessEqual(f.software, f2.software)
         self.failUnlessEqual(f.version, f2.version)
         self.failUnlessEqual(f.start,   f2.start)
         self.failUnlessEqual(f.stop,    f2.stop)
@@ -98,6 +100,7 @@ class RunfolderTests(unittest.TestCase):
         construct a bustard object
         """
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'Bustard')
         self.failUnlessEqual(b.version, '1.8.28')
         self.failUnlessEqual(b.date,    date(2008,4,12))
         self.failUnlessEqual(b.user,    'diane')
@@ -106,6 +109,7 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
+        self.failUnlessEqual(b.software, b2.software)
         self.failUnlessEqual(b.version, b2.version)
         self.failUnlessEqual(b.date,    b2.date )
         self.failUnlessEqual(b.user,    b2.user)
@@ -122,6 +126,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.171')
         self.failUnlessEqual(g.date, datetime(2009,2,22,21,15,59))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
@@ -180,6 +185,7 @@ class RunfolderTests(unittest.TestCase):
         g2 = gerald.Gerald(xml=xml)
 
         # do it all again after extracting from the xml file
+        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()))
index 75ca37e9ab42e7a10f927c11edd9584b0de44705..137fc4115247cead0f823c183c3a7bf8a0637201 100644 (file)
@@ -75,6 +75,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.171')
         self.failUnlessEqual(g.date, datetime(2009,2,22,21,15,59))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
@@ -129,6 +130,7 @@ class RunfolderTests(unittest.TestCase):
         return
 
         # do it all again after extracting from the xml file
+        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()))
index 5cb282276d65c08d2bb08f94c5a5229e4e3dee7f..83400643acd10af00caf5d6afe7501093631a894 100644 (file)
@@ -68,6 +68,7 @@ class RunfolderTests(unittest.TestCase):
     def test_bustard(self):
         """Construct a bustard object"""
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'RTA')
         self.failUnlessEqual(b.version, '1.8.70.0')
         self.failUnlessEqual(b.date,    None)
         self.failUnlessEqual(b.user,    None)
@@ -75,6 +76,7 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
+        self.failUnlessEqual(b.software, b2.software)
         self.failUnlessEqual(b.version, b2.version)
         self.failUnlessEqual(b.date,    b2.date )
         self.failUnlessEqual(b.user,    b2.user)
@@ -83,6 +85,7 @@ class RunfolderTests(unittest.TestCase):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
+        self.failUnlessEqual(g.software, 'GERALD')
         self.failUnlessEqual(g.version, '1.171')
         self.failUnlessEqual(g.date, datetime(2009,2,22,21,15,59))
         self.failUnlessEqual(len(g.lanes), len(g.lanes.keys()))
@@ -137,6 +140,7 @@ class RunfolderTests(unittest.TestCase):
         return
 
         # do it all again after extracting from the xml file
+        self.failUnlessEqual(g.software, g2.version)
         self.failUnlessEqual(g.version, g2.version)
         self.failUnlessEqual(g.date, g2.date)
         self.failUnlessEqual(len(g.lanes.keys()), len(g2.lanes.keys()))
index 9b7d3b9169b1cb0a66e70f614222a1b8795dfb8e..0f4676102ebe71fb7005b15220c7c0510f5f5ed1 100644 (file)
@@ -72,6 +72,7 @@ class RunfolderTests(unittest.TestCase):
     def test_bustard(self):
         """Construct a bustard object"""
         b = bustard.bustard(self.bustard_dir)
+        self.failUnlessEqual(b.software, 'RTA')
         self.failUnlessEqual(b.version, '1.12.4.2')
         self.failUnlessEqual(b.date,    None)
         self.failUnlessEqual(b.user,    None)
@@ -79,15 +80,17 @@ class RunfolderTests(unittest.TestCase):
 
         xml = b.get_elements()
         b2 = bustard.Bustard(xml=xml)
-        self.failUnlessEqual(b.version, b2.version)
-        self.failUnlessEqual(b.date,    b2.date )
-        self.failUnlessEqual(b.user,    b2.user)
+        self.failUnlessEqual(b.software, b2.software)
+        self.failUnlessEqual(b.version,  b2.version)
+        self.failUnlessEqual(b.date,     b2.date )
+        self.failUnlessEqual(b.user,     b2.user)
 
     def test_gerald(self):
         # need to update gerald and make tests for it
         g = gerald.gerald(self.gerald_dir)
 
-        self.failUnlessEqual(g.version, 'CASAVA-1.8.1')
+        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()))
 
@@ -129,6 +132,7 @@ class RunfolderTests(unittest.TestCase):
         return
 
         # do it all again after extracting from the xml file
+        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()))