"""
Extract information about the Firecrest run
-Firecrest
+Firecrest
class holding the properties we found
-firecrest
+firecrest
Firecrest factory function initalized from a directory name
-fromxml
+fromxml
Firecrest factory function initalized from an xml dump from
the Firecrest object.
"""
from datetime import date
from glob import glob
+import logging
import os
import re
import time
-from htsworkflow.pipelines.runfolder import \
+from htsworkflow.pipelines import \
ElementTree, \
VERSION_RE, \
EUROPEAN_STRPTIME
-__docformat__ = "restructuredtext en"
+LOGGER = logging.getLogger(__name__)
class Firecrest(object):
+ """Gather information about older firecrest runs
+ """
XML_VERSION=1
# xml tag names
MATRIX = 'matrix'
def __init__(self, xml=None):
+ """Initialize a Firecrest object
+
+ consider using factory :function:firecrest
+
+ :param xml: xml serialzation element to initialze from [optional]
+ """
self.start = None
self.stop = None
self.version = None
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')
def dump(self):
- print "Starting cycle:", self.start
- print "Ending cycle:", self.stop
- print "Firecrest version:", self.version
- print "Run date:", self.date
- print "user:", self.user
+ """Report debugginf information
+ """
+ print("Starting cycle:", self.start)
+ print("Ending cycle:", self.stop)
+ print("Firecrest version:", self.version)
+ print("Run date:", self.date)
+ print("user:", self.user)
def get_elements(self):
+ """Return XML serialization structure.
+ """
attribs = {'version': str(Firecrest.XML_VERSION) }
root = ElementTree.Element(Firecrest.FIRECREST, attrib=attribs)
version = ElementTree.SubElement(root, Firecrest.SOFTWARE_VERSION)
raise ValueError('Expected "Firecrest" SubElements')
xml_version = int(tree.attrib.get('version', 0))
if xml_version > Firecrest.XML_VERSION:
- logging.warn('Firecrest XML tree is a higher version than this class')
+ LOGGER.warn('Firecrest XML tree is a higher version than this class')
for element in list(tree):
if element.tag == Firecrest.SOFTWARE_VERSION:
self.version = element.text
Examine the directory at pathname and initalize a Firecrest object
"""
f = Firecrest()
+ f.pathname = pathname
# parse firecrest directory name
path, name = os.path.split(pathname)
f.user = groups[3]
bustard_pattern = os.path.join(pathname, 'Bustard*')
- # should I parse this deeper than just stashing the
+ # should I parse this deeper than just stashing the
# contents of the matrix file?
matrix_pathname = os.path.join(pathname, 'Matrix', 's_matrix.txt')
if os.path.exists(matrix_pathname):