Skip to content

Published CMIP6 Oyr file vs moppy-CMORised output (bounds & vertices)Β #464

Description

@rhaegar325

Diff: published CMIP6 Oyr file vs moppy-CMORised output (bounds & vertices)

Files compared

Role Path
Reference (published) /g/data/fs38/publications/CMIP6/CMIP/CSIRO/ACCESS-ESM1-5/historical/r1i1p1f1/Oyr/no3/gn/latest/no3_Oyr_ACCESS-ESM1-5_historical_r1i1p1f1_gn_1950-2014.nc
Produced (moppy) /scratch/tm70/yz9299/cmip6_fasttract/no3_Oyr_ACCESS-ESM1-5_historical_r1i1p1f1_gn_0101-0110.nc

The published file is the authoritative CMIP6 reference; the moppy output should match its
structure for time_bnds, vertices_latitude, vertices_longitude, the vertices
dimension, and lev/lev_bnds.

Each difference below is tagged with whether the WCRP compliance-checker
(cf:1.7 + wcrp_cmip6:1.0) reports it:

  • πŸ”΄ REPORTED β€” the checker raises a finding for this difference.
  • βšͺ NOT reported β€” a real difference from the reference, but the checker is silent.

Summary of differences

Item Published (reference) moppy output Checker Action
vertices dimension only (no variable) int64 coordinate variable [0,1,2,3] πŸ”΄ CF Β§2.2 + Β§3.3 drop the coordinate β†’ pure dimension
time_bnds attrs {} (none) {long_name, units, calendar} πŸ”΄ CF Β§7.1 strip all attributes
vertices_latitude/longitude β€” standard_name absent present πŸ”΄ CF Β§7.1 remove standard_name
vertices_latitude/longitude β€” missing_value/_FillValue present absent βšͺ NOT reported (optional) add to match reference
lev_bnds present (lev, bnds) absent βšͺ NOT reported add level bounds
lev β€” axis axis: 'Z' absent (cartesian_axis: 'Z' instead) πŸ”΄ WCRP [ATTR001] set lev:axis = 'Z'
lev β€” other metadata CF depth metadata model-native metadata βšͺ NOT reported (optional) align

Dimensions and dtypes otherwise match: time_bnds = (time, bnds) float64;
vertices_latitude/longitude = (j, i, vertices) float64.

Detail

1. vertices is a coordinate variable (should be a bare dimension) β€” πŸ”΄ REPORTED

published:  'vertices' in coords = False   (dimension only, no variable)
moppy:      'vertices' in coords = True    int64, dims=('vertices',), values [0,1,2,3]

This extra coordinate variable is exactly what triggers two CF findings the published file
does not have:

  • CF Β§2.2 The variable vertices failed because the datatype is int64
  • CF Β§3.3 long_name or/and standard_name is highly recommended for variable vertices

2. time_bnds carries attributes (should be empty) β€” πŸ”΄ REPORTED

published:  time_bnds.attrs = {}
moppy:      time_bnds.attrs = {long_name: 'time bounds',
                               units: 'days since 0001-01-01 00:00:00',
                               calendar: 'proleptic_gregorian'}

Checker findings (CF Β§7.1):

The Boundary variables 'time_bnds' should not have the attributes: ['units', 'calendar']
'time_bnds' long_name 'time bounds' disagrees with 'time''s 'time'

3. vertices_latitude / vertices_longitude attributes β€” πŸ”΄ (standard_name) / βšͺ (fill values)

published:  vertices_latitude.attrs  = {units: 'degrees_north',
                                        missing_value: 1e20, _FillValue: 1e20}
            vertices_longitude.attrs = {units: 'degrees_east', ...}
moppy:      vertices_latitude.attrs  = {standard_name: 'latitude',  units: 'degrees_north'}
            vertices_longitude.attrs = {standard_name: 'longitude', units: 'degrees_east'}
  • πŸ”΄ REPORTED β€” CF Β§7.1 flags the bounds variables for having standard_name:
    The Boundary variables 'vertices_latitude'  should not have: ['standard_name', 'units']
    The Boundary variables 'vertices_longitude' should not have: ['standard_name', 'units']
    
    Note: Β§7.1 lists units too, but the published reference also carries units on these
    variables β€” so the actionable difference is standard_name (removing it makes moppy
    match the reference). The units complaint applies to the reference as well.
  • βšͺ NOT reported β€” moppy omits missing_value/_FillValue that the reference has; the
    checker does not flag their absence on the bounds variables.

4. lev_bnds is missing β€” βšͺ NOT reported

published:  lev.attrs['bounds'] = 'lev_bnds';  lev_bnds present, dims=(lev, bnds), attrs={}
moppy:      lev has no 'bounds' attribute;     lev_bnds absent

A real structural difference (no vertical-level bounds at all), but the checker raises no
"missing level bounds" finding for this file.

5. lev metadata β€” πŸ”΄ (axis) / βšͺ (rest)

published lev.attrs: {bounds: 'lev_bnds', units: 'm', axis: 'Z', positive: 'down',
                      long_name: 'ocean depth coordinate', standard_name: 'depth'}
moppy lev.attrs:     {long_name: 'tcell zstar depth', units: 'meters',
                      cartesian_axis: 'Z', positive: 'down', edges: 'st_edges_ocean'}
  • πŸ”΄ REPORTED β€” WCRP [ATTR001] Required variable 'lev' attribute 'axis' is missing.
    (moppy carries the non-CF cartesian_axis: 'Z' instead of axis: 'Z'.)
  • βšͺ NOT reported β€” the other lev differences (units meters vs m, missing
    standard_name: 'depth', model-native long_name, the non-CF edges attribute, missing
    bounds) are not individually flagged by the checker.

Which differences the checker catches

Reported by checker (πŸ”΄) Not reported (βšͺ), but still differs from reference
vertices int64 coordinate (CF Β§2.2, Β§3.3) vertices_* missing missing_value/_FillValue
time_bnds attributes (CF Β§7.1) lev_bnds missing
vertices_* standard_name (CF Β§7.1) lev units/standard_name/long_name/edges/bounds
lev missing axis (WCRP [ATTR001])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions