Skip to content
Snippets Groups Projects
quality_control.py 2.58 KiB
#!/usr/bin/env python3
# imported from aeri_armory
from aeri_armory.utils import file_finder, parser_setup
from plotting.quick_vis import create_vis
import glob
from aeri_qc import main
import logging

matplotlib_logger = logging.getLogger('matplotlib')
# set WARNING for Matplotlib
matplotlib_logger.setLevel(logging.WARNING)

logger = logging.getLogger(__name__)


def qc_and_vis(args):
    if args.skip_qc and args.skip_quick_vis:
        logger.warning('Both --skip-qc and --skip-quick-vis were specified. Nothing processed')
    elif args.skip_qc:
        logger.info(f'--skip-qc specified. Searching for QC files')
        for d, files in file_finder.get_files(*args.inputs, extensions=['QC.nc'], exclude=args.exclude_days, file_format='%Y%m%d'):
            for f in files:
                try:
                    create_vis(f, output=args.output)
                except Exception as e:
                    logger.exception(f'Skipping {f}:')
    else:
        for d, files in file_finder.get_files(*args.inputs, extensions=['SUM', 'CXS'], exclude=args.exclude_days):
            try:
                sum_file = None
                b1cxs_file = None
                b2cxs_file = None
                f1cxs_file = None
                f2cxs_file = None
                for f in files:
                    if f.endswith('.SUM'):
                        sum_file = f
                    if f.endswith('B1.CXS'):
                        b1cxs_file = f
                    if f.endswith('B2.CXS'):
                        b2cxs_file = f
                    if f.endswith('F1.CXS'):
                        f1cxs_file = f
                    if f.endswith('F2.CXS'):
                        f2cxs_file = f
                if files:
                    main.update_all(d, sum_file, b1cxs_file, b2cxs_file, f1cxs_file, f2cxs_file, args.output, force=args.force, hint=args.hint, skip_quick_vis=args.skip_quick_vis)
            except Exception as e:
                logger.exception(f'Skipping {d}:')

if __name__ == '__main__':
    parser = parser_setup.get_parser()
    parser.add_argument('--hint', help='inspect this file and others in similar time period more closely')
    parser.add_argument('-f', '--force', action='store_true', help='Overwrite any existing QC files in output directory')
    parser.add_argument('--skip-quick-vis', action='store_true', help='Skip the generation of quick vis images')
    parser.add_argument('--skip-qc', action='store_true', help='Skip the generation of quality control files. Changes input to take a directory containing QC netcdf output')

    args = parser.parse_args()

    qc_and_vis(args)