diff --git a/pyglider/ncprocess.py b/pyglider/ncprocess.py index b0fdb26..4acf8bd 100644 --- a/pyglider/ncprocess.py +++ b/pyglider/ncprocess.py @@ -14,7 +14,7 @@ _log = logging.getLogger(__name__) -def extract_timeseries_profiles(inname, outdir, deploymentyaml): +def extract_timeseries_profiles(inname, outdir, deploymentyaml, force=False): """ Extract and save each profile from a timeseries netCDF. @@ -29,6 +29,9 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): deploymentyaml : str or Path location of deployment yaml file for the netCDF file. This should be the same yaml file that was used to make the timeseries file. + + force : bool, default False + Force an overwite even if profile netcdf already exists """ try: os.mkdir(outdir) @@ -48,7 +51,7 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): dss = ds.isel(time=ind) outname = outdir + '/' + utils.get_file_id(dss) + '.nc' _log.info('Checking %s', outname) - if not os.path.exists(outname): + if force or (not os.path.exists(outname)): # this is the id for the whole file, not just this profile.. dss['trajectory'] = utils.get_file_id(ds).encode() trajlen = len(utils.get_file_id(ds).encode()) @@ -73,8 +76,13 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): dss['v'] = profile_meta['v'].get('_FillValue', np.NaN) dss['v'].attrs = profile_meta['v'] - dss['profile_id'] = np.array(p*1.0) + dss['profile_id'] = np.int32(p) dss['profile_id'].attrs = profile_meta['profile_id'] + if '_FillValue' not in dss['profile_id'].attrs: + dss['profile_id'].attrs['_FillValue'] = -1 + dss['profile_id'].attrs['valid_min'] = np.int32(dss['profile_id'].attrs['valid_min']) + dss['profile_id'].attrs['valid_max'] = np.int32(dss['profile_id'].attrs['valid_max']) + dss['profile_time'] = dss.time.mean() dss['profile_time'].attrs = profile_meta['profile_time'] # remove units so they can be encoded later: @@ -90,9 +98,9 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): dss['lat'] = dss['latitude'] dss['lon'] = dss['longitude'] - dss['platform'] = np.NaN + dss['platform'] = np.int32(1) comment = (meta['glider_model'] + ' operated by ' + - meta['institution']) + meta['institution']) dss['platform'].attrs['comment'] = comment dss['platform'].attrs['id'] = ( meta['glider_name'] + meta['glider_serial']) @@ -101,6 +109,9 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): meta['glider_model'] + dss['platform'].attrs['id']) dss['platform'].attrs['type'] = 'platform' dss['platform'].attrs['wmo_id'] = meta['wmo_id'] + if '_FillValue' not in dss['platform'].attrs: + dss['platform'].attrs['_FillValue'] = -1 + dss['lat_uv'] = np.NaN dss['lat_uv'].attrs = profile_meta['lat_uv'] @@ -109,16 +120,26 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): dss['time_uv'] = np.NaN dss['time_uv'].attrs = profile_meta['time_uv'] - dss['instrument_ctd'] = np.NaN + dss['instrument_ctd'] = np.int32(1.0) dss['instrument_ctd'].attrs = profile_meta['instrument_ctd'] + if '_FillValue' not in dss['instrument_ctd'].attrs: + dss['instrument_ctd'].attrs['_FillValue'] = -1 dss.attrs['date_modified'] = str(np.datetime64('now')) + 'Z' - # ancillary variables:: + # ancillary variables: link and create with values of 2. If + # we dont' want them all 2, then create these variables in the + # time series to_fill = ['temperature', 'pressure', 'conductivity', 'salinity', 'density', 'lon', 'lat', 'depth'] for name in to_fill: - dss[name].attrs['ancillary_variables'] = name + '_qc' + qcname = name + '_qc' + dss[name].attrs['ancillary_variables'] = qcname + if qcname not in dss.keys(): + + dss[qcname] = ('time', 2 * np.ones(len(dss[name]), np.int8)) + dss[qcname].attrs = utils.fill_required_qcattrs({}, name) + # 2 is "not eval" # outname = outdir + '/' + utils.get_file_id(dss) + '.nc' _log.info('Writing %s', outname) timeunits = 'nanoseconds since 1970-01-01T00:00:00Z' @@ -134,7 +155,9 @@ def extract_timeseries_profiles(inname, outdir, deploymentyaml): 'profile_time': {'units': timeunits, '_FillValue': -99999.0, - 'dtype': 'float64'}} + 'dtype': 'float64'}, + } + ) # add traj_strlen using bare ntcdf to make IOOS happy diff --git a/pyglider/slocum.py b/pyglider/slocum.py index a1386b6..3f5e810 100644 --- a/pyglider/slocum.py +++ b/pyglider/slocum.py @@ -716,7 +716,6 @@ def raw_to_timeseries(indir, outdir, deploymentyaml, *, if atts != 'coordinates': attr[atts] = ncvar[name][atts] ds[name] = (('time'), ebd[name].values, attr) - for name in thenames: _log.info('working on %s', name) if 'method' in ncvar[name].keys(): @@ -868,8 +867,8 @@ def binary_to_timeseries(indir, cachedir, outdir, deploymentyaml, *, # get the time: time = data.pop(0) ds['time'] = (('time'), time, attr) - ds['latitude'] = 0 * ds.time - ds['longitude'] = 0 * ds.time + ds['latitude'] = (('time'), np.zeros(len(time))) + ds['longitude'] = (('time'), np.zeros(len(time))) # get the time_base data: basedata = data.pop(0) # slot the time_base variable into the right place in the @@ -908,7 +907,7 @@ def binary_to_timeseries(indir, cachedir, outdir, deploymentyaml, *, ValueError(f'{sensorname} not in science or eng parameter names') # make the attributes: - ncvar[name].pop('coordinates', None) + ncvar[name]['coordinates'] = 'time' attrs = ncvar[name] attrs = utils.fill_required_attrs(attrs) ds[name] = (('time'), val, attrs) @@ -921,9 +920,6 @@ def binary_to_timeseries(indir, cachedir, outdir, deploymentyaml, *, ds = utils.get_distance_over_ground(ds) ds = utils.get_derived_eos_raw(ds) - ds = ds.assign_coords(longitude=ds.longitude) - ds = ds.assign_coords(latitude=ds.latitude) - ds = ds.assign_coords(depth=ds.depth) # screen out-of-range times; these won't convert: ds['time'] = ds.time.where((ds.time>0) & (ds.time<6.4e9), np.NaN) @@ -953,8 +949,8 @@ def binary_to_timeseries(indir, cachedir, outdir, deploymentyaml, *, _log.info('writing %s', outname) ds.to_netcdf(outname, 'w', encoding={'time': {'units': 'seconds since 1970-01-01T00:00:00Z', - '_FillValue': -999999, - 'dtype': 'int64'}}) + '_FillValue': np.NaN, + 'dtype': 'float64'}}) return outname diff --git a/pyglider/utils.py b/pyglider/utils.py index 076b944..aa64efe 100644 --- a/pyglider/utils.py +++ b/pyglider/utils.py @@ -398,6 +398,22 @@ def fill_required_attrs(attrs): return attrs +def fill_required_qcattrs(attrs, varname): + required = { + "units": "1", + "flag_values": np.array([1, 2, 3, 4, 9], dtype=np.int8), + "valid_min": np.int8(1), + "valid_max": np.int8(9), + "flag_meanings": "PASS NOT_EVALUATED SUSPECT FAIL MISSING", + "standard_name": "quality_flag", + "long_name": "Initial flag for {varname}" + } + for k in required.keys(): + if not (k in attrs.keys()): + attrs[k] = required[k] + return attrs + + def get_file_id(ds): """ Make a file id for a Dataset @@ -458,9 +474,10 @@ def fill_metadata(ds, metadata, sensor_data): ds.attrs['history'] = 'CPROOF glider toolbox version: pre-tag' for k, v in metadata.items(): ds.attrs[k] = v - ds.attrs['featureType'] = 'timeseries' + ds.attrs['featureType'] = 'trajectory' ds.attrs['cdm_data_type'] = 'Trajectory' - ds.attrs['Conventions'] = 'CF-1.6' + ds.attrs['Conventions'] = 'CF-1.8' + ds.attrs['standard_name_vocabulary'] = 'CF STandard Name Table v72' ds.attrs['date_created'] = str(np.datetime64('now')) + 'Z' ds.attrs['date_issued'] = str(np.datetime64('now')) + 'Z' ds.attrs['date_modified'] = " " diff --git a/tests/environment.yml b/tests/environment.yml index 5edbc77..c80a469 100644 --- a/tests/environment.yml +++ b/tests/environment.yml @@ -15,6 +15,8 @@ dependencies: - pytest-cov - pooch - matplotlib + - compliance-checker + - cc-plugin-glider - pip: - dbdreader - polars diff --git a/tests/example-data/example-slocum/deploymentRealtime.yml b/tests/example-data/example-slocum/deploymentRealtime.yml index f30ece7..c57afc9 100644 --- a/tests/example-data/example-slocum/deploymentRealtime.yml +++ b/tests/example-data/example-slocum/deploymentRealtime.yml @@ -32,7 +32,7 @@ metadata: license: "This data may be redistributed and used without restriction or warranty" metadata_link: "https://cproof.uvic.ca" - Metadata_Conventions: CF-1.6, Unidata Dataset Discovery v1.0 + Metadata_Conventions: CF-1.8, Unidata Dataset Discovery v1.0 naming_authority: "ca.uvic.cproof" platform_type: "Slocum Glider" processing_level: "Data provided as is with no expressed or implied @@ -44,9 +44,9 @@ metadata: publisher_url: http://cproof.uvic.ca references: cproof toolbox URL # https://www.nodc.noaa.gov/General/NODC-Archive/seanamelist.txt - sea_name: Coastal Waters of British Columbia + sea_name: Coastal Waters of Southeast Alaska and British Columbia source: Observational data from a profiling glider. - standard_name_vocabulary: CF STandard Name Table v49 + standard_name_vocabulary: CF STandard Name Table v72 summary: Manufacturer test in Saanich Inlet. transmission_system: IRRIDIUM wmo_id: "999999" @@ -88,7 +88,6 @@ netcdf_variables: units: seconds since 1970-01-01T00:00:00Z axis: T observation_type: "measured" - coordinates: time depth latitude longitude latitude: source: m_lat @@ -96,7 +95,6 @@ netcdf_variables: standard_name: latitude units: degrees_north axis: Y - coordinates: time depth latitude longitude comment: "Estimated between surface fixes" observation_type: measured platform: platform @@ -111,7 +109,6 @@ netcdf_variables: standard_name: longitude units: degrees_east axis: X - coordinates: time depth latitude longitude comment: "Estimated between surface fixes" observation_type: measured platform: platform @@ -125,21 +122,18 @@ netcdf_variables: long_name: glider heading angle standard_name: platform_orientation units: rad - coordinates: time depth latitude longitude pitch: source: m_pitch long_name: glider pitch angle standard_name: platform_pitch_angle units: rad - coordinates: time depth latitude longitude roll: source: m_roll long_name: glider roll angle standard_name: platform_roll_angle units: rad - coordinates: time depth latitude longitude # profile info: waypoint_latitude: @@ -147,14 +141,12 @@ netcdf_variables: long_name: waypoint latitude standard_name: latitude units: degree_north - coordinates: time depth latitude longitude waypoint_longitude: source: c_wpt_lon long_name: waypoint longitude standard_name: longitude units: degree_east - coordinates: time depth latitude longitude # data parameters conductivity: @@ -162,7 +154,6 @@ netcdf_variables: long_name: water conductivity standard_name: sea_water_electrical_conductivity units: S m-1 - coordinates: time depth latitude longitude instrument: instrument_ctd valid_min: 0. valid_max: 10. @@ -176,7 +167,6 @@ netcdf_variables: long_name: water temperature standard_name: sea_water_temperature units: Celsius - coordinates: time depth latitude longitude instrument: instrument_ctd valid_min: -5.0 valid_max: 50.0 @@ -190,7 +180,6 @@ netcdf_variables: long_name: water pressure standard_name: sea_water_pressure units: dbar - coordinates: time depth latitude longitude conversion: bar2dbar valid_min: 0.0 valid_max: 2000.0 @@ -210,19 +199,16 @@ netcdf_variables: long_name: chlorophyll standard_name: concentration_of_chlorophyll_in_sea_water units: mg m-3 - coordinates: time depth latitude longitude cdom: source: sci_flbbcd_cdom_units long_name: CDOM units: ppb - coordinates: time depth latitude longitude backscatter_700: source: sci_flbbcd_bb_units long_name: 700 nm wavelength backscatter units: "1" - coordinates: time depth latitude longitude # Oxygen oxygen_concentration: @@ -230,7 +216,6 @@ netcdf_variables: long_name: oxygen concentration standard_name: mole_concentration_of_dissolved_molecular_oxygen_in_sea_water units: umol l-1 - coordinates: time depth latitude longitude # derived water speed: # water_velocity_eastward: @@ -252,8 +237,8 @@ profile_variables: profile_id: comment: Sequential profile number within the trajectory. This value is unique in each file that is part of a single trajectory/deployment. long_name: 'Profile ID' - valid_max: 2147483647.0 - valid_min: 1.0 + valid_max: 2147483646 + valid_min: 1 profile_time: comment: Timestamp corresponding to the mid-point of the profile diff --git a/tests/results/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc b/tests/expected/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc similarity index 76% rename from tests/results/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc rename to tests/expected/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc index 92aa1cb..c5dd930 100644 Binary files a/tests/results/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc and b/tests/expected/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc differ diff --git a/tests/results/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc b/tests/expected/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc similarity index 72% rename from tests/results/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc rename to tests/expected/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc index b270356..a538f2e 100644 Binary files a/tests/results/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc and b/tests/expected/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc differ diff --git a/tests/results/example-slocum-littleendian/L0-timeseries/dfo-maria997-20220614.nc b/tests/expected/example-slocum-littleendian/L0-timeseries/dfo-maria997-20220614.nc similarity index 93% rename from tests/results/example-slocum-littleendian/L0-timeseries/dfo-maria997-20220614.nc rename to tests/expected/example-slocum-littleendian/L0-timeseries/dfo-maria997-20220614.nc index 0dd09fe..ffd9536 100644 Binary files a/tests/results/example-slocum-littleendian/L0-timeseries/dfo-maria997-20220614.nc and b/tests/expected/example-slocum-littleendian/L0-timeseries/dfo-maria997-20220614.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0636.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0636.nc new file mode 100644 index 0000000..51b1b74 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0636.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0646.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0646.nc new file mode 100644 index 0000000..a776252 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0646.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0657.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0657.nc new file mode 100644 index 0000000..1d9e3b6 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0657.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0708.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0708.nc new file mode 100644 index 0000000..220f18d Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0708.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0718.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0718.nc new file mode 100644 index 0000000..cd806e6 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0718.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0729.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0729.nc new file mode 100644 index 0000000..52fca66 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0729.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0739.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0739.nc new file mode 100644 index 0000000..8f69b68 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0739.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0749.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0749.nc new file mode 100644 index 0000000..6646ad3 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0749.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0800.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0800.nc new file mode 100644 index 0000000..8ee8efb Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0800.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0831.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0831.nc new file mode 100644 index 0000000..8570b6b Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0831.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0842.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0842.nc new file mode 100644 index 0000000..60bfccc Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0842.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0853.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0853.nc new file mode 100644 index 0000000..81039a0 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0853.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0902.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0902.nc new file mode 100644 index 0000000..0c075b5 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0902.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0913.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0913.nc new file mode 100644 index 0000000..ec38fca Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0913.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0923.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0923.nc new file mode 100644 index 0000000..25c0ad0 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0923.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0933.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0933.nc new file mode 100644 index 0000000..76786eb Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0933.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0944.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0944.nc new file mode 100644 index 0000000..7aa0bb4 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0944.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0954.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0954.nc new file mode 100644 index 0000000..ab11136 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T0954.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1004.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1004.nc new file mode 100644 index 0000000..2d38ce2 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1004.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1033.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1033.nc new file mode 100644 index 0000000..5a558f0 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1033.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1044.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1044.nc new file mode 100644 index 0000000..479b3cf Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1044.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1055.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1055.nc new file mode 100644 index 0000000..7b83c20 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1055.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1105.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1105.nc new file mode 100644 index 0000000..d9c0eef Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1105.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1115.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1115.nc new file mode 100644 index 0000000..7a72c14 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1115.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1125.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1125.nc new file mode 100644 index 0000000..e39b59f Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1125.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1209.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1209.nc new file mode 100644 index 0000000..4524413 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1209.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1220.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1220.nc new file mode 100644 index 0000000..d6dd79c Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1220.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1231.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1231.nc new file mode 100644 index 0000000..81cd3e4 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1231.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1241.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1241.nc new file mode 100644 index 0000000..c870605 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1241.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1252.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1252.nc new file mode 100644 index 0000000..65a69e4 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1252.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1302.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1302.nc new file mode 100644 index 0000000..7449efd Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1302.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1313.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1313.nc new file mode 100644 index 0000000..10d4539 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1313.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1323.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1323.nc new file mode 100644 index 0000000..1ce3791 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1323.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1335.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1335.nc new file mode 100644 index 0000000..e990df3 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1335.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1345.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1345.nc new file mode 100644 index 0000000..3197ab6 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1345.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1415.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1415.nc new file mode 100644 index 0000000..a549bc3 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1415.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1425.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1425.nc new file mode 100644 index 0000000..69e2246 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1425.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1435.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1435.nc new file mode 100644 index 0000000..f729c25 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1435.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1445.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1445.nc new file mode 100644 index 0000000..f7eb5ca Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1445.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1455.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1455.nc new file mode 100644 index 0000000..e1023be Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1455.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1506.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1506.nc new file mode 100644 index 0000000..a5b9daa Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1506.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1516.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1516.nc new file mode 100644 index 0000000..31142de Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1516.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1526.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1526.nc new file mode 100644 index 0000000..c605e7b Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1526.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1536.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1536.nc new file mode 100644 index 0000000..191e5c6 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1536.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1546.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1546.nc new file mode 100644 index 0000000..21d0d29 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1546.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1607.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1607.nc new file mode 100644 index 0000000..2d95d51 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1607.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1618.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1618.nc new file mode 100644 index 0000000..678bfe9 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1618.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1627.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1627.nc new file mode 100644 index 0000000..e35b906 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1627.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1637.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1637.nc new file mode 100644 index 0000000..1d2246d Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1637.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1646.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1646.nc new file mode 100644 index 0000000..a4a75da Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1646.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1656.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1656.nc new file mode 100644 index 0000000..4f1d881 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1656.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1705.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1705.nc new file mode 100644 index 0000000..5efc303 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1705.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1714.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1714.nc new file mode 100644 index 0000000..4303982 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1714.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1723.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1723.nc new file mode 100644 index 0000000..c05d691 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1723.nc differ diff --git a/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1732.nc b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1732.nc new file mode 100644 index 0000000..4c70b35 Binary files /dev/null and b/tests/expected/example-slocum/L0-profiles/dfo-rosie713-20190620T1732.nc differ diff --git a/tests/results/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc b/tests/expected/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc similarity index 73% rename from tests/results/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc rename to tests/expected/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc index 4a520d1..a452d26 100644 Binary files a/tests/results/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc and b/tests/expected/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc differ diff --git a/tests/test_pyglider.py b/tests/test_pyglider.py index e5663ca..0c003bd 100644 --- a/tests/test_pyglider.py +++ b/tests/test_pyglider.py @@ -4,6 +4,7 @@ import numpy as np import yaml +import pyglider.ncprocess as ncprocess import pyglider.seaexplorer as seaexplorer import pyglider.slocum as slocum @@ -24,7 +25,7 @@ # Open test data file test_data = xr.open_dataset( library_dir / - 'tests/results/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc') + 'tests/expected/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc') variables = list(output.variables) @@ -84,7 +85,6 @@ def test_example_seaexplorer_interp_nrt(var): # Test raw (full resolution) seaexplorer data. - rawdir = str(example_dir / 'example-seaexplorer-raw/delayed_raw/') + '/' rawncdir = str(example_dir / 'example-seaexplorer-raw/delayed_rawnc/') + '/' deploymentyaml_raw = str(example_dir / 'example-seaexplorer-raw/deployment.yml') @@ -97,7 +97,7 @@ def test_example_seaexplorer_interp_nrt(var): # Open test data file test_data_raw = xr.open_dataset( library_dir / - 'tests/results/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc') + 'tests/expected/example-seaexplorer-raw/L0-timeseries/dfo-bb046-20200908.nc') @pytest.mark.parametrize("var", variables) def test_example_seaexplorer_raw(var): @@ -148,135 +148,3 @@ def test_example_seaexplorer_interp_raw(var): assert np.allclose( np.array(dt0, dtype='float64'), np.array(dt1, dtype='float64')) - - -# Create an L0 timeseries from slocum data and test that the resulting netcdf is -# identical to the test data -cacdir = str(example_dir / 'example-slocum/cac/') + '/' -sensorlist = str(example_dir / 'example-slocum/dfo-rosie713_sensors.txt') -binarydir = str(example_dir / 'example-slocum/realtime_raw/') + '/' -rawdir_slocum = str(example_dir / 'example-slocum/realtime_rawnc/') + '/' -deploymentyaml_slocum = str(example_dir / 'example-slocum/deploymentRealtime.yml') -l1tsdir = str(example_dir / 'example-slocum/L0-timeseries-test/') + '/' -scisuffix = 'tbd' -glidersuffix = 'sbd' -do_direct = True - -if do_direct: - # turn *.sbd and *.tbd into timeseries netcdf files - outname_slocum = slocum.binary_to_timeseries( - binarydir, cacdir, l1tsdir, deploymentyaml_slocum, search='*.[s|t]bd', - profile_filt_time=20, profile_min_time=20) -else: - slocum.binary_to_rawnc( - binarydir, rawdir_slocum, cacdir, sensorlist, deploymentyaml_slocum, - incremental=False, scisuffix=scisuffix, glidersuffix=glidersuffix) - - slocum.merge_rawnc(rawdir_slocum, rawdir_slocum, deploymentyaml_slocum, - scisuffix=scisuffix, glidersuffix=glidersuffix) - outname_slocum = slocum.raw_to_timeseries( - rawdir_slocum, l1tsdir, deploymentyaml_slocum, - profile_filt_time=100, profile_min_time=300) - -output_slocum = xr.open_dataset(outname_slocum) -# Open test data file -test_data_slocum = xr.open_dataset( - library_dir / - 'tests/results/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc') -variables_slocum = list(output_slocum.variables) - - -def test_variables_slocum(): - test_variables = list(test_data_slocum.variables) - test_variables.sort() - variables_slocum.sort() - assert variables_slocum == test_variables - - -@pytest.mark.parametrize("var", variables_slocum) -def test_example_slocum(var): - # Test that variables and coordinates match - assert output_slocum[var].attrs == test_data_slocum[var].attrs - if var not in ['time']: - np.testing.assert_allclose(output_slocum[var].values, - test_data_slocum[var].values, rtol=1e-6) - else: - dt0 = output_slocum[var].values - np.datetime64('2000-01-01') - dt1 = test_data_slocum[var].values - np.datetime64('2000-01-01') - assert np.allclose( - np.array(dt0, dtype='float64'), - np.array(dt1, dtype='float64')) - - -def test_example_slocum_metadata(): - # Test that attributes match. Have to remove creation and issue - # dates first - output_slocum.attrs.pop('date_created') - output_slocum.attrs.pop('date_issued') - test_data_slocum.attrs.pop('date_created') - test_data_slocum.attrs.pop('date_issued') - assert output_slocum.attrs == test_data_slocum.attrs - - -# Create an L0 timeseries from slocum data and test that the resulting netcdf is -# identical to the test data -cacdir = str(example_dir / 'example-slocum-littleendian/cac/') + '/' -sensorlist = str( - example_dir / 'example-slocum-littleendian/dfo-maria997_sensors.txt') -binarydir = str( - example_dir / 'example-slocum-littleendian/realtime_raw/') + '/' -rawdir_slocum = str( - example_dir / 'example-slocum-littleendian/realtime_rawnc/') + '/' -deploymentyaml_slocum = str( - example_dir / 'example-slocum-littleendian/deployment.yml') -l1tsdir = str( - example_dir / 'example-slocum-littleendian/L0-timeseries-test/') + '/' -scisuffix = 'tbd' -glidersuffix = 'sbd' - -slocum.binary_to_rawnc( - binarydir, rawdir_slocum, cacdir, sensorlist, deploymentyaml_slocum, - incremental=True, scisuffix=scisuffix, glidersuffix=glidersuffix) -slocum.merge_rawnc(rawdir_slocum, rawdir_slocum, deploymentyaml_slocum, - scisuffix=scisuffix, glidersuffix=glidersuffix) -outname_slocum_le = slocum.raw_to_timeseries( - rawdir_slocum, l1tsdir, deploymentyaml_slocum, - profile_filt_time=400, profile_min_time=100) -output_slocum_le = xr.open_dataset(outname_slocum_le) -# Open test data file -test_data_slocum_le = xr.open_dataset( - library_dir / - ('tests/results/example-slocum-littleendian/' + - 'L0-timeseries/dfo-maria997-20220614.nc')) -variables_slocum_le = list(output_slocum.variables) - - -def test_variables_slocum_littleendian(): - test_variables = list(test_data_slocum_le.variables) - test_variables.sort() - variables_slocum.sort() - assert variables_slocum == test_variables - - -@pytest.mark.parametrize("var", variables_slocum) -def test_example_slocum_littleendian(var): - # Test that variables and coordinates match - assert output_slocum_le[var].attrs == test_data_slocum_le[var].attrs - if var not in ['time']: - np.testing.assert_allclose(output_slocum_le[var].values, - test_data_slocum_le[var].values, rtol=1e-6) - else: - dt0 = output_slocum_le[var].values - np.datetime64('2000-01-01') - dt1 = test_data_slocum_le[var].values - np.datetime64('2000-01-01') - assert np.allclose( - np.array(dt0, dtype='float64'), - np.array(dt1, dtype='float64')) - - -def test_example_slocum_littleendian_metadata(): - # Test that attributes match. Have to remove creation and issue dates first - output_slocum_le.attrs.pop('date_created') - output_slocum_le.attrs.pop('date_issued') - test_data_slocum_le.attrs.pop('date_created') - test_data_slocum_le.attrs.pop('date_issued') - assert output_slocum_le.attrs == test_data_slocum_le.attrs diff --git a/tests/test_slocum.py b/tests/test_slocum.py new file mode 100644 index 0000000..bc6beaa --- /dev/null +++ b/tests/test_slocum.py @@ -0,0 +1,162 @@ +import xarray as xr + +from compliance_checker.runner import ComplianceChecker, CheckSuite +import json +from pathlib import Path +import pytest +import numpy as np +import yaml + +import pyglider.ncprocess as ncprocess +import pyglider.seaexplorer as seaexplorer +import pyglider.slocum as slocum + + + +library_dir = Path(__file__).parent.parent.absolute() +example_dir = library_dir / 'tests/example-data/' + +# Create an L0 timeseries from slocum data and test that the resulting netcdf is +# identical to the test data +cacdir = example_dir / 'example-slocum/cac/' +sensorlist = str(example_dir / 'example-slocum/dfo-rosie713_sensors.txt') +binarydir = str(example_dir / 'example-slocum/realtime_raw/') + '/' +rawdir_slocum = str(example_dir / 'example-slocum/realtime_rawnc/') + '/' +deploymentyaml_slocum = str(example_dir / 'example-slocum/deploymentRealtime.yml') +tsdir = str(example_dir / 'example-slocum/L0-timeseries/') + '/' +scisuffix = 'tbd' +glidersuffix = 'sbd' +profiledir = str(example_dir / 'example-slocum/L0-profiles/') +do_direct = True + +# This needs to get run every time the tests are run, so do at top level: + +# turn *.sbd and *.tbd into timeseries netcdf files +outname_slocum = slocum.binary_to_timeseries(binarydir, cacdir, tsdir, deploymentyaml_slocum, + search='*.[s|t]bd', profile_filt_time=20, + profile_min_time=20) +# make profiles... +ncprocess.extract_timeseries_profiles(outname_slocum, profiledir, deploymentyaml_slocum, + force=True) + +output_slocum = xr.open_dataset(outname_slocum) +# Open test data file +test_data_slocum = xr.open_dataset( + library_dir / + 'tests/expected/example-slocum/L0-timeseries/dfo-rosie713-20190615.nc') +variables_slocum = list(output_slocum.variables) + + +def test_variables_slocum(): + test_variables = list(test_data_slocum.variables) + test_variables.sort() + variables_slocum.sort() + assert variables_slocum == test_variables + + +@pytest.mark.parametrize("var", variables_slocum) +def test_example_slocum(var): + # Test that variables and coordinates match + assert output_slocum[var].attrs == test_data_slocum[var].attrs + if var not in ['time']: + np.testing.assert_allclose(output_slocum[var].values, + test_data_slocum[var].values, rtol=1e-6) + else: + dt0 = output_slocum[var].values - np.datetime64('2000-01-01') + dt1 = test_data_slocum[var].values - np.datetime64('2000-01-01') + assert np.allclose( + np.array(dt0, dtype='float64'), + np.array(dt1, dtype='float64')) + + +def test_example_slocum_metadata(): + # Test that attributes match. Have to remove creation and issue + # dates first + output_slocum.attrs.pop('date_created') + output_slocum.attrs.pop('date_issued') + test_data_slocum.attrs.pop('date_created') + test_data_slocum.attrs.pop('date_issued') + assert output_slocum.attrs == test_data_slocum.attrs + + +# test the profiles with compliance_checker... + +def test_profiles_compliant(): + # Load all available checker classes + check_suite = CheckSuite() + check_suite.load_all_available_checkers() + # Run cf and adcc checks + path = profiledir + '/dfo-rosie713-20190620T1313.nc' + checker_names = ['gliderdac', 'cf:1.8'] + verbose = 0 + criteria = 'normal' + output_filename = example_dir / 'report.json' + output_format = 'json' + """ + Inputs to ComplianceChecker.run_checker + + path Dataset location (url or file) + checker_names List of string names to run, should match keys of checkers dict (empty list means run all) + verbose Verbosity of the output (0, 1, 2) + criteria Determines failure (lenient, normal, strict) + output_filename Path to the file for output + output_format Format of the output + + @returns If the tests failed (based on the criteria) + """ + return_value, errors = ComplianceChecker.run_checker(path, + checker_names, + verbose, + criteria, + output_filename=output_filename, + output_format=output_format) + # Open the JSON output and get the compliance scores + with open(output_filename, 'r') as fp: + cc_data = json.load(fp) + test = cc_data['gliderdac'] + assert test['high_count'] == 0 + assert test['medium_count'] == 0 + assert test['low_count'] == 0 + test = cc_data['cf:1.8'] + assert test['high_count'] == 0 + assert test['medium_count'] == 0 + assert test['low_count'] == 0 + + +def test_timeseries_compliant(): + # Load all available checker classes + check_suite = CheckSuite() + check_suite.load_all_available_checkers() + # Run cf and adcc checks + path = tsdir + '/dfo-rosie713-20190615.nc' + checker_names = ['cf:1.8'] + verbose = 0 + criteria = 'normal' + output_filename = example_dir / 'report.json' + output_format = 'json' + """ + Inputs to ComplianceChecker.run_checker + + path Dataset location (url or file) + checker_names List of string names to run, should match keys of checkers dict (empty list means run all) + verbose Verbosity of the output (0, 1, 2) + criteria Determines failure (lenient, normal, strict) + output_filename Path to the file for output + output_format Format of the output + + @returns If the tests failed (based on the criteria) + """ + return_value, errors = ComplianceChecker.run_checker(path, + checker_names, + verbose, + criteria, + output_filename=output_filename, + output_format=output_format) + # Open the JSON output and get the compliance scores + with open(output_filename, 'r') as fp: + cc_data = json.load(fp) + test = cc_data['cf:1.8'] + assert test['high_count'] == 0 + # somehow the checker is confused by our trajectory variables. + assert test['medium_count'] == 1 + assert test['low_count'] == 0 diff --git a/tests/test_utils.py b/tests/test_utils.py index 8fc0c86..69439e4 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -10,7 +10,7 @@ library_dir = Path(__file__).parent.parent.absolute() example_dir = library_dir / 'tests/example-data/' -test_data = xr.open_dataset(library_dir / 'tests/results/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc') +test_data = xr.open_dataset(library_dir / 'tests/expected/example-seaexplorer/L0-timeseries/dfo-eva035-20190718.nc') deploymentyaml = example_dir / 'example-seaexplorer-legato-flntu-arod-ad2cp/deploymentRealtime.yml' with open(deploymentyaml) as fin: deployment = yaml.safe_load(fin)