{
"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": "markdown",
"metadata": {},
"source": [
"## Setup notebook"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-18T02:00:52.336816Z",
"start_time": "2018-12-18T02:00:50.794985Z"
}
},
"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-18T02:00:56.202312Z",
"start_time": "2018-12-18T02:00:52.338820Z"
},
"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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import data\n",
"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-18T02:01:21.413234Z",
"start_time": "2018-12-18T02:00:56.203292Z"
},
"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\\Desktop\\nsw-2016-storm-impact\\.venv\\lib\\site-packages\\numpy\\lib\\arraysetops.py:522: 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": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-27T23:02:57.631306Z",
"start_time": "2018-11-27T23:02:57.615263Z"
}
},
"source": [
"## Profile/timeseries dashboard"
]
},
{
"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": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-18T02:03:09.204918Z",
"start_time": "2018-12-18T02:03:06.262044Z"
},
"code_folding": [
408
],
"hide_input": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "53cf617b48714cdc8937d95f0ec672fa",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(VBox(children=(HTML(value='Filter by observed and predicted impacts:'), HBox(children=(V…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create widgets for filtering by observed and forecasted impacts\n",
"filter_title = widgets.HTML(\n",
" value=\"Filter by observed and predicted impacts:\", )\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'][forecast].storm_regime.dropna().\n",
" 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=\"Filter by site_id:\", )\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",
"# options=df_no_crests.index.tolist(),\n",
")\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",
"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,\n",
" 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",
" 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(\n",
" )[0], prestorm_dune_toe_z.tolist()[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: {}
\".format(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 += '{}: {}
'.format(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": 85,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-16T23:22:16.226755Z",
"start_time": "2018-12-16T23:22:15.945004Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AVOCAn0001\n",
"AVOCAn0002\n",
"AVOCAn0003\n",
"AVOCAn0004\n",
"AVOCAn0005\n",
"AVOCAn0006\n",
"AVOCAn0007\n",
"AVOCAn0008\n",
"AVOCAn0009\n",
"AVOCAs0001\n",
"AVOCAs0002\n",
"AVOCAs0003\n",
"AVOCAs0004\n",
"AVOCAs0005\n",
"AVOCAs0006\n",
"AVOCAs0007\n",
"AVOCAs0008\n",
"BILG0001\n",
"BILG0002\n",
"BILG0003\n",
"BILG0004\n",
"BILG0005\n",
"BLUEYS0001\n",
"BLUEYS0002\n",
"BLUEYS0003\n",
"BLUEYS0004\n",
"BLUEYS0005\n",
"BLUEYS0006\n",
"BOAT0001\n",
"BOAT0002\n",
"BOAT0003\n",
"BOAT0004\n",
"BOAT0005\n",
"BOOM0001\n",
"BOOM0002\n",
"BOOM0003\n",
"BOOM0004\n",
"BOOM0005\n",
"BOOM0006\n",
"BOOM0007\n",
"BOOM0008\n",
"BOOM0009\n",
"BOOM0010\n",
"BOOM0011\n",
"BOOM0012\n",
"BOOM0013\n",
"BOOM0014\n",
"CATHIE0001\n",
"CATHIE0002\n",
"CATHIE0003\n",
"CATHIE0004\n",
"CATHIE0005\n",
"CATHIE0006\n",
"CATHIE0007\n",
"CATHIE0008\n",
"CATHIE0009\n",
"CATHIE0010\n",
"CATHIE0011\n",
"CATHIE0012\n",
"CATHIE0013\n",
"CATHIE0014\n",
"CATHIE0015\n",
"CATHIE0016\n",
"CATHIE0017\n",
"CATHIE0018\n",
"CATHIE0019\n",
"CATHIE0020\n",
"CATHIE0021\n",
"CATHIE0022\n",
"CATHIE0023\n",
"CATHIE0024\n",
"CATHIE0025\n",
"CATHIE0026\n",
"CATHIE0027\n",
"CATHIE0028\n",
"CATHIE0029\n",
"CRESn0001\n",
"CRESn0002\n",
"CRESn0003\n",
"CRESn0004\n",
"CRESn0005\n",
"CRESn0006\n",
"CRESn0007\n",
"CRESn0008\n",
"CRESn0009\n",
"CRESn0010\n",
"CRESn0011\n",
"CRESn0012\n",
"CRESn0013\n",
"CRESn0014\n",
"CRESn0015\n",
"CRESn0016\n",
"CRESn0017\n",
"CRESn0018\n",
"CRESn0019\n",
"CRESn0020\n",
"CRESn0021\n",
"CRESn0022\n",
"CRESn0023\n",
"CRESn0024\n",
"CRESn0025\n",
"CRESn0026\n",
"CRESn0027\n",
"CRESn0028\n",
"CRESn0029\n",
"CRESn0030\n",
"CRESn0031\n",
"CRESn0032\n",
"CRESn0033\n",
"CRESn0034\n",
"CRESn0035\n",
"CRESn0036\n",
"CRESn0037\n",
"CRESn0038\n",
"CRESn0039\n",
"CRESn0040\n",
"CRESn0041\n",
"CRESn0042\n",
"CRESn0043\n",
"CRESn0044\n",
"CRESn0045\n",
"CRESn0046\n",
"CRESn0047\n",
"CRESn0048\n",
"CRESn0049\n",
"CRESn0050\n",
"CRESn0051\n",
"CRESn0052\n",
"CRESn0053\n",
"CRESn0054\n",
"CRESn0055\n",
"CRESn0056\n",
"CRESn0057\n",
"CRESn0058\n",
"CRESn0059\n",
"CRESn0060\n",
"CRESn0061\n",
"CRESn0062\n",
"CRESn0063\n",
"CRESn0064\n",
"CRESn0065\n",
"CRESn0066\n",
"CRESn0067\n",
"CRESn0068\n",
"CRESn0069\n",
"CRESn0070\n",
"CRESn0071\n",
"CRESn0072\n",
"CRESn0073\n",
"CRESn0074\n",
"CRESn0075\n",
"CRESn0076\n",
"CRESn0077\n",
"CRESn0078\n",
"CRESn0079\n",
"CRESn0080\n",
"CRESn0081\n",
"CRESn0082\n",
"CRESn0083\n",
"CRESn0084\n",
"CRESn0085\n",
"CRESn0086\n",
"CRESn0087\n",
"CRESn0088\n",
"CRESn0089\n",
"CRESn0090\n",
"CRESn0091\n",
"CRESn0092\n",
"CRESn0093\n",
"CRESn0094\n",
"CRESn0095\n",
"CRESn0096\n",
"CRESn0097\n",
"CRESn0098\n",
"CRESn0099\n",
"CRESn0100\n",
"CRESn0101\n",
"CRESn0102\n",
"CRESn0103\n",
"CRESn0104\n",
"CRESn0105\n",
"CRESn0106\n",
"CRESn0107\n",
"CRESn0108\n",
"CRESn0109\n",
"CRESn0110\n",
"CRESn0111\n",
"CRESn0112\n",
"CRESn0113\n",
"CRESn0114\n",
"CRESn0115\n",
"CRESn0116\n",
"CRESn0117\n",
"CRESn0118\n",
"CRESn0119\n",
"CRESn0120\n",
"CRESn0121\n",
"CRESn0122\n",
"CRESn0123\n",
"CRESn0124\n",
"CRESn0125\n",
"CRESs0001\n",
"CRESs0002\n",
"CRESs0003\n",
"CRESs0004\n",
"CRESs0005\n",
"CRESs0006\n",
"CRESs0007\n",
"CRESs0008\n",
"CRESs0009\n",
"CRESs0010\n",
"CRESs0011\n",
"CRESs0012\n",
"CRESs0013\n",
"CRESs0014\n",
"DEEWHYn0001\n",
"DEEWHYn0002\n",
"DEEWHYn0003\n",
"DEEWHYn0004\n",
"DEEWHYn0005\n",
"DEEWHYn0006\n",
"DEEWHYn0007\n",
"DEEWHYn0008\n",
"DEEWHYn0009\n",
"DEEWHYn0010\n",
"DEEWHYn0011\n",
"DEEWHYn0012\n",
"DEEWHYs0001\n",
"DEEWHYs0002\n",
"DEEWHYs0003\n",
"DEEWHYs0004\n",
"DEEWHYs0005\n",
"DEEWHYs0006\n",
"DEEWHYs0007\n",
"DEEWHYs0008\n",
"DIAMONDn0001\n",
"DIAMONDn0002\n",
"DIAMONDn0003\n",
"DIAMONDn0004\n",
"DIAMONDn0005\n",
"DIAMONDn0006\n",
"DIAMONDn0007\n",
"DIAMONDn0008\n",
"DIAMONDn0009\n",
"DIAMONDn0010\n",
"DIAMONDn0011\n",
"DIAMONDn0012\n",
"DIAMONDn0013\n",
"DIAMONDn0014\n",
"DIAMONDn0015\n",
"DIAMONDn0016\n",
"DIAMONDn0017\n",
"DIAMONDn0018\n",
"DIAMONDn0019\n",
"DIAMONDn0020\n",
"DIAMONDn0021\n",
"DIAMONDn0022\n",
"DIAMONDn0023\n",
"DIAMONDn0024\n",
"DIAMONDn0025\n",
"DIAMONDn0026\n",
"DIAMONDn0027\n",
"DIAMONDn0028\n",
"DIAMONDn0029\n",
"DIAMONDn0030\n",
"DIAMONDn0031\n",
"DIAMONDn0032\n",
"DIAMONDn0033\n",
"DIAMONDn0034\n",
"DIAMONDn0035\n",
"DIAMONDn0036\n",
"DIAMONDn0037\n",
"DIAMONDn0038\n",
"DIAMONDn0039\n",
"DIAMONDn0040\n",
"DIAMONDn0041\n",
"DIAMONDs0001\n",
"DIAMONDs0002\n",
"DIAMONDs0003\n",
"DIAMONDs0004\n",
"DIAMONDs0005\n",
"DIAMONDs0006\n",
"DIAMONDs0007\n",
"DUNBn0001\n",
"DUNBn0002\n",
"DUNBn0003\n",
"DUNBn0004\n",
"DUNBn0005\n",
"DUNBn0006\n",
"DUNBn0007\n",
"DUNBn0008\n",
"DUNBn0009\n",
"DUNBn0010\n",
"DUNBn0011\n",
"DUNBn0012\n",
"DUNBn0013\n",
"DUNBn0014\n",
"DUNBn0015\n",
"DUNBn0016\n",
"DUNBn0017\n",
"DUNBn0018\n",
"DUNBn0019\n",
"DUNBn0020\n",
"DUNBn0021\n",
"DUNBn0022\n",
"DUNBn0023\n",
"DUNBn0024\n",
"DUNBn0025\n",
"DUNBn0026\n",
"DUNBn0027\n",
"DUNBn0028\n",
"DUNBn0029\n",
"DUNBn0030\n",
"DUNBn0031\n",
"DUNBn0032\n",
"DUNBn0033\n",
"DUNBn0034\n",
"DUNBn0035\n",
"DUNBn0036\n",
"DUNBn0037\n",
"DUNBn0038\n",
"DUNBn0039\n",
"DUNBn0040\n",
"DUNBn0041\n",
"DUNBn0042\n",
"DUNBn0043\n",
"DUNBn0044\n",
"DUNBn0045\n",
"DUNBn0046\n",
"DUNBn0047\n",
"DUNBn0048\n",
"DUNBn0049\n",
"DUNBn0050\n",
"DUNBn0051\n",
"DUNBn0052\n",
"DUNBn0053\n",
"DUNBn0054\n",
"DUNBn0055\n",
"DUNBn0056\n",
"DUNBn0057\n",
"DUNBn0058\n",
"DUNBn0059\n",
"DUNBn0060\n",
"DUNBn0061\n",
"DUNBn0062\n",
"DUNBn0063\n",
"DUNBn0064\n",
"DUNBn0065\n",
"DUNBn0066\n",
"DUNBn0067\n",
"DUNBn0068\n",
"DUNBn0069\n",
"DUNBn0070\n",
"DUNBn0071\n",
"DUNBn0072\n",
"DUNBn0073\n",
"DUNBn0074\n",
"DUNBs0001\n",
"DUNBs0002\n",
"DUNBs0003\n",
"DUNBs0004\n",
"DUNBs0005\n",
"DUNBs0006\n",
"DUNBs0007\n",
"DUNBs0008\n",
"DUNBs0009\n",
"DUNBs0010\n",
"DUNBs0011\n",
"ELIZA0001\n",
"ELIZA0002\n",
"ELIZA0003\n",
"ELIZA0004\n",
"ELIZA0005\n",
"ELIZA0006\n",
"ELIZA0007\n",
"ENTRA0001\n",
"ENTRA0002\n",
"ENTRA0003\n",
"ENTRA0004\n",
"ENTRA0005\n",
"ENTRA0006\n",
"ENTRA0007\n",
"ENTRA0008\n",
"ENTRA0009\n",
"ENTRA0010\n",
"ENTRA0011\n",
"ENTRA0012\n",
"ENTRA0013\n",
"ENTRA0014\n",
"ENTRA0015\n",
"ENTRA0016\n",
"ENTRA0017\n",
"ENTRA0018\n",
"ENTRA0019\n",
"ENTRA0020\n",
"ENTRA0021\n",
"ENTRA0022\n",
"ENTRA0023\n",
"ENTRA0024\n",
"ENTRA0025\n",
"ENTRA0026\n",
"ENTRA0027\n",
"ENTRA0028\n",
"ENTRA0029\n",
"ENTRA0030\n",
"ENTRA0031\n",
"ENTRA0032\n",
"ENTRA0033\n",
"ENTRA0034\n",
"ENTRA0035\n",
"ENTRA0036\n",
"ENTRA0037\n",
"ENTRA0038\n",
"ENTRA0039\n",
"ENTRA0040\n",
"ENTRA0041\n",
"ENTRA0042\n",
"ENTRA0043\n",
"ENTRA0044\n",
"ENTRA0045\n",
"ENTRA0046\n",
"ENTRA0047\n",
"ENTRA0048\n",
"ENTRA0049\n",
"ENTRA0050\n",
"ENTRA0051\n",
"ENTRA0052\n",
"ENTRA0053\n",
"ENTRA0054\n",
"ENTRA0055\n",
"ENTRA0056\n",
"ENTRA0057\n",
"ENTRA0058\n",
"ENTRA0059\n",
"ENTRA0060\n",
"ENTRA0061\n",
"ENTRA0062\n",
"ENTRA0063\n",
"ENTRA0064\n",
"ENTRA0065\n",
"ENTRA0066\n",
"ENTRA0067\n",
"ENTRA0068\n",
"ENTRA0069\n",
"ENTRA0070\n",
"ENTRA0071\n",
"ENTRA0072\n",
"ENTRA0073\n",
"ENTRA0074\n",
"ENTRA0075\n",
"ENTRA0076\n",
"ENTRA0077\n",
"ENTRA0078\n",
"ENTRA0079\n",
"FOST0001\n",
"FOST0002\n",
"FOST0003\n",
"FOST0004\n",
"FOST0005\n",
"FOST0006\n",
"GRANTSn0001\n",
"GRANTSn0002\n",
"GRANTSn0003\n",
"GRANTSn0004\n",
"GRANTSn0005\n",
"GRANTSn0006\n",
"GRANTSn0007\n",
"GRANTSn0008\n",
"GRANTSn0009\n",
"GRANTSn0010\n",
"GRANTSn0011\n",
"GRANTSn0012\n",
"GRANTSn0013\n",
"GRANTSn0014\n",
"GRANTSn0015\n",
"GRANTSn0016\n",
"GRANTSn0017\n",
"GRANTSn0018\n",
"GRANTSn0019\n",
"GRANTSn0020\n",
"GRANTSn0021\n",
"GRANTSn0022\n",
"GRANTSn0023\n",
"GRANTSn0024\n",
"GRANTSs0001\n",
"GRANTSs0002\n",
"GRANTSs0003\n",
"GRANTSs0004\n",
"GRANTSs0005\n",
"GRANTSs0006\n",
"GRANTSs0007\n",
"GRANTSs0008\n",
"GRANTSs0009\n",
"GRANTSs0010\n",
"GRANTSs0011\n",
"GRANTSs0012\n",
"GRANTSs0013\n",
"GRANTSs0014\n",
"HARGn0001\n",
"HARGn0002\n",
"HARGn0003\n",
"HARGn0004\n",
"HARGn0005\n",
"HARGn0006\n",
"HARGn0007\n",
"HARGs0001\n",
"HARGs0002\n",
"HARGs0003\n",
"HARGs0004\n",
"HARGs0005\n",
"HARGs0006\n",
"HARGs0007\n",
"HARR0001\n",
"HARR0002\n",
"HARR0003\n",
"HARR0004\n",
"HARR0005\n",
"HARR0006\n",
"HARR0007\n",
"HARR0008\n",
"HARR0009\n",
"HARR0010\n",
"HARR0011\n",
"HARR0012\n",
"HARR0013\n",
"HARR0014\n",
"HARR0015\n",
"HARR0016\n",
"HARR0017\n",
"HARR0018\n",
"HARR0019\n",
"HARR0020\n",
"HARR0021\n",
"HARR0022\n",
"HARR0023\n",
"HARR0024\n",
"HARR0025\n",
"HARR0026\n",
"HARR0027\n",
"HARR0028\n",
"HARR0029\n",
"HARR0030\n",
"HARR0031\n",
"HARR0032\n",
"HARR0033\n",
"HARR0034\n",
"HARR0035\n",
"HARR0036\n",
"HARR0037\n",
"HARR0038\n",
"HARR0039\n",
"HARR0040\n",
"HARR0041\n",
"HARR0042\n",
"HARR0043\n",
"HARR0044\n",
"HARR0045\n",
"HARR0046\n",
"HARR0047\n",
"HARR0048\n",
"HARR0049\n",
"HARR0050\n",
"HARR0051\n",
"HARR0052\n",
"HARR0053\n",
"HARR0054\n",
"HARR0055\n",
"HARR0056\n",
"LHOUSE0001\n",
"LHOUSE0002\n",
"LHOUSE0003\n",
"LHOUSE0004\n",
"LHOUSE0005\n",
"LHOUSE0006\n",
"LHOUSE0007\n",
"LHOUSE0008\n",
"LHOUSE0009\n",
"LHOUSE0010\n",
"LHOUSE0011\n",
"LHOUSE0012\n",
"LHOUSE0013\n",
"LHOUSEn0001\n",
"LHOUSEn0002\n",
"LHOUSEn0003\n",
"LHOUSEn0004\n",
"LHOUSEn0005\n",
"LHOUSEn0006\n",
"LHOUSEn0007\n",
"LHOUSEn0008\n",
"LHOUSEn0009\n",
"LHOUSEn0010\n",
"LHOUSEn0011\n",
"LHOUSEn0012\n",
"LHOUSEn0013\n",
"LHOUSEn0014\n",
"LHOUSEn0015\n",
"LHOUSEn0016\n",
"LHOUSEn0017\n",
"LHOUSEn0018\n",
"LHOUSEn0019\n",
"LHOUSEn0020\n",
"LHOUSEn0021\n",
"LHOUSEn0022\n",
"LHOUSEn0023\n",
"LHOUSEn0024\n",
"LHOUSEn0025\n",
"LHOUSEn0026\n",
"LHOUSEn0027\n",
"LHOUSEn0028\n",
"LHOUSEn0029\n",
"LHOUSEn0030\n",
"LHOUSEn0031\n",
"LHOUSEn0032\n",
"LHOUSEn0033\n",
"LHOUSEn0034\n",
"LHOUSEn0035\n",
"LHOUSEn0036\n",
"LHOUSEn0037\n",
"LHOUSEn0038\n",
"LHOUSEn0039\n",
"LHOUSEn0040\n",
"LHOUSEn0041\n",
"LHOUSEn0042\n",
"LHOUSEn0043\n",
"LHOUSEn0044\n",
"LHOUSEn0045\n",
"LHOUSEn0046\n",
"LHOUSEn0047\n",
"LHOUSEn0048\n",
"LHOUSEn0049\n",
"LHOUSEn0050\n",
"LHOUSEn0051\n",
"LHOUSEn0052\n",
"LHOUSEn0053\n",
"LHOUSEn0054\n",
"LHOUSEn0055\n",
"LHOUSEn0056\n",
"LHOUSEn0057\n",
"LHOUSEn0058\n",
"LHOUSEn0059\n",
"LHOUSEn0060\n",
"LHOUSEn0061\n",
"LHOUSEn0062\n",
"LHOUSEn0063\n",
"LHOUSEn0064\n",
"LHOUSEn0065\n",
"LHOUSEn0066\n",
"LHOUSEn0067\n",
"LHOUSEn0068\n",
"LHOUSEn0069\n",
"LHOUSEn0070\n",
"LHOUSEn0071\n",
"LHOUSEn0072\n",
"LHOUSEn0073\n",
"LHOUSEn0074\n",
"LHOUSEn0075\n",
"LHOUSEn0076\n",
"LHOUSEn0077\n",
"LHOUSEn0078\n",
"LHOUSEn0079\n",
"LHOUSEn0080\n",
"LHOUSEn0081\n",
"LHOUSEn0082\n",
"LHOUSEn0083\n",
"LHOUSEn0084\n",
"LHOUSEn0085\n",
"LHOUSEn0086\n",
"LHOUSEn0087\n",
"LHOUSEn0088\n",
"LHOUSEn0089\n",
"LHOUSEn0090\n",
"LHOUSEn0091\n",
"LHOUSEn0092\n",
"LHOUSEn0093\n",
"LHOUSEs0001\n",
"LHOUSEs0002\n",
"LHOUSEs0003\n",
"LHOUSEs0004\n",
"LHOUSEs0005\n",
"LHOUSEs0006\n",
"LHOUSEs0007\n",
"LHOUSEs0008\n",
"LHOUSEs0009\n",
"LHOUSEs0010\n",
"LHOUSEs0011\n",
"LHOUSEs0012\n",
"LHOUSEs0013\n",
"LHOUSEs0014\n",
"LHOUSEs0015\n",
"LHOUSEs0016\n",
"LHOUSEs0017\n",
"LHOUSEs0018\n",
"LHOUSEs0019\n",
"LHOUSEs0020\n",
"LHOUSEs0021\n",
"LHOUSEs0022\n",
"LHOUSEs0023\n",
"LHOUSEs0024\n",
"LHOUSEs0025\n",
"LHOUSEs0026\n",
"LHOUSEs0027\n",
"LHOUSEs0028\n",
"LHOUSEs0029\n",
"LHOUSEs0030\n",
"LHOUSEs0031\n",
"LHOUSEs0032\n",
"MACM0001\n",
"MACM0002\n",
"MACM0003\n",
"MACM0004\n",
"MACM0005\n",
"MACM0006\n",
"MACM0007\n",
"MACM0008\n",
"MACM0009\n",
"MACM0010\n",
"MACM0011\n",
"MACM0012\n",
"MACM0013\n",
"MACM0014\n",
"MACM0015\n",
"MACM0016\n",
"MANNING0001\n",
"MANNING0002\n",
"MANNING0003\n",
"MANNING0004\n",
"MANNING0005\n",
"MANNING0006\n",
"MANNING0007\n",
"MANNING0008\n",
"MANNING0009\n",
"MANNING0010\n",
"MANNING0011\n",
"MANNING0012\n",
"MANNING0013\n",
"MANNING0014\n",
"MANNING0015\n",
"MANNING0016\n",
"MANNING0017\n",
"MANNING0018\n",
"MANNING0019\n",
"MANNING0020\n",
"MANNING0021\n",
"MANNING0022\n",
"MANNING0023\n",
"MANNING0024\n",
"MANNING0025\n",
"MANNING0026\n",
"MANNING0027\n",
"MANNING0028\n",
"MANNING0029\n",
"MANNING0030\n",
"MANNING0031\n",
"MANNING0032\n",
"MANNING0033\n",
"MANNING0034\n",
"MANNING0035\n",
"MANNING0036\n",
"MANNING0037\n",
"MANNING0038\n",
"MANNING0039\n",
"MANNING0040\n",
"MANNING0041\n",
"MANNING0042\n",
"MANNING0043\n",
"MANNING0044\n",
"MANNING0045\n",
"MANNING0046\n",
"MANNING0047\n",
"MANNING0048\n",
"MANNING0049\n",
"MANNING0050\n",
"MANNING0051\n",
"MANNING0052\n",
"MANNING0053\n",
"MANNING0054\n",
"MANNING0055\n",
"MANNING0056\n",
"MANNING0057\n",
"MANNING0058\n",
"MANNING0059\n",
"MANNING0060\n",
"MANNING0061\n",
"MANNING0062\n",
"MANNING0063\n",
"MANNING0064\n",
"MANNING0065\n",
"MANNING0066\n",
"MANNING0067\n",
"MANNING0068\n",
"MANNING0069\n",
"MANNING0070\n",
"MANNING0071\n",
"MANNING0072\n",
"MANNING0073\n",
"MANNING0074\n",
"MANNING0075\n",
"MANNING0076\n",
"MANNING0077\n",
"MANNING0078\n",
"MANNING0079\n",
"MANNING0080\n",
"MANNING0081\n",
"MANNING0082\n",
"MANNING0083\n",
"MANNING0084\n",
"MANNING0085\n",
"MANNING0086\n",
"MANNING0087\n",
"MANNING0088\n",
"MANNING0089\n",
"MANNING0090\n",
"MANNING0091\n",
"MANNING0092\n",
"MANNING0093\n",
"MANNING0094\n",
"MANNING0095\n",
"MANNING0096\n",
"MANNING0097\n",
"MANNING0098\n",
"MANNING0099\n",
"MANNING0100\n",
"MANNING0101\n",
"MANNING0102\n",
"MANNING0103\n",
"MANNING0104\n",
"MANNING0105\n",
"MANNING0106\n",
"MANNING0107\n",
"MANNING0108\n",
"MANNING0109\n",
"MANNING0110\n",
"MANNING0111\n",
"MANNING0112\n",
"MANNING0113\n",
"MANNING0114\n",
"MANNING0115\n",
"MANNING0116\n",
"MANNING0117\n",
"MANNING0118\n",
"MANNING0119\n",
"MANNING0120\n",
"MANNING0121\n",
"MANNING0122\n",
"MANNING0123\n",
"MANNING0124\n",
"MANNING0125\n",
"MANNING0126\n",
"MANNING0127\n",
"MONA0001\n",
"MONA0002\n",
"MONA0003\n",
"MONA0004\n",
"MONA0005\n",
"MONA0006\n",
"MONA0007\n",
"MONA0008\n",
"MONA0009\n",
"MONA0010\n",
"MONA0011\n",
"MONA0012\n",
"MONA0013\n",
"MONA0014\n",
"MONA0015\n",
"MONA0016\n",
"MONA0017\n",
"MONA0018\n",
"MONA0019\n",
"MONA0020\n",
"MONA0021\n",
"NAMB0001\n",
"NAMB0002\n",
"NAMB0003\n",
"NAMB0004\n",
"NAMB0005\n",
"NAMB0006\n",
"NAMB0007\n",
"NAMB0008\n",
"NAMB0009\n",
"NAMB0010\n",
"NAMB0011\n",
"NAMB0012\n",
"NAMB0013\n",
"NAMB0014\n",
"NAMB0015\n",
"NAMB0016\n",
"NAMB0017\n",
"NAMB0018\n",
"NAMB0019\n",
"NAMB0020\n",
"NAMB0021\n",
"NAMB0022\n",
"NAMB0023\n",
"NAMB0024\n",
"NAMB0025\n",
"NAMB0026\n",
"NAMB0027\n",
"NAMB0028\n",
"NAMB0029\n",
"NAMB0030\n",
"NAMB0031\n",
"NAMB0032\n",
"NAMB0033\n",
"NAMB0034\n",
"NAMB0035\n",
"NAMB0036\n",
"NAMB0037\n",
"NAMB0038\n",
"NAMB0039\n",
"NAMB0040\n",
"NAMB0041\n",
"NAMB0042\n",
"NAMB0043\n",
"NAMB0044\n",
"NAMB0045\n",
"NAMB0046\n",
"NAMB0047\n",
"NAMB0048\n",
"NAMB0049\n",
"NAMB0050\n",
"NAMB0051\n",
"NAMB0052\n",
"NAMB0053\n",
"NAMB0054\n",
"NAMB0055\n",
"NAMB0056\n",
"NAMB0057\n",
"NAMB0058\n",
"NAMB0059\n",
"NAMB0060\n",
"NAMB0061\n",
"NAMB0062\n",
"NAMB0063\n",
"NAMB0064\n",
"NAMB0065\n",
"NAMB0066\n",
"NAMB0067\n",
"NAMB0068\n",
"NAMB0069\n",
"NAMB0070\n",
"NAMB0071\n",
"NAMB0072\n",
"NAMB0073\n",
"NARRA0001\n",
"NARRA0002\n",
"NARRA0003\n",
"NARRA0004\n",
"NARRA0005\n",
"NARRA0006\n",
"NARRA0007\n",
"NARRA0008\n",
"NARRA0009\n",
"NARRA0010\n",
"NARRA0011\n",
"NARRA0012\n",
"NARRA0013\n",
"NARRA0014\n",
"NARRA0015\n",
"NARRA0016\n",
"NARRA0017\n",
"NARRA0018\n",
"NARRA0019\n",
"NARRA0020\n",
"NARRA0021\n",
"NARRA0022\n",
"NARRA0023\n",
"NARRA0024\n",
"NARRA0025\n",
"NARRA0026\n",
"NARRA0027\n",
"NARRA0028\n",
"NARRA0029\n",
"NARRA0030\n",
"NARRA0031\n",
"NARRA0032\n",
"NARRA0033\n",
"NARRA0034\n",
"NARRA0035\n",
"NARRA0036\n",
"NINEMn0001\n",
"NINEMn0002\n",
"NINEMn0003\n",
"NINEMn0004\n",
"NINEMn0005\n",
"NINEMn0006\n",
"NINEMn0007\n",
"NINEMn0008\n",
"NINEMn0009\n",
"NINEMn0010\n",
"NINEMn0011\n",
"NINEMn0012\n",
"NINEMn0013\n",
"NINEMn0014\n",
"NINEMn0015\n",
"NINEMn0016\n",
"NINEMn0017\n",
"NINEMn0018\n",
"NINEMn0019\n",
"NINEMn0020\n",
"NINEMn0021\n",
"NINEMn0022\n",
"NINEMn0023\n",
"NINEMn0024\n",
"NINEMn0025\n",
"NINEMn0026\n",
"NINEMn0027\n",
"NINEMn0028\n",
"NINEMn0029\n",
"NINEMn0030\n",
"NINEMn0031\n",
"NINEMn0032\n",
"NINEMn0033\n",
"NINEMn0034\n",
"NINEMn0035\n",
"NINEMn0036\n",
"NINEMn0037\n",
"NINEMn0038\n",
"NINEMn0039\n",
"NINEMn0040\n",
"NINEMn0041\n",
"NINEMn0042\n",
"NINEMn0043\n",
"NINEMn0044\n",
"NINEMn0045\n",
"NINEMn0046\n",
"NINEMn0047\n",
"NINEMn0048\n",
"NINEMn0049\n",
"NINEMn0050\n",
"NINEMn0051\n",
"NINEMn0052\n",
"NINEMn0053\n",
"NINEMn0054\n",
"NINEMs0001\n",
"NINEMs0002\n",
"NINEMs0003\n",
"NINEMs0004\n",
"NINEMs0005\n",
"NINEMs0006\n",
"NINEMs0007\n",
"NINEMs0008\n",
"NINEMs0009\n",
"NINEMs0010\n",
"NINEMs0011\n",
"NINEMs0012\n",
"NINEMs0013\n",
"NINEMs0014\n",
"NINEMs0015\n",
"NINEMs0016\n",
"NINEMs0017\n",
"NINEMs0018\n",
"NINEMs0019\n",
"NINEMs0020\n",
"NINEMs0021\n",
"NINEMs0022\n",
"NINEMs0023\n",
"NINEMs0024\n",
"NINEMs0025\n",
"NINEMs0026\n",
"NINEMs0027\n",
"NINEMs0028\n",
"NINEMs0029\n",
"NINEMs0030\n",
"NINEMs0031\n",
"NINEMs0032\n",
"NINEMs0033\n",
"NINEMs0034\n",
"NINEMs0035\n",
"NINEMs0036\n",
"NINEMs0037\n",
"NINEMs0038\n",
"NINEMs0039\n",
"NINEMs0040\n",
"NINEMs0041\n",
"NINEMs0042\n",
"NINEMs0043\n",
"NINEMs0044\n",
"NINEMs0045\n",
"NINEMs0046\n",
"NINEMs0047\n",
"NINEMs0048\n",
"NINEMs0049\n",
"NINEMs0050\n",
"NINEMs0051\n",
"NINEMs0052\n",
"NINEMs0053\n",
"NINEMs0054\n",
"NINEMs0055\n",
"NINEMs0056\n",
"NINEMs0057\n",
"NINEMs0058\n",
"NINEMs0059\n",
"NINEMs0060\n",
"NSHORE_n0001\n",
"NSHORE_n0002\n",
"NSHORE_n0003\n",
"NSHORE_n0004\n",
"NSHORE_n0005\n",
"NSHORE_n0006\n",
"NSHORE_n0007\n",
"NSHORE_n0008\n",
"NSHORE_n0009\n",
"NSHORE_n0010\n",
"NSHORE_n0011\n",
"NSHORE_n0012\n",
"NSHORE_n0013\n",
"NSHORE_n0014\n",
"NSHORE_n0015\n",
"NSHORE_n0016\n",
"NSHORE_n0017\n",
"NSHORE_n0018\n",
"NSHORE_n0019\n",
"NSHORE_n0020\n",
"NSHORE_n0021\n",
"NSHORE_n0022\n",
"NSHORE_n0023\n",
"NSHORE_n0024\n",
"NSHORE_n0025\n",
"NSHORE_n0026\n",
"NSHORE_n0027\n",
"NSHORE_n0028\n",
"NSHORE_n0029\n",
"NSHORE_n0030\n",
"NSHORE_n0031\n",
"NSHORE_n0032\n",
"NSHORE_n0033\n",
"NSHORE_n0034\n",
"NSHORE_n0035\n",
"NSHORE_n0036\n",
"NSHORE_n0037\n",
"NSHORE_n0038\n",
"NSHORE_n0039\n",
"NSHORE_n0040\n",
"NSHORE_n0041\n",
"NSHORE_n0042\n",
"NSHORE_n0043\n",
"NSHORE_n0044\n",
"NSHORE_n0045\n",
"NSHORE_n0046\n",
"NSHORE_n0047\n",
"NSHORE_n0048\n",
"NSHORE_n0049\n",
"NSHORE_n0050\n",
"NSHORE_n0051\n",
"NSHORE_n0052\n",
"NSHORE_n0053\n",
"NSHORE_n0054\n",
"NSHORE_n0055\n",
"NSHORE_n0056\n",
"NSHORE_n0057\n",
"NSHORE_n0058\n",
"NSHORE_n0059\n",
"NSHORE_n0060\n",
"NSHORE_n0061\n",
"NSHORE_n0062\n",
"NSHORE_n0063\n",
"NSHORE_n0064\n",
"NSHORE_n0065\n",
"NSHORE_n0066\n",
"NSHORE_n0067\n",
"NSHORE_n0068\n",
"NSHORE_n0069\n",
"NSHORE_n0070\n",
"NSHORE_n0071\n",
"NSHORE_n0072\n",
"NSHORE_n0073\n",
"NSHORE_n0074\n",
"NSHORE_n0075\n",
"NSHORE_n0076\n",
"NSHORE_n0077\n",
"NSHORE_n0078\n",
"NSHORE_n0079\n",
"NSHORE_n0080\n",
"NSHORE_n0081\n",
"NSHORE_n0082\n",
"NSHORE_s0001\n",
"NSHORE_s0002\n",
"NSHORE_s0003\n",
"NSHORE_s0004\n",
"NSHORE_s0005\n",
"NSHORE_s0006\n",
"NSHORE_s0007\n",
"NSHORE_s0008\n",
"NSHORE_s0009\n",
"NSHORE_s0010\n",
"NSHORE_s0011\n",
"NSHORE_s0012\n",
"NSHORE_s0013\n",
"NSHORE_s0014\n",
"NSHORE_s0015\n",
"NSHORE_s0016\n",
"NSHORE_s0017\n",
"NSHORE_s0018\n",
"NSHORE_s0019\n",
"NSHORE_s0020\n",
"NSHORE_s0021\n",
"NSHORE_s0022\n",
"NSHORE_s0023\n",
"NSHORE_s0024\n",
"NSHORE_s0025\n",
"NSHORE_s0026\n",
"NSHORE_s0027\n",
"NSHORE_s0028\n",
"NSHORE_s0029\n",
"NSHORE_s0030\n",
"NSHORE_s0031\n",
"NSHORE_s0032\n",
"NSHORE_s0033\n",
"NSHORE_s0034\n",
"NSHORE_s0035\n",
"NSHORE_s0036\n",
"NSHORE_s0037\n",
"NSHORE_s0038\n",
"NSHORE_s0039\n",
"NSHORE_s0040\n",
"NSHORE_s0041\n",
"NSHORE_s0042\n",
"NSHORE_s0043\n",
"NSHORE_s0044\n",
"OLDBAR0001\n",
"OLDBAR0002\n",
"OLDBAR0003\n",
"OLDBAR0004\n",
"OLDBAR0005\n",
"OLDBAR0006\n",
"OLDBAR0007\n",
"OLDBAR0008\n",
"OLDBAR0009\n",
"OLDBAR0010\n",
"OLDBAR0011\n",
"OLDBAR0012\n",
"OLDBAR0013\n",
"OLDBAR0014\n",
"OLDBAR0015\n",
"OLDBAR0016\n",
"OLDBAR0017\n",
"OLDBAR0018\n",
"OLDBAR0019\n",
"OLDBAR0020\n",
"OLDBAR0021\n",
"OLDBAR0022\n",
"OLDBAR0023\n",
"OLDBAR0024\n",
"OLDBAR0025\n",
"OLDBAR0026\n",
"OLDBAR0027\n",
"OLDBAR0028\n",
"OLDBAR0029\n",
"OLDBAR0030\n",
"OLDBAR0031\n",
"OLDBAR0032\n",
"OLDBAR0033\n",
"OLDBAR0034\n",
"OLDBAR0035\n",
"OLDBAR0036\n",
"ONEMILE0001\n",
"ONEMILE0002\n",
"ONEMILE0003\n",
"ONEMILE0004\n",
"ONEMILE0005\n",
"ONEMILE0006\n",
"ONEMILE0007\n",
"ONEMILE0008\n",
"ONEMILE0009\n",
"ONEMILE0010\n",
"ONEMILE0011\n",
"ONEMILE0012\n",
"ONEMILE0013\n",
"PEARLn0001\n",
"PEARLn0002\n",
"PEARLn0003\n",
"PEARLn0004\n",
"PEARLn0005\n",
"PEARLs0001\n",
"PEARLs0002\n",
"PEARLs0003\n",
"PEARLs0004\n",
"PEARLs0005\n",
"SCOT0001\n",
"SCOT0002\n",
"SCOT0003\n",
"SCOT0004\n",
"SCOT0005\n",
"SCOT0006\n",
"SCOT0007\n",
"SCOT0008\n",
"SCOT0009\n",
"SCOT0010\n",
"SCOT0011\n",
"SCOT0012\n",
"STOCNn0001\n",
"STOCNn0002\n",
"STOCNn0003\n",
"STOCNn0004\n",
"STOCNn0005\n",
"STOCNn0006\n",
"STOCNn0007\n",
"STOCNn0008\n",
"STOCNn0009\n",
"STOCNn0010\n",
"STOCNn0011\n",
"STOCNn0012\n",
"STOCNn0013\n",
"STOCNn0014\n",
"STOCNn0015\n",
"STOCNn0016\n",
"STOCNn0017\n",
"STOCNn0018\n",
"STOCNn0019\n",
"STOCNn0020\n",
"STOCNn0021\n",
"STOCNn0022\n",
"STOCNn0023\n",
"STOCNn0024\n",
"STOCNn0025\n",
"STOCNn0026\n",
"STOCNn0027\n",
"STOCNn0028\n",
"STOCNn0029\n",
"STOCNn0030\n",
"STOCNn0031\n",
"STOCNn0032\n",
"STOCNn0033\n",
"STOCNn0034\n",
"STOCNn0035\n",
"STOCNn0036\n",
"STOCNn0037\n",
"STOCNn0038\n",
"STOCNn0039\n",
"STOCNn0040\n",
"STOCNn0041\n",
"STOCNn0042\n",
"STOCNn0043\n",
"STOCNn0044\n",
"STOCNn0045\n",
"STOCNn0046\n",
"STOCNn0047\n",
"STOCNn0048\n",
"STOCNn0049\n",
"STOCNn0050\n",
"STOCNn0051\n",
"STOCNn0052\n",
"STOCNn0053\n",
"STOCNn0054\n",
"STOCNn0055\n",
"STOCNn0056\n",
"STOCNn0057\n",
"STOCNn0058\n",
"STOCNn0059\n",
"STOCNn0060\n",
"STOCNn0061\n",
"STOCNn0062\n",
"STOCNn0063\n",
"STOCNn0064\n",
"STOCNn0065\n",
"STOCNs0001\n",
"STOCNs0002\n",
"STOCNs0003\n",
"STOCNs0004\n",
"STOCNs0005\n",
"STOCNs0006\n",
"STOCNs0007\n",
"STOCNs0008\n",
"STOCNs0009\n",
"STOCNs0010\n",
"STOCNs0011\n",
"STOCNs0012\n",
"STOCNs0013\n",
"STOCNs0014\n",
"STOCNs0015\n",
"STOCNs0016\n",
"STOCNs0017\n",
"STOCNs0018\n",
"STOCNs0019\n",
"STOCNs0020\n",
"STOCNs0021\n",
"STOCNs0022\n",
"STOCNs0023\n",
"STOCNs0024\n",
"STOCNs0025\n",
"STOCNs0026\n",
"STOCNs0027\n",
"STOCNs0028\n",
"STOCNs0029\n",
"STOCNs0030\n",
"STOCNs0031\n",
"STOCNs0032\n",
"STOCNs0033\n",
"STOCNs0034\n",
"STOCNs0035\n",
"STOCNs0036\n",
"STOCNs0037\n",
"STOCNs0038\n",
"STOCNs0039\n",
"STOCNs0040\n",
"STOCNs0041\n",
"STOCNs0042\n",
"STOCNs0043\n",
"STOCNs0044\n",
"STOCNs0045\n",
"STOCNs0046\n",
"STOCNs0047\n",
"STOCNs0048\n",
"STOCNs0049\n",
"STOCNs0050\n",
"STOCNs0051\n",
"STOCNs0052\n",
"STOCNs0053\n",
"STOCNs0054\n",
"STOCNs0055\n",
"STOCNs0056\n",
"STOCNs0057\n",
"STOCNs0058\n",
"STOCNs0059\n",
"STOCNs0060\n",
"STOCNs0061\n",
"STOCNs0062\n",
"STOCNs0063\n",
"STOCNs0064\n",
"STOCNs0065\n",
"STOCNs0066\n",
"STOCNs0067\n",
"STOCNs0068\n",
"STOCNs0069\n",
"STOCNs0070\n",
"STOCNs0071\n",
"STOCNs0072\n",
"STOCNs0073\n",
"STOCNs0074\n",
"STOCNs0075\n",
"STOCNs0076\n",
"STOCNs0077\n",
"STOCNs0078\n",
"STOCNs0079\n",
"STOCNs0080\n",
"STOCNs0081\n",
"STOCNs0082\n",
"STOCNs0083\n",
"STOCNs0084\n",
"STOCNs0085\n",
"STOCNs0086\n",
"STOCNs0087\n",
"STOCNs0088\n",
"STOCNs0089\n",
"STOCNs0090\n",
"STOCNs0091\n",
"STOCNs0092\n",
"STOCNs0093\n",
"STOCNs0094\n",
"STOCNs0095\n",
"STOCNs0096\n",
"STOCNs0097\n",
"STOCNs0098\n",
"STOCNs0099\n",
"STOCNs0100\n",
"STOCNs0101\n",
"STOCNs0102\n",
"STOCNs0103\n",
"STOCNs0104\n",
"STOCNs0105\n",
"STOCNs0106\n",
"STOCNs0107\n",
"STOCNs0108\n",
"STOCNs0109\n",
"STOCNs0110\n",
"STOCNs0111\n",
"STOCNs0112\n",
"STOCNs0113\n",
"STOCNs0114\n",
"STOCNs0115\n",
"STOCNs0116\n",
"STOCNs0117\n",
"STOCNs0118\n",
"STOCNs0119\n",
"STOCNs0120\n",
"STOCNs0121\n",
"STOCNs0122\n",
"STOCNs0123\n",
"STOCNs0124\n",
"STOCNs0125\n",
"STOCNs0126\n",
"STOCNs0127\n",
"STOCNs0128\n",
"STOCNs0129\n",
"STOCNs0130\n",
"STOCNs0131\n",
"STOCNs0132\n",
"STOCNs0133\n",
"STOCNs0134\n",
"STOCNs0135\n",
"STOCNs0136\n",
"STOCNs0137\n",
"STOCNs0138\n",
"STOCNs0139\n",
"STOCNs0140\n",
"STOCNs0141\n",
"STOCNs0142\n",
"STOCNs0143\n",
"STOCNs0144\n",
"STOCNs0145\n",
"STOCNs0146\n",
"STOCNs0147\n",
"STOCNs0148\n",
"STOCNs0149\n",
"STOCNs0150\n",
"STOCNs0151\n",
"STOCNs0152\n",
"STOCNs0153\n",
"STOCNs0154\n",
"STOCNs0155\n",
"STOCNs0156\n",
"STOCNs0157\n",
"STOCNs0158\n",
"STOCNs0159\n",
"STOCNs0160\n",
"STOCNs0161\n",
"STOCNs0162\n",
"STOCNs0163\n",
"STOCNs0164\n",
"STOCNs0165\n",
"STOCNs0166\n",
"STOCNs0167\n",
"STOCNs0168\n",
"STOCNs0169\n",
"STOCNs0170\n",
"STOCNs0171\n",
"STOCNs0172\n",
"STOCNs0173\n",
"STOCNs0174\n",
"STOCNs0175\n",
"STOCNs0176\n",
"STOCNs0177\n",
"STOCNs0178\n",
"STOCNs0179\n",
"STOCNs0180\n",
"STOCNs0181\n",
"STOCNs0182\n",
"STOCNs0183\n",
"STOCNs0184\n",
"STOCNs0185\n",
"STOCNs0186\n",
"STOCNs0187\n",
"STOCNs0188\n",
"STOCNs0189\n",
"STOCNs0190\n",
"STOCNs0191\n",
"STOCNs0192\n",
"STOCNs0193\n",
"STOCNs0194\n",
"STOCNs0195\n",
"STOCNs0196\n",
"STOCNs0197\n",
"STOCNs0198\n",
"STOCNs0199\n",
"STOCNs0200\n",
"STOCNs0201\n",
"STOCNs0202\n",
"STOCNs0203\n",
"STOCNs0204\n",
"STOCNs0205\n",
"STOCNs0206\n",
"STOCNs0207\n",
"STOCNs0208\n",
"STOCNs0209\n",
"STOCS0001\n",
"STOCS0002\n",
"STOCS0003\n",
"STOCS0004\n",
"STOCS0005\n",
"STOCS0006\n",
"STOCS0007\n",
"STOCS0008\n",
"STOCS0009\n",
"STOCS0010\n",
"STOCS0011\n",
"STOCS0012\n",
"STOCS0013\n",
"STOCS0014\n",
"STOCS0015\n",
"STOCS0016\n",
"STOCS0017\n",
"STOCS0018\n",
"STOCS0019\n",
"STOCS0020\n",
"STOCS0021\n",
"STOCS0022\n",
"STOCS0023\n",
"STOCS0024\n",
"STOCS0025\n",
"STOCS0026\n",
"STOCS0027\n",
"STOCS0028\n",
"STOCS0029\n",
"STOCS0030\n",
"STOCS0031\n",
"STOCS0032\n",
"STOCS0033\n",
"STOCS0034\n",
"STOCS0035\n",
"STOCS0036\n",
"STOCS0037\n",
"STOCS0038\n",
"STOCS0039\n",
"STOCS0040\n",
"STOCS0041\n",
"STOCS0042\n",
"STOCS0043\n",
"STOCS0044\n",
"STOCS0045\n",
"STOCS0046\n",
"STUART0001\n",
"STUART0002\n",
"STUART0003\n",
"STUART0004\n",
"STUART0005\n",
"STUART0006\n",
"STUART0007\n",
"STUART0008\n",
"STUART0009\n",
"STUART0010\n",
"STUART0011\n",
"STUART0012\n",
"STUART0013\n",
"STUART0014\n",
"STUART0015\n",
"STUART0016\n",
"STUART0017\n",
"STUART0018\n",
"STUART0019\n",
"STUART0020\n",
"STUART0021\n",
"STUART0022\n",
"STUART0023\n",
"STUART0024\n",
"STUART0025\n",
"STUART0026\n",
"STUART0027\n",
"STUART0028\n",
"STUART0029\n",
"STUART0030\n",
"STUART0031\n",
"STUART0032\n",
"STUART0033\n",
"STUART0034\n",
"STUART0035\n",
"STUART0036\n",
"STUART0037\n",
"STUART0038\n",
"STUART0039\n",
"STUART0040\n",
"STUART0041\n",
"STUART0042\n",
"STUART0043\n",
"STUART0044\n",
"STUART0045\n",
"STUART0046\n",
"STUART0047\n",
"STUART0048\n",
"STUART0049\n",
"STUART0050\n",
"STUART0051\n",
"STUART0052\n",
"STUART0053\n",
"STUART0054\n",
"STUART0055\n",
"STUART0056\n",
"STUART0057\n",
"STUART0058\n",
"STUART0059\n",
"STUART0060\n",
"STUART0061\n",
"STUART0062\n",
"STUART0063\n",
"STUART0064\n",
"STUART0065\n",
"STUART0066\n",
"STUART0067\n",
"STUART0068\n",
"STUART0069\n",
"STUART0070\n",
"STUART0071\n",
"STUART0072\n",
"STUART0073\n",
"STUART0074\n",
"STUART0075\n",
"STUART0076\n",
"STUART0077\n",
"STUART0078\n",
"STUART0079\n",
"STUART0080\n",
"STUART0081\n",
"STUART0082\n",
"STUART0083\n",
"STUART0084\n",
"STUART0085\n",
"STUART0086\n",
"STUART0087\n",
"STUART0088\n",
"STUART0089\n",
"SWRO0001\n",
"SWRO0002\n",
"SWRO0003\n",
"SWRO0004\n",
"SWRO0005\n",
"SWRO0006\n",
"SWRO0007\n",
"SWRO0008\n",
"SWRO0009\n",
"SWRO0010\n",
"SWRO0011\n",
"SWRO0012\n",
"SWRO0013\n",
"SWRO0014\n",
"SWRO0015\n",
"SWRO0016\n",
"SWRO0017\n",
"SWRO0018\n",
"SWRO0019\n",
"SWRO0020\n",
"SWRO0021\n",
"SWRO0022\n",
"SWRO0023\n",
"SWRO0024\n",
"SWRO0025\n",
"SWRO0026\n",
"TREACH0001\n",
"TREACH0002\n",
"TREACH0003\n",
"TREACH0004\n",
"TREACH0005\n",
"TREACH0006\n",
"TREACH0007\n",
"TREACH0008\n",
"TREACH0009\n",
"TREACH0010\n",
"TREACH0011\n",
"TREACH0012\n",
"TREACH0013\n",
"TREACH0014\n",
"TREACH0015\n",
"TREACH0016\n",
"WAMBE0001\n",
"WAMBE0002\n",
"WAMBE0003\n",
"WAMBE0004\n",
"WAMBE0005\n",
"WAMBE0006\n",
"WAMBE0007\n",
"WAMBE0008\n",
"WAMBE0009\n",
"WAMBE0010\n",
"WAMBE0011\n",
"WAMBE0012\n",
"WAMBE0013\n",
"WAMBE0014\n",
"WAMBE0015\n",
"WAMBE0016\n",
"WAMBE0017\n",
"WAMBE0018\n",
"WAMBE0019\n",
"WAMBE0020\n",
"WAMBE0021\n",
"WAMBE0022\n",
"WAMBE0023\n",
"WAMBE0024\n",
"WAMBE0025\n",
"WAMBE0026\n",
"WAMBE0027\n"
]
}
],
"source": [
"for x in df_profiles.index.get_level_values('site_id').unique().sort_values().tolist():\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2018-11-22T22:52:36.039701Z",
"start_time": "2018-11-22T22:52:36.035189Z"
},
"heading_collapsed": true,
"hide_input": true,
"scrolled": true
},
"source": [
"## Confusion matrix\n",
"This visualization looks at how well the storm impact predictions performed. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-11T22:41:46.514495Z",
"start_time": "2018-12-11T22:41:27.050029Z"
},
"code_folding": [],
"hidden": true,
"hide_input": false,
"scrolled": false
},
"outputs": [],
"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=\"Filter by beach:\", )\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=\"{}\".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('{}
({}%)'.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": null,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-11T22:17:29.215527Z",
"start_time": "2018-12-11T22:16:56.023Z"
},
"hidden": true
},
"outputs": [],
"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": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-03T23:02:47.179180Z",
"start_time": "2018-12-03T23:02:46.367273Z"
}
},
"source": [
"## Identify sites with no results"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check forecast TWL\n",
"Most probable explanation for TWL's which are NaN'ed is that the prestorm dune toe are not defined."
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-13T02:09:10.914191Z",
"start_time": "2018-12-13T02:09:09.913622Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The following sites have no slope defined in the twl csv file:\n",
"['ENTRA0078', 'ENTRA0079', 'MANNING0109']\n",
"\n",
"The following sites have no R_high defined in the twl csv file:\n",
"['ENTRA0078', 'ENTRA0079', 'MANNING0109']\n"
]
}
],
"source": [
"df_twls = twls['forecasted']['mean_slope_sto06']\n",
"\n",
"slope_mask = df_twls.groupby('site_id').agg({'beta': lambda x: x.isnull().sum() == len(x)}).beta\n",
"print('The following sites have no slope defined in the twl csv file:')\n",
"print(slope_mask.index[slope_mask].tolist())\n",
"print()\n",
"\n",
"R_high_mask = df_twls.groupby('site_id').agg({'R_high': lambda x: x.isnull().sum() == len(x)}).R_high\n",
"print('The following sites have no R_high defined in the twl csv file:')\n",
"print(slope_mask.index[slope_mask].tolist())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check observed impacts\n",
"Find sites which have no observed impacts. If we do not identify an observed storm regime, the site cannot be included when we're trying to compare predicted and observed impacts."
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"ExecuteTime": {
"end_time": "2018-12-13T02:09:14.785919Z",
"start_time": "2018-12-13T02:09:14.520986Z"
},
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n", " | prestorm_swash_vol | \n", "poststorm_swash_vol | \n", "swash_vol_change | \n", "swash_pct_change | \n", "prestorm_dune_face_vol | \n", "poststorm_dune_face_vol | \n", "dune_face_vol_change | \n", "dune_face_pct_change | \n", "storm_regime | \n", "
---|---|---|---|---|---|---|---|---|---|
site_id | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
AVOCAn0009 | \n", "4.5783 | \n", "0.1110 | \n", "4.4673 | \n", "97.5750 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0001 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0002 | \n", "97.9463 | \n", "26.6638 | \n", "71.2825 | \n", "72.7771 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0003 | \n", "70.7306 | \n", "40.2020 | \n", "30.7232 | \n", "43.4369 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0004 | \n", "98.2859 | \n", "45.4986 | \n", "52.6330 | \n", "53.5509 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0005 | \n", "95.5841 | \n", "54.9753 | \n", "40.5733 | \n", "42.4478 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0006 | \n", "113.0441 | \n", "67.8912 | \n", "45.2582 | \n", "40.0359 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0007 | \n", "65.3283 | \n", "44.2821 | \n", "21.4544 | \n", "32.8409 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
AVOCAs0008 | \n", "52.3933 | \n", "45.2243 | \n", "7.1728 | \n", "13.6904 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BILG0001 | \n", "20.3405 | \n", "7.6207 | \n", "12.7198 | \n", "62.5344 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BILG0002 | \n", "156.4205 | \n", "98.1716 | \n", "58.1659 | \n", "37.1856 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BOAT0001 | \n", "23.8361 | \n", "23.6865 | \n", "-0.0926 | \n", "-0.3885 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BOAT0002 | \n", "38.8398 | \n", "14.0819 | \n", "24.7579 | \n", "63.7436 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BOAT0003 | \n", "73.6809 | \n", "17.8545 | \n", "55.8264 | \n", "75.7678 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BOAT0004 | \n", "73.1954 | \n", "23.1583 | \n", "50.0372 | \n", "68.3610 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BOAT0005 | \n", "53.5122 | \n", "22.4537 | \n", "31.0585 | \n", "58.0400 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
BOOM0001 | \n", "236.4540 | \n", "218.4918 | \n", "20.8725 | \n", "8.8273 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
CATHIE0024 | \n", "63.6452 | \n", "38.4261 | \n", "25.2191 | \n", "39.6245 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "NaN | \n", "NaN | \n", "
CATHIE0026 | \n", "75.1334 | \n", "43.7179 | \n", "31.0940 | \n", "41.3851 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
CRESn0069 | \n", "37.5896 | \n", "8.3495 | \n", "29.2401 | \n", "77.7877 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DEEWHYn0008 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DEEWHYn0009 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DEEWHYs0005 | \n", "62.3514 | \n", "24.9797 | \n", "37.3716 | \n", "59.9372 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DEEWHYs0008 | \n", "1.0688 | \n", "1.3640 | \n", "0.0000 | \n", "0.0000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DIAMONDn0023 | \n", "67.9416 | \n", "21.1812 | \n", "46.7603 | \n", "68.8244 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DIAMONDs0006 | \n", "74.9357 | \n", "42.4382 | \n", "32.2536 | \n", "43.0416 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DIAMONDs0007 | \n", "153.7639 | \n", "127.9469 | \n", "26.1595 | \n", "17.0128 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DUNBn0031 | \n", "36.5301 | \n", "6.3289 | \n", "30.2012 | \n", "82.6748 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
DUNBn0055 | \n", "189.5283 | \n", "134.2760 | \n", "56.7139 | \n", "29.9237 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
ELIZA0002 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
STOCNs0170 | \n", "198.2785 | \n", "216.6368 | \n", "-18.6067 | \n", "-9.3841 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0175 | \n", "136.2126 | \n", "114.1715 | \n", "22.4984 | \n", "16.5171 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0179 | \n", "67.7795 | \n", "45.3981 | \n", "22.3815 | \n", "33.0210 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0180 | \n", "166.0813 | \n", "149.5195 | \n", "15.3441 | \n", "9.2389 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0181 | \n", "90.1147 | \n", "98.9808 | \n", "-9.1107 | \n", "-10.1102 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0182 | \n", "67.8622 | \n", "86.0118 | \n", "-18.1671 | \n", "-26.7705 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0183 | \n", "125.9085 | \n", "137.7342 | \n", "-12.6233 | \n", "-10.0257 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0184 | \n", "146.6586 | \n", "123.5371 | \n", "23.2603 | \n", "15.8602 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0185 | \n", "141.5421 | \n", "142.7279 | \n", "-1.2619 | \n", "-0.8915 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0186 | \n", "115.9148 | \n", "123.1507 | \n", "-7.8392 | \n", "-6.7629 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0187 | \n", "126.5519 | \n", "147.4371 | \n", "-22.4452 | \n", "-17.7359 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0188 | \n", "345.5234 | \n", "353.8766 | \n", "-11.3322 | \n", "-3.2797 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0189 | \n", "171.6354 | \n", "134.9192 | \n", "35.8697 | \n", "20.8988 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCNs0190 | \n", "151.4113 | \n", "116.6381 | \n", "35.0161 | \n", "23.1264 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCS0014 | \n", "98.4991 | \n", "57.3495 | \n", "40.9006 | \n", "41.5238 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
STOCS0043 | \n", "36.4256 | \n", "11.7208 | \n", "24.7048 | \n", "67.8225 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0005 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0015 | \n", "56.2724 | \n", "16.0428 | \n", "40.2296 | \n", "71.4908 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0016 | \n", "97.8849 | \n", "39.8432 | \n", "58.0417 | \n", "59.2958 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0017 | \n", "36.5683 | \n", "8.5380 | \n", "28.0303 | \n", "76.6520 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0018 | \n", "42.1423 | \n", "10.5498 | \n", "31.5925 | \n", "74.9662 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0019 | \n", "39.6097 | \n", "9.2404 | \n", "30.3693 | \n", "76.6714 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0020 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0021 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0022 | \n", "1.1034 | \n", "0.4478 | \n", "0.6556 | \n", "59.4166 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0023 | \n", "4.4796 | \n", "0.3356 | \n", "4.1440 | \n", "92.5081 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0024 | \n", "61.8478 | \n", "31.3007 | \n", "30.5470 | \n", "49.3907 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0025 | \n", "45.9707 | \n", "14.6125 | \n", "31.3582 | \n", "68.2134 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0026 | \n", "32.8591 | \n", "12.9479 | \n", "19.9112 | \n", "60.5957 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
WAMBE0027 | \n", "26.4132 | \n", "18.7142 | \n", "7.6990 | \n", "29.1484 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
242 rows × 9 columns
\n", "