Source code for pmotools.scripts.pmo_utils.validate_pmo

#!/usr/bin/env python3
import os
import argparse
import json


from pmotools.pmo_engine.pmo_reader import PMOReader
from pmotools.pmo_engine.pmo_checker import PMOChecker
from pmotools.utils.small_utils import Utils
from pmotools import __version__ as __pmotools_version__


[docs]def get_parser_validate_pmo() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( prog="pmotools-python validate_pmo", description="Validate a PMO file against a JSON Schema", ) parser.add_argument("--pmo", type=str, required=True, help="a pmo file to validate") parser.add_argument( "--jsonschema_version", default=__pmotools_version__, type=str, required=False, help="version of the jsonschema to validate against (default: %(default)s)", ) parser.add_argument( "--jsonschema_file", default=None, type=str, required=False, help="explicit jsonschema file path to validate against (overrides --jsonschema_version)", ) return parser
[docs]def parse_args_validate_pmo(): parser = get_parser_validate_pmo() args = parser.parse_args() # post-parse resolution stays here, NOT in get_parser if args.jsonschema_file is None: args.jsonschema_file = os.path.join( os.path.dirname( os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ), "schemas/", f"portable_microhaplotype_object_v{args.jsonschema_version}.schema.json", ) return args
[docs]def validate_pmo(): args = parse_args_validate_pmo() # read in the PMO pmo = PMOReader.read_in_pmo(args.pmo) # create checker with Utils.smart_open_read_by_ext(args.jsonschema_file) as f: checker = PMOChecker(json.load(f)) # validate checker.validate_pmo_json(pmo)
if __name__ == "__main__": validate_pmo()