def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" file_content = { '/attr/PlatformShortName': 'GCOM-W1', '/attr/SensorShortName': 'AMSR2', '/attr/StartOrbitNumber': '22210', '/attr/StopOrbitNumber': '22210', } k = 'Geophysical Data' file_content[k] = DEFAULT_FILE_DATA[:, :] file_content[k + '/shape'] = (DEFAULT_FILE_SHAPE[0], DEFAULT_FILE_SHAPE[1]) file_content[k + '/attr/UNIT'] = 'K' file_content[k + '/attr/SCALE FACTOR'] = 1 k = 'Latitude of Observation Point' file_content[k] = DEFAULT_FILE_DATA[:, :] file_content[k + '/shape'] = (DEFAULT_FILE_SHAPE[0], DEFAULT_FILE_SHAPE[1]) file_content[k + '/attr/UNIT'] = 'deg' file_content[k + '/attr/SCALE FACTOR'] = 1 k = 'Longitude of Observation Point' file_content[k] = DEFAULT_FILE_DATA[:, :] file_content[k + '/shape'] = (DEFAULT_FILE_SHAPE[0], DEFAULT_FILE_SHAPE[1]) file_content[k + '/attr/UNIT'] = 'deg' file_content[k + '/attr/SCALE FACTOR'] = 1 convert_file_content_to_data_array(file_content, dims=('dim_0', 'dim_1')) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content""" dt = filename_info.get('start_time', datetime(2016, 1, 1, 12, 0, 0)) sat, inst = { 'VIIRS_NPP': ('NPP', 'VIIRS'), }[filename_info['sensor_id']] file_content = { '/attr/platform': sat, '/attr/sensor': inst, '/attr/spatial_resolution': '742 m at nadir', '/attr/time_coverage_start': dt.strftime('%Y%m%dT%H%M%SZ'), '/attr/time_coverage_end': (dt + timedelta(minutes=6)).strftime('%Y%m%dT%H%M%SZ'), } file_content['lat'] = DEFAULT_LAT_DATA file_content['lat/attr/comment'] = 'Latitude of retrievals' file_content['lat/attr/long_name'] = 'latitude' file_content['lat/attr/standard_name'] = 'latitude' file_content['lat/attr/units'] = 'degrees_north' file_content['lat/attr/valid_min'] = -90. file_content['lat/attr/valid_max'] = 90. file_content['lat/shape'] = DEFAULT_FILE_SHAPE file_content['lon'] = DEFAULT_LON_DATA file_content['lon/attr/comment'] = 'Longitude of retrievals' file_content['lon/attr/long_name'] = 'longitude' file_content['lon/attr/standard_name'] = 'longitude' file_content['lon/attr/units'] = 'degrees_east' file_content['lon/attr/valid_min'] = -180. file_content['lon/attr/valid_max'] = 180. file_content['lon/shape'] = DEFAULT_FILE_SHAPE for k in [ 'sea_surface_temperature', 'satellite_zenith_angle', 'sea_ice_fraction', 'wind_speed' ]: file_content[k] = DEFAULT_FILE_DATA[None, ...] file_content[k + '/attr/scale_factor'] = 1.1 file_content[k + '/attr/add_offset'] = 0.1 file_content[k + '/attr/units'] = 'some_units' file_content[k + '/attr/comment'] = 'comment' file_content[k + '/attr/standard_name'] = 'standard_name' file_content[k + '/attr/long_name'] = 'long_name' file_content[k + '/attr/valid_min'] = 0 file_content[k + '/attr/valid_max'] = 65534 file_content[k + '/attr/_FillValue'] = 65534 file_content[k + '/shape'] = (1, DEFAULT_FILE_SHAPE[0], DEFAULT_FILE_SHAPE[1]) file_content['l2p_flags'] = np.zeros( (1, DEFAULT_FILE_SHAPE[0], DEFAULT_FILE_SHAPE[1]), dtype=np.uint16) convert_file_content_to_data_array(file_content) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content""" file_content = {} if 'SO2NRT' in filename: k = 'HDFEOS/SWATHS/OMPS Column Amount SO2/Data Fields/ColumnAmountSO2_TRM' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/ScaleFactor'] = 1.1 file_content[k + '/attr/Offset'] = 0.1 file_content[k + '/attr/MissingValue'] = -1 file_content[k + '/attr/Title'] = 'Vertical Column Amount SO2 (TRM)' file_content[k + '/attr/Units'] = 'D.U.' file_content[k + '/attr/ValidRange'] = (-10, 2000) k = 'HDFEOS/SWATHS/OMPS Column Amount SO2/Geolocation Fields/Longitude' file_content[k] = DEFAULT_LON_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/ScaleFactor'] = 1.1 file_content[k + '/attr/Offset'] = 0.1 file_content[k + '/attr/Units'] = 'deg' file_content[k + '/attr/MissingValue'] = -1 file_content[k + '/attr/Title'] = 'Geodetic Longitude' file_content[k + '/attr/ValidRange'] = (-180, 180) k = 'HDFEOS/SWATHS/OMPS Column Amount SO2/Geolocation Fields/Latitude' file_content[k] = DEFAULT_LAT_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/ScaleFactor'] = 1.1 file_content[k + '/attr/Offset'] = 0.1 file_content[k + '/attr/Units'] = 'deg' file_content[k + '/attr/MissingValue'] = -1 file_content[k + '/attr/Title'] = 'Geodetic Latitude' file_content[k + '/attr/ValidRange'] = (-90, 90) else: for k in ['Reflectivity331', 'UVAerosolIndex']: k = 'SCIENCE_DATA/' + k file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/Units'] = 'Unitless' if k == 'UVAerosolIndex': file_content[k + '/attr/ValidRange'] = (-30, 30) file_content[k + '/attr/Title'] = 'UV Aerosol Index' else: file_content[k + '/attr/ValidRange'] = (-0.15, 1.15) file_content[k + '/attr/Title'] = 'Effective Surface Reflectivity at 331 nm' file_content[k + '/attr/_FillValue'] = -1. file_content['GEOLOCATION_DATA/Longitude'] = DEFAULT_LON_DATA file_content['GEOLOCATION_DATA/Longitude/shape'] = DEFAULT_FILE_SHAPE file_content['GEOLOCATION_DATA/Longitude/attr/ValidRange'] = (-180, 180) file_content['GEOLOCATION_DATA/Longitude/attr/_FillValue'] = -999. file_content['GEOLOCATION_DATA/Longitude/attr/Title'] = 'Geodetic Longitude' file_content['GEOLOCATION_DATA/Longitude/attr/Units'] = 'deg' file_content['GEOLOCATION_DATA/Latitude'] = DEFAULT_LAT_DATA file_content['GEOLOCATION_DATA/Latitude/shape'] = DEFAULT_FILE_SHAPE file_content['GEOLOCATION_DATA/Latitude/attr/ValidRange'] = (-90, 90) file_content['GEOLOCATION_DATA/Latitude/attr/_FillValue'] = -999. file_content['GEOLOCATION_DATA/Latitude/attr/Title'] = 'Geodetic Latitude' file_content['GEOLOCATION_DATA/Latitude/attr/Units'] = 'deg' convert_file_content_to_data_array(file_content) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" file_content = { '/attr/PlatformShortName': 'GCOM-W1', '/attr/SensorShortName': 'AMSR2', '/attr/StartOrbitNumber': '22210', '/attr/StopOrbitNumber': '22210', } for bt_chan in [ '(10.7GHz,H)', '(10.7GHz,V)', '(18.7GHz,H)', '(18.7GHz,V)', '(23.8GHz,H)', '(23.8GHz,V)', '(36.5GHz,H)', '(36.5GHz,V)', '(6.9GHz,H)', '(6.9GHz,V)', '(7.3GHz,H)', '(7.3GHz,V)', '(89.0GHz-A,H)', '(89.0GHz-A,V)', '(89.0GHz-B,H)', '(89.0GHz-B,V)', ]: k = 'Brightness Temperature {}'.format(bt_chan) file_content[k] = DEFAULT_FILE_DATA[:, ::2] file_content[k + '/shape'] = (DEFAULT_FILE_SHAPE[0], DEFAULT_FILE_SHAPE[1] // 2) file_content[k + '/attr/UNIT'] = 'K' file_content[k + '/attr/SCALE FACTOR'] = 0.01 for bt_chan in [ '(89.0GHz-A,H)', '(89.0GHz-A,V)', '(89.0GHz-B,H)', '(89.0GHz-B,V)', ]: k = 'Brightness Temperature {}'.format(bt_chan) file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/UNIT'] = 'K' file_content[k + '/attr/SCALE FACTOR'] = 0.01 for nav_chan in ['89A', '89B']: lon_k = 'Longitude of Observation Point for ' + nav_chan lat_k = 'Latitude of Observation Point for ' + nav_chan file_content[lon_k] = DEFAULT_LON_DATA file_content[lon_k + '/shape'] = DEFAULT_FILE_SHAPE file_content[lon_k + '/attr/SCALE FACTOR'] = 1 file_content[lon_k + '/attr/UNIT'] = 'deg' file_content[lat_k] = DEFAULT_LAT_DATA file_content[lat_k + '/shape'] = DEFAULT_FILE_SHAPE file_content[lat_k + '/attr/SCALE FACTOR'] = 1 file_content[lat_k + '/attr/UNIT'] = 'deg' convert_file_content_to_data_array(file_content) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" dt = filename_info.get('start_time', datetime(2016, 1, 1, 12, 0, 0)) file_type = filename[:5].lower() # num_lines = { # 'vl1bi': 3248 * 2, # 'vl1bm': 3248, # 'vl1bd': 3248, # }[file_type] # num_pixels = { # 'vl1bi': 6400, # 'vl1bm': 3200, # 'vl1bd': 4064, # }[file_type] # num_scans = 203 # num_luts = 65536 num_lines = DEFAULT_FILE_SHAPE[0] num_pixels = DEFAULT_FILE_SHAPE[1] num_scans = 5 num_luts = DEFAULT_FILE_SHAPE[0] * DEFAULT_FILE_SHAPE[1] file_content = { '/dimension/number_of_scans': num_scans, '/dimension/number_of_lines': num_lines, '/dimension/number_of_pixels': num_pixels, '/dimension/number_of_LUT_values': num_luts, '/attr/time_coverage_start': dt.strftime('%Y-%m-%dT%H:%M:%S.000Z'), '/attr/time_coverage_end': (dt + timedelta(minutes=6)).strftime('%Y-%m-%dT%H:%M:%S.000Z'), '/attr/orbit_number': 26384, '/attr/instrument': 'viirs', '/attr/platform': 'Suomi-NPP', } self._fill_contents_with_default_data(file_content, file_type) self._set_dataset_specific_metadata(file_content) convert_file_content_to_data_array(file_content) return file_content
def get_test_content(self, filename, filename_info, filename_type): """Mimic reader input file content""" file_content = {} file_content['/attr/data_id'] = "AFIMG" file_content['satellite_name'] = "npp" file_content['sensor'] = 'VIIRS' file_content['FP_latitude'] = DEFAULT_LATLON_FILE_DATA file_content['FP_longitude'] = DEFAULT_LATLON_FILE_DATA file_content['FP_power'] = DEFAULT_POWER_FILE_DATA file_content['FP_T4'] = DEFAULT_M13_FILE_DATA file_content['FP_confidence'] = DEFAULT_DETECTION_FILE_DATA attrs = ('FP_latitude', 'FP_longitude', 'FP_T13', 'FP_confidence') convert_file_content_to_data_array( file_content, attrs=attrs, dims=('z', 'fakeDim0', 'fakeDim1')) return file_content
def get_test_content(self, filename, filename_info, filename_type): """Mimic reader input file content.""" file_content = {} file_content['/attr/data_id'] = "AFMOD" file_content['satellite_name'] = "npp" file_content['sensor'] = 'VIIRS' file_content['Fire Pixels/FP_latitude'] = DEFAULT_LATLON_FILE_DATA file_content['Fire Pixels/FP_longitude'] = DEFAULT_LATLON_FILE_DATA file_content['Fire Pixels/FP_power'] = DEFAULT_POWER_FILE_DATA file_content['Fire Pixels/FP_T13'] = DEFAULT_M13_FILE_DATA file_content['Fire Pixels/FP_T13/attr/units'] = 'kelvins' file_content['Fire Pixels/FP_confidence'] = DEFAULT_DETECTION_FILE_DATA file_content['Fire Pixels/attr/units'] = 'none' file_content['Fire Pixels/shape'] = DEFAULT_FILE_SHAPE attrs = ('FP_latitude', 'FP_longitude', 'FP_T13', 'FP_confidence') convert_file_content_to_data_array(file_content, attrs=attrs, dims=('z', 'fakeDim0', 'fakeDim1')) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" file_content = {} attrs = [] if 'SO2NRT' in filename: k = 'HDFEOS/SWATHS/OMPS Column Amount SO2/Data Fields/ColumnAmountSO2_TRM' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/ScaleFactor'] = 1.1 file_content[k + '/attr/Offset'] = 0.1 file_content[k + '/attr/MissingValue'] = -1 file_content[k + '/attr/Title'] = 'Vertical Column Amount SO2 (TRM)' file_content[k + '/attr/Units'] = 'D.U.' file_content[k + '/attr/ValidRange'] = (-10, 2000) k = 'HDFEOS/SWATHS/OMPS Column Amount SO2/Geolocation Fields/Longitude' file_content[k] = DEFAULT_LON_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/ScaleFactor'] = 1.1 file_content[k + '/attr/Offset'] = 0.1 file_content[k + '/attr/Units'] = 'deg' file_content[k + '/attr/MissingValue'] = -1 file_content[k + '/attr/Title'] = 'Geodetic Longitude' file_content[k + '/attr/ValidRange'] = (-180, 180) k = 'HDFEOS/SWATHS/OMPS Column Amount SO2/Geolocation Fields/Latitude' file_content[k] = DEFAULT_LAT_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/ScaleFactor'] = 1.1 file_content[k + '/attr/Offset'] = 0.1 file_content[k + '/attr/Units'] = 'deg' file_content[k + '/attr/MissingValue'] = -1 file_content[k + '/attr/Title'] = 'Geodetic Latitude' file_content[k + '/attr/ValidRange'] = (-90, 90) elif 'NMSO2' in filename: file_content['GEOLOCATION_DATA/Longitude'] = DEFAULT_LON_DATA file_content[ 'GEOLOCATION_DATA/Longitude/shape'] = DEFAULT_FILE_SHAPE file_content['GEOLOCATION_DATA/Longitude/attr/valid_max'] = 180 file_content['GEOLOCATION_DATA/Longitude/attr/valid_min'] = -180 file_content[ 'GEOLOCATION_DATA/Longitude/attr/_FillValue'] = -1.26765e+30 file_content[ 'GEOLOCATION_DATA/Longitude/attr/long_name'] = 'Longitude' file_content[ 'GEOLOCATION_DATA/Longitude/attr/standard_name'] = 'longitude' file_content[ 'GEOLOCATION_DATA/Longitude/attr/units'] = 'degrees_east' file_content['GEOLOCATION_DATA/Latitude'] = DEFAULT_LAT_DATA file_content[ 'GEOLOCATION_DATA/Latitude/shape'] = DEFAULT_FILE_SHAPE file_content['GEOLOCATION_DATA/Latitude/attr/valid_max'] = 90 file_content['GEOLOCATION_DATA/Latitude/attr/valid_min'] = -90 file_content[ 'GEOLOCATION_DATA/Latitude/attr/_FillValue'] = -1.26765e+30 file_content[ 'GEOLOCATION_DATA/Latitude/attr/long_name'] = 'Latitude' file_content[ 'GEOLOCATION_DATA/Latitude/attr/standard_name'] = 'latitude' file_content[ 'GEOLOCATION_DATA/Latitude/attr/units'] = 'degress_north' k = 'SCIENCE_DATA/ColumnAmountSO2_TRM' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/_FillValue'] = -1.26765e+30 file_content[k + '/attr/long_name'] = 'Column Amount SO2 (TRM)' file_content[k + '/attr/units'] = 'DU' file_content[k + '/attr/valid_max'] = 2000 file_content[k + '/attr/valid_min'] = -10 k = 'SCIENCE_DATA/ColumnAmountSO2_STL' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/_FillValue'] = -1.26765e+30 file_content[k + '/attr/long_name'] = 'Column Amount SO2 (STL)' file_content[k + '/attr/units'] = 'DU' k = 'SCIENCE_DATA/ColumnAmountSO2_TRL' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/_FillValue'] = -1.26765e+30 file_content[k + '/attr/long_name'] = 'Column Amount SO2 (TRL)' file_content[k + '/attr/units'] = 'DU' file_content[k + '/attr/valid_max'] = 2000 file_content[k + '/attr/valid_min'] = -10 file_content[k + '/attr/DIMENSION_LIST'] = [10, 10] attrs = [ '_FillValue', 'long_name', 'units', 'valid_max', 'valid_min', 'DIMENSION_LIST' ] k = 'SCIENCE_DATA/ColumnAmountSO2_TRU' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/long_name'] = 'Column Amount SO2 (TRU)' file_content[k + '/attr/units'] = 'DU' file_content[k + '/attr/valid_max'] = 2000 file_content[k + '/attr/valid_min'] = -10 # Dataset with out unit k = 'SCIENCE_DATA/ColumnAmountSO2_PBL' file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/_FillValue'] = -1.26765e+30 file_content[k + '/attr/long_name'] = 'Column Amount SO2 (PBL)' file_content[k + '/attr/valid_max'] = 2000 file_content[k + '/attr/valid_min'] = -10 else: for k in ['Reflectivity331', 'UVAerosolIndex']: k = 'SCIENCE_DATA/' + k file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/Units'] = 'Unitless' if k == 'UVAerosolIndex': file_content[k + '/attr/ValidRange'] = (-30, 30) file_content[k + '/attr/Title'] = 'UV Aerosol Index' else: file_content[k + '/attr/ValidRange'] = (-0.15, 1.15) file_content[ k + '/attr/Title'] = 'Effective Surface Reflectivity at 331 nm' file_content[k + '/attr/_FillValue'] = -1. file_content['GEOLOCATION_DATA/Longitude'] = DEFAULT_LON_DATA file_content[ 'GEOLOCATION_DATA/Longitude/shape'] = DEFAULT_FILE_SHAPE file_content['GEOLOCATION_DATA/Longitude/attr/ValidRange'] = (-180, 180) file_content['GEOLOCATION_DATA/Longitude/attr/_FillValue'] = -999. file_content[ 'GEOLOCATION_DATA/Longitude/attr/Title'] = 'Geodetic Longitude' file_content['GEOLOCATION_DATA/Longitude/attr/Units'] = 'deg' file_content['GEOLOCATION_DATA/Latitude'] = DEFAULT_LAT_DATA file_content[ 'GEOLOCATION_DATA/Latitude/shape'] = DEFAULT_FILE_SHAPE file_content['GEOLOCATION_DATA/Latitude/attr/ValidRange'] = (-90, 90) file_content['GEOLOCATION_DATA/Latitude/attr/_FillValue'] = -999. file_content[ 'GEOLOCATION_DATA/Latitude/attr/Title'] = 'Geodetic Latitude' file_content['GEOLOCATION_DATA/Latitude/attr/Units'] = 'deg' convert_file_content_to_data_array(file_content, attrs) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" dt = filename_info.get('start_time', datetime(2016, 1, 1, 12, 0, 0)) file_type = filename[:5].lower() # num_lines = { # 'vl1bi': 3248 * 2, # 'vl1bm': 3248, # 'vl1bd': 3248, # }[file_type] # num_pixels = { # 'vl1bi': 6400, # 'vl1bm': 3200, # 'vl1bd': 4064, # }[file_type] # num_scans = 203 # num_luts = 65536 num_lines = DEFAULT_FILE_SHAPE[0] num_pixels = DEFAULT_FILE_SHAPE[1] num_scans = 5 num_luts = DEFAULT_FILE_SHAPE[0] * DEFAULT_FILE_SHAPE[1] file_content = { '/dimension/number_of_scans': num_scans, '/dimension/number_of_lines': num_lines, '/dimension/number_of_pixels': num_pixels, '/dimension/number_of_LUT_values': num_luts, '/attr/time_coverage_start': dt.strftime('%Y-%m-%dT%H:%M:%S.000Z'), '/attr/time_coverage_end': (dt + timedelta(minutes=6)).strftime('%Y-%m-%dT%H:%M:%S.000Z'), '/attr/orbit_number': 26384, '/attr/instrument': 'viirs', '/attr/platform': 'Suomi-NPP', } if file_type.startswith('vgeo'): file_content['/attr/OrbitNumber'] = file_content.pop( '/attr/orbit_number') file_content['geolocation_data/latitude'] = DEFAULT_LAT_DATA file_content['geolocation_data/longitude'] = DEFAULT_LON_DATA elif file_type == 'vl1bm': file_content['observation_data/M01'] = DEFAULT_FILE_DATA file_content['observation_data/M02'] = DEFAULT_FILE_DATA file_content['observation_data/M03'] = DEFAULT_FILE_DATA file_content['observation_data/M04'] = DEFAULT_FILE_DATA file_content['observation_data/M05'] = DEFAULT_FILE_DATA file_content['observation_data/M06'] = DEFAULT_FILE_DATA file_content['observation_data/M07'] = DEFAULT_FILE_DATA file_content['observation_data/M08'] = DEFAULT_FILE_DATA file_content['observation_data/M09'] = DEFAULT_FILE_DATA file_content['observation_data/M10'] = DEFAULT_FILE_DATA file_content['observation_data/M11'] = DEFAULT_FILE_DATA file_content['observation_data/M12'] = DEFAULT_FILE_DATA file_content['observation_data/M13'] = DEFAULT_FILE_DATA file_content['observation_data/M14'] = DEFAULT_FILE_DATA file_content['observation_data/M15'] = DEFAULT_FILE_DATA file_content['observation_data/M16'] = DEFAULT_FILE_DATA elif file_type == 'vl1bi': file_content['observation_data/I01'] = DEFAULT_FILE_DATA file_content['observation_data/I02'] = DEFAULT_FILE_DATA file_content['observation_data/I03'] = DEFAULT_FILE_DATA file_content['observation_data/I04'] = DEFAULT_FILE_DATA file_content['observation_data/I05'] = DEFAULT_FILE_DATA elif file_type == 'vl1bd': file_content[ 'observation_data/DNB_observations'] = DEFAULT_FILE_DATA file_content[ 'observation_data/DNB_observations/attr/units'] = 'Watts/cm^2/steradian' for k in list(file_content.keys()): if not k.startswith('observation_data') and not k.startswith( 'geolocation_data'): continue file_content[k + '/shape'] = DEFAULT_FILE_SHAPE if k[-3:] in ['M12', 'M13', 'M14', 'M15', 'M16', 'I04', 'I05']: file_content[ k + '_brightness_temperature_lut'] = DEFAULT_FILE_DATA.ravel() file_content[ k + '_brightness_temperature_lut/attr/units'] = 'Kelvin' file_content[k + '_brightness_temperature_lut/attr/valid_min'] = 0 file_content[ k + '_brightness_temperature_lut/attr/valid_max'] = 65534 file_content[ k + '_brightness_temperature_lut/attr/_FillValue'] = 65535 file_content[ k + '/attr/units'] = 'Watts/meter^2/steradian/micrometer' elif k[-3:] in [ 'M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'I01', 'I02', 'I03' ]: file_content[ k + '/attr/radiance_units'] = 'Watts/meter^2/steradian/micrometer' file_content[k + '/attr/radiance_scale_factor'] = 1.1 file_content[k + '/attr/radiance_add_offset'] = 0.1 elif k.endswith('longitude'): file_content[k + '/attr/units'] = 'degrees_east' elif k.endswith('latitude'): file_content[k + '/attr/units'] = 'degrees_north' file_content[k + '/attr/valid_min'] = 0 file_content[k + '/attr/valid_max'] = 65534 file_content[k + '/attr/_FillValue'] = 65535 file_content[k + '/attr/scale_factor'] = 1.1 file_content[k + '/attr/add_offset'] = 0.1 convert_file_content_to_data_array(file_content) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" file_content = { '/attr/time_coverage_start': "2020-10-20T12:00:00.5Z", '/attr/time_coverage_end': "2020-10-20T12:00:36Z", '/attr/start_orbit_number': 1, '/attr/end_orbit_number': 2, '/attr/platform_name': 'NPP', '/attr/instrument_name': 'CrIS, ATMS, VIIRS', } for k, units, standard_name in [ ('Solar_Zenith', 'degrees', 'solar_zenith_angle'), ('Topography', 'meters', ''), ('Land_Fraction', '1', ''), ('Surface_Pressure', 'mb', ''), ('Skin_Temperature', 'Kelvin', 'surface_temperature'), ]: file_content[k] = DEFAULT_FILE_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/units'] = units file_content[k + '/attr/valid_range'] = (0., 120.) file_content[k + '/attr/_FillValue'] = -9999. if standard_name: file_content[k + '/attr/standard_name'] = standard_name for k, units, standard_name in [ ('Temperature', 'Kelvin', 'air_temperature'), ('Effective_Pressure', 'mb', ''), ('H2O', '1', ''), ('H2O_MR', 'g/g', ''), ('O3', '1', ''), ('O3_MR', '1', ''), ('Liquid_H2O', '1', ''), ('Liquid_H2O_MR', 'g/g', 'cloud_liquid_water_mixing_ratio'), ('CO', '1', ''), ('CO_MR', '1', ''), ('CH4', '1', ''), ('CH4_MR', '1', ''), ('CO2', '1', ''), ('HNO3', '1', ''), ('HNO3_MR', '1', ''), ('N2O', '1', ''), ('N2O_MR', '1', ''), ('SO2', '1', ''), ('SO2_MR', '1', ''), ]: file_content[k] = DEFAULT_PRES_FILE_DATA file_content[k + '/shape'] = DEFAULT_PRES_FILE_SHAPE file_content[k + '/attr/units'] = units file_content[k + '/attr/valid_range'] = (0., 120.) file_content[k + '/attr/_FillValue'] = -9999. if standard_name: file_content[k + '/attr/standard_name'] = standard_name k = 'Pressure' file_content[k] = ALL_PRESSURE_LEVELS file_content[k + '/shape'] = DEFAULT_PRES_FILE_SHAPE file_content[k + '/attr/units'] = 'mb' file_content[k + '/attr/valid_range'] = (0., 2000.) file_content[k + '/attr/_FillValue'] = -9999. k = 'Quality_Flag' file_content[k] = DEFAULT_FILE_DATA.astype(np.int32) file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/valid_range'] = (0, 31) file_content[k + '/attr/_FillValue'] = -9999. k = 'Longitude' file_content[k] = DEFAULT_LON_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/units'] = 'degrees_east' file_content[k + '/attr/valid_range'] = (-180., 180.) file_content[k + '/attr/standard_name'] = 'longitude' file_content[k + '/attr/_FillValue'] = -9999. k = 'Latitude' file_content[k] = DEFAULT_LAT_DATA file_content[k + '/shape'] = DEFAULT_FILE_SHAPE file_content[k + '/attr/units'] = 'degrees_north' file_content[k + '/attr/valid_range'] = (-90., 90.) file_content[k + '/attr/standard_name'] = 'latitude' file_content[k + '/attr/_FillValue'] = -9999. attrs = ('_FillValue', 'flag_meanings', 'flag_values', 'units') cris_fors_dim_name = 'Number_of_CrIS_FORs' pressure_levels_dim_name = 'Number_of_P_Levels' if ('_v1' in filename): cris_fors_dim_name = 'number_of_FORs' pressure_levels_dim_name = 'number_of_p_levels' convert_file_content_to_data_array(file_content, attrs=attrs, dims=('z', cris_fors_dim_name, pressure_levels_dim_name)) return file_content
def get_test_content(self, filename, filename_info, filetype_info): """Mimic reader input file content.""" file_content = { '/attr/Platform_Name': filename_info['platform_shortname'], '/attr/Element_Resolution': 2., '/attr/Line_Resolution': 2., '/attr/Subsatellite_Longitude': -70.2 if 'GOES' in filename_info['platform_shortname'] else 140.65, 'pixel_longitude': DEFAULT_LON_DATA, 'pixel_longitude/attr/scale_factor': 1., 'pixel_longitude/attr/add_offset': 0., 'pixel_longitude/shape': DEFAULT_FILE_SHAPE, 'pixel_longitude/attr/_FillValue': np.nan, 'pixel_latitude': DEFAULT_LAT_DATA, 'pixel_latitude/attr/scale_factor': 1., 'pixel_latitude/attr/add_offset': 0., 'pixel_latitude/shape': DEFAULT_FILE_SHAPE, 'pixel_latitude/attr/_FillValue': np.nan, } sensor = { 'HIMAWARI-8': 'himawari8', 'GOES-17': 'goesr', 'GOES-16': 'goesr', 'GOES-13': 'goes', 'GOES-14': 'goes', 'GOES-15': 'goes', }[filename_info['platform_shortname']] file_content['/attr/Sensor_Name'] = sensor if filename_info['platform_shortname'] == 'HIMAWARI-8': file_content['pixel_longitude'] = DEFAULT_LON_DATA + 130. file_content['variable1'] = DEFAULT_FILE_DATA.astype(np.float32) file_content['variable1/attr/_FillValue'] = -1 file_content['variable1/attr/scale_factor'] = 1. file_content['variable1/attr/add_offset'] = 0. file_content['variable1/attr/units'] = '1' file_content['variable1/shape'] = DEFAULT_FILE_SHAPE # data with fill values file_content['variable2'] = np.ma.masked_array( DEFAULT_FILE_DATA.astype(np.float32), mask=np.zeros_like(DEFAULT_FILE_DATA)) file_content['variable2'].mask[::5, ::5] = True file_content['variable2/attr/_FillValue'] = -1 file_content['variable2/attr/scale_factor'] = 1. file_content['variable2/attr/add_offset'] = 0. file_content['variable2/attr/units'] = '1' file_content['variable2/shape'] = DEFAULT_FILE_SHAPE # category file_content['variable3'] = DEFAULT_FILE_DATA.astype(np.byte) file_content['variable3/attr/_FillValue'] = -128 file_content[ 'variable3/attr/flag_meanings'] = "clear water supercooled mixed ice unknown" file_content['variable3/attr/flag_values'] = [0, 1, 2, 3, 4, 5] file_content['variable3/attr/units'] = '1' file_content['variable3/shape'] = DEFAULT_FILE_SHAPE attrs = ('_FillValue', 'flag_meanings', 'flag_values', 'units') convert_file_content_to_data_array(file_content, attrs=attrs, dims=('z', 'lines', 'elements')) return file_content