Skip to content

Bugfix: Refine support for coordinate dimensions in CF-compliant NetCDF files #2638

@JohnHalleyGotway

Description

@JohnHalleyGotway

Describe the Enhancement

This issue arose via GitHub discussion dtcenter/METplus#2273 from @robdarvell and is demonstrated by running the plot_data_plane tool. Use this file to demonstrate the issue:
percentile_extract_20230729T1200Z-B20230725T0030Z-visibility_at_screen_level.nc.gz

The goal is to retrieve 2D fields from this variable:
float visibility_in_air(percentile, projection_y_coordinate, projection_x_coordinate) ;

Plotting the 0-th percentile index works as expected:
plot_data_plane percentile_extract_20230729T1200Z-B20230725T0030Z-visibility_at_screen_level.nc plot.ps 'name="visibility_in_air"; level="(0,*,*)";'
Screen Shot 2023-08-03 at 12 39 42 PM
Plotting the VALUE of the first percentile also works fine:
plot_data_plane percentile_extract_20230729T1200Z-B20230725T0030Z-visibility_at_screen_level.nc plot.ps 'name="visibility_in_air"; level="(@5,*,*)";'

However, plotting ANY OTHER index or percentile value produces a runtime error:

  • name="visibility_in_air"; level="(1,*,*)";'
  • name="visibility_in_air"; level="(@10,*,*)";'
  • name="visibility_in_air"; level="(6,*,*)";'
  • name="visibility_in_air"; level="(@50,*,*)";'

Here's the error:

ERROR  : 
ERROR  : MetNcCFDataFile::data_plane(VarInfo &, DataPlane &) -> the requested vertical value 50 for "visibility_in_air" variable does not exist (data size = 1).
ERROR  : 

I assumed that the changes for #1815 included in MET version 11.0.0 would enable this logic to work. In general, for an N-dimensional NetCDF variable, exactly 2 of those dimensions should define the X/Y dimensions. The remaining dimensions should be settable by specifying their index as an integer. Additionally, for coordinate variables (i.e. dimension and 1-d variable of the same name), MET should support the @ syntax to specify the value for that dimension.

This issue is to refine the logic to support the processing of this data.

Please fix this in the main_v11.1 branch to be included in an 11.1.1 bugfix release. Please also fix this in the develop branch to be included in the 12.0.0 official release.

Recommend adding a unit test using the input file.

Time Estimate

2 days?

Sub-Issues

Consider breaking the enhancement down into sub-issues.
None needed.

Relevant Deadlines

List relevant project deadlines here or state NONE.

Funding Source

2799991

Define the Metadata

Assignee

  • Select engineer(s) or no engineer required
  • Select scientist(s) or no scientist required

Labels

  • Select component(s)
  • Select priority
  • Select requestor(s)

Projects and Milestone

  • Select Repository and/or Organization level Project(s) or add alert: NEED CYCLE ASSIGNMENT label
  • Select Milestone as the next official version or Future Versions

Define Related Issue(s)

Consider the impact to the other METplus components.

Enhancement Checklist

See the METplus Workflow for details.

  • Complete the issue definition above, including the Time Estimate and Funding Source.
  • Fork this repository or create a branch of develop.
    Branch name: feature_<Issue Number>_<Description>
  • Complete the development and test your changes.
  • Add/update log messages for easier debugging.
  • Add/update unit tests.
  • Add/update documentation.
  • Push local changes to GitHub.
  • Submit a pull request to merge into develop.
    Pull request: feature <Issue Number> <Description>
  • Define the pull request metadata, as permissions allow.
    Select: Reviewer(s) and Development issues
    Select: Repository level development cycle Project for the next official release
    Select: Milestone as the next official version
  • Iterate until the reviewer(s) accept and merge your changes.
  • Delete your fork or branch.
  • Close this issue.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

🏁 Done

Relationships

None yet

Development

No branches or pull requests

Issue actions