|
Since we have developed a substantial collection of software that produces EPIC-compliant files, developing code to convert those files to CF was a more efficient option than rewriting it all to output CF directly. The generation of a CF version operates on EPIC-compliant data files that have passed the BBV review, and occurs as part of or subsequent to data release. Table 9 reviews the key characteristics for determining if a file follows EPIC or CF-1.6 conventions.
Table 9. Key differences between Equatorial Pacific Information Collection (EPIC) and Climate and Forecast version 1.6 (CF-1.6) files.
Characteristic | EPIC | CF-1.6 |
Has global attribute “featureType” | No | Yes |
Has only time or time, z dimensions | No | Yes |
Has variable attribute “coordinates” | No | Yes |
Has “time2” dimension and variable | Yes | No |
“time” variable is integer | Yes | No |
Z convention is positive up | No | Yes |
To convert to CF, a suite of Python programs (https://github.com/USGS-CMG/usgs-cmg-portal/tree/master/woods_hole_obs_data) are run on all the files from an experiment, in one directory; the output files have the same names but are in a different directory.
The Python programs do the following manipulations during execution:
- read fields from a text file to supply experiment-level metadata to the attributes of each file
- read each file in the experiment directory and do the following:
- add other global attributes needed for CF compliance (FeatureType must be TimeSeries or TimeSeriesProfile, conventions must be CF-1.6, and standard_name_vocabulary must be CF-1.6)
- add global attributes to enhance discovery using ESIP Attribute Conventions for Dataset Discovery (geospatial and temporal bounds and keywords)
- convert 2-part EPIC time to a single CF-1.6-compliant time variable
- replace EPIC depth coordinate with “z”
- add a sensor_depth variable to timeSeriesProfile files containing the elevation of the sensor (it must have the attribute surface_altitude to ensure proper spatial placement)
- add the coordinates attribute to each variable; timeSeries will be time, latitude, longitude; timeSeriesProfile will be time, height, latitude, longitude
- add the appropriate CF-1.6 standard_name attribute to variables where available
- leave unchanged almost everything else so that the CF files will look like the EPIC files, except with some slightly different dimensions and attributes
- write the new CF version file to a new experiment directory under the CF-1.6 root
|