Hi Karl,

That looks like a bug to me!  From my quick look, I think there is a missing check on whether the interval endpoints are ordered consistently with the associated coordinate and it's therefore done lev_bnd[i][0] <= lev <= lev_bnd[1][0] rather than a decreasing check.  I'm all set to make a bug fix release straight after Easter, assuming all agree, I'll raise an issue and fix this on my return first.  Surprised this hasn't shown up before now.  Thanks for querying it.

Regards,
Ros



On 16/04/2019 20:38, Taylor, Karl E. wrote:
Hi All,

I have run a file through the CF-checker version 3.1.0 at http://pumatest.nerc.ac.uk/cgi-bin/cf-checker.pl and it returns some errors & warnings (see below).  As I understand it, the error (4.3.3) is raised because the checker has not yet been updated to be fully able to handle CF-1.7 (in particular it says: "*Note:*This version currently does not include the new cell boundary cross checks detailed in CF section 7.1 which will follow in due course.").  I hope someone will tell me if my understanding is incorrect about this.

The 3rd warning below indicates that "Data for variable lev lies outside cell boundaries", but my ncdump of the file suggests that all "lev" values lie between the corresponding "lev_bnd" values. (See 2nd dump below.).  Could someone please tell me if there is an explanation for this warning other than it is incorrect?

thanks and best regards,
Karl

------------------------------------------

*Output of CF-Checker follows...*

*----------------------------------------------------------------------------*

/home/ros/software/cf-checker/lib/python2.7/site-packages/cfchecker-3.1.0-py2.7.egg/cfchecker/cfchecks.py:1768:
 FutureWarning: Conversion of the second argument of issubdtype from `int` to 
`np.signedinteger` is deprecated. In future, it will be treated as `np.int64 == 
np.dtype(int).type`.
   elif numpy.issubdtype(attrType, numpy.int) or numpy.issubdtype(attrType, 
numpy.float):
/home/ros/software/cf-checker/lib/python2.7/site-packages/cfchecker-3.1.0-py2.7.egg/cfchecker/cfchecks.py:1768:
 FutureWarning: Conversion of the second argument of issubdtype from `float` to 
`np.floating` is deprecated. In future, it will be treated as `np.float64 == 
np.dtype(float).type`.
   elif numpy.issubdtype(attrType, numpy.int) or numpy.issubdtype(attrType, 
numpy.float):
CHECKING NetCDF FILE: /tmp/9066.nc
=====================
Using CF Checker Version 3.1.0
Checking against CF Version CF-1.7
Using Standard Name Table Version 65 (2019-04-09T13:32:32Z)
Using Area Type Table Version 9 (07 August 2018)
Using Standardized Region Name Table Version 4 (18 December 2018)

WARN: (7.1): Boundary var lev_bnds should not have attribute units
WARN: (7.1): Boundary var lev_bnds should not have attribute standard_name
WARN: (7.1): Data for variable lev lies outside cell boundaries

------------------
Checking variable: time
------------------

------------------
Checking variable: time_bnds
------------------

------------------
Checking variable: lev
------------------

------------------
Checking variable: lev_bnds
------------------
INFO: attribute formula_terms is being used in a non-standard way
ERROR: (4.3.3): formula_terms attribute only allowed on coordinate variables

------------------
Checking variable: p0
------------------

------------------
Checking variable: a
------------------
INFO: (3.1): No units attribute set.  Please consider adding a units attribute 
for completeness.

------------------
Checking variable: b
------------------
INFO: (3.1): No units attribute set.  Please consider adding a units attribute 
for completeness.

------------------
Checking variable: ps
------------------

------------------
Checking variable: a_bnds
------------------
INFO: (3.1): No units attribute set.  Please consider adding a units attribute 
for completeness.

------------------
Checking variable: b_bnds
------------------
INFO: (3.1): No units attribute set.  Please consider adding a units attribute 
for completeness.

------------------
Checking variable: lat
------------------

------------------
Checking variable: lat_bnds
------------------

------------------
Checking variable: lon
------------------

------------------
Checking variable: lon_bnds
------------------

------------------
Checking variable: cl
------------------
INFO: attribute history is being used in a non-standard way

ERRORS detected: 1
WARNINGS given: 3
INFORMATION messages: 6

------------------------------------------
*ncdump of file ............*
--------------------------------------------

netcdf cl_Amon_INM-CM5-0_historical_r1i1p1f1_gr1_203001-203002 {
dimensions:
         time = UNLIMITED ; // (2 currently)
         lev = 5 ;
         lat = 3 ;
         lon = 4 ;
         bnds = 2 ;
variables:
         double time(time) ;
                 time:bounds = "time_bnds" ;
                 time:units = "days since 2030-1-1" ;
                 time:calendar = "365_day" ;
                 time:axis = "T" ;
                 time:long_name = "time" ;
                 time:standard_name = "time" ;
         double time_bnds(time, bnds) ;
         double lev(lev) ;
                 lev:bounds = "lev_bnds" ;
                 lev:units = "1" ;
                 lev:axis = "Z" ;
                 lev:positive = "down" ;
                 lev:long_name = "hybrid sigma pressure coordinate" ;
                 lev:standard_name = 
"atmosphere_hybrid_sigma_pressure_coordinate" ;
                 lev:formula = "p = a*p0 + b*ps" ;
                 lev:formula_terms = "p0: p0 a: a b: b ps: ps" ;
         double lev_bnds(lev, bnds) ;
                 lev_bnds:formula = "p = a*p0 + b*ps" ;
                 lev_bnds:standard_name = 
"atmosphere_hybrid_sigma_pressure_coordinate" ;
                 lev_bnds:units = "1" ;
                 lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps" ;
         double p0 ;
                 p0:long_name = "vertical coordinate formula term: reference 
pressure" ;
                 p0:units = "Pa" ;
         double a(lev) ;
                 a:long_name = "vertical coordinate formula term: a(k)" ;
         double b(lev) ;
                 b:long_name = "vertical coordinate formula term: b(k)" ;
         float ps(time, lat, lon) ;
                 ps:long_name = "Surface Air Pressure" ;
                 ps:units = "Pa" ;
         double a_bnds(lev, bnds) ;
                 a_bnds:long_name = "vertical coordinate formula term: 
a(k+1/2)" ;
         double b_bnds(lev, bnds) ;
                 b_bnds:long_name = "vertical coordinate formula term: 
b(k+1/2)" ;
         double lat(lat) ;
                 lat:bounds = "lat_bnds" ;
                 lat:units = "degrees_north" ;
                 lat:axis = "Y" ;
                 lat:long_name = "latitude" ;
                 lat:standard_name = "latitude" ;
         double lat_bnds(lat, bnds) ;
         double lon(lon) ;
                 lon:bounds = "lon_bnds" ;
                 lon:units = "degrees_east" ;
                 lon:axis = "X" ;
                 lon:long_name = "Longitude" ;
                 lon:standard_name = "longitude" ;
         double lon_bnds(lon, bnds) ;
         float cl(time, lev, lat, lon) ;
                 cl:standard_name = "cloud_area_fraction_in_atmosphere_layer" ;
                 cl:long_name = "Cloud Area Fraction" ;
                 cl:comment = "Percentage cloud cover, including both large-scale 
and convective cloud." ;
                 cl:units = "%" ;
                 cl:original_name = "CLOUD" ;
                 cl:cell_methods = "area: time: mean (interval: 20 minutes)" ;
                 cl:cell_measures = "area: areacella" ;
                 cl:history = "2019-04-12T14:28:43Z altered by CMOR: replaced 
missing value flag (1e+28) with standard missing value (1e+20). 2019-04-12T14:28:43Z 
altered by CMOR: Inverted axis: lev. 2019-04-12T14:28:43Z altered by CMOR: Inverted axis: 
lat." ;
                 cl:missing_value = 1.e+20f ;
                 cl:_FillValue = 1.e+20f ;

// global attributes:
                 :Conventions = "CF-1.7 CMIP-6.2" ;
                 :activity_id = "CMIP" ;
                 :branch_method = "standard" ;
                 :branch_time_in_child = 0. ;
                 :branch_time_in_parent = 90885. ;
                 :contact = "Evgeny Volodin (volodi...@gmail.com)" ;
                 :creation_date = "2019-04-12T14:28:43Z" ;
                 :data_specs_version = "01.00.27" ;
                 :experiment = "all-forcing simulation of the recent past" ;
                 :experiment_id = "historical" ;
                 :external_variables = "areacella" ;
                 :forcing_index = 1 ;
                 :frequency = "mon" ;
                 :further_info_url 
="https://furtherinfo.es-doc.org/CMIP6.INM.INM-CM5-0.historical.none.r1i1p1f1";  
;
                 :grid = "gs2x1.5" ;
                 :grid_label = "gr1" ;
                 :history = "2019-04-12T14:28:43Z ;rewrote data to be consistent 
with CMIP for variable cl found in table Amon." ;
                 :initialization_index = 1 ;
                 :institution = "Institute for Numerical Mathematics, Russian 
Academy of Science, Moscow 119991, Russia" ;
                 :institution_id = "INM" ;
                 :mip_era = "CMIP6" ;
                 :nominal_resolution = "100 km" ;
                 :parent_activity_id = "CMIP" ;
                 :parent_experiment_id = "piControl" ;
                 :parent_mip_era = "CMIP6" ;
                 :parent_source_id = "INM-CM5-0" ;
                 :parent_time_units = "days since 1850-01-01" ;
                 :parent_variant_label = "r1i1p1f1" ;
                 :physics_index = 1 ;
                 :product = "model-output" ;
                 :realization_index = 1 ;
                 :realm = "atmos" ;
                 :references = "Clim. Dyn., 2017, 3715-3734)\'" ;
                 :run_variant = "standard" ;
                 :source = "INM-CM5-0 (2016): \n",
                         "aerosol: INM-AER1\n",
                         "atmos: INM-AM5-0 (2x1.5; 180 x 120 longitude/latitude; 73 
levels; top level sigma = 0.0002)\n",
                         "atmosChem: none\n",
                         "land: INM-LND1\n",
                         "landIce: none\n",
                         "ocean: INM-OM5 (North Pole shifted to 60N, 90E. 0.5x0.25; 
720 x 720 longitude/latitude; 40 levels; vertical sigma coordinate)\n",
                         "ocnBgchem: none\n",
                         "seaIce: INM-ICE1" ;
                 :source_id = "INM-CM5-0" ;
                 :source_type = "AOGCM AER" ;
                 :sub_experiment = "none" ;
                 :sub_experiment_id = "none" ;
                 :table_id = "Amon" ;
                 :table_info = "Creation Date:(30 July 2018) 
MD5:fa9bc503f57fb067bf398cab2c4ba77e" ;
                 :title = "INM-CM5-0 output prepared for CMIP6" ;
                 :tracking_id = 
"hdl:21.14100/8645a6fa-b7f3-4ece-ad8e-4541cee008ea" ;
                 :variable_id = "cl" ;
                 :variant_label = "r1i1p1f1" ;
                 :license = "CMIP6 model data produced by Lawrence Livermore PCMDI 
is licensed under a Creative Commons Attribution ShareAlike 4.0 International License 
(https://creativecommons.org/licenses). Consulthttps://pcmdi.llnl.gov/CMIP6/TermsOfUse  
for terms of use governing CMIP6 output, including citation requirements and proper 
acknowledgment. Further information about this data, including some limitations, can be 
found via the further_info_url (recorded as a global attribute in this file) and 
athttps:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, 
either express or implied, including, but not limited to, warranties of merchantability 
and fitness for a particular purpose. All liabilities arising from the supply of the 
information (including any liability arising in negligence) are excluded to the fullest 
extent permitted by law." ;
                 :cmor_version = "3.3.2" ;
data:

  time = 15, 45 ;

  time_bnds =
   0, 30,
   30, 60 ;

  lev = 0.899999976158142, 0.699999988079071, 0.550000011920929,
     0.300000011920929, 0.100000001490116 ;

  lev_bnds =
   1, 0.800000011920929,
   0.800000011920929, 0.620000004768372,
   0.620000004768372, 0.419999986886978,
   0.419999986886978, 0.200000002980232,
   0.200000002980232, 0 ;

  p0 = 100000 ;

  a = 0.100000001490116, 0.219999998807907, 0.300000011920929,
     0.200000002980232, 0.100000001490116 ;

  b = 0.800000011920929, 0.5, 0.200000002980232, 0.100000001490116, 0 ;

  ps =
   94100, 94500, 94900, 95300,
   95700, 96100, 96500, 96900,
   97300, 97700, 98100, 98500,
   94200, 94600, 95000, 95400,
   95800, 96200, 96600, 97000,
   97400, 97800, 98200, 98600 ;

  a_bnds =
   0, 0.159999996423721,
   0.159999996423721, 0.25,
   0.25, 0.25,
   0.25, 0.150000005960464,
   0.150000005960464, 0 ;

  b_bnds =
   1, 0.649999976158142,
   0.649999976158142, 0.349999994039536,
   0.349999994039536, 0.150000005960464,
   0.150000005960464, 0.0500000007450581,
   0.0500000007450581, 0 ;

  lat = 10, 20, 30 ;

  lat_bnds =
   5, 15,
   15, 25,
   25, 35 ;

  lon = 0, 90, 180, 270 ;

  lon_bnds =
   -45, 45,
   45, 135,
   135, 225,
   225, 315 ;

  cl =
   25.78, 25.86, 25.94, 26.02,
   25.46, 25.54, 25.62, 25.7,
   25.14, 25.22, 25.3, 25.38,
   24.5, 24.58, 24.66, 24.74,
   24.18, 24.26, 24.34, 24.42,
   23.86, 23.94, 24.02, 24.1,
   23.22, 23.3, 23.38, 23.46,
   22.9, 22.98, 23.06, 23.14,
   22.58, 22.66, 22.74, 22.82,
   21.94, 22.02, 22.1, 22.18,
   21.62, 21.7, 21.78, 21.86,
   21.3, 21.38, 21.46, 21.54,
   20.66, 20.74, 20.82, 20.9,
   20.34, 20.42, 20.5, 20.58,
   20.02, 20.1, 20.18, 20.26,
   25.8, 25.88, 25.96, 26.04,
   25.48, 25.56, 25.64, 25.72,
   25.16, 25.24, 25.32, 25.4,
   24.52, 24.6, 24.68, 24.76,
   24.2, 24.28, 24.36, 24.44,
   23.88, 23.96, 24.04, 24.12,
   23.24, 23.32, 23.4, 23.48,
   22.92, 23, 23.08, 23.16,
   22.6, 22.68, 22.76, 22.84,
   21.96, 22.04, 22.12, 22.2,
   21.64, 21.72, 21.8, 21.88,
   21.32, 21.4, 21.48, 21.56,
   20.68, 20.76, 20.84, 20.92,
   20.36, 20.44, 20.52, 20.6,
   20.04, 20.12, 20.2, 20.28 ;
}

_______________________________________________
CF-metadata mailing list
CF-metadata@cgd.ucar.edu
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to