You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1496 lines
115 KiB
Plaintext
1496 lines
115 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Data exploration\n",
|
|
"This notebook provides an example how the data has been loaded and accessed for further analysis."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:14:51.434299Z",
|
|
"start_time": "2018-12-03T02:14:51.048281Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Enable autoreloading of our modules. \n",
|
|
"# Most of the code will be located in the /src/ folder, \n",
|
|
"# and then called from the notebook.\n",
|
|
"%matplotlib inline\n",
|
|
"%reload_ext autoreload\n",
|
|
"%autoreload"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:14:56.153167Z",
|
|
"start_time": "2018-12-03T02:14:51.435303Z"
|
|
},
|
|
"scrolled": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from IPython.core.debugger import set_trace\n",
|
|
"\n",
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"import os\n",
|
|
"\n",
|
|
"import plotly\n",
|
|
"import plotly.graph_objs as go\n",
|
|
"import plotly.plotly as py\n",
|
|
"import plotly.tools as tls\n",
|
|
"import plotly.figure_factory as ff\n",
|
|
"import plotly.io as pio\n",
|
|
"\n",
|
|
"\n",
|
|
"import matplotlib\n",
|
|
"from matplotlib import cm\n",
|
|
"import colorlover as cl\n",
|
|
"\n",
|
|
"from ipywidgets import widgets, Output\n",
|
|
"from IPython.display import display, clear_output, Image, HTML\n",
|
|
"\n",
|
|
"from sklearn.metrics import confusion_matrix\n",
|
|
"\n",
|
|
"import ruptures as rpt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Import our data into pandas Dataframes for the analysis. Data files are `.csv` files which are stored in the `./data/interim/` folder."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:15:19.403132Z",
|
|
"start_time": "2018-12-03T02:14:56.154127Z"
|
|
},
|
|
"pixiedust": {
|
|
"displayParams": {}
|
|
},
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Importing waves.csv\n",
|
|
"Importing tides.csv\n",
|
|
"Importing profiles.csv\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"C:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\numpy\\lib\\arraysetops.py:472: FutureWarning:\n",
|
|
"\n",
|
|
"elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Importing sites.csv\n",
|
|
"Importing profile_features.csv\n",
|
|
"Importing impacts_forecasted_foreshore_slope_sto06.csv\n",
|
|
"Importing impacts_forecasted_mean_slope_sto06.csv\n",
|
|
"Importing impacts_observed.csv\n",
|
|
"Importing twl_foreshore_slope_sto06.csv\n",
|
|
"Importing twl_mean_slope_sto06.csv\n",
|
|
"Done!\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def df_from_csv(csv, index_col, data_folder='../data/interim'):\n",
|
|
" print('Importing {}'.format(csv))\n",
|
|
" return pd.read_csv(os.path.join(data_folder,csv), index_col=index_col)\n",
|
|
"\n",
|
|
"df_waves = df_from_csv('waves.csv', index_col=[0, 1])\n",
|
|
"df_tides = df_from_csv('tides.csv', index_col=[0, 1])\n",
|
|
"df_profiles = df_from_csv('profiles.csv', index_col=[0, 1, 2])\n",
|
|
"df_sites = df_from_csv('sites.csv', index_col=[0])\n",
|
|
"df_profile_features = df_from_csv('profile_features.csv', index_col=[0])\n",
|
|
"\n",
|
|
"# Note that the forecasted data sets should be in the same order for impacts and twls\n",
|
|
"impacts = {\n",
|
|
" 'forecasted': {\n",
|
|
" 'foreshore_slope_sto06': df_from_csv('impacts_forecasted_foreshore_slope_sto06.csv', index_col=[0]),\n",
|
|
" 'mean_slope_sto06': df_from_csv('impacts_forecasted_mean_slope_sto06.csv', index_col=[0]),\n",
|
|
" },\n",
|
|
" 'observed': df_from_csv('impacts_observed.csv', index_col=[0])\n",
|
|
" }\n",
|
|
"\n",
|
|
"\n",
|
|
"twls = {\n",
|
|
" 'forecasted': {\n",
|
|
" 'foreshore_slope_sto06': df_from_csv('twl_foreshore_slope_sto06.csv', index_col=[0, 1]),\n",
|
|
" 'mean_slope_sto06':df_from_csv('twl_mean_slope_sto06.csv', index_col=[0, 1]),\n",
|
|
" }\n",
|
|
"}\n",
|
|
"print('Done!')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-11-27T23:02:57.631306Z",
|
|
"start_time": "2018-11-27T23:02:57.615263Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"hide_input": true
|
|
},
|
|
"source": [
|
|
"The following interactive data explorer displays information on a per `site_id` basis. It can be used to examine pre/post storm cross-sections, water level time series and observed/predicted storm impacts."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:42:30.072305Z",
|
|
"start_time": "2018-12-03T02:42:26.548191Z"
|
|
},
|
|
"code_folding": [
|
|
408
|
|
],
|
|
"hide_input": false,
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "4db27acde589487c8982ac9319257ae0",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/html": [
|
|
"<p>Failed to display Jupyter Widget of type <code>VBox</code>.</p>\n",
|
|
"<p>\n",
|
|
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
|
|
" that the widgets JavaScript is still loading. If this message persists, it\n",
|
|
" likely means that the widgets JavaScript library is either not installed or\n",
|
|
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
|
|
" Widgets Documentation</a> for setup instructions.\n",
|
|
"</p>\n",
|
|
"<p>\n",
|
|
" If you're reading this message in another frontend (for example, a static\n",
|
|
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
|
|
" it may mean that your frontend doesn't currently support widgets.\n",
|
|
"</p>\n"
|
|
],
|
|
"text/plain": [
|
|
"VBox(children=(VBox(children=(HTML(value='<b>Filter by observed and predicted impacts:</b>'), HBox(children=(VBox(children=(HTML(value='Observed Impacts'), SelectMultiple(index=(0, 1), options=('swash', 'collision'), value=('swash', 'collision')))), VBox(children=(HTML(value='Forecasted: foreshore_slope_sto06'), SelectMultiple(index=(0, 1, 2, 3), options=('swash', 'collision', 'overwash', 'inundation'), value=('swash', 'collision', 'overwash', 'inundation')))), VBox(children=(HTML(value='Forecasted: mean_slope_sto06'), SelectMultiple(index=(0, 1, 2, 3), options=('swash', 'collision', 'overwash', 'inundation'), value=('swash', 'collision', 'overwash', 'inundation')))))))), HBox(children=(VBox(children=(HTML(value='<b>Filter by site_id:</b>'), HBox(children=(Dropdown(description='site_id: ', index=943, options=('AVOCAn0001', 'AVOCAn0002', 'AVOCAn0003', 'AVOCAn0004', 'AVOCAn0005', 'AVOCAn0006', 'AVOCAn0007', 'AVOCAn0008', 'AVOCAn0009', 'AVOCAs0001', 'AVOCAs0002', 'AVOCAs0003', 'AVOCAs0004', 'AVOCAs0005', 'AVOCAs0006', 'AVOCAs0007', 'AVOCAs0008', 'BILG0001', 'BILG0002', 'BILG0003', 'BILG0004', 'BILG0005', 'BLUEYS0001', 'BLUEYS0002', 'BLUEYS0003', 'BLUEYS0004', 'BLUEYS0005', 'BLUEYS0006', 'BOAT0001', 'BOAT0002', 'BOAT0003', 'BOAT0004', 'BOAT0005', 'BOOM0001', 'BOOM0002', 'BOOM0003', 'BOOM0004', 'BOOM0005', 'BOOM0006', 'BOOM0007', 'BOOM0008', 'BOOM0009', 'BOOM0010', 'BOOM0011', 'BOOM0012', 'BOOM0013', 'BOOM0014', 'CATHIE0001', 'CATHIE0002', 'CATHIE0003', 'CATHIE0004', 'CATHIE0005', 'CATHIE0006', 'CATHIE0007', 'CATHIE0008', 'CATHIE0009', 'CATHIE0010', 'CATHIE0011', 'CATHIE0012', 'CATHIE0013', 'CATHIE0014', 'CATHIE0015', 'CATHIE0016', 'CATHIE0017', 'CATHIE0018', 'CATHIE0019', 'CATHIE0020', 'CATHIE0021', 'CATHIE0022', 'CATHIE0023', 'CATHIE0024', 'CATHIE0025', 'CATHIE0026', 'CATHIE0027', 'CATHIE0028', 'CATHIE0029', 'CRESn0001', 'CRESn0002', 'CRESn0003', 'CRESn0004', 'CRESn0005', 'CRESn0006', 'CRESn0007', 'CRESn0008', 'CRESn0009', 'CRESn0010', 'CRESn0011', 'CRESn0012', 'CRESn0013', 'CRESn0014', 'CRESn0015', 'CRESn0016', 'CRESn0017', 'CRESn0018', 'CRESn0019', 'CRESn0020', 'CRESn0021', 'CRESn0022', 'CRESn0023', 'CRESn0024', 'CRESn0025', 'CRESn0026', 'CRESn0027', 'CRESn0028', 'CRESn0029', 'CRESn0030', 'CRESn0031', 'CRESn0032', 'CRESn0033', 'CRESn0034', 'CRESn0035', 'CRESn0036', 'CRESn0037', 'CRESn0038', 'CRESn0039', 'CRESn0040', 'CRESn0041', 'CRESn0042', 'CRESn0043', 'CRESn0044', 'CRESn0045', 'CRESn0046', 'CRESn0047', 'CRESn0048', 'CRESn0049', 'CRESn0050', 'CRESn0051', 'CRESn0052', 'CRESn0053', 'CRESn0054', 'CRESn0055', 'CRESn0056', 'CRESn0057', 'CRESn0058', 'CRESn0059', 'CRESn0060', 'CRESn0061', 'CRESn0062', 'CRESn0063', 'CRESn0064', 'CRESn0065', 'CRESn0066', 'CRESn0067', 'CRESn0068', 'CRESn0069', 'CRESn0070', 'CRESn0071', 'CRESn0072', 'CRESn0073', 'CRESn0074', 'CRESn0075', 'CRESn0076', 'CRESn0077', 'CRESn0078', 'CRESn0079', 'CRESn0080', 'CRESn0081', 'CRESn0082', 'CRESn0083', 'CRESn0084', 'CRESn0085', 'CRESn0086', 'CRESn0087', 'CRESn0088', 'CRESn0089', 'CRESn0090', 'CRESn0091', 'CRESn0092', 'CRESn0093', 'CRESn0094', 'CRESn0095', 'CRESn0096', 'CRESn0097', 'CRESn0098', 'CRESn0099', 'CRESn0100', 'CRESn0101', 'CRESn0102', 'CRESn0103', 'CRESn0104', 'CRESn0105', 'CRESn0106', 'CRESn0107', 'CRESn0108', 'CRESn0109', 'CRESn0110', 'CRESn0111', 'CRESn0112', 'CRESn0113', 'CRESn0114', 'CRESn0115', 'CRESn0116', 'CRESn0117', 'CRESn0118', 'CRESn0119', 'CRESn0120', 'CRESn0121', 'CRESn0122', 'CRESn0123', 'CRESn0124', 'CRESn0125', 'CRESs0001', 'CRESs0002', 'CRESs0003', 'CRESs0004', 'CRESs0005', 'CRESs0006', 'CRESs0007', 'CRESs0008', 'CRESs0009', 'CRESs0010', 'CRESs0011', 'CRESs0012', 'CRESs0013', 'CRESs0014', 'DEEWHYn0001', 'DEEWHYn0002', 'DEEWHYn0003', 'DEEWHYn0004', 'DEEWHYn0005', 'DEEWHYn0006', 'DEEWHYn0007', 'DEEWHYn0008', 'DEEWHYn0009', 'DEEWHYn0010', 'DEEWHYn0011', 'DEEWHYn0012', 'DEEWHYs0001', 'DEEWHYs0002', 'DEEWHYs0003', 'DEEWHYs0004', 'DEEWHYs0005', 'DEEWHYs0006', 'DEEWHYs0007', 'DEEWHYs0008', 'DIAMONDn0001', 'DIAMONDn0002', 'DIAMONDn0003', 'DIAMONDn0004', 'DIAMONDn0005', 'DIAMONDn0006', 'DIAMONDn0007', 'DIAMONDn0008', 'DIAMONDn0009', 'DIAMONDn0010', 'DIAMONDn0011', 'DIAMONDn0012', 'DIAMONDn0013', 'DIAMONDn0014', 'DIAMONDn0015', 'DIAMONDn0016', 'DIAMONDn0017', 'DIAMONDn0018', 'DIAMONDn0019', 'DIAMONDn0020', 'DIAMONDn0021', 'DIAMONDn0022', 'DIAMONDn0023', 'DIAMONDn0024', 'DIAMONDn0025', 'DIAMONDn0026', 'DIAMONDn0027', 'DIAMONDn0028', 'DIAMONDn0029', 'DIAMONDn0030', 'DIAMONDn0031', 'DIAMONDn0032', 'DIAMONDn0033', 'DIAMONDn0034', 'DIAMONDn0035', 'DIAMONDn0036', 'DIAMONDn0037', 'DIAMONDn0038', 'DIAMONDn0039', 'DIAMONDn0040', 'DIAMONDn0041', 'DIAMONDs0001', 'DIAMONDs0002', 'DIAMONDs0003', 'DIAMONDs0004', 'DIAMONDs0005', 'DIAMONDs0006', 'DIAMONDs0007', 'DUNBn0001', 'DUNBn0002', 'DUNBn0003', 'DUNBn0004', 'DUNBn0005', 'DUNBn0006', 'DUNBn0007', 'DUNBn0008', 'DUNBn0009', 'DUNBn0010', 'DUNBn0011', 'DUNBn0012', 'DUNBn0013', 'DUNBn0014', 'DUNBn0015', 'DUNBn0016', 'DUNBn0017', 'DUNBn0018', 'DUNBn0019', 'DUNBn0020', 'DUNBn0021', 'DUNBn0022', 'DUNBn0023', 'DUNBn0024', 'DUNBn0025', 'DUNBn0026', 'DUNBn0027', 'DUNBn0028', 'DUNBn0029', 'DUNBn0030', 'DUNBn0031', 'DUNBn0032', 'DUNBn0033', 'DUNBn0034', 'DUNBn0035', 'DUNBn0036', 'DUNBn0037', 'DUNBn0038', 'DUNBn0039', 'DUNBn0040', 'DUNBn0041', 'DUNBn0042', 'DUNBn0043', 'DUNBn0044', 'DUNBn0045', 'DUNBn0046', 'DUNBn0047', 'DUNBn0048', 'DUNBn0049', 'DUNBn0050', 'DUNBn0051', 'DUNBn0052', 'DUNBn0053', 'DUNBn0054', 'DUNBn0055', 'DUNBn0056', 'DUNBn0057', 'DUNBn0058', 'DUNBn0059', 'DUNBn0060', 'DUNBn0061', 'DUNBn0062', 'DUNBn0063', 'DUNBn0064', 'DUNBn0065', 'DUNBn0066', 'DUNBn0067', 'DUNBn0068', 'DUNBn0069', 'DUNBn0070', 'DUNBn0071', 'DUNBn0072', 'DUNBn0073', 'DUNBn0074', 'DUNBs0001', 'DUNBs0002', 'DUNBs0003', 'DUNBs0004', 'DUNBs0005', 'DUNBs0006', 'DUNBs0007', 'DUNBs0008', 'DUNBs0009', 'DUNBs0010', 'DUNBs0011', 'ELIZA0001', 'ELIZA0002', 'ELIZA0003', 'ELIZA0004', 'ELIZA0005', 'ELIZA0006', 'ELIZA0007', 'ENTRA0001', 'ENTRA0002', 'ENTRA0003', 'ENTRA0004', 'ENTRA0005', 'ENTRA0006', 'ENTRA0007', 'ENTRA0008', 'ENTRA0009', 'ENTRA0010', 'ENTRA0011', 'ENTRA0012', 'ENTRA0013', 'ENTRA0014', 'ENTRA0015', 'ENTRA0016', 'ENTRA0017', 'ENTRA0018', 'ENTRA0019', 'ENTRA0020', 'ENTRA0021', 'ENTRA0022', 'ENTRA0023', 'ENTRA0024', 'ENTRA0025', 'ENTRA0026', 'ENTRA0027', 'ENTRA0028', 'ENTRA0029', 'ENTRA0030', 'ENTRA0031', 'ENTRA0032', 'ENTRA0033', 'ENTRA0034', 'ENTRA0035', 'ENTRA0036', 'ENTRA0037', 'ENTRA0038', 'ENTRA0039', 'ENTRA0040', 'ENTRA0041', 'ENTRA0042', 'ENTRA0043', 'ENTRA0044', 'ENTRA0045', 'ENTRA0046', 'ENTRA0047', 'ENTRA0048', 'ENTRA0049', 'ENTRA0050', 'ENTRA0051', 'ENTRA0052', 'ENTRA0053', 'ENTRA0054', 'ENTRA0055', 'ENTRA0056', 'ENTRA0057', 'ENTRA0058', 'ENTRA0059', 'ENTRA0060', 'ENTRA0061', 'ENTRA0062', 'ENTRA0063', 'ENTRA0064', 'ENTRA0065', 'ENTRA0066', 'ENTRA0067', 'ENTRA0068', 'ENTRA0069', 'ENTRA0070', 'ENTRA0071', 'ENTRA0072', 'ENTRA0073', 'ENTRA0074', 'ENTRA0075', 'ENTRA0076', 'ENTRA0077', 'ENTRA0078', 'ENTRA0079', 'FOST0001', 'FOST0002', 'FOST0003', 'FOST0004', 'FOST0005', 'FOST0006', 'GRANTSn0001', 'GRANTSn0002', 'GRANTSn0003', 'GRANTSn0004', 'GRANTSn0005', 'GRANTSn0006', 'GRANTSn0007', 'GRANTSn0008', 'GRANTSn0009', 'GRANTSn0010', 'GRANTSn0011', 'GRANTSn0012', 'GRANTSn0013', 'GRANTSn0014', 'GRANTSn0015', 'GRANTSn0016', 'GRANTSn0017', 'GRANTSn0018', 'GRANTSn0019', 'GRANTSn0020', 'GRANTSn0021', 'GRANTSn0022', 'GRANTSn0023', 'GRANTSn0024', 'GRANTSs0001', 'GRANTSs0002', 'GRANTSs0003', 'GRANTSs0004', 'GRANTSs0005', 'GRANTSs0006', 'GRANTSs0007', 'GRANTSs0008', 'GRANTSs0009', 'GRANTSs0010', 'GRANTSs0011', 'GRANTSs0012', 'GRANTSs0013', 'GRANTSs0014', 'HARGn0001', 'HARGn0002', 'HARGn0003', 'HARGn0004', 'HARGn0005', 'HARGn0006', 'HARGn0007', 'HARGs0001', 'HARGs0002', 'HARGs0003', 'HARGs0004', 'HARGs0005', 'HARGs0006', 'HARGs0007', 'HARR0001', 'HARR0002', 'HARR0003', 'HARR0004', 'HARR0005', 'HARR0006', 'HARR0007', 'HARR0008', 'HARR0009', 'HARR0010', 'HARR0011', 'HARR0012', 'HARR0013', 'HARR0014', 'HARR0015', 'HARR0016', 'HARR0017', 'HARR0018', 'HARR0019', 'HARR0020', 'HARR0021', 'HARR0022', 'HARR0023', 'HARR0024', 'HARR0025', 'HARR0026', 'HARR0027', 'HARR0028', 'HARR0029', 'HARR0030', 'HARR0031', 'HARR0032', 'HARR0033', 'HARR0034', 'HARR0035', 'HARR0036', 'HARR0037', 'HARR0038', 'HARR0039', 'HARR0040', 'HARR0041', 'HARR0042', 'HARR0043', 'HARR0044', 'HARR0045', 'HARR0046', 'HARR0047', 'HARR0048', 'HARR0049', 'HARR0050', 'HARR0051', 'HARR0052', 'HARR0053', 'HARR0054', 'HARR0055', 'HARR0056', 'LHOUSE0001', 'LHOUSE0002', 'LHOUSE0003', 'LHOUSE0004', 'LHOUSE0005', 'LHOUSE0006', 'LHOUSE0007', 'LHOUSE0008', 'LHOUSE0009', 'LHOUSE0010', 'LHOUSE0011', 'LHOUSE0012', 'LHOUSE0013', 'LHOUSEn0001', 'LHOUSEn0002', 'LHOUSEn0003', 'LHOUSEn0004', 'LHOUSEn0005', 'LHOUSEn0006', 'LHOUSEn0007', 'LHOUSEn0008', 'LHOUSEn0009', 'LHOUSEn0010', 'LHOUSEn0011', 'LHOUSEn0012', 'LHOUSEn0013', 'LHOUSEn0014', 'LHOUSEn0015', 'LHOUSEn0016', 'LHOUSEn0017', 'LHOUSEn0018', 'LHOUSEn0019', 'LHOUSEn0020', 'LHOUSEn0021', 'LHOUSEn0022', 'LHOUSEn0023', 'LHOUSEn0024', 'LHOUSEn0025', 'LHOUSEn0026', 'LHOUSEn0027', 'LHOUSEn0028', 'LHOUSEn0029', 'LHOUSEn0030', 'LHOUSEn0031', 'LHOUSEn0032', 'LHOUSEn0033', 'LHOUSEn0034', 'LHOUSEn0035', 'LHOUSEn0036', 'LHOUSEn0037', 'LHOUSEn0038', 'LHOUSEn0039', 'LHOUSEn0040', 'LHOUSEn0041', 'LHOUSEn0042', 'LHOUSEn0043', 'LHOUSEn0044', 'LHOUSEn0045', 'LHOUSEn0046', 'LHOUSEn0047', 'LHOUSEn0048', 'LHOUSEn0049', 'LHOUSEn0050', 'LHOUSEn0051', 'LHOUSEn0052', 'LHOUSEn0053', 'LHOUSEn0054', 'LHOUSEn0055', 'LHOUSEn0056', 'LHOUSEn0057', 'LHOUSEn0058', 'LHOUSEn0059', 'LHOUSEn0060', 'LHOUSEn0061', 'LHOUSEn0062', 'LHOUSEn0063', 'LHOUSEn0064', 'LHOUSEn0065', 'LHOUSEn0066', 'LHOUSEn0067', 'LHOUSEn0068', 'LHOUSEn0069', 'LHOUSEn0070', 'LHOUSEn0071', 'LHOUSEn0072', 'LHOUSEn0073', 'LHOUSEn0074', 'LHOUSEn0075', 'LHOUSEn0076', 'LHOUSEn0077', 'LHOUSEn0078', 'LHOUSEn0079', 'LHOUSEn0080', 'LHOUSEn0081', 'LHOUSEn0082', 'LHOUSEn0083', 'LHOUSEn0084', 'LHOUSEn0085', 'LHOUSEn0086', 'LHOUSEn0087', 'LHOUSEn0088', 'LHOUSEn0089', 'LHOUSEn0090', 'LHOUSEn0091', 'LHOUSEn0092', 'LHOUSEn0093', 'LHOUSEs0001', 'LHOUSEs0002', 'LHOUSEs0003', 'LHOUSEs0004', 'LHOUSEs0005', 'LHOUSEs0006', 'LHOUSEs0007', 'LHOUSEs0008', 'LHOUSEs0009', 'LHOUSEs0010', 'LHOUSEs0011', 'LHOUSEs0012', 'LHOUSEs0013', 'LHOUSEs0014', 'LHOUSEs0015', 'LHOUSEs0016', 'LHOUSEs0017', 'LHOUSEs0018', 'LHOUSEs0019', 'LHOUSEs0020', 'LHOUSEs0021', 'LHOUSEs0022', 'LHOUSEs0023', 'LHOUSEs0024', 'LHOUSEs0025', 'LHOUSEs0026', 'LHOUSEs0027', 'LHOUSEs0028', 'LHOUSEs0029', 'LHOUSEs0030', 'LHOUSEs0031', 'LHOUSEs0032', 'MACM0001', 'MACM0002', 'MACM0003', 'MACM0004', 'MACM0005', 'MACM0006', 'MACM0007', 'MACM0008', 'MACM0009', 'MACM0010', 'MACM0011', 'MACM0012', 'MACM0013', 'MACM0014', 'MACM0015', 'MACM0016', 'MANNING0001', 'MANNING0002', 'MANNING0003', 'MANNING0004', 'MANNING0005', 'MANNING0006', 'MANNING0007', 'MANNING0008', 'MANNING0009', 'MANNING0010', 'MANNING0011', 'MANNING0012', 'MANNING0013', 'MANNING0014', 'MANNING0015', 'MANNING0016', 'MANNING0017', 'MANNING0018', 'MANNING0019', 'MANNING0020', 'MANNING0021', 'MANNING0022', 'MANNING0023', 'MANNING0024', 'MANNING0025', 'MANNING0026', 'MANNING0027', 'MANNING0028', 'MANNING0029', 'MANNING0030', 'MANNING0031', 'MANNING0032', 'MANNING0033', 'MANNING0034', 'MANNING0035', 'MANNING0036', 'MANNING0037', 'MANNING0038', 'MANNING0039', 'MANNING0040', 'MANNING0041', 'MANNING0042', 'MANNING0043', 'MANNING0044', 'MANNING0045', 'MANNING0046', 'MANNING0047', 'MANNING0048', 'MANNING0049', 'MANNING0050', 'MANNING0051', 'MANNING0052', 'MANNING0053', 'MANNING0054', 'MANNING0055', 'MANNING0056', 'MANNING0057', 'MANNING0058', 'MANNING0059', 'MANNING0060', 'MANNING0061', 'MANNING0062', 'MANNING0063', 'MANNING0064', 'MANNING0065', 'MANNING0066', 'MANNING0067', 'MANNING0068', 'MANNING0069', 'MANNING0070', 'MANNING0071', 'MANNING0072', 'MANNING0073', 'MANNING0074', 'MANNING0075', 'MANNING0076', 'MANNING0077', 'MANNING0078', 'MANNING0079', 'MANNING0080', 'MANNING0081', 'MANNING0082', 'MANNING0083', 'MANNING0084', 'MANNING0085', 'MANNING0086', 'MANNING0087', 'MANNING0088', 'MANNING0089', 'MANNING0090', 'MANNING0091', 'MANNING0092', 'MANNING0093', 'MANNING0094', 'MANNING0095', 'MANNING0096', 'MANNING0097', 'MANNING0098', 'MANNING0099', 'MANNING0100', 'MANNING0101', 'MANNING0102', 'MANNING0103', 'MANNING0104', 'MANNING0105', 'MANNING0106', 'MANNING0107', 'MANNING0108', 'MANNING0109', 'MANNING0110', 'MANNING0111', 'MANNING0112', 'MANNING0113', 'MANNING0114', 'MANNING0115', 'MANNING0116', 'MANNING0117', 'MANNING0118', 'MANNING0119', 'MANNING0120', 'MANNING0121', 'MANNING0122', 'MANNING0123', 'MANNING0124', 'MANNING0125', 'MANNING0126', 'MANNING0127', 'MONA0001', 'MONA0002', 'MONA0003', 'MONA0004', 'MONA0005', 'MONA0006', 'MONA0007', 'MONA0008', 'MONA0009', 'MONA0010', 'MONA0011', 'MONA0012', 'MONA0013', 'MONA0014', 'MONA0015', 'MONA0016', 'MONA0017', 'MONA0018', 'MONA0019', 'MONA0020', 'MONA0021', 'NAMB0001', 'NAMB0002', 'NAMB0003', 'NAMB0004', 'NAMB0005', 'NAMB0006', 'NAMB0007', 'NAMB0008', 'NAMB0009', 'NAMB0010', 'NAMB0011', 'NAMB0012', 'NAMB0013', 'NAMB0014', 'NAMB0015', 'NAMB0016', 'NAMB0017', 'NAMB0018', 'NAMB0019', 'NAMB0020', 'NAMB0021', 'NAMB0022', 'NAMB0023', 'NAMB0024', 'NAMB0025', 'NAMB0026', 'NAMB0027', 'NAMB0028', 'NAMB0029', 'NAMB0030', 'NAMB0031', 'NAMB0032', 'NAMB0033', 'NAMB0034', 'NAMB0035', 'NAMB0036', 'NAMB0037', 'NAMB0038', 'NAMB0039', 'NAMB0040', 'NAMB0041', 'NAMB0042', 'NAMB0043', 'NAMB0044', 'NAMB0045', 'NAMB0046', 'NAMB0047', 'NAMB0048', 'NAMB0049', 'NAMB0050', 'NAMB0051', 'NAMB0052', 'NAMB0053', 'NAMB0054', 'NAMB0055', 'NAMB0056', 'NAMB0057', 'NAMB0058', 'NAMB0059', 'NAMB0060', 'NAMB0061', 'NAMB0062', 'NAMB0063', 'NAMB0064', 'NAMB0065', 'NAMB0066', 'NAMB0067', 'NAMB0068', 'NAMB0069', 'NAMB0070', 'NAMB0071', 'NAMB0072', 'NAMB0073', 'NARRA0001', 'NARRA0002', 'NARRA0003', 'NARRA0004', 'NARRA0005', 'NARRA0006', 'NARRA0007', 'NARRA0008', 'NARRA0009', 'NARRA0010', 'NARRA0011', 'NARRA0012', 'NARRA0013', 'NARRA0014', 'NARRA0015', 'NARRA0016', 'NARRA0017', 'NARRA0018', 'NARRA0019', 'NARRA0020', 'NARRA0021', 'NARRA0022', 'NARRA0023', 'NARRA0024', 'NARRA0025', 'NARRA0026', 'NARRA0027', 'NARRA0028', 'NARRA0029', 'NARRA0030', 'NARRA0031', 'NARRA0032', 'NARRA0033', 'NARRA0034', 'NARRA0035', 'NARRA0036', 'NINEMn0001', 'NINEMn0002', 'NINEMn0003', 'NINEMn0004', 'NINEMn0005', 'NINEMn0006', 'NINEMn0007', 'NINEMn0008', 'NINEMn0009', 'NINEMn0010', 'NINEMn0011', 'NINEMn0012', 'NINEMn0013', 'NINEMn0014', 'NINEMn0015', 'NINEMn0016', 'NINEMn0017', 'NINEMn0018', 'NINEMn0019', 'NINEMn0020', 'NINEMn0021', 'NINEMn0022', 'NINEMn0023', 'NINEMn0024', 'NINEMn0025', 'NINEMn0026', 'NINEMn0027', 'NINEMn0028', 'NINEMn0029', 'NINEMn0030', 'NINEMn0031', 'NINEMn0032', 'NINEMn0033', 'NINEMn0034', 'NINEMn0035', 'NINEMn0036', 'NINEMn0037', 'NINEMn0038', 'NINEMn0039', 'NINEMn0040', 'NINEMn0041', 'NINEMn0042', 'NINEMn0043', 'NINEMn0044', 'NINEMn0045', 'NINEMn0046', 'NINEMn0047', 'NINEMn0048', 'NINEMn0049', 'NINEMn0050', 'NINEMn0051', 'NINEMn0052', 'NINEMn0053', 'NINEMn0054', 'NINEMs0001', 'NINEMs0002', 'NINEMs0003', 'NINEMs0004', 'NINEMs0005', 'NINEMs0006', 'NINEMs0007', 'NINEMs0008', 'NINEMs0009', 'NINEMs0010', 'NINEMs0011', 'NINEMs0012', 'NINEMs0013', 'NINEMs0014', 'NINEMs0015', 'NINEMs0016', 'NINEMs0017', 'NINEMs0018', 'NINEMs0019', 'NINEMs0020', 'NINEMs0021', 'NINEMs0022', 'NINEMs0023', 'NINEMs0024', 'NINEMs0025', 'NINEMs0026', 'NINEMs0027', 'NINEMs0028', 'NINEMs0029', 'NINEMs0030', 'NINEMs0031', 'NINEMs0032', 'NINEMs0033', 'NINEMs0034', 'NINEMs0035', 'NINEMs0036', 'NINEMs0037', 'NINEMs0038', 'NINEMs0039', 'NINEMs0040', 'NINEMs0041', 'NINEMs0042', 'NINEMs0043', 'NINEMs0044', 'NINEMs0045', 'NINEMs0046', 'NINEMs0047', 'NINEMs0048', 'NINEMs0049', 'NINEMs0050', 'NINEMs0051', 'NINEMs0052', 'NINEMs0053', 'NINEMs0054', 'NINEMs0055', 'NINEMs0056', 'NINEMs0057', 'NINEMs0058', 'NINEMs0059', 'NINEMs0060', 'NSHORE_n0001', 'NSHORE_n0002', 'NSHORE_n0003', 'NSHORE_n0004', 'NSHORE_n0005', 'NSHORE_n0006', 'NSHORE_n0007', 'NSHORE_n0008', 'NSHORE_n0009', 'NSHORE_n0010', 'NSHORE_n0011', 'NSHORE_n0012', 'NSHORE_n0013', 'NSHORE_n0014', 'NSHORE_n0015', 'NSHORE_n0016', 'NSHORE_n0017', 'NSHORE_n0018', 'NSHORE_n0019', 'NSHORE_n0020', 'NSHORE_n0021', 'NSHORE_n0022', 'NSHORE_n0023', 'NSHORE_n0024', 'NSHORE_n0025', 'NSHORE_n0026', 'NSHORE_n0027', 'NSHORE_n0028', 'NSHORE_n0029', 'NSHORE_n0030', 'NSHORE_n0031', 'NSHORE_n0032', 'NSHORE_n0033', 'NSHORE_n0034', 'NSHORE_n0035', 'NSHORE_n0036', 'NSHORE_n0037', 'NSHORE_n0038', 'NSHORE_n0039', 'NSHORE_n0040', 'NSHORE_n0041', 'NSHORE_n0042', 'NSHORE_n0043', 'NSHORE_n0044', 'NSHORE_n0045', 'NSHORE_n0046', 'NSHORE_n0047', 'NSHORE_n0048', 'NSHORE_n0049', 'NSHORE_n0050', 'NSHORE_n0051', 'NSHORE_n0052', 'NSHORE_n0053', 'NSHORE_n0054', 'NSHORE_n0055', 'NSHORE_n0056', 'NSHORE_n0057', 'NSHORE_n0058', 'NSHORE_n0059', 'NSHORE_n0060', 'NSHORE_n0061', 'NSHORE_n0062', 'NSHORE_n0063', 'NSHORE_n0064', 'NSHORE_n0065', 'NSHORE_n0066', 'NSHORE_n0067', 'NSHORE_n0068', 'NSHORE_n0069', 'NSHORE_n0070', 'NSHORE_n0071', 'NSHORE_n0072', 'NSHORE_n0073', 'NSHORE_n0074', 'NSHORE_n0075', 'NSHORE_n0076', 'NSHORE_n0077', 'NSHORE_n0078', 'NSHORE_n0079', 'NSHORE_n0080', 'NSHORE_n0081', 'NSHORE_n0082', 'NSHORE_s0001', 'NSHORE_s0002', 'NSHORE_s0003', 'NSHORE_s0004', 'NSHORE_s0005', 'NSHORE_s0006', 'NSHORE_s0007', 'NSHORE_s0008', 'NSHORE_s0009', 'NSHORE_s0010', 'NSHORE_s0011', 'NSHORE_s0012', 'NSHORE_s0013', 'NSHORE_s0014', 'NSHORE_s0015', 'NSHORE_s0016', 'NSHORE_s0017', 'NSHORE_s0018', 'NSHORE_s0019', 'NSHORE_s0020', 'NSHORE_s0021', 'NSHORE_s0022', 'NSHORE_s0023', 'NSHORE_s0024', 'NSHORE_s0025', 'NSHORE_s0026', 'NSHORE_s0027', 'NSHORE_s0028', 'NSHORE_s0029', 'NSHORE_s0030', 'NSHORE_s0031', 'NSHORE_s0032', 'NSHORE_s0033', 'NSHORE_s0034', 'NSHORE_s0035', 'NSHORE_s0036', 'NSHORE_s0037', 'NSHORE_s0038', 'NSHORE_s0039', 'NSHORE_s0040', 'NSHORE_s0041', 'NSHORE_s0042', 'NSHORE_s0043', 'NSHORE_s0044', 'OLDBAR0001', 'OLDBAR0002', 'OLDBAR0003', 'OLDBAR0004', 'OLDBAR0005', 'OLDBAR0006', 'OLDBAR0007', 'OLDBAR0008', 'OLDBAR0009', 'OLDBAR0010', 'OLDBAR0011', 'OLDBAR0012', 'OLDBAR0013', 'OLDBAR0014', 'OLDBAR0015', 'OLDBAR0016', 'OLDBAR0017', 'OLDBAR0018', 'OLDBAR0019', 'OLDBAR0020', 'OLDBAR0021', 'OLDBAR0022', 'OLDBAR0023', 'OLDBAR0024', 'OLDBAR0025', 'OLDBAR0026', 'OLDBAR0027', 'OLDBAR0028', 'OLDBAR0029', 'OLDBAR0030', 'OLDBAR0031', 'OLDBAR0032', 'OLDBAR0033', 'OLDBAR0034', 'OLDBAR0035', 'OLDBAR0036', 'ONEMILE0001', 'ONEMILE0002', 'ONEMILE0003', 'ONEMILE0004', 'ONEMILE0005', 'ONEMILE0006', 'ONEMILE0007', 'ONEMILE0008', 'ONEMILE0009', 'ONEMILE0010', 'ONEMILE0011', 'ONEMILE0012', 'ONEMILE0013', 'PEARLn0001', 'PEARLn0002', 'PEARLn0003', 'PEARLn0004', 'PEARLn0005', 'PEARLs0001', 'PEARLs0002', 'PEARLs0003', 'PEARLs0004', 'PEARLs0005', 'SCOT0001', 'SCOT0002', 'SCOT0003', 'SCOT0004', 'SCOT0005', 'SCOT0006', 'SCOT0007', 'SCOT0008', 'SCOT0009', 'SCOT0010', 'SCOT0011', 'SCOT0012', 'STOCNn0001', 'STOCNn0002', 'STOCNn0003', 'STOCNn0004', 'STOCNn0005', 'STOCNn0006', 'STOCNn0007', 'STOCNn0008', 'STOCNn0009', 'STOCNn0010', 'STOCNn0011', 'STOCNn0012', 'STOCNn0013', 'STOCNn0014', 'STOCNn0015', 'STOCNn0016', 'STOCNn0017', 'STOCNn0018', 'STOCNn0019', 'STOCNn0020', 'STOCNn0021', 'STOCNn0022', 'STOCNn0023', 'STOCNn0024', 'STOCNn0025', 'STOCNn0026', 'STOCNn0027', 'STOCNn0028', 'STOCNn0029', 'STOCNn0030', 'STOCNn0031', 'STOCNn0032', 'STOCNn0033', 'STOCNn0034', 'STOCNn0035', 'STOCNn0036', 'STOCNn0037', 'STOCNn0038', 'STOCNn0039', 'STOCNn0040', 'STOCNn0041', 'STOCNn0042', 'STOCNn0043', 'STOCNn0044', 'STOCNn0045', 'STOCNn0046', 'STOCNn0047', 'STOCNn0048', 'STOCNn0049', 'STOCNn0050', 'STOCNn0051', 'STOCNn0052', 'STOCNn0053', 'STOCNn0054', 'STOCNn0055', 'STOCNn0056', 'STOCNn0057', 'STOCNn0058', 'STOCNn0059', 'STOCNn0060', 'STOCNn0061', 'STOCNn0062', 'STOCNn0063', 'STOCNn0064', 'STOCNn0065', 'STOCNs0001', 'STOCNs0002', 'STOCNs0003', 'STOCNs0004', 'STOCNs0005', 'STOCNs0006', 'STOCNs0007', 'STOCNs0008', 'STOCNs0009', 'STOCNs0010', 'STOCNs0011', 'STOCNs0012', 'STOCNs0013', 'STOCNs0014', 'STOCNs0015', 'STOCNs0016', 'STOCNs0017', 'STOCNs0018', 'STOCNs0019', 'STOCNs0020', 'STOCNs0021', 'STOCNs0022', 'STOCNs0023', 'STOCNs0024', 'STOCNs0025', 'STOCNs0026', 'STOCNs0027', 'STOCNs0028', 'STOCNs0029', 'STOCNs0030', 'STOCNs0031', 'STOCNs0032', 'STOCNs0033', 'STOCNs0034', 'STOCNs0035', 'STOCNs0036', 'STOCNs0037', 'STOCNs0038', 'STOCNs0039', 'STOCNs0040', 'STOCNs0041', 'STOCNs0042', 'STOCNs0043', 'STOCNs0044', 'STOCNs0045', 'STOCNs0046', 'STOCNs0047', 'STOCNs0048', 'STOCNs0049', 'STOCNs0050', 'STOCNs0051', 'STOCNs0052', 'STOCNs0053', 'STOCNs0054', 'STOCNs0055', 'STOCNs0056', 'STOCNs0057', 'STOCNs0058', 'STOCNs0059', 'STOCNs0060', 'STOCNs0061', 'STOCNs0062', 'STOCNs0063', 'STOCNs0064', 'STOCNs0065', 'STOCNs0066', 'STOCNs0067', 'STOCNs0068', 'STOCNs0069', 'STOCNs0070', 'STOCNs0071', 'STOCNs0072', 'STOCNs0073', 'STOCNs0074', 'STOCNs0075', 'STOCNs0076', 'STOCNs0077', 'STOCNs0078', 'STOCNs0079', 'STOCNs0080', 'STOCNs0081', 'STOCNs0082', 'STOCNs0083', 'STOCNs0084', 'STOCNs0085', 'STOCNs0086', 'STOCNs0087', 'STOCNs0088', 'STOCNs0089', 'STOCNs0090', 'STOCNs0091', 'STOCNs0092', 'STOCNs0093', 'STOCNs0094', 'STOCNs0095', 'STOCNs0096', 'STOCNs0097', 'STOCNs0098', 'STOCNs0099', 'STOCNs0100', 'STOCNs0101', 'STOCNs0102', 'STOCNs0103', 'STOCNs0104', 'STOCNs0105', 'STOCNs0106', 'STOCNs0107', 'STOCNs0108', 'STOCNs0109', 'STOCNs0110', 'STOCNs0111', 'STOCNs0112', 'STOCNs0113', 'STOCNs0114', 'STOCNs0115', 'STOCNs0116', 'STOCNs0117', 'STOCNs0118', 'STOCNs0119', 'STOCNs0120', 'STOCNs0121', 'STOCNs0122', 'STOCNs0123', 'STOCNs0124', 'STOCNs0125', 'STOCNs0126', 'STOCNs0127', 'STOCNs0128', 'STOCNs0129', 'STOCNs0130', 'STOCNs0131', 'STOCNs0132', 'STOCNs0133', 'STOCNs0134', 'STOCNs0135', 'STOCNs0136', 'STOCNs0137', 'STOCNs0138', 'STOCNs0139', 'STOCNs0140', 'STOCNs0141', 'STOCNs0142', 'STOCNs0143', 'STOCNs0144', 'STOCNs0145', 'STOCNs0146', 'STOCNs0147', 'STOCNs0148', 'STOCNs0149', 'STOCNs0150', 'STOCNs0151', 'STOCNs0152', 'STOCNs0153', 'STOCNs0154', 'STOCNs0155', 'STOCNs0156', 'STOCNs0157', 'STOCNs0158', 'STOCNs0159', 'STOCNs0160', 'STOCNs0161', 'STOCNs0162', 'STOCNs0163', 'STOCNs0164', 'STOCNs0165', 'STOCNs0166', 'STOCNs0167', 'STOCNs0168', 'STOCNs0169', 'STOCNs0170', 'STOCNs0171', 'STOCNs0172', 'STOCNs0173', 'STOCNs0174', 'STOCNs0175', 'STOCNs0176', 'STOCNs0177', 'STOCNs0178', 'STOCNs0179', 'STOCNs0180', 'STOCNs0181', 'STOCNs0182', 'STOCNs0183', 'STOCNs0184', 'STOCNs0185', 'STOCNs0186', 'STOCNs0187', 'STOCNs0188', 'STOCNs0189', 'STOCNs0190', 'STOCNs0191', 'STOCNs0192', 'STOCNs0193', 'STOCNs0194', 'STOCNs0195', 'STOCNs0196', 'STOCNs0197', 'STOCNs0198', 'STOCNs0199', 'STOCNs0200', 'STOCNs0201', 'STOCNs0202', 'STOCNs0203', 'STOCNs0204', 'STOCNs0205', 'STOCNs0206', 'STOCNs0207', 'STOCNs0208', 'STOCNs0209', 'STOCS0001', 'STOCS0002', 'STOCS0003', 'STOCS0004', 'STOCS0005', 'STOCS0006', 'STOCS0007', 'STOCS0008', 'STOCS0009', 'STOCS0010', 'STOCS0011', 'STOCS0012', 'STOCS0013', 'STOCS0014', 'STOCS0015', 'STOCS0016', 'STOCS0017', 'STOCS0018', 'STOCS0019', 'STOCS0020', 'STOCS0021', 'STOCS0022', 'STOCS0023', 'STOCS0024', 'STOCS0025', 'STOCS0026', 'STOCS0027', 'STOCS0028', 'STOCS0029', 'STOCS0030', 'STOCS0031', 'STOCS0032', 'STOCS0033', 'STOCS0034', 'STOCS0035', 'STOCS0036', 'STOCS0037', 'STOCS0038', 'STOCS0039', 'STOCS0040', 'STOCS0041', 'STOCS0042', 'STOCS0043', 'STOCS0044', 'STOCS0045', 'STOCS0046', 'STUART0001', 'STUART0002', 'STUART0003', 'STUART0004', 'STUART0005', 'STUART0006', 'STUART0007', 'STUART0008', 'STUART0009', 'STUART0010', 'STUART0011', 'STUART0012', 'STUART0013', 'STUART0014', 'STUART0015', 'STUART0016', 'STUART0017', 'STUART0018', 'STUART0019', 'STUART0020', 'STUART0021', 'STUART0022', 'STUART0023', 'STUART0024', 'STUART0025', 'STUART0026', 'STUART0027', 'STUART0028', 'STUART0029', 'STUART0030', 'STUART0031', 'STUART0032', 'STUART0033', 'STUART0034', 'STUART0035', 'STUART0036', 'STUART0037', 'STUART0038', 'STUART0039', 'STUART0040', 'STUART0041', 'STUART0042', 'STUART0043', 'STUART0044', 'STUART0045', 'STUART0046', 'STUART0047', 'STUART0048', 'STUART0049', 'STUART0050', 'STUART0051', 'STUART0052', 'STUART0053', 'STUART0054', 'STUART0055', 'STUART0056', 'STUART0057', 'STUART0058', 'STUART0059', 'STUART0060', 'STUART0061', 'STUART0062', 'STUART0063', 'STUART0064', 'STUART0065', 'STUART0066', 'STUART0067', 'STUART0068', 'STUART0069', 'STUART0070', 'STUART0071', 'STUART0072', 'STUART0073', 'STUART0074', 'STUART0075', 'STUART0076', 'STUART0077', 'STUART0078', 'STUART0079', 'STUART0080', 'STUART0081', 'STUART0082', 'STUART0083', 'STUART0084', 'STUART0085', 'STUART0086', 'STUART0087', 'STUART0088', 'STUART0089', 'SWRO0001', 'SWRO0002', 'SWRO0003', 'SWRO0004', 'SWRO0005', 'SWRO0006', 'SWRO0007', 'SWRO0008', 'SWRO0009', 'SWRO0010', 'SWRO0011', 'SWRO0012', 'SWRO0013', 'SWRO0014', 'SWRO0015', 'SWRO0016', 'SWRO0017', 'SWRO0018', 'SWRO0019', 'SWRO0020', 'SWRO0021', 'SWRO0022', 'SWRO0023', 'SWRO0024', 'SWRO0025', 'SWRO0026', 'TREACH0001', 'TREACH0002', 'TREACH0003', 'TREACH0004', 'TREACH0005', 'TREACH0006', 'TREACH0007', 'TREACH0008', 'TREACH0009', 'TREACH0010', 'TREACH0011', 'TREACH0012', 'TREACH0013', 'TREACH0014', 'TREACH0015', 'TREACH0016', 'WAMBE0001', 'WAMBE0002', 'WAMBE0003', 'WAMBE0004', 'WAMBE0005', 'WAMBE0006', 'WAMBE0007', 'WAMBE0008', 'WAMBE0009', 'WAMBE0010', 'WAMBE0011', 'WAMBE0012', 'WAMBE0013', 'WAMBE0014', 'WAMBE0015', 'WAMBE0016', 'WAMBE0017', 'WAMBE0018', 'WAMBE0019', 'WAMBE0020', 'WAMBE0021', 'WAMBE0022', 'WAMBE0023', 'WAMBE0024', 'WAMBE0025', 'WAMBE0026', 'WAMBE0027'), value='NARRA0001'),)))), HTML(value=''))), HBox(children=(FigureWidget({\n",
|
|
" 'data': [{'line': {'color': 'rgb(51,160,44)', 'width': 2},\n",
|
|
" 'name': 'Pre Storm Profile',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '9296f63a-b2b2-4788-a80a-16948615c245',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'line': {'color': 'rgb(255,127,0)', 'width': 2},\n",
|
|
" 'name': 'Post Storm Profile',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'cb9c91ed-5504-48b9-b9f9-8207b1b69e0f',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'marker': {'color': 'rgba(255,255,255,0)', 'line': {'color': 'rgba(106,61,154, 1)', 'width': 2}, 'size': 10},\n",
|
|
" 'mode': 'markers',\n",
|
|
" 'name': 'Pre-storm dune crest',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '8b3ceb5b-53ab-4fbf-ba0d-6bbd000bc45d',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'marker': {'color': 'rgba(255,255,255,0)', 'line': {'color': 'rgba(202,178,214,1)', 'width': 2}, 'size': 10},\n",
|
|
" 'mode': 'markers',\n",
|
|
" 'name': 'Pre-storm dune toe',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'ee3d137a-1000-432d-8897-b96519d6f472',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'marker': {'color': 'rgba(255,255,255,0)',\n",
|
|
" 'line': {'color': 'rgba(106,61,154, 1)', 'width': 2},\n",
|
|
" 'size': 10,\n",
|
|
" 'symbol': 'square'},\n",
|
|
" 'mode': 'markers',\n",
|
|
" 'name': 'Post-storm dune crest',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '44b06676-00fa-40c1-a78b-d302ddb56ba7',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'marker': {'color': 'rgba(255,255,255,0)',\n",
|
|
" 'line': {'color': 'rgba(202,178,214,1)', 'width': 2},\n",
|
|
" 'size': 10,\n",
|
|
" 'symbol': 'square'},\n",
|
|
" 'mode': 'markers',\n",
|
|
" 'name': 'Post-storm dune toe',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'efec8ac2-fedc-4ee0-9849-0e72846641ff',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'line': {'color': 'rgb(44,127,184)', 'width': 4},\n",
|
|
" 'mode': 'lines',\n",
|
|
" 'name': 'Peak R_high: foreshore_slope_sto06',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'f67daafe-c7e5-4c97-a57a-6a24d115b4f6',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]},\n",
|
|
" {'line': {'color': 'rgb(127,205,187)', 'width': 4},\n",
|
|
" 'mode': 'lines',\n",
|
|
" 'name': 'Peak R_high: mean_slope_sto06',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '96dc2836-4d14-447f-ba9d-67f9901d88e4',\n",
|
|
" 'x': [0],\n",
|
|
" 'y': [0]}],\n",
|
|
" 'layout': {'height': 300,\n",
|
|
" 'legend': {'font': {'size': 10}},\n",
|
|
" 'margin': {'b': 50, 'l': 50, 'r': 20, 't': 50},\n",
|
|
" 'title': 'Bed Profiles',\n",
|
|
" 'xaxis': {'autorange': True,\n",
|
|
" 'range': [0, 200],\n",
|
|
" 'showgrid': True,\n",
|
|
" 'showline': True,\n",
|
|
" 'title': 'x (m)',\n",
|
|
" 'zeroline': True},\n",
|
|
" 'yaxis': {'autorange': False,\n",
|
|
" 'range': [-1, 20],\n",
|
|
" 'showgrid': True,\n",
|
|
" 'showline': True,\n",
|
|
" 'title': 'z (m)',\n",
|
|
" 'zeroline': True}}\n",
|
|
"}), FigureWidget({\n",
|
|
" 'data': [{'lat': array([-33.45779575, -33.4584035 , -33.45911131, ..., -33.44589876,\n",
|
|
" -33.44665247, -33.44732817]),\n",
|
|
" 'lon': array([151.44105489, 151.44024676, 151.43957804, ..., 151.44420973,\n",
|
|
" 151.44479881, 151.44550951]),\n",
|
|
" 'marker': {'size': 10},\n",
|
|
" 'mode': 'markers',\n",
|
|
" 'text': array(['AVOCAn0001', 'AVOCAn0002', 'AVOCAn0003', ..., 'WAMBE0025', 'WAMBE0026',\n",
|
|
" 'WAMBE0027'], dtype='<U12'),\n",
|
|
" 'type': 'scattermapbox',\n",
|
|
" 'uid': '570c8855-f1c5-4e96-9aba-4b7d22a27a3e'},\n",
|
|
" {'lat': [0],\n",
|
|
" 'lon': [0],\n",
|
|
" 'marker': {'color': 'rgb(255, 0, 0)', 'opacity': 0.5, 'size': 20},\n",
|
|
" 'mode': 'markers',\n",
|
|
" 'text': array(['AVOCAn0001', 'AVOCAn0002', 'AVOCAn0003', ..., 'WAMBE0025', 'WAMBE0026',\n",
|
|
" 'WAMBE0027'], dtype='<U12'),\n",
|
|
" 'type': 'scattermapbox',\n",
|
|
" 'uid': 'ea15e404-eb95-4a60-84a4-b836dca7540a'}],\n",
|
|
" 'layout': {'autosize': True,\n",
|
|
" 'height': 300,\n",
|
|
" 'hovermode': 'closest',\n",
|
|
" 'mapbox': {'accesstoken': ('pk.eyJ1IjoiY2hyaXNsZWFtYW4iLCJ' ... 'Hp5bCJ9.U2dwFg2c7RFjUNSayERUiw'),\n",
|
|
" 'bearing': 0,\n",
|
|
" 'center': {'lat': -33.7, 'lon': 151.3},\n",
|
|
" 'pitch': 0,\n",
|
|
" 'style': 'satellite-streets',\n",
|
|
" 'zoom': 12},\n",
|
|
" 'margin': {'b': 50, 'l': 20, 'r': 20, 't': 50},\n",
|
|
" 'showlegend': False}\n",
|
|
"}))), FigureWidget({\n",
|
|
" 'data': [{'name': 'Hs0',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'c651ac70-6488-4092-8d05-94711360d983',\n",
|
|
" 'x': [0, 1],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 1],\n",
|
|
" 'yaxis': 'y3'},\n",
|
|
" {'name': 'Tp',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'e41de225-8da2-43fe-a017-8d20cf87eabf',\n",
|
|
" 'x': [0, 1],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 1],\n",
|
|
" 'yaxis': 'y4'},\n",
|
|
" {'line': {'color': 'rgb(214, 117, 14)', 'dash': 'dot', 'width': 2},\n",
|
|
" 'mode': 'lines',\n",
|
|
" 'name': 'Dune Crest',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'cef80970-266f-4fda-95d9-086df66f1378',\n",
|
|
" 'x': [0, 3],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 3],\n",
|
|
" 'yaxis': 'y'},\n",
|
|
" {'line': {'color': 'rgb(142, 77, 8)', 'dash': 'dash', 'width': 2},\n",
|
|
" 'mode': 'lines',\n",
|
|
" 'name': 'Dune Toe',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '862e890d-df27-495a-9b35-9088bceb63a7',\n",
|
|
" 'x': [0, 3],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 3],\n",
|
|
" 'yaxis': 'y'},\n",
|
|
" {'line': {'color': 'rgb(8,51,137)', 'dash': 'dot', 'width': 2},\n",
|
|
" 'name': 'Tide+Surge WL',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'b192f254-90d8-4a9d-9f85-3893cf345d35',\n",
|
|
" 'x': [0, 3],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 3],\n",
|
|
" 'yaxis': 'y'},\n",
|
|
" {'line': {'color': 'rgb(44,127,184)', 'width': 3},\n",
|
|
" 'name': 'R_high: foreshore_slope_sto06',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'd3bfad9e-ca15-4397-a45b-894faa84fa87',\n",
|
|
" 'x': [0],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0],\n",
|
|
" 'yaxis': 'y'},\n",
|
|
" {'line': {'color': 'rgb(127,205,187)', 'width': 3},\n",
|
|
" 'name': 'R_high: mean_slope_sto06',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': 'd775dc35-f973-49fe-9b00-a5d31e78a3f1',\n",
|
|
" 'x': [0],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0],\n",
|
|
" 'yaxis': 'y'},\n",
|
|
" {'line': {'color': 'rgb(44,127,184)', 'width': 3},\n",
|
|
" 'name': 'Beta: foreshore_slope_sto06',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '792ba8ba-6863-42b6-ac2d-0e5fd82b23f5',\n",
|
|
" 'x': [0, 1],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 1],\n",
|
|
" 'yaxis': 'y2'},\n",
|
|
" {'line': {'color': 'rgb(127,205,187)', 'width': 3},\n",
|
|
" 'name': 'Beta: mean_slope_sto06',\n",
|
|
" 'type': 'scatter',\n",
|
|
" 'uid': '85b18217-d1e6-43d2-ac74-9282f4e7c139',\n",
|
|
" 'x': [0, 1],\n",
|
|
" 'xaxis': 'x',\n",
|
|
" 'y': [0, 1],\n",
|
|
" 'yaxis': 'y2'}],\n",
|
|
" 'layout': {'height': 400,\n",
|
|
" 'legend': {'font': {'size': 10}},\n",
|
|
" 'margin': {'b': 100, 'l': 50, 'r': 20, 't': 20},\n",
|
|
" 'xaxis': {'anchor': 'y3', 'domain': [0.0, 1.0], 'title': 'datetime'},\n",
|
|
" 'yaxis': {'anchor': 'free', 'domain': [0.7333333333333333, 1.0], 'position': 0.0, 'title': 'z (mAHD)'},\n",
|
|
" 'yaxis2': {'anchor': 'free',\n",
|
|
" 'domain': [0.36666666666666664, 0.6333333333333333],\n",
|
|
" 'position': 0.0,\n",
|
|
" 'title': 'beta (-)'},\n",
|
|
" 'yaxis3': {'anchor': 'x', 'domain': [0.0, 0.26666666666666666], 'title': 'Hs0 (m)'},\n",
|
|
" 'yaxis4': {'overlaying': 'y3', 'side': 'right', 'title': 'Tp (s)'}}\n",
|
|
"}), HBox(children=(VBox(children=(HTML(value='observed'), Output())), VBox(children=(HTML(value='foreshore_slope_sto06'), Output())), VBox(children=(HTML(value='mean_slope_sto06'), Output()))))))"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Create widgets for filtering by observed and forecasted impacts\n",
|
|
"filter_title = widgets.HTML(\n",
|
|
" value=\"<b>Filter by observed and predicted impacts:</b>\", )\n",
|
|
"\n",
|
|
"titles = ['Observed Impacts']\n",
|
|
"selectboxes = [\n",
|
|
" widgets.SelectMultiple(\n",
|
|
" options=impacts['observed'].storm_regime.dropna().unique().tolist(),\n",
|
|
" value=impacts['observed'].storm_regime.dropna().unique().tolist(),\n",
|
|
" disabled=False)\n",
|
|
"]\n",
|
|
"\n",
|
|
"# Iterate through each of our forecasted impacts\n",
|
|
"for forecast in impacts['forecasted']:\n",
|
|
" selectboxes.append(\n",
|
|
" widgets.SelectMultiple(\n",
|
|
" options=impacts['forecasted'][\n",
|
|
" forecast].storm_regime.dropna().unique().tolist(),\n",
|
|
" value=impacts['forecasted'][forecast].storm_regime.dropna()\n",
|
|
" .unique().tolist(),\n",
|
|
" disabled=False))\n",
|
|
" titles.append('Forecasted: {}'.format(forecast))\n",
|
|
"\n",
|
|
"titles = [widgets.HTML(value=title) for title in titles]\n",
|
|
"\n",
|
|
"children = widgets.HBox(children=[\n",
|
|
" widgets.VBox(children=[title, box])\n",
|
|
" for title, box in zip(titles, selectboxes)\n",
|
|
"])\n",
|
|
"filter_container = widgets.VBox(children=[filter_title, children])\n",
|
|
"\n",
|
|
"# Create widgets for selecting site_id\n",
|
|
"site_id_title = widgets.HTML(value=\"<b>Filter by site_id:</b>\", )\n",
|
|
"\n",
|
|
"site_id_select = widgets.Dropdown(\n",
|
|
" description='site_id: ',\n",
|
|
" value='NARRA0001',\n",
|
|
" options=df_profiles.index.get_level_values('site_id').unique()\n",
|
|
" .sort_values().tolist())\n",
|
|
"\n",
|
|
"site_id_impacts = widgets.HTML(value=\"\", )\n",
|
|
"\n",
|
|
"site_id_container = widgets.HBox(children=[\n",
|
|
" widgets.VBox(\n",
|
|
" children=[site_id_title,\n",
|
|
" widgets.HBox(children=[site_id_select])]), site_id_impacts\n",
|
|
"])\n",
|
|
"\n",
|
|
"# Build colors for each of our forecasts\n",
|
|
"colors = list(\n",
|
|
" reversed(cl.scales[str(max(len(impacts['forecasted']),\n",
|
|
" 3))]['seq']['YlGnBu']))\n",
|
|
"\n",
|
|
"# Add panel for pre/post storm profiles\n",
|
|
"trace1 = go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Pre Storm Profile',\n",
|
|
" line=dict(color=('rgb(51,160,44)'), width=2))\n",
|
|
"trace2 = go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Post Storm Profile',\n",
|
|
" line=dict(color=('rgb(255,127,0)'), width=2))\n",
|
|
"trace3 = go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Pre-storm dune crest',\n",
|
|
" mode='markers',\n",
|
|
" marker=dict(\n",
|
|
" color='rgba(255,255,255,0)',\n",
|
|
" size=10,\n",
|
|
" line=dict(color='rgba(106,61,154, 1)', width=2)),\n",
|
|
")\n",
|
|
"trace4 = go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Pre-storm dune toe',\n",
|
|
" mode='markers',\n",
|
|
" marker=dict(\n",
|
|
" color='rgba(255,255,255,0)',\n",
|
|
" size=10,\n",
|
|
" line=dict(color='rgba(202,178,214,1)', width=2)),\n",
|
|
")\n",
|
|
"\n",
|
|
"trace5 = go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Post-storm dune crest',\n",
|
|
" mode='markers',\n",
|
|
" marker=dict(\n",
|
|
" color='rgba(255,255,255,0)',\n",
|
|
" size=10,\n",
|
|
" line=dict(color='rgba(106,61,154, 1)', width=2),\n",
|
|
" symbol='square'),\n",
|
|
")\n",
|
|
"trace6 = go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Post-storm dune toe',\n",
|
|
" mode='markers',\n",
|
|
" marker=dict(\n",
|
|
" color='rgba(255,255,255,0)',\n",
|
|
" size=10,\n",
|
|
" line=dict(color='rgba(202,178,214,1)', width=2),\n",
|
|
" symbol='square'),\n",
|
|
")\n",
|
|
"\n",
|
|
"\n",
|
|
"forecast_traces = []\n",
|
|
"for forecast, color in zip(impacts['forecasted'], colors):\n",
|
|
" forecast_traces.append(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='Peak R_high: {}'.format(forecast),\n",
|
|
" mode='lines',\n",
|
|
" line=dict(\n",
|
|
" color=color,\n",
|
|
" width=4,\n",
|
|
" )))\n",
|
|
"\n",
|
|
"layout = go.Layout(\n",
|
|
" title='Bed Profiles',\n",
|
|
" height=300,\n",
|
|
" legend=dict(font={'size': 10}),\n",
|
|
" margin=dict(t=50, b=50, l=50, r=20),\n",
|
|
" xaxis=dict(\n",
|
|
" title='x (m)',\n",
|
|
" autorange=True,\n",
|
|
" showgrid=True,\n",
|
|
" zeroline=True,\n",
|
|
" showline=True,\n",
|
|
" range=[0, 200]),\n",
|
|
" yaxis=dict(\n",
|
|
" title='z (m)',\n",
|
|
" autorange=False,\n",
|
|
" showgrid=True,\n",
|
|
" zeroline=True,\n",
|
|
" showline=True,\n",
|
|
" range=[-1, 20]))\n",
|
|
"\n",
|
|
"g_profiles = go.FigureWidget(\n",
|
|
" data=[trace1, trace2, trace3, trace4, trace5, trace6] + forecast_traces, layout=layout)\n",
|
|
"\n",
|
|
"# Add panel for google maps\n",
|
|
"mapbox_access_token = 'pk.eyJ1IjoiY2hyaXNsZWFtYW4iLCJhIjoiY2pvNTY1MzZpMDc2OTN2bmw5MGsycHp5bCJ9.U2dwFg2c7RFjUNSayERUiw'\n",
|
|
"\n",
|
|
"data = [\n",
|
|
" go.Scattermapbox(\n",
|
|
" lat=df_sites['lat'],\n",
|
|
" lon=df_sites['lon'],\n",
|
|
" mode='markers',\n",
|
|
" marker=dict(size=10),\n",
|
|
" text=df_sites.index.get_level_values('site_id'),\n",
|
|
" ),\n",
|
|
" go.Scattermapbox(\n",
|
|
" lat=[0],\n",
|
|
" lon=[0],\n",
|
|
" mode='markers',\n",
|
|
" marker=dict(\n",
|
|
" size=20,\n",
|
|
" color='rgb(255, 0, 0)',\n",
|
|
" opacity=0.5,\n",
|
|
" ),\n",
|
|
" text=df_sites.index.get_level_values('site_id'),\n",
|
|
" ),\n",
|
|
"]\n",
|
|
"\n",
|
|
"layout = go.Layout(\n",
|
|
" autosize=True,\n",
|
|
" height=300,\n",
|
|
" hovermode='closest',\n",
|
|
" showlegend=False,\n",
|
|
" margin=dict(t=50, b=50, l=20, r=20),\n",
|
|
" mapbox=dict(\n",
|
|
" accesstoken=mapbox_access_token,\n",
|
|
" bearing=0,\n",
|
|
" center=dict(lat=-33.7, lon=151.3),\n",
|
|
" pitch=0,\n",
|
|
" zoom=12,\n",
|
|
" style='satellite-streets'),\n",
|
|
")\n",
|
|
"\n",
|
|
"fig = dict(data=data, layout=layout)\n",
|
|
"g_map = go.FigureWidget(data=data, layout=layout)\n",
|
|
"\n",
|
|
"subplot = tls.make_subplots(3, 1, print_grid=False, shared_xaxes=True)\n",
|
|
"g_timeseries = go.FigureWidget(subplot)\n",
|
|
"\n",
|
|
"# Add trace for Hs0\n",
|
|
"g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0, 1],\n",
|
|
" y=[0, 1],\n",
|
|
" name='Hs0',\n",
|
|
" ),\n",
|
|
" row=3,\n",
|
|
" col=1,\n",
|
|
")\n",
|
|
"\n",
|
|
"# Add trace for Tp\n",
|
|
"g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0, 1],\n",
|
|
" y=[0, 1],\n",
|
|
" name='Tp',\n",
|
|
" ),\n",
|
|
" row=3,\n",
|
|
" col=1,\n",
|
|
")\n",
|
|
"\n",
|
|
"# Add water levels\n",
|
|
"g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0, 3],\n",
|
|
" y=[0, 3],\n",
|
|
" name='Dune Crest',\n",
|
|
" mode='lines',\n",
|
|
" line=dict(color=('rgb(214, 117, 14)'), width=2, dash='dot')),\n",
|
|
" row=1,\n",
|
|
" col=1)\n",
|
|
"\n",
|
|
"g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0, 3],\n",
|
|
" y=[0, 3],\n",
|
|
" name='Dune Toe',\n",
|
|
" mode='lines',\n",
|
|
" line=dict(color=('rgb(142, 77, 8)'), width=2, dash='dash')),\n",
|
|
" row=1,\n",
|
|
" col=1)\n",
|
|
"\n",
|
|
"g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0, 3],\n",
|
|
" y=[0, 3],\n",
|
|
" name='Tide+Surge WL',\n",
|
|
" line=dict(color=('rgb(8,51,137)'), width=2, dash='dot')),\n",
|
|
" row=1,\n",
|
|
" col=1)\n",
|
|
"\n",
|
|
"for forecast, color in zip(twls['forecasted'], colors):\n",
|
|
" g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0],\n",
|
|
" y=[0],\n",
|
|
" name='R_high: {}'.format(forecast),\n",
|
|
" line=dict(color=color, width=3)),\n",
|
|
" row=1,\n",
|
|
" col=1)\n",
|
|
"\n",
|
|
"# Add trace for each forecasted beta term\n",
|
|
"for forecast, color in zip(impacts['forecasted'], colors):\n",
|
|
" g_timeseries.add_trace(\n",
|
|
" go.Scatter(\n",
|
|
" x=[0, 1],\n",
|
|
" y=[0, 1],\n",
|
|
" name='Beta: {}'.format(forecast),\n",
|
|
" line=dict(color=color, width=3)),\n",
|
|
" row=2,\n",
|
|
" col=1,\n",
|
|
" )\n",
|
|
"\n",
|
|
"# Create axis for Tp on same plot as Hs\n",
|
|
"g_timeseries['layout']['yaxis4'] = {'overlaying': 'y3', 'side': 'right'}\n",
|
|
"g_timeseries.data[1]['yaxis'] = 'y4'\n",
|
|
"\n",
|
|
"# Add labels to each axis\n",
|
|
"g_timeseries.layout['xaxis']['title'] = 'datetime'\n",
|
|
"g_timeseries.layout['yaxis1']['title'] = 'z (mAHD)'\n",
|
|
"g_timeseries.layout['yaxis2']['title'] = 'beta (-)'\n",
|
|
"g_timeseries.layout['yaxis3']['title'] = 'Hs0 (m)'\n",
|
|
"g_timeseries.layout['yaxis4']['title'] = 'Tp (s)'\n",
|
|
"\n",
|
|
"# Update figure size\n",
|
|
"g_timeseries['layout'].update(height=400, legend=dict(font={'size': 10}))\n",
|
|
"g_timeseries['layout'].update(margin=dict(t=20, l=50, r=20, b=100))\n",
|
|
"\n",
|
|
"# Add panel for some tables\n",
|
|
"titles = ['observed'] + [forecast for forecast in impacts['forecasted']]\n",
|
|
"titles = [widgets.HTML(value=\"{}\".format(title)) for title in titles]\n",
|
|
"\n",
|
|
"\n",
|
|
"def get_observed_impacts_table(site_id):\n",
|
|
" display(impacts['observed'].query(\"site_id=='{}'\".format(site_id)).T)\n",
|
|
"\n",
|
|
"\n",
|
|
"def get_forecasted_impacts_table(site_id, forecast):\n",
|
|
" display(impacts['forecasted'][forecast].query(\n",
|
|
" \"site_id=='{}'\".format(site_id)).T)\n",
|
|
"\n",
|
|
"\n",
|
|
"impacts_table_observed = widgets.interactive_output(\n",
|
|
" get_observed_impacts_table, {'site_id': site_id_select})\n",
|
|
"forecasted_impacts_tables = []\n",
|
|
"for forecast, title in zip(impacts['forecasted'], titles[1:]):\n",
|
|
" forecasted_impacts_tables.append(\n",
|
|
" widgets.interactive_output(get_forecasted_impacts_table, {\n",
|
|
" 'site_id': site_id_select,\n",
|
|
" 'forecast': title\n",
|
|
" }))\n",
|
|
"\n",
|
|
"tables = [impacts_table_observed] + forecasted_impacts_tables\n",
|
|
"\n",
|
|
"title_tables = [\n",
|
|
" widgets.VBox(children=[title, table])\n",
|
|
" for title, table in zip(titles, tables)\n",
|
|
"]\n",
|
|
"\n",
|
|
"tables_container = widgets.HBox(children=[*title_tables])\n",
|
|
"\n",
|
|
"\n",
|
|
"def update_profile(change):\n",
|
|
"\n",
|
|
" site_id = site_id_select.value\n",
|
|
"\n",
|
|
" if site_id is None:\n",
|
|
" return\n",
|
|
"\n",
|
|
" site_profile = df_profiles.query('site_id == \"{}\"'.format(site_id))\n",
|
|
" prestorm_profile = site_profile.query('profile_type == \"prestorm\"')\n",
|
|
" poststorm_profile = site_profile.query('profile_type == \"poststorm\"')\n",
|
|
"\n",
|
|
" poststorm_x = poststorm_profile.index.get_level_values('x').tolist()\n",
|
|
" poststorm_z = poststorm_profile.z.tolist()\n",
|
|
"\n",
|
|
" prestorm_x = prestorm_profile.index.get_level_values('x').tolist()\n",
|
|
" prestorm_z = prestorm_profile.z.tolist()\n",
|
|
"\n",
|
|
" prestorm_site_features = df_profile_features.query(\n",
|
|
" 'site_id == \"{}\" and profile_type==\"prestorm\"'.format(site_id))\n",
|
|
" prestorm_dune_crest_x = prestorm_site_features.dune_crest_x\n",
|
|
" prestorm_dune_crest_z = prestorm_site_features.dune_crest_z\n",
|
|
" prestorm_dune_toe_x = prestorm_site_features.dune_toe_x\n",
|
|
" prestorm_dune_toe_z = prestorm_site_features.dune_toe_z\n",
|
|
"\n",
|
|
" \n",
|
|
" poststorm_site_features = df_profile_features.query(\n",
|
|
" 'site_id == \"{}\" and profile_type==\"poststorm\"'.format(site_id))\n",
|
|
" poststorm_dune_crest_x = poststorm_site_features.dune_crest_x\n",
|
|
" poststorm_dune_crest_z = poststorm_site_features.dune_crest_z\n",
|
|
" poststorm_dune_toe_x = poststorm_site_features.dune_toe_x\n",
|
|
" poststorm_dune_toe_z = poststorm_site_features.dune_toe_z\n",
|
|
" \n",
|
|
" # Update beach profile section plots\n",
|
|
" with g_profiles.batch_update():\n",
|
|
" g_profiles.data[0].x = prestorm_x\n",
|
|
" g_profiles.data[0].y = prestorm_z\n",
|
|
" g_profiles.data[1].x = poststorm_x\n",
|
|
" g_profiles.data[1].y = poststorm_z\n",
|
|
" g_profiles.data[2].x = prestorm_dune_crest_x\n",
|
|
" g_profiles.data[2].y = prestorm_dune_crest_z\n",
|
|
" g_profiles.data[3].x = prestorm_dune_toe_x\n",
|
|
" g_profiles.data[3].y = prestorm_dune_toe_z\n",
|
|
" g_profiles.data[4].x = poststorm_dune_crest_x\n",
|
|
" g_profiles.data[4].y = poststorm_dune_crest_z\n",
|
|
" g_profiles.data[5].x = poststorm_dune_toe_x\n",
|
|
" g_profiles.data[5].y = poststorm_dune_toe_z\n",
|
|
" \n",
|
|
" for n, forecast in enumerate(impacts['forecasted']):\n",
|
|
" R_high = max(impacts['forecasted'][forecast].query(\n",
|
|
" \"site_id=='{}'\".format(site_id)).R_high)\n",
|
|
" g_profiles.data[6 + n].x = [200, 400]\n",
|
|
" g_profiles.data[6 + n].y = [R_high, R_high]\n",
|
|
"\n",
|
|
" # Relocate plan of satellite imagery\n",
|
|
" site_coords = df_sites.query('site_id == \"{}\"'.format(site_id))\n",
|
|
" with g_map.batch_update():\n",
|
|
" g_map.layout.mapbox['center'] = {\n",
|
|
" 'lat': site_coords['lat'].values[0],\n",
|
|
" 'lon': site_coords['lon'].values[0]\n",
|
|
" }\n",
|
|
" g_map.layout.mapbox['zoom'] = 15\n",
|
|
" g_map.data[1].lat = [site_coords['lat'].values[0]]\n",
|
|
" g_map.data[1].lon = [site_coords['lon'].values[0]]\n",
|
|
" g_map.data[1].text = site_coords['lon'].index.get_level_values(\n",
|
|
" 'site_id').tolist()\n",
|
|
"\n",
|
|
" # Update time series plots\n",
|
|
" df_waves_site = df_waves.query(\"site_id=='{}'\".format(site_id))\n",
|
|
" times = df_waves_site.index.get_level_values('datetime').tolist()\n",
|
|
" Hs0s = df_waves_site.Hs0.tolist()\n",
|
|
" Tps = df_waves_site.Tp.tolist()\n",
|
|
"\n",
|
|
" df_tide_site = df_tides.query(\"site_id=='{}'\".format(site_id))\n",
|
|
" mask = (df_tide_site.index.get_level_values('datetime') >= min(times)) & (\n",
|
|
" df_tide_site.index.get_level_values('datetime') <= max(times))\n",
|
|
" df_tide_site = df_tide_site.loc[mask]\n",
|
|
"\n",
|
|
" with g_timeseries.batch_update():\n",
|
|
" g_timeseries.data[0].x = times\n",
|
|
" g_timeseries.data[0].y = Hs0s\n",
|
|
" g_timeseries.data[1].x = times\n",
|
|
" g_timeseries.data[1].y = Tps\n",
|
|
"\n",
|
|
" # Update beta values\n",
|
|
" idx_betas = [\n",
|
|
" n for n, x in enumerate(g_timeseries.data) if 'Beta' in x.name\n",
|
|
" ]\n",
|
|
" for i, forecast in zip(idx_betas, twls['forecasted']):\n",
|
|
" df_twl = twls['forecasted'][forecast].query(\n",
|
|
" \"site_id=='{}'\".format(site_id))\n",
|
|
" times = df_twl.index.get_level_values('datetime').tolist()\n",
|
|
" beta = df_twl.beta.tolist()\n",
|
|
" g_timeseries.data[i].x = times\n",
|
|
" g_timeseries.data[i].y = beta\n",
|
|
"\n",
|
|
" g_timeseries.data[2].x = [min(times), max(times)]\n",
|
|
" g_timeseries.data[3].x = [min(times), max(times)]\n",
|
|
" g_timeseries.data[4].x = df_tide_site.index.get_level_values(\n",
|
|
" 'datetime')\n",
|
|
" g_timeseries.data[2].y = prestorm_dune_crest_z.tolist()[\n",
|
|
" 0], prestorm_dune_crest_z.tolist()[0],\n",
|
|
" g_timeseries.data[3].y = prestorm_dune_toe_z.tolist()[0], prestorm_dune_toe_z.tolist()[\n",
|
|
" 0],\n",
|
|
" g_timeseries.data[4].y = df_tide_site.tide.tolist()\n",
|
|
"\n",
|
|
" # Update rhigh values\n",
|
|
" idx_betas = [\n",
|
|
" n for n, x in enumerate(g_timeseries.data) if 'R_high' in x.name\n",
|
|
" ]\n",
|
|
" for i, forecast in zip(idx_betas, twls['forecasted']):\n",
|
|
" df_twl = twls['forecasted'][forecast].query(\n",
|
|
" \"site_id=='{}'\".format(site_id))\n",
|
|
" times = df_twl.index.get_level_values('datetime').tolist()\n",
|
|
" R_high = df_twl.R_high.tolist()\n",
|
|
" g_timeseries.data[i].x = times\n",
|
|
" g_timeseries.data[i].y = R_high\n",
|
|
"\n",
|
|
" # Update site id impacts\n",
|
|
" observed_regime = impacts['observed'].query(\n",
|
|
" \"site_id=='{}'\".format(site_id)).storm_regime.values[0]\n",
|
|
" site_id_impacts.value = \"Observed: <b>{}</b><br>\".format(\n",
|
|
" observed_regime)\n",
|
|
"\n",
|
|
" for forecast in impacts['forecasted']:\n",
|
|
" regime = impacts['forecasted'][forecast].query(\n",
|
|
" \"site_id=='{}'\".format(site_id)).storm_regime.values[0]\n",
|
|
" site_id_impacts.value += '{}: <b>{}</b><br>'.format(\n",
|
|
" forecast, regime)\n",
|
|
"\n",
|
|
"\n",
|
|
"site_id_select.observe(update_profile, names=\"value\")\n",
|
|
"\n",
|
|
"\n",
|
|
"def update_filter(change):\n",
|
|
"\n",
|
|
" # Iterate through each box, only keeping site_ids which are not filtered out by each box\n",
|
|
" valid_site_ids = impacts['observed'].index.tolist()\n",
|
|
" dfs = [impacts['observed']\n",
|
|
" ] + [impacts['forecasted'][key] for key in impacts['forecasted']]\n",
|
|
"\n",
|
|
" for box, df in zip(selectboxes, dfs):\n",
|
|
" valid_site_ids = list(\n",
|
|
" set(valid_site_ids).intersection(\n",
|
|
" set(df[df.storm_regime.isin(box.value)].index.tolist())))\n",
|
|
" site_id_select.options = sorted(valid_site_ids)\n",
|
|
"\n",
|
|
" # TODO Update options in selectboxes with number of observations?\n",
|
|
"\n",
|
|
"\n",
|
|
"# Update the filter if any of the boxes changes\n",
|
|
"for box in selectboxes:\n",
|
|
" box.observe(update_filter, names=\"value\")\n",
|
|
"\n",
|
|
"# Display our widgets!\n",
|
|
"widgets.VBox([\n",
|
|
" filter_container, site_id_container,\n",
|
|
" widgets.HBox([g_profiles, g_map]), g_timeseries, tables_container\n",
|
|
"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-11-27T23:06:31.686277Z",
|
|
"start_time": "2018-11-27T23:06:31.665206Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-11-22T22:52:36.039701Z",
|
|
"start_time": "2018-11-22T22:52:36.035189Z"
|
|
},
|
|
"hide_input": true,
|
|
"scrolled": true
|
|
},
|
|
"source": [
|
|
"This visualization looks at how well the storm impact predictions performed. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:15:25.538827Z",
|
|
"start_time": "2018-12-03T02:15:24.506209Z"
|
|
},
|
|
"code_folding": [],
|
|
"hide_input": false,
|
|
"scrolled": false
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "a39f67eb200e413d9f909a6bbc5e701d",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"text/html": [
|
|
"<p>Failed to display Jupyter Widget of type <code>VBox</code>.</p>\n",
|
|
"<p>\n",
|
|
" If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n",
|
|
" that the widgets JavaScript is still loading. If this message persists, it\n",
|
|
" likely means that the widgets JavaScript library is either not installed or\n",
|
|
" not enabled. See the <a href=\"https://ipywidgets.readthedocs.io/en/stable/user_install.html\">Jupyter\n",
|
|
" Widgets Documentation</a> for setup instructions.\n",
|
|
"</p>\n",
|
|
"<p>\n",
|
|
" If you're reading this message in another frontend (for example, a static\n",
|
|
" rendering on GitHub or <a href=\"https://nbviewer.jupyter.org/\">NBViewer</a>),\n",
|
|
" it may mean that your frontend doesn't currently support widgets.\n",
|
|
"</p>\n"
|
|
],
|
|
"text/plain": [
|
|
"VBox(children=(VBox(children=(HTML(value='<b>Filter by beach:</b>'), SelectMultiple(index=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46), options=('AVOCAn', 'AVOCAs', 'BILG', 'BLUEYS', 'BOAT', 'BOOM', 'CATHIE', 'CRESn', 'CRESs', 'DEEWHYn', 'DEEWHYs', 'DIAMONDn', 'DIAMONDs', 'DUNBn', 'DUNBs', 'ELIZA', 'ENTRA', 'FOST', 'GRANTSn', 'GRANTSs', 'HARGn', 'HARGs', 'HARR', 'LHOUSE', 'LHOUSEn', 'LHOUSEs', 'MACM', 'MANNING', 'MONA', 'NAMB', 'NARRA', 'NINEMn', 'NINEMs', 'NSHORE_n', 'NSHORE_s', 'OLDBAR', 'ONEMILE', 'PEARLn', 'PEARLs', 'SCOT', 'STOCNn', 'STOCNs', 'STOCS', 'STUART', 'SWRO', 'TREACH', 'WAMBE'), value=('AVOCAn', 'AVOCAs', 'BILG', 'BLUEYS', 'BOAT', 'BOOM', 'CATHIE', 'CRESn', 'CRESs', 'DEEWHYn', 'DEEWHYs', 'DIAMONDn', 'DIAMONDs', 'DUNBn', 'DUNBs', 'ELIZA', 'ENTRA', 'FOST', 'GRANTSn', 'GRANTSs', 'HARGn', 'HARGs', 'HARR', 'LHOUSE', 'LHOUSEn', 'LHOUSEs', 'MACM', 'MANNING', 'MONA', 'NAMB', 'NARRA', 'NINEMn', 'NINEMs', 'NSHORE_n', 'NSHORE_s', 'OLDBAR', 'ONEMILE', 'PEARLn', 'PEARLs', 'SCOT', 'STOCNn', 'STOCNs', 'STOCS', 'STUART', 'SWRO', 'TREACH', 'WAMBE')))), VBox(children=(VBox(children=(HTML(value='<b>foreshore_slope_sto06</b>'), FigureWidget({\n",
|
|
" 'data': [{'colorscale': [[0.0, 'rgb(165, 0, 38)'], [0.003937007874015748,\n",
|
|
" 'rgb(166, 1, 38)'], [0.007874015748031496, 'rgb(168,\n",
|
|
" 3, 38)'], ..., [0.9921259842519685, 'rgb(2, 107,\n",
|
|
" 56)'], [0.9960629921259843, 'rgb(1, 105, 55)'], [1.0,\n",
|
|
" 'rgb(0, 104, 55)']],\n",
|
|
" 'reversescale': False,\n",
|
|
" 'showscale': False,\n",
|
|
" 'type': 'heatmap',\n",
|
|
" 'uid': 'f44e030d-f675-4ff3-8558-5eec469fe399',\n",
|
|
" 'x': [swash, collision, overwash, inundation],\n",
|
|
" 'y': [inundation, overwash, collision, swash],\n",
|
|
" 'z': [[0.1, 0.3, 0.5, 2], [1.0, 0.8, 0.6, 1], [1.4, 0.28, 1.6,\n",
|
|
" 0.21], [0.6, 0.4, 0.2, 3]]}],\n",
|
|
" 'layout': {'annotations': [{'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.1',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.3',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.5',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '2',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1.0',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.8',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.6',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1.4',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.28',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1.6',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.21',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.6',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.4',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.2',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '3',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'}],\n",
|
|
" 'height': 300,\n",
|
|
" 'margin': {'b': 40, 'l': 100, 'pad': 0, 'r': 100, 't': 40},\n",
|
|
" 'xaxis': {'dtick': 1, 'gridcolor': 'rgb(0, 0, 0)', 'side': 'top', 'ticks': '', 'title': 'Predicted'},\n",
|
|
" 'yaxis': {'dtick': 1, 'ticks': '', 'ticksuffix': ' ', 'title': 'Observed'}}\n",
|
|
"}))), VBox(children=(HTML(value='<b>mean_slope_sto06</b>'), FigureWidget({\n",
|
|
" 'data': [{'colorscale': [[0.0, 'rgb(165, 0, 38)'], [0.003937007874015748,\n",
|
|
" 'rgb(166, 1, 38)'], [0.007874015748031496, 'rgb(168,\n",
|
|
" 3, 38)'], ..., [0.9921259842519685, 'rgb(2, 107,\n",
|
|
" 56)'], [0.9960629921259843, 'rgb(1, 105, 55)'], [1.0,\n",
|
|
" 'rgb(0, 104, 55)']],\n",
|
|
" 'reversescale': False,\n",
|
|
" 'showscale': False,\n",
|
|
" 'type': 'heatmap',\n",
|
|
" 'uid': '99e4355b-f090-44ba-b323-38f2dbc70722',\n",
|
|
" 'x': [swash, collision, overwash, inundation],\n",
|
|
" 'y': [inundation, overwash, collision, swash],\n",
|
|
" 'z': [[0.1, 0.3, 0.5, 2], [1.0, 0.8, 0.6, 1], [1.4, 0.28, 1.6,\n",
|
|
" 0.21], [0.6, 0.4, 0.2, 3]]}],\n",
|
|
" 'layout': {'annotations': [{'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.1',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.3',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.5',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '2',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'inundation',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1.0',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.8',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.6',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'overwash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1.4',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.28',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '1.6',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.21',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'collision',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.6',\n",
|
|
" 'x': 'swash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.4',\n",
|
|
" 'x': 'collision',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '0.2',\n",
|
|
" 'x': 'overwash',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'},\n",
|
|
" {'font': {'color': '#FFFFFF'},\n",
|
|
" 'showarrow': False,\n",
|
|
" 'text': '3',\n",
|
|
" 'x': 'inundation',\n",
|
|
" 'xref': 'x',\n",
|
|
" 'y': 'swash',\n",
|
|
" 'yref': 'y'}],\n",
|
|
" 'height': 300,\n",
|
|
" 'margin': {'b': 40, 'l': 100, 'pad': 0, 'r': 100, 't': 40},\n",
|
|
" 'xaxis': {'dtick': 1, 'gridcolor': 'rgb(0, 0, 0)', 'side': 'top', 'ticks': '', 'title': 'Predicted'},\n",
|
|
" 'yaxis': {'dtick': 1, 'ticks': '', 'ticksuffix': ' ', 'title': 'Observed'}}\n",
|
|
"})))))))"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Create colorscale\n",
|
|
"rdylgr_cmap = matplotlib.cm.get_cmap('RdYlGn')\n",
|
|
"\n",
|
|
"norm = matplotlib.colors.Normalize(vmin=0, vmax=255)\n",
|
|
"\n",
|
|
"def matplotlib_to_plotly(cmap, pl_entries):\n",
|
|
" h = 1.0/(pl_entries-1)\n",
|
|
" pl_colorscale = []\n",
|
|
"\n",
|
|
" for k in range(pl_entries):\n",
|
|
" C = list(map(np.uint8, np.array(cmap(k*h)[:3])*255))\n",
|
|
" pl_colorscale.append([k*h, 'rgb'+str((C[0], C[1], C[2]))])\n",
|
|
"\n",
|
|
" return pl_colorscale\n",
|
|
"\n",
|
|
"rdylgr = matplotlib_to_plotly(rdylgr_cmap, 255)\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"# Create widget for list of beaches.\n",
|
|
"beaches = df_sites.beach.unique().tolist()\n",
|
|
"\n",
|
|
"beach_title = widgets.HTML(value=\"<b>Filter by beach:</b>\", )\n",
|
|
"\n",
|
|
"beach_select = widgets.SelectMultiple(\n",
|
|
" options=beaches, value=beaches, disabled=False)\n",
|
|
"\n",
|
|
"beach_container = widgets.VBox([beach_title, beach_select])\n",
|
|
"\n",
|
|
"# Create confusion matrix for each forecasted impact data set\n",
|
|
"heatmaps = []\n",
|
|
"for forecast in impacts['forecasted']:\n",
|
|
"\n",
|
|
" z = [[.1, .3, .5, 2], [1.0, .8, .6, 1], [1.4, .28, 1.6, .21],\n",
|
|
" [.6, .4, .2, 3]]\n",
|
|
"\n",
|
|
" x = ['swash', 'collision', 'overwash', 'inundation']\n",
|
|
" y = list(reversed(x))\n",
|
|
"\n",
|
|
" z_text = z\n",
|
|
"\n",
|
|
" fig = ff.create_annotated_heatmap(z, x=x, y=y, annotation_text=z_text, colorscale=rdylgr)\n",
|
|
" heatmap = go.FigureWidget(data=fig.data, layout=fig.layout)\n",
|
|
"\n",
|
|
" heatmap.layout.update(\n",
|
|
" height=300, margin=go.layout.Margin(l=100, r=100, b=40, t=40, pad=0))\n",
|
|
" heatmap.layout.xaxis.update(title='Predicted')\n",
|
|
" heatmap.layout.yaxis.update(title='Observed')\n",
|
|
" heatmap_title = widgets.HTML(value=\"<b>{}</b>\".format(forecast) )\n",
|
|
" heatmaps.append(widgets.VBox([heatmap_title, heatmap]))\n",
|
|
"\n",
|
|
" \n",
|
|
"def update_heatmaps(change):\n",
|
|
" \n",
|
|
" for forecast, heatmap in zip(impacts['forecasted'], heatmaps):\n",
|
|
" selected_site_ids = df_sites[df_sites.beach.isin(beach_select.value)].index.tolist()\n",
|
|
"\n",
|
|
" df_ob = impacts['observed']\n",
|
|
" df_fo = impacts['forecasted'][forecast]\n",
|
|
"\n",
|
|
" observed_regimes = df_ob[df_ob.index.isin(selected_site_ids)].storm_regime.dropna().rename(\"observed_regime\")\n",
|
|
" forecasted_regimes = df_fo[df_fo.index.isin(selected_site_ids)].storm_regime.dropna().rename(\"forecasted_regime\")\n",
|
|
"\n",
|
|
" if any([observed_regimes.empty, forecasted_regimes.empty]):\n",
|
|
" return\n",
|
|
" \n",
|
|
" df_compare = pd.concat([observed_regimes, forecasted_regimes], axis='columns', names=['a','b'], sort=True)\n",
|
|
" df_compare.dropna(axis='index',inplace=True)\n",
|
|
"\n",
|
|
" z = confusion_matrix(df_compare.observed_regime.tolist(), df_compare.forecasted_regime.tolist(), labels = ['swash','collision','overwash','inundation'])\n",
|
|
" z = np.flip(z,axis=0)\n",
|
|
" z_list = list(reversed(z.tolist()))\n",
|
|
" \n",
|
|
" # Make incorrect values negative, so they get assigned a different color.\n",
|
|
" # Better for visualization\n",
|
|
" z_neg_incorrect = np.flip(np.identity(4),axis=0)\n",
|
|
" z_neg_incorrect[z_neg_incorrect==0]= -1\n",
|
|
" z_neg_incorrect = (z * z_neg_incorrect).tolist()\n",
|
|
" \n",
|
|
" # Also want to display percentages\n",
|
|
" z_with_pct = []\n",
|
|
" for row in z:\n",
|
|
" new_row = []\n",
|
|
" for val in row:\n",
|
|
" new_row.append('{}<br>({}%)'.format(val, np.around(val/np.sum(z)*100,1)))\n",
|
|
" z_with_pct.append(new_row)\n",
|
|
" \n",
|
|
" fig = ff.create_annotated_heatmap(z_neg_incorrect, x=x, y=y, annotation_text=z_with_pct)\n",
|
|
" heatmap.children[1].data[0].z = z_neg_incorrect\n",
|
|
" heatmap.children[1].layout.annotations = fig.layout.annotations\n",
|
|
"\n",
|
|
"# Hook changes to beach filter to update confusion heatmaps\n",
|
|
"beach_select.observe(update_heatmaps, names=\"value\")\n",
|
|
"\n",
|
|
"# Display our widgets\n",
|
|
"widgets.VBox([beach_container, widgets.VBox(heatmaps)])\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:15:40.575569Z",
|
|
"start_time": "2018-12-03T02:15:25.540804Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"ename": "ValueError",
|
|
"evalue": "\nFor some reason plotly.py was unable to communicate with the\nlocal orca server process, even though the server process seems to be running.\n\nPlease review the process and connection information below:\n\norca status\n-----------\n state: running\n executable: C:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\orca.CMD\n version: 1.1.1\n port: 59780\n pid: 9652\n command: ['C:\\\\Users\\\\z5189959\\\\AppData\\\\Local\\\\Continuum\\\\anaconda3\\\\orca.CMD', 'serve', '-p', '59780', '--plotly', 'C:\\\\Users\\\\z5189959\\\\AppData\\\\Local\\\\Continuum\\\\anaconda3\\\\lib\\\\site-packages\\\\plotly\\\\package_data\\\\plotly.min.js', '--graph-only', '--mathjax', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js']\n \n\n",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[1;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36m_new_conn\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 140\u001b[0m conn = connection.create_connection(\n\u001b[1;32m--> 141\u001b[1;33m (self.host, self.port), self.timeout, **extra_kw)\n\u001b[0m\u001b[0;32m 142\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\util\\connection.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0merr\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 83\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 84\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\util\\connection.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[0;32m 72\u001b[0m \u001b[0msock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msource_address\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 73\u001b[1;33m \u001b[0msock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msa\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 74\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0msock\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mConnectionRefusedError\u001b[0m: [WinError 10061] No connection could be made because the target machine actively refused it",
|
|
"\nDuring handling of the above exception, another exception occurred:\n",
|
|
"\u001b[1;31mNewConnectionError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[0;32m 600\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mheaders\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 601\u001b[1;33m chunked=chunked)\n\u001b[0m\u001b[0;32m 602\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[1;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 357\u001b[1;33m \u001b[0mconn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mhttplib_request_kw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 358\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m 1238\u001b[0m \u001b[1;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1239\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1240\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_request\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m 1284\u001b[0m \u001b[0mbody\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'body'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1285\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1286\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mendheaders\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m 1233\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1234\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1235\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_output\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m 1025\u001b[0m \u001b[1;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1026\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1027\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, data)\u001b[0m\n\u001b[0;32m 963\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 964\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 965\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 165\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 166\u001b[1;33m \u001b[0mconn\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_new_conn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 167\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_prepare_conn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\connection.py\u001b[0m in \u001b[0;36m_new_conn\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 149\u001b[0m raise NewConnectionError(\n\u001b[1;32m--> 150\u001b[1;33m self, \"Failed to establish a new connection: %s\" % e)\n\u001b[0m\u001b[0;32m 151\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mNewConnectionError\u001b[0m: <urllib3.connection.HTTPConnection object at 0x0000020C1E2B7E48>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it",
|
|
"\nDuring handling of the above exception, another exception occurred:\n",
|
|
"\u001b[1;31mMaxRetryError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\requests\\adapters.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 439\u001b[0m \u001b[0mretries\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 440\u001b[1;33m \u001b[0mtimeout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 441\u001b[0m )\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[0;32m 638\u001b[0m retries = retries.increment(method, url, error=e, _pool=self,\n\u001b[1;32m--> 639\u001b[1;33m _stacktrace=sys.exc_info()[2])\n\u001b[0m\u001b[0;32m 640\u001b[0m \u001b[0mretries\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\urllib3\\util\\retry.py\u001b[0m in \u001b[0;36mincrement\u001b[1;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[0;32m 387\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mnew_retry\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_exhausted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 388\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mMaxRetryError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_pool\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merror\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mResponseError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcause\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 389\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mMaxRetryError\u001b[0m: HTTPConnectionPool(host='localhost', port=59780): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000020C1E2B7E48>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))",
|
|
"\nDuring handling of the above exception, another exception occurred:\n",
|
|
"\u001b[1;31mConnectionError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\plotly\\io\\_orca.py\u001b[0m in \u001b[0;36mto_image\u001b[1;34m(fig, format, width, height, scale, validate)\u001b[0m\n\u001b[0;32m 1300\u001b[0m \u001b[0mwidth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mwidth\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1301\u001b[1;33m height=height)\n\u001b[0m\u001b[0;32m 1302\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\retrying.py\u001b[0m in \u001b[0;36mwrapped_f\u001b[1;34m(*args, **kw)\u001b[0m\n\u001b[0;32m 48\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mwrapped_f\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 49\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mRetrying\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mdargs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mdkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 50\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\retrying.py\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 211\u001b[0m \u001b[1;31m# get() on an attempt with an exception should cause it to be raised, but raise just in case\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mattempt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 213\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\retrying.py\u001b[0m in \u001b[0;36mget\u001b[1;34m(self, wrap_exception)\u001b[0m\n\u001b[0;32m 246\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 247\u001b[1;33m \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreraise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 248\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\six.py\u001b[0m in \u001b[0;36mreraise\u001b[1;34m(tp, value, tb)\u001b[0m\n\u001b[0;32m 692\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 693\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 694\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\retrying.py\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 199\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 200\u001b[1;33m \u001b[0mattempt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mAttempt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mattempt_number\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 201\u001b[0m \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\plotly\\io\\_orca.py\u001b[0m in \u001b[0;36mrequest_image_with_retrying\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 1207\u001b[0m \u001b[0mjson_str\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdumps\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrequest_params\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mplotly\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mPlotlyJSONEncoder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1208\u001b[1;33m \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrequests\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpost\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mserver_url\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m'/'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mjson_str\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1209\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\requests\\api.py\u001b[0m in \u001b[0;36mpost\u001b[1;34m(url, data, json, **kwargs)\u001b[0m\n\u001b[0;32m 111\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 112\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'post'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mjson\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mjson\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 113\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\requests\\api.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(method, url, **kwargs)\u001b[0m\n\u001b[0;32m 57\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0msessions\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mSession\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0msession\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 58\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0msession\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 59\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\requests\\sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[0;32m 507\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 508\u001b[1;33m \u001b[0mresp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 509\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\requests\\sessions.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, **kwargs)\u001b[0m\n\u001b[0;32m 617\u001b[0m \u001b[1;31m# Send the request\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 618\u001b[1;33m \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 619\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\requests\\adapters.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 507\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 508\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 509\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mConnectionError\u001b[0m: HTTPConnectionPool(host='localhost', port=59780): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000020C1E2B7E48>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))",
|
|
"\nDuring handling of the above exception, another exception occurred:\n",
|
|
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m<ipython-input-6-6b67b6212ab7>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# To output to file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mfig\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mheatmaps\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchildren\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mimg_bytes\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpio\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrite_image\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'fig1.png'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'png'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m600\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m400\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscale\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;31m# fig = g_profiles\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\plotly\\io\\_orca.py\u001b[0m in \u001b[0;36mwrite_image\u001b[1;34m(fig, file, format, scale, width, height, validate)\u001b[0m\n\u001b[0;32m 1486\u001b[0m \u001b[0mwidth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mwidth\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1487\u001b[0m \u001b[0mheight\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mheight\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1488\u001b[1;33m validate=validate)\n\u001b[0m\u001b[0;32m 1489\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1490\u001b[0m \u001b[1;31m# Open file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\plotly\\io\\_orca.py\u001b[0m in \u001b[0;36mto_image\u001b[1;34m(fig, format, width, height, scale, validate)\u001b[0m\n\u001b[0;32m 1316\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1317\u001b[0m \u001b[1;33m{\u001b[0m\u001b[0minfo\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1318\u001b[1;33m \"\"\".format(info=status_str))\n\u001b[0m\u001b[0;32m 1319\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1320\u001b[0m \u001b[1;31m# Reset the status so that if the user tries again, we'll try to\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mValueError\u001b[0m: \nFor some reason plotly.py was unable to communicate with the\nlocal orca server process, even though the server process seems to be running.\n\nPlease review the process and connection information below:\n\norca status\n-----------\n state: running\n executable: C:\\Users\\z5189959\\AppData\\Local\\Continuum\\anaconda3\\orca.CMD\n version: 1.1.1\n port: 59780\n pid: 9652\n command: ['C:\\\\Users\\\\z5189959\\\\AppData\\\\Local\\\\Continuum\\\\anaconda3\\\\orca.CMD', 'serve', '-p', '59780', '--plotly', 'C:\\\\Users\\\\z5189959\\\\AppData\\\\Local\\\\Continuum\\\\anaconda3\\\\lib\\\\site-packages\\\\plotly\\\\package_data\\\\plotly.min.js', '--graph-only', '--mathjax', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js']\n \n\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# To output to file\n",
|
|
"fig = heatmaps[1].children[1]\n",
|
|
"img_bytes = pio.write_image(fig, 'fig1.png',format='png', width=600, height=400, scale=5)\n",
|
|
"\n",
|
|
"# fig = g_profiles\n",
|
|
"# img_bytes = pio.write_image(fig, 'fig1.png',format='png', width=600, height=200, scale=5)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2018-12-03T02:15:40.576573Z",
|
|
"start_time": "2018-12-03T02:14:51.251Z"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"site_id_temp = 'NINEMn0003'\n",
|
|
"z_pre = np.array(df_profiles.query(\"site_id=='{}' & profile_type=='prestorm'\".format(site_id_temp)).z.tolist())\n",
|
|
"z_post = np.array(df_profiles.query(\"site_id=='{}' & profile_type=='poststorm'\".format(site_id_temp)).z.tolist())\n",
|
|
"\n",
|
|
"z_diff = z_pre - z_post\n",
|
|
"no_nan=[True if not np.isnan(x) else False for x in z_diff]\n",
|
|
"\n",
|
|
"\n",
|
|
"# algo = rpt.Pelt(model=\"rbf\").fit(z_diff[no_nan])\n",
|
|
"\n",
|
|
"algo = rpt.Binseg(model=\"linear\").fit(signal)\n",
|
|
"\n",
|
|
"result = algo.predict(pen=100)\n",
|
|
"\n",
|
|
"result = [x for x in result if x<len(z_diff[no_nan])]\n",
|
|
"\n",
|
|
"\n",
|
|
"x = np.array(df_profiles.query(\"site_id=='NARRA0018'\").index.get_level_values('x').unique().tolist())\n",
|
|
"x[no_nan][result]\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"# x[result]\n",
|
|
"\n",
|
|
"\n",
|
|
"# plt.show()"
|
|
]
|
|
}
|
|
],
|
|
"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.6.4"
|
|
},
|
|
"toc": {
|
|
"base_numbering": 1,
|
|
"nav_menu": {
|
|
"height": "47px",
|
|
"width": "262px"
|
|
},
|
|
"number_sections": true,
|
|
"sideBar": true,
|
|
"skip_h1_title": false,
|
|
"title_cell": "Table of Contents",
|
|
"title_sidebar": "Contents",
|
|
"toc_cell": false,
|
|
"toc_position": {},
|
|
"toc_section_display": true,
|
|
"toc_window_display": false
|
|
},
|
|
"varInspector": {
|
|
"cols": {
|
|
"lenName": 16,
|
|
"lenType": 16,
|
|
"lenVar": 40
|
|
},
|
|
"kernels_config": {
|
|
"python": {
|
|
"delete_cmd_postfix": "",
|
|
"delete_cmd_prefix": "del ",
|
|
"library": "var_list.py",
|
|
"varRefreshCmd": "print(var_dic_list())"
|
|
},
|
|
"r": {
|
|
"delete_cmd_postfix": ") ",
|
|
"delete_cmd_prefix": "rm(",
|
|
"library": "var_list.r",
|
|
"varRefreshCmd": "cat(var_dic_list()) "
|
|
}
|
|
},
|
|
"types_to_exclude": [
|
|
"module",
|
|
"function",
|
|
"builtin_function_or_method",
|
|
"instance",
|
|
"_Feature"
|
|
],
|
|
"window_display": false
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|