wf-transcriptomes-v202/bin/workflow_glue/check_valid_modbam.py
2026-05-26 09:52:38 +00:00

37 lines
941 B
Python

#!/usr/bin/env python
"""Check whether the input is a modbam."""
import os
import sys
import pysam
from .util import get_named_logger, wf_parser # noqa: ABS101
def main(args):
"""Run the entry point."""
logger = get_named_logger("check_valid_modbam")
logger.info(f'Checking file: {args.bam}')
# Check the first 10K reads of the input bam for ML/MM fields
valid_reads = 0
fields = ['mm', 'ml']
for i, alignment in enumerate(pysam.AlignmentFile(args.bam)):
n_tags = len([
tag for (tag, val) in alignment.get_tags() if tag.lower() in fields])
if n_tags == 2:
valid_reads += 1
break
if i >= 9999:
break
if valid_reads == 0:
sys.exit(os.EX_DATAERR)
def argparser():
"""Argument parser for entrypoint."""
parser = wf_parser("check_valid_modbam")
parser.add_argument("bam", help="Input bam file")
return parser