diff --git a/notebooks/run_metrics.ipynb b/notebooks/run_metrics.ipynb
index 4899ccc..3dbefdc 100644
--- a/notebooks/run_metrics.ipynb
+++ b/notebooks/run_metrics.ipynb
@@ -1,130 +1,737 @@
{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "703913af",
- "metadata": {},
- "source": [
- "# Creating the IOOS By The Numbers\n",
- "\n",
- "[Website](https://ioos.noaa.gov/about/ioos-by-the-numbers/)\n",
- "\n",
- "[Spreadsheet](https://docs.google.com/spreadsheets/d/1AUfXmc3OwxpVdeMNjZyTGWjyR4ku3kRD5eexNrMORnI/edit#gid=516871794)"
- ]
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "703913af",
+ "metadata": {
+ "id": "703913af"
+ },
+ "source": [
+ "# Creating the IOOS By The Numbers\n",
+ "\n",
+ "[Website](https://ioos.noaa.gov/about/ioos-by-the-numbers/)\n",
+ "\n",
+ "[Spreadsheet](https://docs.google.com/spreadsheets/d/1AUfXmc3OwxpVdeMNjZyTGWjyR4ku3kRD5eexNrMORnI/edit#gid=516871794)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "!pip install ioos_metrics"
+ ],
+ "metadata": {
+ "id": "c6zx3rTTK1bq",
+ "outputId": "4a626729-fb39-4cce-fefd-2bc859792c76",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "id": "c6zx3rTTK1bq",
+ "execution_count": 1,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Collecting ioos_metrics\n",
+ " Downloading ioos_metrics-0.5.0-py3-none-any.whl.metadata (5.1 kB)\n",
+ "Collecting bs4 (from ioos_metrics)\n",
+ " Downloading bs4-0.0.2-py2.py3-none-any.whl.metadata (411 bytes)\n",
+ "Collecting ckanapi (from ioos_metrics)\n",
+ " Downloading ckanapi-4.8-py3-none-any.whl.metadata (618 bytes)\n",
+ "Collecting fake-useragent (from ioos_metrics)\n",
+ " Downloading fake_useragent-2.0.3-py3-none-any.whl.metadata (17 kB)\n",
+ "Requirement already satisfied: geopandas>=0.13.2 in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (1.0.1)\n",
+ "Collecting gliderpy (from ioos_metrics)\n",
+ " Downloading gliderpy-0.2.2-py3-none-any.whl.metadata (3.1 kB)\n",
+ "Requirement already satisfied: html5lib in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (1.1)\n",
+ "Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (1.4.2)\n",
+ "Requirement already satisfied: lxml in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (5.3.0)\n",
+ "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (2.2.2)\n",
+ "Collecting pdfminer.six (from ioos_metrics)\n",
+ " Downloading pdfminer.six-20240706-py3-none-any.whl.metadata (4.1 kB)\n",
+ "Requirement already satisfied: pyarrow in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (17.0.0)\n",
+ "Collecting pyobis (from ioos_metrics)\n",
+ " Downloading pyobis-1.4.1-py3-none-any.whl.metadata (5.5 kB)\n",
+ "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from ioos_metrics) (2.32.3)\n",
+ "Requirement already satisfied: numpy>=1.22 in /usr/local/lib/python3.11/dist-packages (from geopandas>=0.13.2->ioos_metrics) (1.26.4)\n",
+ "Requirement already satisfied: pyogrio>=0.7.2 in /usr/local/lib/python3.11/dist-packages (from geopandas>=0.13.2->ioos_metrics) (0.10.0)\n",
+ "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from geopandas>=0.13.2->ioos_metrics) (24.2)\n",
+ "Requirement already satisfied: pyproj>=3.3.0 in /usr/local/lib/python3.11/dist-packages (from geopandas>=0.13.2->ioos_metrics) (3.7.0)\n",
+ "Requirement already satisfied: shapely>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from geopandas>=0.13.2->ioos_metrics) (2.0.6)\n",
+ "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->ioos_metrics) (2.8.2)\n",
+ "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->ioos_metrics) (2024.2)\n",
+ "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->ioos_metrics) (2024.2)\n",
+ "Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.11/dist-packages (from bs4->ioos_metrics) (4.12.3)\n",
+ "Requirement already satisfied: setuptools in /usr/local/lib/python3.11/dist-packages (from ckanapi->ioos_metrics) (75.1.0)\n",
+ "Collecting docopt (from ckanapi->ioos_metrics)\n",
+ " Downloading docopt-0.6.2.tar.gz (25 kB)\n",
+ " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ "Requirement already satisfied: six<2.0,>=1.9 in /usr/local/lib/python3.11/dist-packages (from ckanapi->ioos_metrics) (1.17.0)\n",
+ "Collecting simplejson (from ckanapi->ioos_metrics)\n",
+ " Downloading simplejson-3.19.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.2 kB)\n",
+ "Requirement already satisfied: python-slugify>=1.0 in /usr/local/lib/python3.11/dist-packages (from ckanapi->ioos_metrics) (8.0.4)\n",
+ "Collecting erddapy (from gliderpy->ioos_metrics)\n",
+ " Downloading erddapy-2.2.3-py3-none-any.whl.metadata (6.6 kB)\n",
+ "Requirement already satisfied: httpx in /usr/local/lib/python3.11/dist-packages (from gliderpy->ioos_metrics) (0.28.1)\n",
+ "Requirement already satisfied: xarray in /usr/local/lib/python3.11/dist-packages (from gliderpy->ioos_metrics) (2025.1.1)\n",
+ "Requirement already satisfied: webencodings in /usr/local/lib/python3.11/dist-packages (from html5lib->ioos_metrics) (0.5.1)\n",
+ "Requirement already satisfied: charset-normalizer>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from pdfminer.six->ioos_metrics) (3.4.1)\n",
+ "Requirement already satisfied: cryptography>=36.0.0 in /usr/local/lib/python3.11/dist-packages (from pdfminer.six->ioos_metrics) (43.0.3)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->ioos_metrics) (3.10)\n",
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->ioos_metrics) (2.3.0)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->ioos_metrics) (2024.12.14)\n",
+ "Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.11/dist-packages (from cryptography>=36.0.0->pdfminer.six->ioos_metrics) (1.17.1)\n",
+ "Requirement already satisfied: text-unidecode>=1.3 in /usr/local/lib/python3.11/dist-packages (from python-slugify>=1.0->ckanapi->ioos_metrics) (1.3)\n",
+ "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->bs4->ioos_metrics) (2.6)\n",
+ "Requirement already satisfied: anyio in /usr/local/lib/python3.11/dist-packages (from httpx->gliderpy->ioos_metrics) (3.7.1)\n",
+ "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx->gliderpy->ioos_metrics) (1.0.7)\n",
+ "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx->gliderpy->ioos_metrics) (0.14.0)\n",
+ "Requirement already satisfied: pycparser in /usr/local/lib/python3.11/dist-packages (from cffi>=1.12->cryptography>=36.0.0->pdfminer.six->ioos_metrics) (2.22)\n",
+ "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio->httpx->gliderpy->ioos_metrics) (1.3.1)\n",
+ "Downloading ioos_metrics-0.5.0-py3-none-any.whl (15 kB)\n",
+ "Downloading bs4-0.0.2-py2.py3-none-any.whl (1.2 kB)\n",
+ "Downloading ckanapi-4.8-py3-none-any.whl (46 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.3/46.3 kB\u001b[0m \u001b[31m1.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading fake_useragent-2.0.3-py3-none-any.whl (201 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m201.1/201.1 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading gliderpy-0.2.2-py3-none-any.whl (7.8 kB)\n",
+ "Downloading pdfminer.six-20240706-py3-none-any.whl (5.6 MB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.6/5.6 MB\u001b[0m \u001b[31m31.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hDownloading pyobis-1.4.1-py3-none-any.whl (23 kB)\n",
+ "Downloading erddapy-2.2.3-py3-none-any.whl (24 kB)\n",
+ "Downloading simplejson-3.19.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144 kB)\n",
+ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m144.7/144.7 kB\u001b[0m \u001b[31m7.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+ "\u001b[?25hBuilding wheels for collected packages: docopt\n",
+ " Building wheel for docopt (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
+ " Created wheel for docopt: filename=docopt-0.6.2-py2.py3-none-any.whl size=13706 sha256=147af1450e91228e95b1773c6b9d40feebe400d4ce67b4a23d1ed381a95c52bb\n",
+ " Stored in directory: /root/.cache/pip/wheels/1a/b0/8c/4b75c4116c31f83c8f9f047231251e13cc74481cca4a78a9ce\n",
+ "Successfully built docopt\n",
+ "Installing collected packages: docopt, simplejson, fake-useragent, ckanapi, bs4, pyobis, pdfminer.six, erddapy, gliderpy, ioos_metrics\n",
+ "Successfully installed bs4-0.0.2 ckanapi-4.8 docopt-0.6.2 erddapy-2.2.3 fake-useragent-2.0.3 gliderpy-0.2.2 ioos_metrics-0.5.0 pdfminer.six-20240706 pyobis-1.4.1 simplejson-3.19.3\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "2e1ac2bd",
+ "metadata": {
+ "id": "2e1ac2bd",
+ "outputId": "03ad5b08-951e-4b45-a0e2-f6f9fc2911b1",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 259
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "CPU times: user 1.88 s, sys: 412 ms, total: 2.29 s\n",
+ "Wall time: 19.1 s\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " date_UTC Federal Partners Regional Associations HF Radar Stations \\\n",
+ "2 2022-07-08 17 11 165 \n",
+ "3 2022-10-05 17 11 165 \n",
+ "4 2023-01-05 17 11 165 \n",
+ "5 2024-01-26 17 11 165 \n",
+ "6 2025-01-23 17 11 165 \n",
+ "\n",
+ " NGDAC Glider Days National Platforms Regional Platforms ATN Deployments \\\n",
+ "2 55448 764 517 4444 \n",
+ "3 59088 390 635 4444 \n",
+ "4 62042 768 635 4444 \n",
+ "5 61990 721 886 5190 \n",
+ "6 74178 731 1081 6136 \n",
+ "\n",
+ " MBON Projects OTT Projects HAB Pilot Projects QARTOD Manuals \\\n",
+ "2 6 8 9 13 \n",
+ "3 6 8 9 13 \n",
+ "4 6 8 9 13 \n",
+ "5 5 8 11 13 \n",
+ "6 10 21 11 13 \n",
+ "\n",
+ " IOOS Core Variables Metadata Records IOOS COMT Projects \n",
+ "2 34 6217 1 5 \n",
+ "3 34 24499 1 5 \n",
+ "4 34 11840 1 5 \n",
+ "5 34 42599 1 5 \n",
+ "6 34 37475 1 5 "
+ ],
+ "text/html": [
+ "\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date_UTC | \n",
+ " Federal Partners | \n",
+ " Regional Associations | \n",
+ " HF Radar Stations | \n",
+ " NGDAC Glider Days | \n",
+ " National Platforms | \n",
+ " Regional Platforms | \n",
+ " ATN Deployments | \n",
+ " MBON Projects | \n",
+ " OTT Projects | \n",
+ " HAB Pilot Projects | \n",
+ " QARTOD Manuals | \n",
+ " IOOS Core Variables | \n",
+ " Metadata Records | \n",
+ " IOOS | \n",
+ " COMT Projects | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 | \n",
+ " 2022-07-08 | \n",
+ " 17 | \n",
+ " 11 | \n",
+ " 165 | \n",
+ " 55448 | \n",
+ " 764 | \n",
+ " 517 | \n",
+ " 4444 | \n",
+ " 6 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " 13 | \n",
+ " 34 | \n",
+ " 6217 | \n",
+ " 1 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2022-10-05 | \n",
+ " 17 | \n",
+ " 11 | \n",
+ " 165 | \n",
+ " 59088 | \n",
+ " 390 | \n",
+ " 635 | \n",
+ " 4444 | \n",
+ " 6 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " 13 | \n",
+ " 34 | \n",
+ " 24499 | \n",
+ " 1 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2023-01-05 | \n",
+ " 17 | \n",
+ " 11 | \n",
+ " 165 | \n",
+ " 62042 | \n",
+ " 768 | \n",
+ " 635 | \n",
+ " 4444 | \n",
+ " 6 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " 13 | \n",
+ " 34 | \n",
+ " 11840 | \n",
+ " 1 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 2024-01-26 | \n",
+ " 17 | \n",
+ " 11 | \n",
+ " 165 | \n",
+ " 61990 | \n",
+ " 721 | \n",
+ " 886 | \n",
+ " 5190 | \n",
+ " 5 | \n",
+ " 8 | \n",
+ " 11 | \n",
+ " 13 | \n",
+ " 34 | \n",
+ " 42599 | \n",
+ " 1 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 2025-01-23 | \n",
+ " 17 | \n",
+ " 11 | \n",
+ " 165 | \n",
+ " 74178 | \n",
+ " 731 | \n",
+ " 1081 | \n",
+ " 6136 | \n",
+ " 10 | \n",
+ " 21 | \n",
+ " 11 | \n",
+ " 13 | \n",
+ " 34 | \n",
+ " 37475 | \n",
+ " 1 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "type": "dataframe",
+ "repr_error": "0"
+ }
+ },
+ "metadata": {},
+ "execution_count": 2
+ }
+ ],
+ "source": [
+ "%%time\n",
+ "from ioos_metrics.ioos_metrics import update_metrics\n",
+ "\n",
+ "ioos_btn_df = update_metrics()\n",
+ "ioos_btn_df.tail()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "for field in ioos_btn_df:\n",
+ " print('{}: {}'.format(field,ioos_btn_df[field].iloc[-1]))"
+ ],
+ "metadata": {
+ "id": "OCTpQcT_K3ym",
+ "outputId": "8d87c859-8ce7-4ce0-8173-1b385c71dd31",
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ }
+ },
+ "id": "OCTpQcT_K3ym",
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "date_UTC: 2025-01-23\n",
+ "Federal Partners: 17\n",
+ "Regional Associations: 11\n",
+ "HF Radar Stations: 165\n",
+ "NGDAC Glider Days: 74178\n",
+ "National Platforms: 731\n",
+ "Regional Platforms: 1081\n",
+ "ATN Deployments: 6136\n",
+ "MBON Projects: 10\n",
+ "OTT Projects: 21\n",
+ "HAB Pilot Projects: 11\n",
+ "QARTOD Manuals: 13\n",
+ "IOOS Core Variables: 34\n",
+ "Metadata Records: 37475\n",
+ "IOOS: 1\n",
+ "COMT Projects: 5\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "96f4afd3",
+ "metadata": {
+ "id": "96f4afd3"
+ },
+ "source": [
+ "## Analysis\n",
+ "\n",
+ "Now we have the opportunity to do some analysis on the metrics we've captured.\n",
+ "\n",
+ "Below is an attempt to draw some comparisons between the metrics in the previous iteration and subsequent runs."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "b9248cf3",
+ "metadata": {
+ "id": "b9248cf3",
+ "outputId": "da06ee18-1702-40bf-f94f-0db4e8a2817c",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 487
+ }
+ },
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "