Source code for swamp.parsers.phenixparser
from swamp.parsers.parser import Parser
[docs]class PhenixParser(Parser):
"""A phenix.get_cc stdout parser
:param str stdout: the stdout to be parsed (default None)
:param `~swamp.logger.swamplogger.SwampLogger` logger: logging interface for the parser (default None)
:ivar overall_CC: the overall correlation coefficient parsed from :py:attr:`~swamp.parsers.parser.stdout`
:ivar local_CC: the local correlation coefficient parsed from :py:attr:`~swamp.parsers.parser.stdout`
:example:
>>> from swamp.parsers import PhenixParser
>>> my_parser = PhenixParser('<stdout>')
>>> my_parser.parse()
"""
def __init__(self, stdout, logger=None):
self.overall_CC = "NA"
self.local_CC = "NA"
super(PhenixParser, self).__init__(stdout=stdout, fname=None, logger=logger)
@property
def summary(self):
"""A summary of the figures of merit"""
return self.local_CC, self.overall_CC
[docs] def parse(self):
"""Extract the figures of merit from :py:attr:`~swamp.parsers.parser.stdout`"""
for line in self.stdout.split('\n'):
if "overall CC" in line:
self.overall_CC = line.split(":")[1].rstrip().lstrip()
if "local CC" in line:
self.local_CC = line.split(":")[1].rstrip().lstrip()
if self.overall_CC == "NA" or self.local_CC == "NA":
self.logger.error("Overall / Local CC cannot be found in phenix.get_cc stdout!")
self.error = True