pysondehub/examples/sondehub.ipynb

387 wiersze
46 KiB
Plaintext

2021-02-10 10:15:28 +00:00
{
"cells": [
{
"cell_type": "markdown",
"id": "agricultural-wellington",
2021-02-10 10:15:28 +00:00
"metadata": {},
"source": [
"# Python Prerequisites\n",
"\n",
"In this below cell we install sondehub library"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "multiple-ribbon",
2021-02-10 10:15:28 +00:00
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: sondehub in /usr/local/lib/python3.9/site-packages (0.1.7)\n",
"Collecting sondehub\n",
" Using cached sondehub-0.1.8-py3-none-any.whl (16 kB)\n",
2021-02-15 23:30:44 +00:00
"Requirement already satisfied: boto3<2.0.0,>=1.14.44 in /usr/local/lib/python3.9/site-packages (from sondehub) (1.17.5)\n",
"Requirement already satisfied: paho-mqtt<2.0.0,>=1.5.1 in /usr/local/lib/python3.9/site-packages (from sondehub) (1.5.1)\n",
2021-02-10 10:15:28 +00:00
"Requirement already satisfied: botocore<1.21.0,>=1.20.5 in /usr/local/lib/python3.9/site-packages (from boto3<2.0.0,>=1.14.44->sondehub) (1.20.5)\n",
2021-02-15 23:30:44 +00:00
"Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python3.9/site-packages (from boto3<2.0.0,>=1.14.44->sondehub) (0.10.0)\n",
"Requirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /usr/local/lib/python3.9/site-packages (from boto3<2.0.0,>=1.14.44->sondehub) (0.3.4)\n",
2021-02-10 10:15:28 +00:00
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.9/site-packages (from botocore<1.21.0,>=1.20.5->boto3<2.0.0,>=1.14.44->sondehub) (2.8.1)\n",
"Requirement already satisfied: urllib3<1.27,>=1.25.4 in /usr/local/lib/python3.9/site-packages (from botocore<1.21.0,>=1.20.5->boto3<2.0.0,>=1.14.44->sondehub) (1.26.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.9/site-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.21.0,>=1.20.5->boto3<2.0.0,>=1.14.44->sondehub) (1.15.0)\n",
"Installing collected packages: sondehub\n",
" Attempting uninstall: sondehub\n",
" Found existing installation: sondehub 0.1.7\n",
" Uninstalling sondehub-0.1.7:\n",
" Successfully uninstalled sondehub-0.1.7\n",
"Successfully installed sondehub-0.1.8\n",
2021-02-10 10:15:28 +00:00
"\u001b[33mWARNING: You are using pip version 20.3.3; however, version 21.0.1 is available.\n",
"You should consider upgrading via the '/usr/local/opt/python@3.9/bin/python3.9 -m pip install --upgrade pip' command.\u001b[0m\n"
]
}
],
"source": [
"# Install a pip package in the current Jupyter kernel\n",
"import sys\n",
"!{sys.executable} -m pip install --upgrade sondehub"
2021-02-10 10:15:28 +00:00
]
},
{
"cell_type": "markdown",
"id": "piano-parameter",
2021-02-10 10:15:28 +00:00
"metadata": {},
"source": [
"# Imports\n",
"Next we import the python libraries we'll be using."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "canadian-collapse",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [],
"source": [
"# Sondehub lib that we'll be using to download and access the data\n",
"import sondehub\n",
"\n",
"#numpy, matplotlib and scipy to help us graph and process some of the data\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import scipy.stats as stats\n",
"\n",
"import datetime"
]
},
{
"cell_type": "markdown",
"id": "general-annotation",
2021-02-10 10:15:28 +00:00
"metadata": {},
"source": [
"# Download data\n",
"The sondehub library handles accessing the data. Behind the scenes it's downloading the data from AWS Open Data S3 bucket.\n",
"\n",
"For this example we'll be looking at the \"S1120364\" radiosonde. You can find other serial numbers by browsing the S3 bucket for the open data at https://sondehub-open-data.s3-website-us-east-1.amazonaws.com or you can look at which radiosondes are currently aloft at https://sondehub.org"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "processed-winning",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [],
"source": [
"# This will take a little bit of time depending on your internet connection\n",
"radiosonde = sondehub.download(serial=\"S4620525\")"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "local-vietnamese",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'datetime': '2021-02-09T22:30:33.001000Z',\n",
2021-02-10 10:15:28 +00:00
" 'uploader_position': '-34.8137,138.7488',\n",
" 'software_name': 'radiosonde_auto_rx',\n",
" 'uploader_callsign': 'AREG_AUTO_RX',\n",
" 'alt': -4.83791,\n",
" 'lon': 138.52043,\n",
" 'vel_h': 0.77782,\n",
2021-02-10 10:15:28 +00:00
" 'frequency': 401.501,\n",
" 'vel_v': 5e-05,\n",
2021-02-10 10:15:28 +00:00
" 'manufacturer': 'Vaisala',\n",
" 'batt': 3,\n",
" 'software_version': '1.4.1-beta8',\n",
" 'uploader_antenna': '6dBi Vertical',\n",
" 'lat': -34.95243,\n",
" 'subtype': 'RS41-SG',\n",
" 'snr': 11.6,\n",
2021-02-10 10:15:28 +00:00
" 'type': 'RS41',\n",
" 'sats': 7,\n",
" 'heading': 291.15022,\n",
" 'frame': 1262,\n",
2021-02-10 10:15:28 +00:00
" 'burst_timer': 65535,\n",
" 'time_received': '2021-02-09T22:30:17.135788Z',\n",
2021-02-10 10:15:28 +00:00
" 'serial': 'S4620525',\n",
" 'user-agent': 'autorx-1.4.1-beta8',\n",
" 'position': '-34.95243,138.52043',\n",
" 'upload_time_delta': -2.001443,\n",
2021-02-10 10:15:28 +00:00
" 'uploader_alt': 420}"
]
},
"execution_count": 61,
2021-02-10 10:15:28 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"radiosonde[0] # let's have a look at the first record"
]
},
{
"cell_type": "markdown",
"id": "double-insulation",
2021-02-10 10:15:28 +00:00
"metadata": {},
"source": [
"# Parse data\n",
"To make things easier we use numpy to make an array out of the data. This will help us when we go to graph the data.\n",
"\n",
"In this case we are going to graph altitude, snr vs time"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "married-founder",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [],
"source": [
"data = np.array( [ [datetime.datetime.strptime(each['datetime'], \"%Y-%m-%dT%H:%M:%S.%fZ\"), each['alt'], each['snr'] if 'snr' in each else None, each['uploader_callsign'] if 'uploader_callsign' in each else None] for each in radiosonde if each['uploader_callsign'] == 'AREG_AUTO_RX' ] )"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "level-conversation",
"metadata": {},
"outputs": [],
"source": [
"filtered = [\n",
" [\n",
" datetime.datetime.strptime(each['datetime'], \"%Y-%m-%dT%H:%M:%S.%fZ\"),\n",
" float(each['alt']),\n",
" float(each['snr']) if 'snr' in each else None,\n",
" each['uploader_callsign'] if 'uploader_callsign' in each else None\n",
" ]\n",
" for each in radiosonde\n",
" ]\n"
2021-02-10 10:15:28 +00:00
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "meaningful-herald",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([datetime.datetime(2021, 2, 9, 22, 30, 33, 1000), -4.83791, 11.6,\n",
" 'AREG_AUTO_RX'], dtype=object)"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data[0]"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "weekly-charter",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[datetime.datetime(2021, 2, 9, 22, 30, 33, 1000), -4.83791, 11.6,\n",
2021-02-15 23:30:44 +00:00
" 'AREG_AUTO_RX'],\n",
" [datetime.datetime(2021, 2, 9, 22, 30, 29, 1000), -6.23293, 11.0,\n",
2021-02-15 23:30:44 +00:00
" 'AREG_AUTO_RX'],\n",
" [datetime.datetime(2021, 2, 9, 22, 30, 38, 1000), -4.91941, 9.4,\n",
2021-02-15 23:30:44 +00:00
" 'AREG_AUTO_RX'],\n",
2021-02-10 10:15:28 +00:00
" ...,\n",
" [datetime.datetime(2021, 2, 10, 4, 44, 0, 188437), 277.0, None,\n",
" 'VK5KJL_AUTO_RX'],\n",
" [datetime.datetime(2021, 2, 10, 4, 43, 30, 212890), 277.0, None,\n",
" 'VK5KJL_AUTO_RX'],\n",
" [datetime.datetime(2021, 2, 10, 1, 31, 0, 73080), 482.0, None,\n",
" 'VK5ST_AUTO_RX']], dtype=object)"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"data = np.array(\n",
" filtered\n",
")\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "insured-probability",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[datetime.datetime(2021, 2, 15, 23, 17, 28, 754111), 759.0, None,\n",
" 'F6BYJ'],\n",
" [datetime.datetime(2021, 2, 15, 23, 18, 0, 148398), 916.0, None,\n",
" 'F6BYJ'],\n",
" [datetime.datetime(2021, 2, 15, 23, 18, 26, 819436), 1049.0, None,\n",
" 'F1JBB'],\n",
" ...,\n",
" [datetime.datetime(2021, 2, 16, 2, 1, 30, 157053), 1195.0, None,\n",
" 'F6BYJ'],\n",
" [datetime.datetime(2021, 2, 16, 2, 2, 30, 69061), 1036.0, None,\n",
" 'F6BYJ'],\n",
" [datetime.datetime(2021, 2, 16, 2, 3, 0, 177289), 965.0, None,\n",
" 'F6BYJ']], dtype=object)"
2021-02-10 10:15:28 +00:00
]
},
"execution_count": 56,
2021-02-10 10:15:28 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = data[np.argsort(data[:, 0])] # order the data by the datetime\n",
"data # have a look at the data"
]
},
{
"cell_type": "markdown",
"id": "confused-mistake",
2021-02-10 10:15:28 +00:00
"metadata": {},
"source": [
"# Graph the data"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "exciting-record",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
2021-02-10 10:15:28 +00:00
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sonde_time = data[:,0] # get the datetime from the ndarray\n",
"alt = data[:,1] # get the altitude from the ndarray\n",
"\n",
"\n",
"plt.plot(sonde_time, alt)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "interpreted-contributor",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
2021-02-10 10:15:28 +00:00
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot SNR along side\n",
"\n",
"sonde_time = data[:,0] # get the datetime from the ndarray\n",
"alt = data[:,1] # get the altitude from the ndarray\n",
"snr = data[:,2] # get the altitude from the ndarray\n",
"\n",
"fig,ax = plt.subplots()\n",
"\n",
"ax.plot(sonde_time, alt) # plot altitude on the first axis\n",
"ax.set_ylabel(\"Alt\",fontsize=14)\n",
"\n",
"ax2=ax.twinx() # get a second axis\n",
"ax2.set_ylabel(\"SNR\",fontsize=14)\n",
"ax2.plot(sonde_time, snr, color=\"red\")\n",
"\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "extended-aberdeen",
2021-02-10 10:15:28 +00:00
"metadata": {},
"outputs": [],
"source": []
}
],
"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.9.1"
}
},
"nbformat": 4,
"nbformat_minor": 5
}