From 604920bac16b8ab74c741407d85d27661fe1def6 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 2 Feb 2023 20:46:55 -0500 Subject: [PATCH] add variables nb --- source/index.rst | 1 + source/pages/variables.ipynb | 389 +++++++++++++++++++++++++++++++++++ 2 files changed, 390 insertions(+) create mode 100644 source/pages/variables.ipynb diff --git a/source/index.rst b/source/index.rst index f4d8bd8..4374b11 100644 --- a/source/index.rst +++ b/source/index.rst @@ -57,3 +57,4 @@ This project uses many open-source software packages, including: pages/tmy-vs-single pages/numerical-precision pages/2300-artifact + pages/variables diff --git a/source/pages/variables.ipynb b/source/pages/variables.ipynb new file mode 100644 index 0000000..a31fa8d --- /dev/null +++ b/source/pages/variables.ipynb @@ -0,0 +1,389 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "341b7567-ade5-47fb-9798-7f45c7e19b59", + "metadata": {}, + "source": [ + "# Variables\n", + "\n", + "This page documents several aspects of the variables available via the PSM3 API endpoints, including:\n", + "\n", + "- What variables are available at each endpoint?\n", + "- What are the request and response names for each variable?\n", + "- What units are the variable values in?" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e8049d34-b90c-4f8f-ae9e-76458ff334c0", + "metadata": {}, + "outputs": [], + "source": [ + "import pvlib\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3ed5de9c-d935-4989-b5b0-a47b77261611", + "metadata": {}, + "outputs": [], + "source": [ + "cases = [('TMY', 'tmy', 60), ('Hourly', 2020, 60), ('5-minute', 2020, 5)]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "63a7dda0-9ae0-49af-926d-d68335311a60", + "metadata": {}, + "outputs": [], + "source": [ + "units = {}\n", + "presence = {}\n", + "for label, dataset, interval in cases:\n", + " df, meta = pvlib.iotools.get_psm3(40, -80, 'DEMO_KEY', 'assessingsolar@gmail.com',\n", + " names=dataset, interval=interval,\n", + " attributes=[], # a trick to get all variables\n", + " map_variables=False, leap_day=True)\n", + " columns = df.columns[5:] # drop timestamp columns\n", + " for column in columns:\n", + " units[column] = meta.get(column + \" Units\", \"?\")\n", + " presence[label] = {column: '✓' for column in columns}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d40ddf73-86a5-4442-9156-fe837308879b", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: once pvlib 0.9.5 is released with pvlib #1648,\n", + "# determine this mapping dynamically instead of hardcoding it\n", + "\n", + "column_map = {\n", + " 'Clearsky DHI': 'clearsky_dhi',\n", + " 'Clearsky DNI': 'clearsky_dni',\n", + " 'Clearsky GHI': 'clearsky_ghi',\n", + " 'Cloud Type': 'cloud_type',\n", + " 'DHI': 'dhi',\n", + " 'DNI': 'dni',\n", + " 'Dew Point': 'dew_point',\n", + " 'Fill Flag': 'fill_flag',\n", + " 'GHI': 'ghi',\n", + " 'Global Horizontal UV Irradiance (280-400nm)': 'ghuv-280-400',\n", + " 'Global Horizontal UV Irradiance (295-385nm)': 'ghuv-295-385',\n", + " 'Precipitable Water': 'total_precipitable_water',\n", + " 'Pressure': 'surface_pressure',\n", + " 'Relative Humidity': 'relative_humidity',\n", + " 'Solar Zenith Angle': 'solar_zenith_angle',\n", + " 'Surface Albedo': 'surface_albedo',\n", + " 'Temperature': 'air_temperature',\n", + " 'Wind Direction': 'wind_direction',\n", + " 'Wind Speed': 'wind_speed'\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f2439f4a-ff3e-4d63-9dd2-621e4119de6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Response NameRequest NameUnitsTMYHourly5-minute
0Dew Pointdew_pointc
1DHIdhiw/m2
2DNIdniw/m2
3GHIghiw/m2
4Surface Albedosurface_albedoN/A
5Pressuresurface_pressurembar
6Temperatureair_temperaturec
7Wind Directionwind_directionDegrees
8Wind Speedwind_speedm/s
9Clearsky DHIclearsky_dhiw/m2
10Clearsky DNIclearsky_dniw/m2
11Clearsky GHIclearsky_ghiw/m2
12Cloud Typecloud_type?
13Fill Flagfill_flag?
14Relative Humidityrelative_humidity%
15Solar Zenith Anglesolar_zenith_angleDegree
16Precipitable Watertotal_precipitable_watercm
17Global Horizontal UV Irradiance (280-400nm)ghuv-280-400?
18Global Horizontal UV Irradiance (295-385nm)ghuv-295-385?
\n", + "
" + ], + "text/plain": [ + " Response Name Request Name \\\n", + "0 Dew Point dew_point \n", + "1 DHI dhi \n", + "2 DNI dni \n", + "3 GHI ghi \n", + "4 Surface Albedo surface_albedo \n", + "5 Pressure surface_pressure \n", + "6 Temperature air_temperature \n", + "7 Wind Direction wind_direction \n", + "8 Wind Speed wind_speed \n", + "9 Clearsky DHI clearsky_dhi \n", + "10 Clearsky DNI clearsky_dni \n", + "11 Clearsky GHI clearsky_ghi \n", + "12 Cloud Type cloud_type \n", + "13 Fill Flag fill_flag \n", + "14 Relative Humidity relative_humidity \n", + "15 Solar Zenith Angle solar_zenith_angle \n", + "16 Precipitable Water total_precipitable_water \n", + "17 Global Horizontal UV Irradiance (280-400nm) ghuv-280-400 \n", + "18 Global Horizontal UV Irradiance (295-385nm) ghuv-295-385 \n", + "\n", + " Units TMY Hourly 5-minute \n", + "0 c ✓ ✓ ✓ \n", + "1 w/m2 ✓ ✓ ✓ \n", + "2 w/m2 ✓ ✓ ✓ \n", + "3 w/m2 ✓ ✓ ✓ \n", + "4 N/A ✓ ✓ ✓ \n", + "5 mbar ✓ ✓ ✓ \n", + "6 c ✓ ✓ ✓ \n", + "7 Degrees ✓ ✓ ✓ \n", + "8 m/s ✓ ✓ ✓ \n", + "9 w/m2 ✓ ✓ \n", + "10 w/m2 ✓ ✓ \n", + "11 w/m2 ✓ ✓ \n", + "12 ? ✓ ✓ \n", + "13 ? ✓ ✓ \n", + "14 % ✓ ✓ \n", + "15 Degree ✓ ✓ \n", + "16 cm ✓ ✓ \n", + "17 ? ✓ \n", + "18 ? ✓ " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([\n", + " pd.Series({v: column_map[v] for v in units}, name='Request Name'),\n", + " pd.Series(units, name='Units'),\n", + " pd.DataFrame(presence).fillna(\"\"),\n", + "], axis=1).rename_axis(index='Response Name').reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79915e61-6b9b-405d-a737-828ac117ac5f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}