Source code for checkQC.parsers.samplesheet_parser


from pathlib import Path

from sample_sheet import SampleSheet

from checkQC.parsers.parser import Parser
from checkQC.exceptions import ConfigurationError, SamplesheetNotFound


[docs]class SamplesheetParser(Parser): """ TODO """ def __init__(self, runfolder, parser_configurations, *args, **kwargs): """ Create a SamplesheetParser instance for the specified runfolder :param runfolder: path to the runfolder to parse :param parser_configurations: dict containing any extra configuration required by the parser under class name key """ super().__init__(*args, **kwargs) self.runfolder = runfolder self.parser_conf = parser_configurations.get(self.__class__.__name__) if not self.parser_conf: raise ConfigurationError("The configuration must contain parser_configurations " "key with subkey SamplesheetParser. E.g: \n" "parser_configurations:\n" "\tSamplesheetParser:\n" "\t\tsamplesheet_name: Samplesheet.csv") self._samplesheet_name = self.parser_conf.get("samplesheet_name") if not self._samplesheet_name: raise ConfigurationError("The configuration must contain the key samplesheet_name, specifying " "what the name of the samplesheet is.") self._samplesheet = Path(self.runfolder, self._samplesheet_name) if not self._samplesheet.exists(): raise SamplesheetNotFound("Could not identify samplesheet at: {}".format(self._samplesheet))
[docs] def run(self): samplesheet_read = SampleSheet(self._samplesheet) self._send_to_subscribers(("samplesheet", samplesheet_read))
def __eq__(self, other): if isinstance(other, self.__class__) and self.runfolder == other.runfolder: return True else: return False def __hash__(self): return hash(self.__class__.__name__ + self.runfolder)