def autotest_ssmi(fnames, command_line_args=None): ''' Pass through script to take command line arguments, and create calls to all ssmi drivers Args: fnames (list): list of strings specifying the files on disk to process command_line_args (dict) : dictionary of command line arguments 'readername': Explicitly request reader geoips2*.readers.readername.readername Optional: 'sectorfiles': list of YAML sectorfiles 'sectorlist': list of desired sectors found in "sectorfiles" tc<YYYY><BASIN><NUM><NAME> for TCs, ie tc2020sh16gabekile 'comparepath': Full path to directory of comparison images If sectorfiles and sectorlist not included, drivers will look in database Returns: (int) - 0 for successful completion (if comparepath sent, successful ONLY if there are no bad comparisons, missing comparisons, or missing tests). Non-zero: bit error codes WXYZ where W = 1 is for a bad comparison X = 1 is for one or more missing comparison products Y = 1 for on or more missing tests Z = 1 for one or more missing current products ''' output_products = [] comparepaths = command_line_args['comparepaths'] from geoips2.drivers.pmw_tbs import pmw_tbs from geoips2.drivers.template_driver import template_driver for fname in fnames: # If template products were requested command line, then produce them - must explicitly request to avoid # accidentally producing template products operationally... if command_line_args[ 'product_options'] and 'includetemplate' in command_line_args[ 'product_options']: # The template driver includes ALL products, so must specify which reader to use. command_line_args['readername'] = 'ssmi_binary' output_products += template_driver([fname], command_line_args) output_products += pmw_tbs([fname], command_line_args) from os.path import basename LOG.info('The following products were produced from driver %s', basename(__file__)) for output_product in output_products: LOG.info(' WORKFLOWSUCCESS %s', output_product) retval = 0 if comparepaths: from geoips2.test_scripts import compare_outputs retval = compare_outputs(comparepaths[0], output_products) return retval
def autotest_amsr2(fnames, command_line_args=None): ''' Overall template driver. This handles reading the datafiles, determining appropriate sectors based on file time, then calling the appropriate products on each sector. Parameters: fnames (list): list of strings specifying the files on disk to process command_line_args (dict) : dictionary of command line arguments * Optional: 'sectorfiles': list of YAML sectorfiles * 'sectorlist': list of desired sectors found in "sectorfiles" tc<YYYY><BASIN><NUM><NAME> for TCs, ie tc2020sh16gabekile * 'bgfnames': List of filenames for background vis/ir imagery * 'bgreadername': Reader used for background imagery * 'comparepath': Full path to directory of comparison images * If sectorfiles and sectorlist not included, looks in database Returns: int: * 0 for successful completion (if comparepath set, successful ONLY if there are no bad comparisons, missing comparisons, or missing tests). * Non-zero: bit error codes * XYZ where * X = 1 is for a bad comparison * Y = 1 is for a missing comparison * Z = 1 for a missing test ''' output_products = [] LOG.info('Starting AMSR2 Autotest') comparepaths = command_line_args['comparepaths'] LOG.info('Importing xarray') import xarray # If background filenames are specified, preprocess the background vis/ir data if command_line_args['bgfnames']: LOG.info('Pre-processing background data') from geoips2.drivers.visir_driver import visir_driver bg_command_line_args = command_line_args.copy() bg_command_line_args['readername'] = command_line_args['bgreadername'] output_products += visir_driver(command_line_args['bgfnames'], bg_command_line_args) from geoips2.drivers.sfc_winds import sfc_winds from geoips2.drivers.template_driver import template_driver from geoips2.drivers.pmw_tbs import pmw_tbs # Now loop through the AMSR2 filenames. These include 3 different data types! # MBT files for passive microwave processing # OCEAN files for ocean surface winds data # Remote Sensing Systems for ocean surface winds data from an alternative algorithm for fname in fnames: LOG.info('NEXT fname %s in autotest_amsr2.py', fname) xobj = xarray.open_dataset(fname) if 'OCEAN' in xobj.title: LOG.info('NEXT sfc_winds for fname %s in autotest_amsr2.py', fname) # All surface winds products use the same reader, so no need to specify here. # But, the template driver below includes ALL products, so must specify which reader to use. output_products += sfc_winds([fname], command_line_args) command_line_args['readername'] = 'sfc_winds_ncdf' template_files = [fname] elif 'MBT' in xobj.title: LOG.info('NEXT pmw_tbs for fname %s in autotest_amsr2.py', fname) # The pmw_tbs driver includes all PMW products, so must specify which reader to use. command_line_args['readername'] = 'amsr2_ncdf' output_products += pmw_tbs([fname], command_line_args) template_files = [fname] elif hasattr(xobj, 'institution' ) and 'Remote Sensing Systems' in xobj.institution: LOG.info('NEXT sfc_winds for fname %s in autotest_amsr2.py', fname) # All surface winds products use the same reader, so no need to specify here. # But, the template driver below includes ALL products, so must specify which reader to use. output_products += sfc_winds([fname], command_line_args) command_line_args['readername'] = 'sfc_winds_ncdf' template_files = [fname] else: LOG.info('SKIPPING Currently unsupported file type %s', fname) continue # If template products were requested command line, then produce them - must explicitly request to avoid # accidentally producing template products operationally... if command_line_args[ 'product_options'] and 'includetemplate' in command_line_args[ 'product_options']: LOG.info('NEXT template_driver for fname %s in autotest_amsr2.py', fname) # The template driver includes ALL products, so must specify which reader to use. output_products += template_driver(template_files, command_line_args) from os.path import basename LOG.info('The following products were produced from driver %s', basename(__file__)) for output_product in output_products: LOG.info(' WORKFLOWSUCCESS %s', output_product) retval = 0 if comparepaths: from geoips2.test_scripts import compare_outputs retval = compare_outputs(comparepaths[0], output_products) return retval