-
Notifications
You must be signed in to change notification settings - Fork 1
Description
As with issue #16, I have also made some progress on the idea of using specs to check AMOF files. In this approach, I have created a number of spec files, one that looks at land variables, and one that does common global attributes.
- land variables also includes a dimension and a variable that isn't real, just as part of checking it's working
- common global attributes refers to a new vocab file amof.json, although I think the info in here might also be in the AMF CVs, I didn't look because I did this first.
To accommodate this, I made some changes to generic.py, where the functions run by the spec checker live
- lines 31, 40, 50-54, function
check_global_attrs: added regex checks - lines 59-86: added two new functions -
check_var_existsandcheck_dim_exists. Quite self-explanatory
This approach doesn't (currently) check the values of variable attributes, just that they exist. This is better suited for checking valid_min (compare with discussion in issue #16), but not for checking units, for example.
I think this approach will also work well when all variables have the same attributes; however, that's not the case (e.g. quality control variables have flag_values and flag_meanings, which don't exist in other variables). I guess that the specs can be written to do checks on QC variables separately to other variables.
Example of running check against these spec files:
checksit check -t off --specs=amof-land-common,amof-global-attrs-common /gws/nopw/j04/ncas_obs/public/cdao/ncas-radar-wind-profiler-1/ncas-radar-wind-profiler-1_cdao_20221020_snr-winds_low-mode_15min_v1.0.nc
Running with:
Template: OFF
Datafile: /gws/nopw/j04/ncas_obs/public/cdao/ncas-radar-wind-profiler-1/ncas-radar-wind-profiler-1_cdao_20221020_snr-winds_low-mode_15min_v1.0.nc
---------------- Running checks ------------------
[WARNING] Template checks switched off!
[FAILED] with 3 errors:
01. [variable**************:cows]: Does not exist in file.
02. [dimension**************:fields]: Does not exist in file.
03. [global-attributes:******:instrument_serial_number]: '' does not match regex pattern '.{3,}'.