Skip to content

Enhance METplotpy to plot NetCDF output from MODE to replace MET's deprecated plot_mode_field utility #560

Description

@JohnHalleyGotway

Describe the New Feature

Issue dtcenter/MET#3322 and corresponding PR dtcenter/MET#3325 deprecated and remove the plot_mode_field utility to reduce MET's external dependencies. With that change, cairo, freetype, pixman, and Ghostscript fonts are no longer required. plot_mode_field was added in 2014, long before plotting functionality existed through METplotpy.

Recommend enhancing METplotpy to provide functionality roughly equivalent to plot_mode_field, but use input from METplus scientists to advise on desired features and functionality.

For reference, here's what the output from plot_mode_field's unit tests looked like:
Image
Image
Image

You do NOT need to exactly replicate these images. Instead, use advice from scientists to improve upon them.

Acceptance Testing

List input data types and sources.
Describe tests required for new functionality.

Time Estimate

Estimate the amount of work required here.
Issues should represent approximately 1 to 3 days of work.

Sub-Issues

Consider breaking the new feature down into sub-issues.

  • Add a checkbox for each sub-issue here.

Relevant Deadlines

List relevant project deadlines here or state NONE.

Funding Source

Define the source of funding and account keys here or state NONE.

Define the Metadata

Assignee

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

Labels

  • Review default alert labels
  • Select component(s)
  • Select priority
  • Select requestor(s)

Milestone and Projects###

  • Select Milestone as a METplotpy-X.Y.Z version, Consider for Next Release, or Backlog of Development Ideas
  • For a METplotpy-X.Y.Z version, select the METplotpy-X.Y.Z Development project

Define Related Issue(s)

Consider the impact to the other METplus components.

New Feature 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.
  • Add any new Python packages to the METplus Components Python Requirements table.
  • 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 issue
    Select: Milestone as the next official version
    Select: METplotpy-X.Y.Z Development project for development toward the next official release
  • Iterate until the reviewer(s) accept and merge your changes.
  • Delete your fork or branch.
  • Close this issue.

Activity

  1. bikegeek commented on Aug 6, 2026

    @bikegeek
    Collaborator

    @KathrynNewman , @michelleharrold , @DanielAdriaansen , @CPKalb, could you please elaborate on the features you want in the METplotpy version of the plot_mode_field plot?

    Some questions:

    It looks like the deprecated plot_mode_field utility was plotting the areas identified by their object_id

    • What criteria do you want to apply to the plotting? (what do you want control over?)
    • Will input data be a text or netCDF file (and which format do you need/use the most)
    • How much detail do you want to see on the underlying map of the CONUS (i.e. state lines, topography)
    • Any data that you want to see plotted would be appreciated
  2. moved this from 🩺 Needs Triage to 🟢 Ready in METplus-13.0 Developmenton Aug 6, 2026
  3. michelleharrold commented on Aug 6, 2026

    @michelleharrold

    @bikegeek and @KathrynNewman, as a starting point, here is an example of the plotting script I am using for MODE data. It's functionality likely needs to be expanded, but I at least wanted to provide an example. It can plot the raw fcst and obs field as well as the MODE objects for the fcst and obs. This example works for global fcst data and IMERG that has been run through MODE, but it hasn't been tested on limited-area domains. In my opinion, focusing on the NetCDF output is the best course. Thanks!

    Image Image

    plot_mode_objects_new.py

  4. moved this from 🟢 Ready to 🏗 In progress in METplus-13.0 Developmenton Aug 17, 2026
  5. removed their assignment
    on Aug 19, 2026
  6. linked a pull request that will close this issueFeature 560 mode field plot #586on Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions