Skip to content

Add Hovmoeller MJO diagnostic - #4564

Open
JurijSchoenfeld wants to merge 11 commits into
mainfrom
hovmoeller_mjo
Open

Add Hovmoeller MJO diagnostic#4564
JurijSchoenfeld wants to merge 11 commits into
mainfrom
hovmoeller_mjo

Conversation

@JurijSchoenfeld

@JurijSchoenfeld JurijSchoenfeld commented Jul 23, 2026

Copy link
Copy Markdown

Description

Evaluating atmospheric patterns like the MJO, is important to assess the performance of an ESM. Applications of this diagnostic include but are not limitted to evaluation of different convective parameterizations. The diagnostic adds a standard metric to diagnose MJO, which is not straight forward to compute, involving a (slightly) tricky filter operation.


Before you get started

Checklist

It is the responsibility of the author to make sure the pull request is ready to review. The icons indicate whether the item will be subject to the 🛠 Technical or 🧪 Scientific review.

New or updated recipe/diagnostic


To help with the number of pull requests:

ERA5_mjo_hovmoeller Compare to Figure 9 in Hannah et al. 2020 (https://doi.org/10.1029/2019MS001863)

@JurijSchoenfeld
JurijSchoenfeld requested a review from schlunma July 23, 2026 12:10
@CLAassistant

CLAassistant commented Jul 23, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@schlunma schlunma added this to the v2.16.0 milestone Jul 24, 2026

@schlunma schlunma left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @ApexCapybara @JurijSchoenfeld (copy-paste fail 🤦 ), looks great already! Just a couple of comments to make the code simpler. It would be great if you could add documentation to the recipe/diagnostic (e.g., like done in #3155).

If you want, you can also add your name to the CITATION.cff and .zenodo.json to become an official contributor.

Thanks 🚀

Comment thread esmvaltool/diag_scripts/mjo/mjo_hovmoeller.py Outdated
Comment thread esmvaltool/diag_scripts/mjo/mjo_hovmoeller.py Outdated
Comment thread esmvaltool/diag_scripts/mjo/mjo_hovmoeller.py Outdated
Comment thread esmvaltool/recipes/recipe_mjo_hovmoeller.yml Outdated
Comment thread esmvaltool/recipes/recipe_mjo_hovmoeller.yml Outdated
Comment thread esmvaltool/recipes/recipe_mjo_hovmoeller.yml Outdated
Comment thread esmvaltool/recipes/recipe_mjo_hovmoeller.yml Outdated
Comment thread esmvaltool/recipes/recipe_mjo_hovmoeller.yml Outdated
Comment thread .gitignore
@JurijSchoenfeld
JurijSchoenfeld marked this pull request as ready for review July 24, 2026 12:44
@JurijSchoenfeld

Copy link
Copy Markdown
Author

Hi @schlunma I pushed my commits containing all your feedback. I also resolved most of commit autoreview comments except the code style warnings from Codacy that I find a bit pedantic. Please let me know if you have further questions or need me to change anything :)

@schlunma

Copy link
Copy Markdown
Contributor

Thanks @JurijSchoenfeld, that's great! I added a couple of commits with automatic fixes, which got rid of almost all Codacy warnings.

The only thing that's missing is a little bit of documentation. You could take a look at #4561 and do it the same way (focus on the files in doc/sphinx/source/). You can more or less copy-paste the information from the docstring of your diagnostic to an *.rst file in the docs. That would be great, thanks so much!!

@JurijSchoenfeld

Copy link
Copy Markdown
Author

Hi @schlunma, I added some documentation and used the template.rst file as a reference. Let me know if you need further changes

@schlunma schlunma left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fantastic, thanks so much @JurijSchoenfeld! It might make sense to generalize the docs within #3995 once this is ready for review, but for now this looks good to me!

@ESMValGroup/atmosphere would anyone be able to do a quick science review of this? On the surface this looks good to me, but I am certainly no expert on this topic. Thanks so much!

Example output is available here: https://swift.dkrz.de/v1/dkrz_4eefb34f-8803-415a-bd70-9c455db9a403/esmvaltool_output/mjo_jurij/index.html

@schlunma schlunma changed the title Hovmoeller mjo Add Hovmoeller MJO diagnostic Jul 31, 2026

@LisaBock LisaBock left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @JurijSchoenfeld !
Looks mostly fine to me. I have only two small comments.

contour_levels: 21
colormap: RdYlBu
plot_title: MJO precipitation Hovmöller diagram
colorbar_label: Precipitation regression (kg m-2 day-1)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you can write here "mm day-1" as units in the brackets. We use this typically for precipitation.

longitude = longitude[order]
regression = regression[:, order]

vmax = np.ma.max(np.ma.abs(regression))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be useful if you would be able to set vmax also in the recipe. This enables an easier comparison between model and observation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MJO with Hovmöller plot

4 participants