{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Starting Computations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{admonition} Lesson Content\n", ":class: note, dropdown\n", "\n", "- Dataset\n", "- Some computation\n", "- Filtering and Masking values\n", "\n", ":::" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Context\n", "\n", "Yesterday we explored the data structures that `xarray` uses to organize data. Today we are going to use those datastructres to manipulate data!" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import xarray as xr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dataset\n", "\n", "The dataset of the day today is NOAA OISST. It is a sea surface temperature dataset that goes back to the 1980s.\n", "\n", "- [NOAA NCEI Data listing](https://www.ncei.noaa.gov/products/optimum-interpolation-sst)\n", "- [THREDDS Catalog](https://www.ncei.noaa.gov/thredds/catalog/OisstBase/NetCDF/V2.1/AVHRR/198210/catalog.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Different from yesterday, where we downloaded a copy of the dataset locally, we will access this data by URL. That means that we won't be downloading it directly. Instead of giving a filepath on our local computer, we are giving and URL from what is called a THREDDS Catalog, and xarray is able to read that." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n", "Dimensions: (lat: 720, lon: 1440, time: 1, zlev: 1)\n", "Coordinates:\n", " * lat (lat) float32 -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88\n", " * lon (lon) float32 0.125 0.375 0.625 0.875 ... 359.1 359.4 359.6 359.9\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00\n", " * zlev (zlev) float32 0.0\n", "Data variables:\n", " anom (time, zlev, lat, lon) float32 ...\n", " err (time, zlev, lat, lon) float32 ...\n", " ice (time, zlev, lat, lon) float32 ...\n", " sst (time, zlev, lat, lon) float32 ...\n", "Attributes: (12/38)\n", " title: NOAA/NCEI 1/4 Degree Daily Optimum Inter...\n", " source: ICOADS, NCEP_GTS, GSFC_ICE, NCEP_ICE, Pa...\n", " id: oisst-avhrr-v02r01.19821007.nc\n", " naming_authority: gov.noaa.ncei\n", " summary: NOAAs 1/4-degree Daily Optimum Interpola...\n", " cdm_data_type: Grid\n", " ... ...\n", " ncei_template_version: NCEI_NetCDF_Grid_Template_v2.0\n", " comment: Data was converted from NetCDF-3 to NetC...\n", " sensor: Thermometer, AVHRR\n", " Conventions: CF-1.6, ACDD-1.3\n", " references: Reynolds, et al.(2007) Daily High-Resolu...\n", " DODS_EXTRA.Unlimited_Dimension: time
<xarray.DataArray 'sst' ()>\n", "array(33.21, dtype=float32)
<xarray.DataArray 'sst' ()>\n", "array(-1.8, dtype=float32)
<xarray.DataArray 'sst' (time: 1, lat: 720)>\n", "array([[ nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, nan, nan,\n", " nan, -1.30999994e+00, -1.32999992e+00,\n", " -1.36000001e+00, -1.36000001e+00, -1.38000000e+00,\n", " -1.15999997e+00, -1.07999992e+00, -1.10000002e+00,\n", " -1.02999997e+00, -1.22000003e+00, -1.33999991e+00,\n", " -1.33999991e+00, -1.36000001e+00, -1.32999992e+00,\n", "...\n", " 7.00000000e+00, 6.34999990e+00, 5.42000008e+00,\n", " 5.27999973e+00, 5.30999994e+00, 5.38999987e+00,\n", " 4.42999983e+00, 3.74000001e+00, 3.42999983e+00,\n", " 3.13999987e+00, 3.01999998e+00, 2.95000005e+00,\n", " 3.09999990e+00, 3.52999997e+00, 3.51999998e+00,\n", " 3.34999990e+00, 3.24000001e+00, 2.88999987e+00,\n", " 2.49000001e+00, 2.54999995e+00, 1.89999998e+00,\n", " 1.14999998e+00, 1.05999994e+00, 7.99999952e-01,\n", " 4.29999977e-01, 9.99999978e-03, -2.09999993e-01,\n", " -3.59999985e-01, -4.79999989e-01, -5.50000012e-01,\n", " -6.39999986e-01, -6.99999988e-01, -7.29999959e-01,\n", " -7.59999990e-01, -7.50000000e-01, -7.19999969e-01,\n", " -6.99999988e-01, -6.89999998e-01, -6.80000007e-01,\n", " -6.80000007e-01, -7.29999959e-01, -7.79999971e-01,\n", " -8.19999993e-01, -8.59999955e-01, -8.99999976e-01,\n", " -9.39999998e-01, -9.69999969e-01, -1.00000000e+00,\n", " -1.02999997e+00, -1.05999994e+00, -1.07999992e+00,\n", " -1.10000002e+00, -1.12000000e+00, -1.13999999e+00,\n", " -1.14999998e+00, -1.16999996e+00, -1.17999995e+00,\n", " -1.17999995e+00, -1.18999994e+00, -1.18999994e+00]], dtype=float32)\n", "Coordinates:\n", " * lat (lat) float32 -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00
<xarray.DataArray 'sst' (time: 1, lon: 1440)>\n", "array([[25.96 , 25.99 , 26.029999, ..., 26.17 , 26.099998,\n", " 26.029999]], dtype=float32)\n", "Coordinates:\n", " * lon (lon) float32 0.125 0.375 0.625 0.875 ... 359.1 359.4 359.6 359.9\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00
<xarray.DataArray 'sst' (time: 1, lat: 720, lon: 1440)>\n", "array([[[False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " ...,\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False]]])\n", "Coordinates:\n", " * lat (lat) float32 -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88\n", " * lon (lon) float32 0.125 0.375 0.625 0.875 ... 359.1 359.4 359.6 359.9\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00
<xarray.DataArray 'sst' (time: 1, lat: 720, lon: 1440)>\n", "array([[[False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " ...,\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False]]])\n", "Coordinates:\n", " * lat (lat) float32 -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88\n", " * lon (lon) float32 0.125 0.375 0.625 0.875 ... 359.1 359.4 359.6 359.9\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00
<xarray.DataArray 'sst' (time: 1, lat: 720, lon: 1440)>\n", "array([[['cold', 'cold', 'cold', ..., 'cold', 'cold', 'cold'],\n", " ['cold', 'cold', 'cold', ..., 'cold', 'cold', 'cold'],\n", " ['cold', 'cold', 'cold', ..., 'cold', 'cold', 'cold'],\n", " ...,\n", " ['cold', 'cold', 'cold', ..., 'cold', 'cold', 'cold'],\n", " ['cold', 'cold', 'cold', ..., 'cold', 'cold', 'cold'],\n", " ['cold', 'cold', 'cold', ..., 'cold', 'cold', 'cold']]],\n", " dtype='<U4')\n", "Coordinates:\n", " * lat (lat) float32 -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88\n", " * lon (lon) float32 0.125 0.375 0.625 0.875 ... 359.1 359.4 359.6 359.9\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00
<xarray.DataArray 'sst' (time: 1, lat: 720, lon: 1440)>\n", "array([[[nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " ...,\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)\n", "Coordinates:\n", " * lat (lat) float32 -89.88 -89.62 -89.38 -89.12 ... 89.38 89.62 89.88\n", " * lon (lon) float32 0.125 0.375 0.625 0.875 ... 359.1 359.4 359.6 359.9\n", " * time (time) datetime64[ns] 1982-10-07T12:00:00