Major refactor of the CF Checks
With the 3.0 major release we have reread and changed our interpretation of the
CF specification with the guidance from NCEI and members of NCEI's netCDF team.
Along with these changes we have integrated a much more advanced capability for
the checker to accurately determine feature types for datasets and make
accurate checks based on the type of dataset being checked.
To improve future development we incorporated integration tests from several
different types of datasets found through the IOOS catalog. This includes:
- SWAN Output
- ROMS
- ADCIRC
- FVCOM
- GliderDAC Trajectory Profiles
- Meteorology Station Timeseries
- DEM Elevation Dataset
In addition to these, we will continue to add more integration datasets to
improve the quality of the compliance checker over time. We looked at each
dataset and compared the results with the specification and adjusted the
checker until we got results that were appropriate.
A perfect score is not only possible, it's the true norm for good data. If a
dataset doesn't have a perfect score there will be very clear guidance for how
to achieve a perfect score.
We also started to add recommendation checks. These checks don't penalize a
score but observe possible problems with the dataset and make recommendations
for how to improve the metadata. For example, if there is a variable that ends
with `_bounds` but is not referenced by any variable through the `bounds`
attribute, we will add a corrective action message letting the user know that
we recommend to add a `bounds` attribute, but no points are taken off.
Changes
- Each section was refactored to include better feature detection
- Corrected several major bugs that were related to mis-classification of data
- Rewrote the scoring to be far more forgiving
- We added much better grid support. In the past we weren't able to accurately
recognize grid types, so now if a dataset is a gridded dataset, all of the
correct chapter 4 and 5 checks will be performed.
- Code readability and documentation improvements
- Created a comprehensive suite to assist in working with CF compliant data
- Feature Detection
- Methods for getting coordinate systems
- Methods for finding geophysical variables in an arbitrary dataset
- Added integration tests which include several datasets from the IOOS Catalog
- Refactored the checks to have consistent conventions with naming, how we
iterate, and return types.
- Added documentation to every single check in CF
- Several sections were refactored completely in order to take a far simpler
approach.
- All grouping of results was removed.