</Library>
'''
class LibInfoHandler(ContentHandler):
-
def __init__ (self, searchTerm):
self.searchTerm= searchTerm
self.currlibid = ''
elif name == 'Track' and self.searchTerm == self.currlibid:
self.LanesCount += len(attrs.get('Lane',""))
self.ReadsCount += int(attrs.get('Count',""))
- #else:
- # self.Msg += ' | name = '+name+', currlibid = '+ self.currlibid
except:
self.Msg = 'failed parsing xml file'
return
#def endElement(self, name):
# return ..
+class LibInfoHandlerByFlowCell(ContentHandler):
+ def __init__ (self, searchTerm):
+ self.searchTerm = searchTerm
+ self.LanesCount, self.ReadsCount = 0, 0
+ self.Msg = 'OK'
+
+ def startElement(self, name, attrs):
+ try:
+ if name == 'Track' and attrs.get('Flowcell',"") == self.searchTerm:
+ self.LanesCount += len(attrs.get('Lane',""))
+ self.ReadsCount += int(attrs.get('Count',""))
+ except:
+ self.Msg = 'failed parsing xml file'
+ return
+
## TO DO: Change this to read the LibraryInfo.xml only ONCE per ReoprtRequest (do it in the models.py). + Read it directly from the analysis_server
-def getLibReads(libid):
- searchTerm= libid
- parser = make_parser()
- curHandler = LibInfoHandler(searchTerm)
+def getLibReads(search_term,search_by):
+ searchTerm= search_term
+ parser = make_parser()
+
+ if search_by == 'ByLib':
+ curHandler = LibInfoHandler(searchTerm)
+ elif search_by == 'ByFC':
+ curHandler = LibInfoHandlerByFlowCell(searchTerm)
+
parser.setContentHandler(curHandler)
+
folder_loc = '/htsworkflow/htswfrontend/htswfrontend' # DEV
#folder_loc = '/Library/WebServer/gaworkflow/gaworkflow/frontend' # PROD
parser.parse(open(folder_loc+'/htsw_reports/LibInfo/LibraryInfo.xml'))