{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ca315e56",
   "metadata": {},
   "source": [
    "# Oklahoma severe-weather reports, May 2024\n",
    "\n",
    "Storm Events support is **available since v0.8**. This notebook downloads one complete annual NCEI **event-details** archive (about 13 MB compressed for 2024), opens the gzip CSV locally, and selects Oklahoma reports beginning in May. We compare recorded tornado, hail, and thunderstorm-wind events and inspect the tornado damage ratings.\n",
    "\n",
    "This is a description of archived reports, not a forecast, risk ranking, or count of distinct storms. An episode can have many events, and a tornado can cross counties and generate multiple event records. Archive revisions can change saved results. The separate locations and individual-fatality tables are outside this adapter's scope.\n",
    "\n",
    "Run `just notebooks` from the repository root. The first run needs internet access. Keep the manifest, generated lockfile, and cached source bytes together for reproducibility."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "840afc0c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Executed UTC: 2026-09-09T00:31:23.262021+00:00\n",
      "Versions: {'Python': '3.14.3', 'usdata': '0.7.0', 'pandas': '3.0.5', 'matplotlib': '3.11.1'}\n"
     ]
    }
   ],
   "source": [
    "import platform\n",
    "from datetime import UTC, datetime\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "\n",
    "import usdata\n",
    "from usdata.cache import sha256_file\n",
    "from usdata.pull import pull, verify\n",
    "\n",
    "folder = Path.cwd()\n",
    "if not (folder / \"dataset.yaml\").exists():\n",
    "    folder = folder / \"examples\" / \"storm-events\"\n",
    "manifest = folder / \"dataset.yaml\"\n",
    "assert manifest.is_file(), \"Run from the notebook folder or repository root\"\n",
    "print(\"Executed UTC:\", datetime.now(UTC).isoformat())\n",
    "print(\n",
    "    \"Versions:\",\n",
    "    {\n",
    "        \"Python\": platform.python_version(),\n",
    "        \"usdata\": usdata.__version__,\n",
    "        \"pandas\": pd.__version__,\n",
    "        \"matplotlib\": matplotlib.__version__,\n",
    "    },\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84dc161c",
   "metadata": {},
   "source": [
    "## Resolve and pin the source archive\n",
    "\n",
    "The query touches May 2024, but the adapter selects **all of the 2024 file**, including all states and event types. Geographic and variable selectors are rejected; filtering belongs in the analysis. The newest supported creation-date filename is selected when resolving. Subsequent `pull` calls use the exact filename and checksum in the lockfile, without consulting the directory again. Historical files can be revised or removed upstream; a lockfile detects changed bytes but cannot guarantee old downloads remain available."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "932166b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Archive: StormEvents_details-ftp_v1.0_d2024_c20260728.csv.gz\n",
      "Compressed bytes: 12693243\n",
      "Nominal file year: 2024\n",
      "Source URL: https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-ftp_v1.0_d2024_c20260728.csv.gz\n",
      "Retrieved UTC: 2026-09-09T00:31:36.336422+00:00\n",
      "SHA-256: sha256:2070b83eccab041b36360ab73645b9a249c3eefc5b92b5b3fc0cbba4d9fcc09c\n"
     ]
    }
   ],
   "source": [
    "result = pull(manifest)\n",
    "(item,) = result.fetched\n",
    "print(\"Archive:\", item.asset.id)\n",
    "print(\"Compressed bytes:\", item.provenance.size)\n",
    "print(\"Nominal file year:\", item.asset.time.start.year)\n",
    "print(\"Source URL:\", item.provenance.source_url)\n",
    "print(\"Retrieved UTC:\", item.provenance.retrieved_at.isoformat())\n",
    "print(\"SHA-256:\", item.provenance.checksum)\n",
    "assert item.path.read_bytes()[:2] == b\"\\x1f\\x8b\"\n",
    "source_checksum = sha256_file(item.path)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6486a43",
   "metadata": {},
   "source": [
    "## Open locally and filter by reported civil date\n",
    "\n",
    "`open()` decompresses in memory through a local stream; the cached file and its checksum remain compressed and unchanged. Identifier columns retain their source strings. We construct the begin **calendar date** from numeric year/month/day fields, avoiding ambiguous two-digit dates. These are reported local dates; this notebook makes no conversion to UTC. `CZ_TIMEZONE` needs separate attention when comparing precise event instants across regions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c97134b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Rows in annual details archive: 69801\n",
      "Rows with unparseable begin date: 0\n",
      "Selected records: 589 distinct EVENT_ID: 589\n",
      "Recorded time-zone labels: ['CST-6']\n",
      "Identifier dtypes: {'EVENT_ID': 'string', 'EPISODE_ID': 'string', 'STATE_FIPS': 'string', 'CZ_FIPS': 'string'}\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>EVENT_ID</th>\n",
       "      <th>BEGIN_DATE</th>\n",
       "      <th>EVENT_TYPE</th>\n",
       "      <th>CZ_TYPE</th>\n",
       "      <th>CZ_FIPS</th>\n",
       "      <th>TOR_F_SCALE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>256</th>\n",
       "      <td>1178562</td>\n",
       "      <td>2024-05-06</td>\n",
       "      <td>Hail</td>\n",
       "      <td>C</td>\n",
       "      <td>81</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15716</th>\n",
       "      <td>1222698</td>\n",
       "      <td>2024-05-06</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>73</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16029</th>\n",
       "      <td>1222697</td>\n",
       "      <td>2024-05-06</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>103</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16743</th>\n",
       "      <td>1222699</td>\n",
       "      <td>2024-05-06</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>73</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16744</th>\n",
       "      <td>1222700</td>\n",
       "      <td>2024-05-19</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>39</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17577</th>\n",
       "      <td>1222696</td>\n",
       "      <td>2024-05-06</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>47</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17649</th>\n",
       "      <td>1222701</td>\n",
       "      <td>2024-05-25</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>47</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17752</th>\n",
       "      <td>1183460</td>\n",
       "      <td>2024-05-25</td>\n",
       "      <td>Thunderstorm Wind</td>\n",
       "      <td>C</td>\n",
       "      <td>131</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      EVENT_ID BEGIN_DATE         EVENT_TYPE CZ_TYPE CZ_FIPS TOR_F_SCALE\n",
       "256    1178562 2024-05-06               Hail       C      81         NaN\n",
       "15716  1222698 2024-05-06  Thunderstorm Wind       C      73         NaN\n",
       "16029  1222697 2024-05-06  Thunderstorm Wind       C     103         NaN\n",
       "16743  1222699 2024-05-06  Thunderstorm Wind       C      73         NaN\n",
       "16744  1222700 2024-05-19  Thunderstorm Wind       C      39         NaN\n",
       "17577  1222696 2024-05-06  Thunderstorm Wind       C      47         NaN\n",
       "17649  1222701 2024-05-25  Thunderstorm Wind       C      47         NaN\n",
       "17752  1183460 2024-05-25  Thunderstorm Wind       C     131         NaN"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "columns = [\n",
    "    \"BEGIN_YEARMONTH\",\n",
    "    \"BEGIN_DAY\",\n",
    "    \"EVENT_ID\",\n",
    "    \"EPISODE_ID\",\n",
    "    \"STATE\",\n",
    "    \"STATE_FIPS\",\n",
    "    \"CZ_TYPE\",\n",
    "    \"CZ_FIPS\",\n",
    "    \"EVENT_TYPE\",\n",
    "    \"CZ_TIMEZONE\",\n",
    "    \"TOR_F_SCALE\",\n",
    "]\n",
    "frame = item.open(usecols=columns)\n",
    "yearmonth = pd.to_numeric(frame[\"BEGIN_YEARMONTH\"], errors=\"coerce\")\n",
    "begin_date = pd.to_datetime(\n",
    "    {\"year\": yearmonth // 100, \"month\": yearmonth % 100, \"day\": frame[\"BEGIN_DAY\"]}, errors=\"coerce\"\n",
    ")\n",
    "types = [\"Tornado\", \"Hail\", \"Thunderstorm Wind\"]\n",
    "selected = frame.loc[\n",
    "    frame[\"STATE\"].eq(\"OKLAHOMA\")\n",
    "    & begin_date.ge(\"2024-05-01\")\n",
    "    & begin_date.lt(\"2024-06-01\")\n",
    "    & frame[\"EVENT_TYPE\"].isin(types)\n",
    "].copy()\n",
    "selected[\"BEGIN_DATE\"] = begin_date.loc[selected.index]\n",
    "print(\"Rows in annual details archive:\", len(frame))\n",
    "print(\"Rows with unparseable begin date:\", int(begin_date.isna().sum()))\n",
    "print(\"Selected records:\", len(selected), \"distinct EVENT_ID:\", selected[\"EVENT_ID\"].nunique())\n",
    "print(\"Recorded time-zone labels:\", sorted(selected[\"CZ_TIMEZONE\"].dropna().unique()))\n",
    "print(\n",
    "    \"Identifier dtypes:\",\n",
    "    {name: str(frame[name].dtype) for name in [\"EVENT_ID\", \"EPISODE_ID\", \"STATE_FIPS\", \"CZ_FIPS\"]},\n",
    ")\n",
    "assert not selected.empty\n",
    "assert frame.attrs[\"usdata\"][\"provenance\"][\"checksum\"] == source_checksum\n",
    "selected[[\"EVENT_ID\", \"BEGIN_DATE\", \"EVENT_TYPE\", \"CZ_TYPE\", \"CZ_FIPS\", \"TOR_F_SCALE\"]].head(8)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f1d9b601",
   "metadata": {},
   "source": [
    "## Compare recorded events and tornado ratings\n",
    "\n",
    "Counts below are distinct `EVENT_ID` values, not distinct episodes or physical tornadoes. `CZ_TYPE` distinguishes counties from forecast zones and marine areas; `CZ_FIPS` alone is not universally a county FIPS code. The second chart keeps missing ratings visible. `EFU` is the source code for an unknown Enhanced Fujita rating, retained as its own category ([NWS explanation](https://www.weather.gov/dmx/iators2019)). Enhanced Fujita ratings describe damage-based estimates; they are neither direct wind measurements nor comparable to hail diameters or wind gusts. This single-month analysis avoids treating changes in reporting and historical event coverage as climate trends."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "61137a1d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Distinct event records by type:\n",
      "EVENT_TYPE\n",
      "Tornado               61\n",
      "Hail                 358\n",
      "Thunderstorm Wind    170\n",
      "\n",
      "Tornado records by reported rating:\n",
      "RATING\n",
      "EF0    17\n",
      "EF1    26\n",
      "EF2     5\n",
      "EF3     2\n",
      "EF4     1\n",
      "EFU    10\n"
     ]
    },
    {
     "data": {
      "image/png": "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BwBcXFywYsWK3AqNiIiIvtCrV6/QuHFjlCtXDvv3788ykQeAuLi4TNdzzhv6HP/uRFTYqPq+xnc/IiIiynVRUVFo0qQJypUrh4MHD8o9djbdwYMH5Z5GExkZiT/++AM+Pj75GSoREZFGKlCz2RMREVHhMGDAANy8eRP29vYYOHCgVF69enV8913abdGvXr2Cs7MzqlSpAiEEzpw5g06dOmH69OlqipqIiEhzMJknIiKiXPftt9/Cz89PobxcuXLS7/3790fnzp1x8eJFJCUlYfXq1bC2ts7HKImIiDQXk3kiIiLKdc2bN1epnomJCZo1a5bH0RARERU+HDNPREREREREpGGYzBMRERERERFpGCbzRERERERERBqGyTwRERERERGRhmEyT0RERERERKRhmMwTERERERERaRgm80REREREREQahsk8ERERERERkYZhMk9ERERERESkYZjMExEREREREWkYJvNEREREREREGobJPBEREREREZGGYTJPREREREREpGGYzBMRERERERFpGCbzRERERERERBqGyTwRERERERGRhtFVdwDnzp3D0aNH8eHDBzg6OqJbt24oUqSIXJ1Hjx7h999/x8uXL+Hs7Iw+ffrAwMAg23WIiIiIiIiICgO1XpkfNmwYfvjhBxgaGsLCwgJLly6Fq6sr3r59K9W5efMmqlevjitXrsDKygpLly5FkyZNkJycnK06RERERERERIWFWq/Mjxs3DtbW1tLywIEDUapUKRw+fBg9evQAAEyYMAFubm7Ys2cPtLS00KtXL9jY2GDz5s3o16+fynWIiIiIiIiICgu1Xpn/NJEHgDdv3iA1NRVlypQBACQlJeHo0aPw9/eHlpYWAKBs2bJo3LgxDh48qHIdIiIiIiIiosJE7WPmb9y4gUWLFiEmJgYhISFYunQpmjVrBiBtHHxycrJC0m9jY4MzZ86oXEeZxMREJCYmSssxMTEAAJlMBplMlgtHRkSahP/3VNjwNU1ERFS4qT2ZNzU1RZ06dRAVFYVbt24hMDAQvXr1gqmpKeLj4wEAxsbGctsYGxtL61Spo8ycOXMwY8YMhfK3b98iJSXli46JiDRPdHS0ukMgylWxsbHqDoGIiIjykNqT+fLly2PAgAEA0ibEs7Ozw6JFizB9+nSYmJgAgNyEeEDah+70darUUWbSpEkYM2aMtBwTEwMr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HyMiIiKijGQrmffy8sKDBw+yrKOq5s2b488//1Qo/3TMoY6ODlasWIH58+dLtwB+Pg5QlTpERESUMUdHR5w6dSrT87y1tTXMzc3zLygiIiLKULYy3tx+bruxsTGMjY1VqmtkZAQjI6MvrkNERESKlD3hhYiIiAqugjNTDxERERERERGphMk8ERERERERkYZhMk9ERERERESkYZjMExEREREREWkYJvNEREREREREGobJPBEREREREZGGYTJPREREREREpGGy9Zx5IiIiotySmJiI169fK5RbWFhAV5cfUYiIiDLDMyURERGpxZkzZ9C8eXNYWlrKlZ86dQq2trZqioqIiEgzMJknIiIitXry5Im6QyAiItI4HDNPREREavXx40fExMSoOwwiIiKNwmSeiIiI1Mrc3BxlypSBlZUV1qxZo+5wiIiINAJvsyciIiK1MDU1xdatW+Hn5wddXV1s3rwZ/fr1g7GxMbp166Z0m8TERCQmJkrL6Vf0ZTIZZDJZvsSdnwrjMeU29hERFRS59X6kajtM5omIiEgtPDw84OHhIS337t0bhw8fxurVqzNM5ufMmYMZM2YolL99+xYpKSl5Fqu6REdHqzuEAq+g9dGojuvUHYKCxXv7qzsEoq9Cbr0fxcbGqlSPyTwREREVGJUqVcK///6b4fpJkyZhzJgx0nJMTAysrKxgZmYGExOT/AgxX5UoUULdIRR47KOssY+I8kdu/a+p+nhWJvNERESkFjKZDNra8tP3XLhwAZUqVcpwGwMDAxgYGCiUa2trK7RVGBTGY8pt7KOssY+I8kdu/a+p2g6TeSIiIlKLQYMGwdnZGV5eXhBCYM2aNThz5gz+/PNPdYdGRERU4PFrOiIiIlKL+fPn48WLFxgwYAB69+6Nd+/eISQkBM2aNVN3aERERAUer8wXYAGe89QdQoG35cwEdYdAREQ5ZGZmhjlz5mDOnDnqDoWIiEjjFPhk/tmzZwqzAhoaGqJy5coKdd+9e4eoqChUqFAB+vr6+RUiERERERERUb4q8Mn8zJkzsW3bNlhZWUllVapUwd69e6XllJQUDB48GFu2bEHJkiXx8eNHLF26FL169VJHyERERERERER5qsAn8wDQvHlz7N69O8P1P/30E4KCgnDz5k3Y2tpi06ZN6Nu3L1xcXFCjRo38C5SIiIiIiIgoH2jEBHgymQz37t3DmzdvlK5fs2YNBg4cCFtbWwBAr169YGdnh7Vr1+ZnmERERERERET5QiOS+b1796JRo0awsrJCtWrVcPr0aWndixcv8PTpU9SuXVtum7p16+Ly5cv5HSoRERERERFRnivwt9k3bNgQEyZMgI2NDRITEzFq1Ci0bdsW4eHhsLKykq7WlyxZUm67kiVLIioqKsN2ExMTkZiYKC3HxMQASLsLQCaT5cGRUF7g34pyC19LlBsK0uuoIMVCREREua/AJ/Pdu3eXfjcwMMCSJUuwdetW7NmzByNHjoSubtohJCUlyW2XmJgIPT29DNudM2cOZsyYoVD+9u1bpKSk5FL0lNc+f9IBUU7xtUS5oSC9jmJjY9UdAhEREeWhAp/Mf05fXx+lS5fG48ePAQCWlpbQ0tLC8+fP5eo9f/5cbgb8z02aNAljxoyRlmNiYmBlZQUzMzOYmJjkTfCU60qUKKHuEKiQ4Gspa8+zrvLVK0ivo/Qvu4mIiKhwKtBneiEEUlJS5K6wP3z4EA8fPoS9vT0AoFixYvDw8MDhw4fRrVs3AGlX5f/66y9MmDAhw7YNDAxgYGCgUK6trQ1tbY2YSoAA/q0o1/C1RLmhIL2OClIsRERElPsKdDKfnJyMWrVqYcSIEXB0dMSjR48wffp02NnZoUePHlK9GTNmwMfHB05OTqhbty4WLVoEIyMjDBkyRI3RExEREREREeWNAv21vb6+Pnbv3o2QkBCMGjUKGzZsQEBAAC5duoSiRYtK9by9vREUFIRTp05h9OjRMDU1xdmzZ1G8eHH1BU9ERERERESURwr0lXkAqFy5MlasWJFlPW9vb3h7e+dDRERERERERETqVaCvzBMRERERERGRIibzRERERERERBqGyTwRERERERGRhmEyT0RERERERKRhmMwTERERERERaRgm80REREREREQahsk8ERERERERkYZhMk9ERERERESkYXTVHQAREREREX1dAjznqTsEOVvOTFB3CETZxivzRERERERERBqGyTwRERERERGRhmEyT0RERERERKRhmMwTERERERERaRgm80REREREREQahsk8ERERERERkYZhMk9ERERERESkYZjMExEREREREWkYXXUHQERERERERPICPOepOwQ5W85MUHcI9BlemSciIiIiIiLSMEzmiYiIiIiIiDRMobnNPjY2Fvv27cPL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YenSpQAaku3k5GSUlJRg9uzZsLW1hb+/P6ysrPDrr78CAAYNGoSuXbuKy+UbKZVKSfL+l7/8BT/99BOePHkilg0bNgwymQyHDh0Sy6ZNm4YdO3Zg5cqVsLS0bMthExEREdH/x2SeiKidePToEWJiYjBlyhTIZDJ8+OGHGDBgADIzM3H06FEADTPzenp68PLygrq6OoqKilBUVIRBgwaJm841Lpf//az76NGjkZubKyb9Pj4+qK2txbFjx8Q26urq2LVrF8aOHfuaRk1EREREz8NknoioHYiJiYGFhQW2bduGkSNHwsPDA506dUJ4eDgsLCzEdlpaWvD19cXFixexfv16dOjQARoaGvjss89w4sQJ3Lp1C0DDLPzp06dRUFAg9tXU1ATwfzvR6+npYezYscjIyJDEMmbMGPTo0aNtB0xEREREL6UmCILwpoMgIqKXKy8vBwAYGRkBaEjuAwMDcevWLXTv3l3SNi4uDhMmTMD9+/dhbGwslvfo0QPh4eH48MMPIQgCFAoFXF1dERUVhZKSEkydOhVVVVWorq4WZ+fr6ur47jsRERHRnxBn5omI2gEjIyMxkQcALy8vdOjQQeW9d6Bh5lxfX1/lDPimS+vV1NSwZcsWHDhwACYmJlAoFBg7dizi4+Nx/PhxsQ8TeSIiIqI/J87MExG1UwEBAbh37x5OnTqlUjdlyhTU1NRIdrY/ffo0hg4dijt37ogb1T18+BA3btyAjY0NdHV1X1vsRERERPRqODNPRNRONb73XlRU9Ny6hIQEVFdXi2Wurq6wtraWvAOvr68PZ2dnJvJERERE7QyTeSKidmr8+PHQ0tJ67lJ7b29vAEBCQoJYpqamhmvXrol1RERERNR+MZknImqnDAwM4OnpqXLEHAB07NgRa9euRc+ePSXlampqrys8IiIiImpDfGeeiKgd27lzJ0JCQnD37l2YmJi86XCIiIiI6DXRfNMBEBFR602YMAEZGRmoqal506EQERER0WvEmXkiIiIiIiKidobvzBMRERERERG1M0zmiYiIiIiIiNoZJvNERERERERE7QyTeSIiIiIiIqJ2hsk8ERERERERUTvDZJ6IiIiIiIionWEyT0RERERERNTOMJknIiIiIiIiameYzBMRERERERG1M0zmiYiIiIiIiNoZJvNERERERERE7QyTeSIiIiIiIqJ2hsk8ERERERERUTvz/wBYkzb+o3flCgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x360 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "counts = selected.groupby(\"EVENT_TYPE\")[\"EVENT_ID\"].nunique().reindex(types, fill_value=0)\n",
    "tornadoes = selected.loc[selected[\"EVENT_TYPE\"].eq(\"Tornado\")].copy()\n",
    "tornadoes[\"RATING\"] = tornadoes[\"TOR_F_SCALE\"].fillna(\"Unknown\")\n",
    "ratings = tornadoes.groupby(\"RATING\")[\"EVENT_ID\"].nunique().sort_index()\n",
    "print(\"Distinct event records by type:\")\n",
    "print(counts.to_string())\n",
    "print(\"\\nTornado records by reported rating:\")\n",
    "print(ratings.to_string())\n",
    "\n",
    "fig, axes = plt.subplots(1, 2, figsize=(10, 3.6), layout=\"constrained\")\n",
    "counts.plot.bar(ax=axes[0], color=[\"#5b3c88\", \"#3586a6\", \"#e4a348\"], rot=18)\n",
    "axes[0].set(title=\"Reported event records\", xlabel=\"\", ylabel=\"Distinct EVENT_ID\")\n",
    "if not ratings.empty:\n",
    "    ratings.plot.bar(ax=axes[1], color=\"#5b3c88\", rot=0)\n",
    "axes[1].set(\n",
    "    title=\"Tornado records by damage rating\",\n",
    "    xlabel=\"Reported TOR_F_SCALE\",\n",
    "    ylabel=\"Distinct EVENT_ID\",\n",
    ")\n",
    "for axis in axes:\n",
    "    axis.grid(axis=\"y\", alpha=0.25)\n",
    "    axis.set_axisbelow(True)\n",
    "fig.suptitle(\"Oklahoma reports beginning in May 2024\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fecaeab2",
   "metadata": {},
   "source": [
    "## Check source integrity and cache reuse\n",
    "\n",
    "Analysis has not altered the archive. A repeated pull validates cached bytes against the pinned revision. If validation fails, preserve the original lockfile and investigate the revision; `pull(..., force=True)` deliberately resolves current filenames and writes a new lockfile."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e95ae024",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Verification passed; locked archive reused from cache.\n",
      "Analysis source checksum: sha256:2070b83eccab041b36360ab73645b9a249c3eefc5b92b5b3fc0cbba4d9fcc09c\n"
     ]
    }
   ],
   "source": [
    "assert sha256_file(item.path) == source_checksum\n",
    "assert verify(manifest) == []\n",
    "again = pull(manifest)\n",
    "assert again.from_lockfile and all(value.from_cache for value in again.fetched)\n",
    "print(\"Verification passed; locked archive reused from cache.\")\n",
    "print(\"Analysis source checksum:\", source_checksum)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a2ab4b28",
   "metadata": {},
   "source": [
    "## Source notes and limitations\n",
    "\n",
    "- [NCEI bulk archive README](https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/README) explains annual filenames and creation-date revisions.\n",
    "- [NCEI bulk field definitions](https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/Storm-Data-Bulk-csv-Format.pdf) define event/episode identifiers, county and zone codes, time-zone fields, and tornado segments. Use the source definitions before aggregating impacts or combining tables.\n",
    "- [NCEI dataset metadata](https://www.ncei.noaa.gov/metadata/geoportal/rest/metadata/item/gov.noaa.ncdc%3AC00510/html) describes the archive and its varying historical coverage. The records are reports, not a uniform observation network; missing reports do not establish that no event occurred.\n",
    "- [NWS Enhanced Fujita scale](https://www.weather.gov/oun/efscale) explains damage-based ratings and the 2007 transition from the original Fujita scale. Ratings should not be averaged as measured wind speeds.\n",
    "\n",
    "This notebook intentionally does not sum dollar damage: source values contain magnitude suffixes, can be missing or estimated, and require explicit parsing and economic assumptions. It also does not infer a climate trend from one month. Saved outputs describe the exact revision identified above."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "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.14.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
