def __init__(self, data: Path or None, config: Path): PoreLogger.__init__(self, level=logging.INFO, name='DataStorage') self.data = data self.workdir = Path.home() / '.npc' / '.storage_client' self.netflow = NetflowClient(node_config=config, workdir=Path.home() / '.npc' / '.storage_client') self.netflow.configure_storage_nodes(client_entry='storage')
def __init__(self, pipeline_client: PipelineClient): PoreLogger.__init__(self, level=logging.INFO, name='PipelinePollster') self.pipeline_client = pipeline_client # When instantiated, remove the previous registry if present self.result_registry = self.pipeline_client.workdir / 'result.registry' # List of files from last poll self.last_file_poll = [] # If pipeline screen is queried: self.last_screen_open = False
def __init__(self, name: str, collection: str, version: int, author: str, data: Path): PoreLogger.__init__(self, level=logging.INFO, name="Dataset") self.name = name self.collection = collection self.version = version self.data = data self.author = author self.dataset = Path(f"{self.collection}-{self.name}-v{self.version}") self.files = None
def __init__(self, host, user, ssh_key, name, logger_name: str = 'PipelineClient'): PoreLogger.__init__(self, level=logging.INFO, name=logger_name) self.remote = True if host != 'local' else False self.name = name self.host = host self.user = user self.ssh_key = ssh_key self.client = None self.sftp = None self.conn = None self.active_screens = {}
def __init__(self, pathogen_path: Path = None, signal_path: Path = None): PoreLogger.__init__(self, level=logging.INFO, name="AppServer") self.pipelines = {} self.pathogen_path = pathogen_path self.signal_path = signal_path if self.pathogen_path: self.pipelines['pathogen'] = PathogenPipeline() if self.signal_path: self.pipelines['signal'] = SignalPipeline() pass
def __init__(self, path=os.getcwd(), species="Staphylococcus aureus", force=False, verbose=True): PoreLogger.__init__(self, name="NCTC") self.date = time.strftime("%d-%m-%Y-%H-%M") self.path = os.path.abspath(path) self.project = True self.species = species self.species_name = self.species.replace(" ", "_").lower() self.species_path = os.path.join(self.path, self.species_name) self.force = force self.verbose = verbose # Infrastructure self.config_path = os.path.join(self.path, ".nctc") # Analysis with NCTC Programs and Snakemake self.nctc = os.path.dirname(os.path.dirname( os.path.realpath(__file__))) self.abricate = os.path.join(self.nctc, "bin", "abricate", "bin", "abricate") self.env_file = os.path.join(self.nctc, "env", "nctc.json") self.snake_file = os.path.join(self.nctc, "pipe", "nctc.snk") self.config_file = os.path.join(self.nctc, "pipe", "nctc.json") self.config_run_file = None # HTML NCTC3000 self.url = "http://www.sanger.ac.uk/resources/downloads/bacteria/nctc/" self.tables = dict() self.files = dict() self.report_files = dict()
def __init__(self, app_data: dict, db_reports: dict, group_reads: dict): PoreLogger.__init__(self, level=logging.INFO, name="PathogenReport") self.app_data = app_data # report configuration sent by app self.db_reports = db_reports # database report tables self.group_reads = group_reads # total reads by group / sample self.config = dict() self.report_data = None self.template_path = Path(__file__).parent / 'templates' / 'reports' self.sample_id = self.app_data['header']['sample_id'] self.uuid = str(uuid4()) self.uid = self.uuid.split('-')[0]
def __init__(self, node_config: Path, workdir: Path): PoreLogger.__init__(self, level=logging.INFO, name='NanoPathClient') logging.getLogger("paramiko").setLevel(logging.WARNING) self.logger.info( f"{Y}NanoPathClient{RE}" ) # Read the netflow configurations self.config = self.read_config(file=node_config) # Working directory structure self.workdir = workdir self.nexus = self.workdir / 'nexus' self.nexus.mkdir(parents=True, exist_ok=True) # Store the clients for later use: self.clients = {}
def remove_human(fq, fq1, fq2, ref, out, mapq, preset, human_out, threads): """ Filter a read file (single, paired) by mapping to human reference index """ logger = PoreLogger(level=logging.INFO, name="HostRemoval").logger remove_by_alignment(fq=fq, ref=ref, out=out, mapq=mapq, preset=preset, human_out=human_out, threads=threads, logger=logger)
def rename_barcodes(directory, file, panel, outdir, extension, megalodon): """ Rename barcode read files after basecalling""" pl = PoreLogger(level=logging.INFO, name="Utils").logger pl.info(f'Creating output directory: {outdir}') outdir.mkdir(parents=True, exist_ok=True) pl.info(f'Reading panel data from file: {file}') df = pandas.read_csv(file, sep='\t', header=0) if panel: pl.info(f'Subsetting panel data to: {panel}') df = df.loc[df['panel'].isin([str(panel)]), :] if megalodon: df['megalodon'] = df[['panel', 'barcode']].apply(lambda x: '_'.join(x), axis=1) for d in directory.glob("*"): if d.name in df.megalodon.tolist(): row = df.loc[df.megalodon == d.name, :] name = row.name.values[0] pl.info(f"Copy directory {d.name} to {outdir / name}") shutil.copytree(str(d), str(outdir / name)) else: for p in directory.rglob("*"): if p.stem in df.barcode.tolist(): row = df.loc[df.barcode == p.stem, :] name = row.name.values[0] + f"{extension}" pl.info(f'Rename and copy {p.name} to: {outdir / name}') shutil.copy(str(p), str(outdir / name))