#!/usr/bin/env python3

import argparse
from lrgasp import handle_prog_errors, prog_error_excepts
from lrgasp import expression_data, model_data, entry_validate
from lrgasp import loggingOps

def parse_args():
    desc = """Validate that an LRGASP expression matrix meets requirements
    and optionally check that it is consistent with a model file.

    Use --logDebug when reporting a problem.
    """
    parser = argparse.ArgumentParser(description=desc)
    loggingOps.addCmdOptions(parser)
    parser.add_argument("--models_gtf",
                        help="optional GTF model file to validate against")
    parser.add_argument("expression_tsv",
                        help="Expression matrix to validate")
    return parser.parse_args()

def main(args):
    loggingOps.setupFromCmd(args)
    try:
        expression = expression_data.load(args.expression_tsv)
        if args.models_gtf is not None:
            models = model_data.load(args.models_gtf)
            entry_validate.validate_expression_and_model(models, expression)
    except prog_error_excepts as ex:
        handle_prog_errors(ex)

main(parse_args())
