diff --git a/docs/Contributors_Guide/continuous_integration.rst b/docs/Contributors_Guide/continuous_integration.rst index 996e93c98d..70727e6880 100644 --- a/docs/Contributors_Guide/continuous_integration.rst +++ b/docs/Contributors_Guide/continuous_integration.rst @@ -686,28 +686,140 @@ on DockerHub in *dtcenter/metplus-envs* and are named with a tag that corresponds to the keyword without the **_env** suffix. The environments were created using Docker commands via scripts that are found in *internal/scripts/docker_env*. -Existing keywords that set up Conda environments used for use cases are: - -* cfgrib_env -* h5py_env -* icecover_env -* metdatadb_env -* metplotpy_env -* netcdf4_env -* pygrib_env -* spacetime_env -* weatherregime_env -* xesmf_env +Existing keywords that set up Conda environments used for use cases, +with the versions of Python packages they contain are: + +**py_embed_base_env** + +* Python 3.10.4 +* xarray 2022.3.0 +* netcdf4 1.5.8 + +Note: Adding the py_embed_base_env keyword is not necessary if the *py_embed* +keyword is used (see Other Keywords). A Python Embedding use case that only +requires the minimum packages needed to run Python Embedding can use the +version of Python that MET was installed with. +The list of packages is only included here for reference, as other +environments use this environment as a base. + +**cfgrib_env** + +* Python 3.10.4 +* metpy 1.4.0 +* netcdf4 1.5.8 +* cfgrib 0.9.10.1 +* pygrib 2.1.4 + +**cycloneplotter_env** + +* Python 3.10.4 +* cartopy 0.20.3 +* matplotlib 3.5.2 +* pandas 1.4.3 + +**geovista_env** + +* geovista +* xarray 2022.11.0 +* iris 3.3.1 + +**h5py_env** + +* All packages in py_embed_base_env +* h5py 3.6.0 + +**icecover_env** + +* All packages in py_embed_base_env +* xarray 2022.3.0 +* pyresample 1.24.1 +* scikit-learn 1.1.1 +* pyproj 3.3.1 + +**metdataio_env** + +* Python 3.10.4 +* lxml 4.9.1 +* pymysql 1.0.2 +* pandas 1.5.1 + +**metplotpy_env** + +* Python 3.10.4 +* matplotlib 3.6.3 +* scipy 1.9.3 +* plotly 5.13.0 +* xarray 2023.1.0 +* netcdf4 1.6.2 +* pyyaml 6.0 +* python-kaleido 0.2.1 +* imageio 2.25.0 +* imutils 0.5.4 +* scikit-image +* pint 0.20.1 +* metpy +* cartopy 0.21.1 + +**netcdf4_env** + +* Python 3.10.4 +* netcdf4 1.5.8 + +**pandac_env** + +* All packages in metplotpy_env +* pygrib 2.1.4 + +**pygrib_env** + +* All packages in py_embed_base_env +* pygrib 2.1.4 +* metpy 1.3.0 + +**spacetime_env** + +* Python 3.10.4 +* netCDF4 1.5.8 +* xarray 2022.3.0 +* scipy 1.8.1 +* matplotlib 3.5.2 +* pyngl 1.6.1 +* pyyaml 6.0 + +**swpc_metpy_env** + +* All packages in py_embed_base_env +* metpy 1.4 + +**weatherregime_env** + +* All packages in py_embed_base_env +* scikit-learn 1.1.1 +* eofs 1.4.0 +* cmocean 2.0 + +**xesmf_env** + +* Python 3.10.4 +* netcdf4 1.5.8 +* xarray 2022.3.0 +* xesmf 0.3.0 + Example:: spacetime_env The above example uses the Conda environment -in *dtcenter/metplus-envs*:**spacetime** to run a user script. +in *dtcenter/metplus-envs*:**spacetime**.vX.Y to run a user script +where X.Y is the version of METplus when the environment was lasted updated, +e.g. 5.1. Note that only one dependency that contains the **_env** suffix can be supplied to a given use case. +If a new use case requires packages that are not included in these environments, +create a new discussion on the METplus Discussions board. + Other Environments """""""""""""""""" diff --git a/docs/Users_Guide/quicksearch.rst b/docs/Users_Guide/quicksearch.rst index 48303cdd57..15cf5dce50 100644 --- a/docs/Users_Guide/quicksearch.rst +++ b/docs/Users_Guide/quicksearch.rst @@ -151,7 +151,9 @@ Use Cases by METplus Feature: | `Looping by Month or Year <../search.html?q=LoopByMonthFeatureUseCase&check_keywords=yes&area=default>`_ | `List Expansion (using begin_end_incr syntax) <../search.html?q=ListExpansionFeatureUseCase&check_keywords=yes&area=default>`_ | `Masking for Regions of Interest <../search.html?q=MaskingFeatureUseCase&check_keywords=yes&area=default>`_ + | `METcalcpy <../search.html?q=METcalcpyUseCase&check_keywords=yes&area=default>`_ | `METdbLoad <../search.html?q=METdbLoadUseCase&check_keywords=yes&area=default>`_ + | `METplotpy <../search.html?q=METplotpyUseCase&check_keywords=yes&area=default>`_ | `MET_PYTHON_EXE Environment Variable <../search.html?q=MET_PYTHON_EXEUseCase&check_keywords=yes&area=default>`_ | `Multiple Conf File Use <../search.html?q=MultiConfUseCase&check_keywords=yes&area=default>`_ | `Observation Time Summary <../search.html?q=ObsTimeSummaryUseCase&check_keywords=yes&area=default>`_ @@ -180,7 +182,9 @@ Use Cases by METplus Feature: | **Looping by Month or Year**: *LoopByMonthFeatureUseCase* | **List Expansion (using begin_end_incr syntax)**: *ListExpansionFeatureUseCase* | **Masking for Regions of Interest**: *MaskingFeatureUseCase* + | **METcalcpy**: *METcalcpyUseCase* | **METdbLoad**: *METdbLoadUseCase* + | **METplotpy**: *METplotpyUseCase* | **MET_PYTHON_EXE Environment Variable**: *MET_PYTHON_EXEUseCase* | **Multiple Conf File Use**: *MultiConfUseCase* | **Observation Time Summary**: *ObsTimeSummaryUseCase* diff --git a/docs/use_cases/model_applications/medium_range/UserScript_fcstGEFS_Difficulty_Index.py b/docs/use_cases/model_applications/medium_range/UserScript_fcstGEFS_Difficulty_Index.py index 70ed34c635..f738570adf 100644 --- a/docs/use_cases/model_applications/medium_range/UserScript_fcstGEFS_Difficulty_Index.py +++ b/docs/use_cases/model_applications/medium_range/UserScript_fcstGEFS_Difficulty_Index.py @@ -185,6 +185,8 @@ # * UserScriptUseCase # * MediumRangeAppUseCase # * NRLOrgUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s/TCGen_fcstGFSO_obsBDECKS_GDF_TDF.py b/docs/use_cases/model_applications/s2s/TCGen_fcstGFSO_obsBDECKS_GDF_TDF.py index 4785bf3995..89625a4d52 100644 --- a/docs/use_cases/model_applications/s2s/TCGen_fcstGFSO_obsBDECKS_GDF_TDF.py +++ b/docs/use_cases/model_applications/s2s/TCGen_fcstGFSO_obsBDECKS_GDF_TDF.py @@ -212,7 +212,8 @@ # # * TCGenToolUseCase # * S2SAppUseCase -# * UserScriptUseCase +# * UserScriptUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s/UserScript_fcstS2S_obsERAI_CrossSpectra.py b/docs/use_cases/model_applications/s2s/UserScript_fcstS2S_obsERAI_CrossSpectra.py index 14991f557c..8733d24c41 100644 --- a/docs/use_cases/model_applications/s2s/UserScript_fcstS2S_obsERAI_CrossSpectra.py +++ b/docs/use_cases/model_applications/s2s/UserScript_fcstS2S_obsERAI_CrossSpectra.py @@ -140,6 +140,8 @@ # # * UserScriptUseCase # * S2SAppUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s/UserScript_obsERA_obsOnly_Stratosphere.py b/docs/use_cases/model_applications/s2s/UserScript_obsERA_obsOnly_Stratosphere.py index eac201a110..9f3fda7684 100644 --- a/docs/use_cases/model_applications/s2s/UserScript_obsERA_obsOnly_Stratosphere.py +++ b/docs/use_cases/model_applications/s2s/UserScript_obsERA_obsOnly_Stratosphere.py @@ -126,6 +126,7 @@ # # * UserScriptUseCase # * S2SAppUseCase +# * METcalcpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s/UserScript_obsPrecip_obsOnly_Hovmoeller.py b/docs/use_cases/model_applications/s2s/UserScript_obsPrecip_obsOnly_Hovmoeller.py index cbc5031ddf..2a9046a6ef 100644 --- a/docs/use_cases/model_applications/s2s/UserScript_obsPrecip_obsOnly_Hovmoeller.py +++ b/docs/use_cases/model_applications/s2s/UserScript_obsPrecip_obsOnly_Hovmoeller.py @@ -139,6 +139,7 @@ # # * UserScriptUseCase # * S2SAppUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_Blocking.py b/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_Blocking.py index e93bbe4a59..68af4fa32b 100644 --- a/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_Blocking.py +++ b/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_Blocking.py @@ -181,6 +181,8 @@ # * S2SMidLatAppUseCase # * NetCDFFileUseCase # * GRIB2FileUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_WeatherRegime.py b/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_WeatherRegime.py index c605c27727..2502c32968 100644 --- a/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_WeatherRegime.py +++ b/docs/use_cases/model_applications/s2s_mid_lat/UserScript_obsERA_obsOnly_WeatherRegime.py @@ -194,6 +194,8 @@ # * S2SMidLatAppUseCase # * NetCDFFileUseCase # * GRIB2FileUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s_mjo/UserScript_fcstGFS_obsERA_OMI.py b/docs/use_cases/model_applications/s2s_mjo/UserScript_fcstGFS_obsERA_OMI.py index 64cacbe08d..4ef6a1123a 100644 --- a/docs/use_cases/model_applications/s2s_mjo/UserScript_fcstGFS_obsERA_OMI.py +++ b/docs/use_cases/model_applications/s2s_mjo/UserScript_fcstGFS_obsERA_OMI.py @@ -135,6 +135,8 @@ # * S2SMJOAppUseCase # * RegridDataPlaneUseCase # * PCPCombineUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to :ref:`quick-search` to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s_mjo/UserScript_obsCFSR_obsOnly_MJO_ENSO.py b/docs/use_cases/model_applications/s2s_mjo/UserScript_obsCFSR_obsOnly_MJO_ENSO.py index 7af5b8f966..ffe6a06e12 100644 --- a/docs/use_cases/model_applications/s2s_mjo/UserScript_obsCFSR_obsOnly_MJO_ENSO.py +++ b/docs/use_cases/model_applications/s2s_mjo/UserScript_obsCFSR_obsOnly_MJO_ENSO.py @@ -138,6 +138,8 @@ # * NetCDFFileUseCase # * RegridDataPlaneUseCase # * PCPCombineUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to :ref:`quick-search` to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_PhaseDiagram.py b/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_PhaseDiagram.py index 7d27c127d0..9a07d4f8ec 100644 --- a/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_PhaseDiagram.py +++ b/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_PhaseDiagram.py @@ -134,6 +134,7 @@ # # * S2SAppUseCase # * S2SMJOAppUseCase +# * METplotpyUseCase # # Navigate to :ref:`quick-search` to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_RMM.py b/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_RMM.py index 15e2b7446f..5475735876 100644 --- a/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_RMM.py +++ b/docs/use_cases/model_applications/s2s_mjo/UserScript_obsERA_obsOnly_RMM.py @@ -141,6 +141,8 @@ # * NetCDFFileUseCase # * RegridDataPlaneUseCase # * PCPCombineUseCase +# * METcalcpyUseCase +# * METplotpyUseCase # # Navigate to :ref:`quick-search` to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_Planview.py b/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_Planview.py index 78b79292d3..09c3176765 100644 --- a/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_Planview.py +++ b/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_Planview.py @@ -165,6 +165,7 @@ # * ValidationUseCase # * ShortRangeAppUseCase # * S2SAppUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar # use cases. diff --git a/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalCrossSection.py b/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalCrossSection.py index e876ad80e7..3a4036f197 100644 --- a/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalCrossSection.py +++ b/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalCrossSection.py @@ -156,6 +156,7 @@ # * ValidationUseCase # * ShortRangeAppUseCase # * S2SAppUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. # diff --git a/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalProfile.py b/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalProfile.py index 43b3b0db9b..33a4cb9f84 100644 --- a/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalProfile.py +++ b/docs/use_cases/model_applications/short_range/UserScript_fcstFV3_fcstOnly_PhysicsTendency_VerticalProfile.py @@ -167,6 +167,7 @@ # * ValidationUseCase # * ShortRangeAppUseCase # * S2SAppUseCase +# * METplotpyUseCase # # Navigate to the :ref:`quick-search` page to discover other similar use cases. #