{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sam Rabin's utility example notebook for 1-d files\n", "\n", "Contains code to show example uses of the functions I add to utils.py which are designed to work with 1-dimensional (i.e., not lat-lon gridded) CTSM output data.\n", "\n", "Questions or comments? Email me: sam dot rabin at gmail dot com." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define useful variables\n", "\n", "You will need to customize these to work with your system and data." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Your path to ctsm_py directory (i.e., where utils.py lives)\n", "my_ctsm_python_gallery = \"/Users/sam/Documents/git_repos/ctsm_python_gallery_myfork/ctsm_py/\"\n", "\n", "# Directory where input file(s) can be found\n", "indir = \"/Volumes/Reacher/CESM_runs/f10_f10_mg37/\"\n", "\n", "# Either the name of a file within $indir, or a pattern that will return a list of files.\n", "pattern = \"*h1.*-01-01-00000.nc\"\n", "\n", "# List of variables to import from file(s) in $indir matching $pattern. Additional variables will be imported as necessary if they will be useful in gridding any of these. So, e.g., since CPHASE \n", "myVars = [\"CPHASE\", \\\n", " \"GDDHARV\", \n", " \"GDDPLANT\", \n", " \"GPP\", \n", " \"GRAINC_TO_FOOD\", \n", " \"NPP\", \n", " \"TLAI\", \n", " \"TOTVEGC\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import CTSM utils module" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import sys\n", "sys.path.append(my_ctsm_python_gallery)\n", "import utils" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import a dataset.\n", "\n", "- Set `myVars=None` to import all variables.\n", "- Currently, the `myVegtypes` argument will import only patches with vegetation types that are managed crops. Set `myVegTypes=None` to import all patches. You can also set `myVegTypes=some_list` to import only patches with any of some arbitrary list of vegetation types." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset>\n",
       "Dimensions:                  (patch: 1376, levgrnd: 25, levsoi: 20, levlak: 10, levdcmp: 25, time: 762, lon: 24, lat: 19, ivt: 79)\n",
       "Coordinates:\n",
       "  * patch                    (patch) int64 547 548 549 550 ... 4716 4733 4734\n",
       "  * levgrnd                  (levgrnd) float32 0.01 0.04 0.09 ... 28.87 42.0\n",
       "  * levsoi                   (levsoi) float32 0.01 0.04 0.09 ... 5.95 6.94 8.03\n",
       "  * levlak                   (levlak) float32 0.05 0.6 2.1 ... 25.6 34.33 44.78\n",
       "  * levdcmp                  (levdcmp) float32 0.01 0.04 0.09 ... 28.87 42.0\n",
       "  * time                     (time) object 2000-01-01 00:00:00 ... 2002-02-01...\n",
       "  * lon                      (lon) float32 0.0 15.0 30.0 ... 315.0 330.0 345.0\n",
       "  * lat                      (lat) float32 -90.0 -80.0 -70.0 ... 70.0 80.0 90.0\n",
       "  * ivt                      (ivt) int64 0 1 2 3 4 5 6 ... 72 73 74 75 76 77 78\n",
       "Data variables: (12/24)\n",
       "    patches1d_lon            (patch) float64 dask.array<chunksize=(1376,), meta=np.ndarray>\n",
       "    patches1d_lat            (patch) float64 dask.array<chunksize=(1376,), meta=np.ndarray>\n",
       "    patches1d_ixy            (patch) float64 dask.array<chunksize=(1376,), meta=np.ndarray>\n",
       "    patches1d_jxy            (patch) float64 dask.array<chunksize=(1376,), meta=np.ndarray>\n",
       "    patches1d_gi             (patch) float64 dask.array<chunksize=(1376,), meta=np.ndarray>\n",
       "    patches1d_li             (patch) float64 dask.array<chunksize=(1376,), meta=np.ndarray>\n",
       "    ...                       ...\n",
       "    GRAINC_TO_FOOD           (time, patch) float32 dask.array<chunksize=(365, 1376), meta=np.ndarray>\n",
       "    NPP                      (time, patch) float32 dask.array<chunksize=(365, 1376), meta=np.ndarray>\n",
       "    TLAI                     (time, patch) float32 dask.array<chunksize=(365, 1376), meta=np.ndarray>\n",
       "    TOTVEGC                  (time, patch) float32 dask.array<chunksize=(365, 1376), meta=np.ndarray>\n",
       "    vegtype_str              (ivt) <U35 'not_vegetated' ... 'irrigated_tropic...\n",
       "    patches1d_itype_veg_str  (patch) <U35 'temperate_corn' ... 'rice'\n",
       "Attributes: (12/99)\n",
       "    title:                                CLM History file information\n",
       "    comment:                              NOTE: None of the variables are wei...\n",
       "    Conventions:                          CF-1.0\n",
       "    history:                              created on 10/19/21 16:32:21\n",
       "    source:                               Community Terrestrial Systems Model\n",
       "    hostname:                             cheyenne\n",
       "    ...                                   ...\n",
       "    cft_irrigated_switchgrass:            60\n",
       "    cft_tropical_corn:                    61\n",
       "    cft_irrigated_tropical_corn:          62\n",
       "    cft_tropical_soybean:                 63\n",
       "    cft_irrigated_tropical_soybean:       64\n",
       "    time_period_freq:                     day_1
" ], "text/plain": [ "\n", "Dimensions: (patch: 1376, levgrnd: 25, levsoi: 20, levlak: 10, levdcmp: 25, time: 762, lon: 24, lat: 19, ivt: 79)\n", "Coordinates:\n", " * patch (patch) int64 547 548 549 550 ... 4716 4733 4734\n", " * levgrnd (levgrnd) float32 0.01 0.04 0.09 ... 28.87 42.0\n", " * levsoi (levsoi) float32 0.01 0.04 0.09 ... 5.95 6.94 8.03\n", " * levlak (levlak) float32 0.05 0.6 2.1 ... 25.6 34.33 44.78\n", " * levdcmp (levdcmp) float32 0.01 0.04 0.09 ... 28.87 42.0\n", " * time (time) object 2000-01-01 00:00:00 ... 2002-02-01...\n", " * lon (lon) float32 0.0 15.0 30.0 ... 315.0 330.0 345.0\n", " * lat (lat) float32 -90.0 -80.0 -70.0 ... 70.0 80.0 90.0\n", " * ivt (ivt) int64 0 1 2 3 4 5 6 ... 72 73 74 75 76 77 78\n", "Data variables: (12/24)\n", " patches1d_lon (patch) float64 dask.array\n", " patches1d_lat (patch) float64 dask.array\n", " patches1d_ixy (patch) float64 dask.array\n", " patches1d_jxy (patch) float64 dask.array\n", " patches1d_gi (patch) float64 dask.array\n", " patches1d_li (patch) float64 dask.array\n", " ... ...\n", " GRAINC_TO_FOOD (time, patch) float32 dask.array\n", " NPP (time, patch) float32 dask.array\n", " TLAI (time, patch) float32 dask.array\n", " TOTVEGC (time, patch) float32 dask.array\n", " vegtype_str (ivt) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray (time: 762, patch: 1376)>\n",
       "array([[2., 2., 3., ..., 4., 4., 4.],\n",
       "       [2., 2., 3., ..., 4., 4., 4.],\n",
       "       [2., 2., 3., ..., 4., 4., 4.],\n",
       "       ...,\n",
       "       [2., 2., 3., ..., 4., 4., 4.],\n",
       "       [2., 2., 3., ..., 4., 4., 4.],\n",
       "       [2., 2., 3., ..., 4., 4., 4.]], dtype=float32)\n",
       "Coordinates:\n",
       "  * time     (time) object 2000-01-01 00:00:00 ... 2002-02-01 00:00:00\n",
       "  * patch    (patch) int64 547 548 549 550 573 574 ... 4625 4715 4716 4733 4734
" ], "text/plain": [ "\n", "array([[2., 2., 3., ..., 4., 4., 4.],\n", " [2., 2., 3., ..., 4., 4., 4.],\n", " [2., 2., 3., ..., 4., 4., 4.],\n", " ...,\n", " [2., 2., 3., ..., 4., 4., 4.],\n", " [2., 2., 3., ..., 4., 4., 4.],\n", " [2., 2., 3., ..., 4., 4., 4.]], dtype=float32)\n", "Coordinates:\n", " * time (time) object 2000-01-01 00:00:00 ... 2002-02-01 00:00:00\n", " * patch (patch) int64 547 548 549 550 573 574 ... 4625 4715 4716 4733 4734" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Which variable? CPHASE = crop development phase.\n", "thisVar = \"CPHASE\"\n", "\n", "thisvar_da = utils.get_thisVar_da(thisVar, this_ds)\n", "thisvar_da" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Make a map of one timestep of some variable\n", "\n", "- Can also specify `thisTime` as an integer (index on `time` dimension).\n", "- (I want to rework this to use `xarray`'s built-in plotting functions.)\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/sam/Applications/anaconda3/lib/python3.7/site-packages/cartopy/mpl/geoaxes.py:1665: MatplotlibDeprecationWarning: shading='flat' when X and Y have the same dimensions as C is deprecated since 3.3. Either specify the corners of the quadrilaterals with X and Y, or pass shading='auto', 'nearest' or 'gouraud', or set rcParams['pcolor.shading']. This will become an error two minor releases later.\n", " result = matplotlib.axes.Axes.pcolor(self, *args, **kwargs)\n", "/Users/sam/Applications/anaconda3/lib/python3.7/site-packages/cartopy/mpl/geoaxes.py:388: MatplotlibDeprecationWarning: \n", "The 'inframe' parameter of draw() was deprecated in Matplotlib 3.3 and will be removed two minor releases later. Use Axes.redraw_in_frame() instead. If any parameter follows 'inframe', they should be passed as keyword, not positionally.\n", " inframe=inframe)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Which variable, which vegetation type, and when? CPHASE = crop development phase.\n", "thisVar = \"CPHASE\"\n", "thisVegtype = \"temperate_corn\"\n", "thisTime = \"2000-07-01\"\n", "\n", "import matplotlib.pyplot as plt\n", "import cartopy.crs as ccrs\n", "\n", "# Extract and grid the variable\n", "thisVar_da_gridded = utils.grid_one_variable(this_ds, thisVar, time=thisTime)\n", "\n", "# Make map\n", "thisVar_da_gridded = thisVar_da_gridded.sel(ivt_str=thisVegtype)\n", "if thisVar_da_gridded.shape[0] == 1:\n", " thisVar_da_gridded = thisVar_da_gridded.squeeze()\n", "else:\n", " raise ValueError(\"You must select one time step to plot\")\n", "thisVar_da_gridded = utils.cyclic_dataarray(thisVar_da_gridded)\n", "ax = plt.axes(projection=ccrs.PlateCarree())\n", "plt.pcolor(thisVar_da_gridded.lon.values, thisVar_da_gridded.lat.values, thisVar_da_gridded, transform=ccrs.PlateCarree())\n", "ax.coastlines()\n", "plt.show()" ] } ], "metadata": { "interpreter": { "hash": "e8083de178eb7a8a37debdd6606e8115abc0bcba8804cd799c64479bb9dd6f05" }, "kernelspec": { "display_name": "Python 3.7.9 64-bit ('base': conda)", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }