if len(container.getchildren()) > LANES_PER_FLOWCELL:
raise RuntimeError('GERALD config.xml file changed')
lanes = [x.tag.split('_')[1] for x in container.getchildren()]
- index = lanes.index(self._lane_id)
+ try:
+ index = lanes.index(self._lane_id)
+ except ValueError, e:
+ return None
element = container[index]
return element.text
def _get_analysis(self):
# those consistently.
for element in analysis:
sample, lane_id = element.tag.split('_')
- self._lanes[lane_id] = Gerald.LaneParameters(self._gerald, lane_id)
+ self._lanes[int(lane_id)] = Gerald.LaneParameters(
+ self._gerald, lane_id)
def __getitem__(self, key):
if self._lane is None:
return time.mktime(self.date.timetuple())
time = property(_get_time, doc='return run time as seconds since epoch')
+ def _get_experiment_root(self):
+ if self.tree is None:
+ return None
+ return self.tree.findtext('ChipWideRunParameters/EXPT_DIR_ROOT')
+
+ def _get_runfolder_name(self):
+ if self.tree is None:
+ return None
+
+ root = self._get_experiment_root()
+ if root is None:
+ root = ''
+ else:
+ root = os.path.join(root,'')
+
+ experiment_dir = self.tree.findtext('ChipWideRunParameters/EXPT_DIR')
+ if experiment_dir is None:
+ return None
+ experiment_dir = experiment_dir.replace(root, '')
+ if len(experiment_dir) == 0:
+ return None
+
+ dirnames = experiment_dir.split(os.path.sep)
+ return dirnames[0]
+ runfolder_name = property(_get_runfolder_name)
+
def _get_version(self):
if self.tree is None:
return None
xml_version = int(tree.attrib.get('version', 0))
if xml_version > Gerald.XML_VERSION:
logging.warn('XML tree is a higher version than this class')
+ self.eland_results = ELAND()
for element in list(tree):
tag = element.tag.lower()
if tag == Gerald.RUN_PARAMETERS.lower():
else:
logging.warn("Unrecognized tag %s" % (element.tag,))
-
def gerald(pathname):
g = Gerald()
- g.pathname = pathname
- path, name = os.path.split(pathname)
+ g.pathname = os.path.expanduser(pathname)
+ path, name = os.path.split(g.pathname)
logging.info("Parsing gerald config.xml")
- config_pathname = os.path.join(pathname, 'config.xml')
+ config_pathname = os.path.join(g.pathname, 'config.xml')
g.tree = ElementTree.parse(config_pathname).getroot()
# parse Summary.htm file
- logging.info("Parsing Summary.htm")
- summary_pathname = os.path.join(pathname, 'Summary.htm')
+ summary_pathname = os.path.join(g.pathname, 'Summary.xml')
+ if os.path.exists(summary_pathname):
+ logging.info("Parsing Summary.xml")
+ else:
+ summary_pathname = os.path.join(g.pathname, 'Summary.htm')
+ logging.info("Parsing Summary.htm")
g.summary = Summary(summary_pathname)
# parse eland files
g.eland_results = eland(g.pathname, g)
# quick test code
import sys
g = gerald(sys.argv[1])
- #ElementTree.dump(g.get_elements())
\ No newline at end of file
+ #ElementTree.dump(g.get_elements())