{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.dates as mdates\n",
"import matplotlib as mpl\n",
"import netCDF4 as nc\n",
"import datetime as dt\n",
"from salishsea_tools import evaltools as et, places\n",
"import xarray as xr\n",
"import pandas as pd\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Example 1: load a time series at one location by accessing netCDF4 files stored on /results or /results2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" paths t_0 t_n\n",
"0 /results/SalishSea/nowcast-green.201812/01mar1... 2017-03-01 2017-03-02\n",
"1 /results/SalishSea/nowcast-green.201812/02mar1... 2017-03-02 2017-03-03\n",
"2 /results/SalishSea/nowcast-green.201812/03mar1... 2017-03-03 2017-03-04\n",
"3 /results/SalishSea/nowcast-green.201812/04mar1... 2017-03-04 2017-03-05\n",
"4 /results/SalishSea/nowcast-green.201812/05mar1... 2017-03-05 2017-03-06\n",
".. ... ... ...\n",
"209 /results/SalishSea/nowcast-green.201812/26sep1... 2017-09-26 2017-09-27\n",
"210 /results/SalishSea/nowcast-green.201812/27sep1... 2017-09-27 2017-09-28\n",
"211 /results/SalishSea/nowcast-green.201812/28sep1... 2017-09-28 2017-09-29\n",
"212 /results/SalishSea/nowcast-green.201812/29sep1... 2017-09-29 2017-09-30\n",
"213 /results/SalishSea/nowcast-green.201812/30sep1... 2017-09-30 2017-10-01\n",
"\n",
"[214 rows x 3 columns]\n",
"CPU times: user 12 ms, sys: 20 ms, total: 32 ms\n",
"Wall time: 323 ms\n"
]
}
],
"source": [
"%%time\n",
"start= dt.datetime(2017,3,1)\n",
"end=dt.datetime(2017,9,30) # the code called below (evaltools.index_model_files) includes the end date \n",
" # in the values returned\n",
"basedir='/results/SalishSea/nowcast-green.201812/'\n",
"nam_fmt='nowcast'\n",
"flen=1 # files contain 1 day of data each\n",
"ftype= 'ptrc_T' # load bio files\n",
"tres=24 # 1: hourly resolution; 24: daily resolution <- try changing to 1 and loading hourly data\n",
"flist=et.index_model_files(start,end,basedir,nam_fmt,flen,ftype,tres)\n",
"# flist contains paths: file pathes; t_0 timestemp of start of each file; t_n: timestamp of start of next file\n",
"print(flist)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# get model i,j of location S3 from places\n",
"ij,ii=places.PLACES['S3']['NEMO grid ji']\n",
"ik=0 # choose surface level\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"bio=xr.open_mfdataset(flist['paths'])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
<xarray.Dataset>\n",
"Dimensions: (axis_nbounds: 2, deptht: 40, nvertex: 4, time_counter: 214, x: 398, y: 898)\n",
"Coordinates:\n",
" nav_lat (y, x) float32 dask.array<chunksize=(898, 398), meta=np.ndarray>\n",
" nav_lon (y, x) float32 dask.array<chunksize=(898, 398), meta=np.ndarray>\n",
" * deptht (deptht) float32 0.5 1.5 2.5 ... 414.5 441.5\n",
" time_centered (time_counter) datetime64[ns] dask.array<chunksize=(1,), meta=np.ndarray>\n",
" * time_counter (time_counter) datetime64[ns] 2017-03-01T12...\n",
"Dimensions without coordinates: axis_nbounds, nvertex, x, y\n",
"Data variables:\n",
" bounds_lon (time_counter, y, x, nvertex) float32 dask.array<chunksize=(1, 898, 398, 4), meta=np.ndarray>\n",
" bounds_lat (time_counter, y, x, nvertex) float32 dask.array<chunksize=(1, 898, 398, 4), meta=np.ndarray>\n",
" area (time_counter, y, x) float32 dask.array<chunksize=(1, 898, 398), meta=np.ndarray>\n",
" deptht_bounds (time_counter, deptht, axis_nbounds) float32 dask.array<chunksize=(1, 40, 2), meta=np.ndarray>\n",
" nitrate (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" time_centered_bounds (time_counter, axis_nbounds) datetime64[ns] dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
" time_counter_bounds (time_counter, axis_nbounds) datetime64[ns] dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
" ammonium (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" silicon (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" diatoms (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" flagellates (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" ciliates (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" microzooplankton (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" dissolved_organic_nitrogen (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" particulate_organic_nitrogen (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" biogenic_silicon (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" Fraser_tracer (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
" mesozooplankton (time_counter, deptht, y, x) float32 dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>\n",
"Attributes:\n",
" name: SalishSea_1d_20170301_20170310\n",
" description: biogeochemical variables\n",
" title: biogeochemical variables\n",
" Conventions: CF-1.6\n",
" timeStamp: 2019-Jan-11 10:18:36 GMT\n",
" uuid: 8082bc6c-e5cf-46f8-a8ce-8e6f05c20614 Dimensions: axis_nbounds : 2deptht : 40nvertex : 4time_counter : 214x : 398y : 898
Coordinates: (5)
nav_lat
(y, x)
float32
dask.array<chunksize=(898, 398), meta=np.ndarray>
standard_name : latitude long_name : Latitude units : degrees_north bounds : bounds_lat \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 1.43 MB 1.43 MB \n",
" Shape (898, 398) (898, 398) \n",
" Count 1065 Tasks 1 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" \n",
" \n",
" \n",
"
nav_lon
(y, x)
float32
dask.array<chunksize=(898, 398), meta=np.ndarray>
standard_name : longitude long_name : Longitude units : degrees_east bounds : bounds_lon \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 1.43 MB 1.43 MB \n",
" Shape (898, 398) (898, 398) \n",
" Count 1065 Tasks 1 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" \n",
" \n",
" \n",
"
deptht
(deptht)
float32
0.5 1.5 2.5 ... 387.6 414.5 441.5
name : deptht long_name : Vertical T levels units : m axis : Z positive : down bounds : deptht_bounds array([ 0.5 , 1.500003, 2.500011, 3.500031, 4.500071, 5.500151,\n",
" 6.50031 , 7.500623, 8.501236, 9.502433, 10.504766, 11.509312,\n",
" 12.518167, 13.535412, 14.568982, 15.634288, 16.761173, 18.007135,\n",
" 19.481785, 21.389978, 24.100256, 28.229916, 34.685757, 44.517723,\n",
" 58.484333, 76.58559 , 98.06296 , 121.866516, 147.08946 , 173.11449 ,\n",
" 199.57304 , 226.2603 , 253.06664 , 279.93454 , 306.8342 , 333.75018 ,\n",
" 360.67453 , 387.6032 , 414.5341 , 441.4661 ], dtype=float32) time_centered
(time_counter)
datetime64[ns]
dask.array<chunksize=(1,), meta=np.ndarray>
standard_name : time long_name : Time axis time_origin : 1900-01-01 00:00:00 bounds : time_centered_bounds \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 1.71 kB 8 B \n",
" Shape (214,) (1,) \n",
" Count 642 Tasks 214 Chunks \n",
" Type datetime64[ns] numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
" \n",
" \n",
" \n",
"
time_counter
(time_counter)
datetime64[ns]
2017-03-01T12:00:00 ... 2017-09-...
axis : T standard_name : time long_name : Time axis time_origin : 1900-01-01 00:00:00 bounds : time_counter_bounds array(['2017-03-01T12:00:00.000000000', '2017-03-02T12:00:00.000000000',\n",
" '2017-03-03T12:00:00.000000000', ..., '2017-09-28T12:00:00.000000000',\n",
" '2017-09-29T12:00:00.000000000', '2017-09-30T12:00:00.000000000'],\n",
" dtype='datetime64[ns]') Data variables: (18)
bounds_lon
(time_counter, y, x, nvertex)
float32
dask.array<chunksize=(1, 898, 398, 4), meta=np.ndarray>
\n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 1.22 GB 5.72 MB \n",
" Shape (214, 898, 398, 4) (1, 898, 398, 4) \n",
" Count 856 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 4 \n",
" 398 \n",
" 898 \n",
" \n",
" \n",
" \n",
"
bounds_lat
(time_counter, y, x, nvertex)
float32
dask.array<chunksize=(1, 898, 398, 4), meta=np.ndarray>
\n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 1.22 GB 5.72 MB \n",
" Shape (214, 898, 398, 4) (1, 898, 398, 4) \n",
" Count 856 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 4 \n",
" 398 \n",
" 898 \n",
" \n",
" \n",
" \n",
"
area
(time_counter, y, x)
float32
dask.array<chunksize=(1, 898, 398), meta=np.ndarray>
standard_name : cell_area units : m2 \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 305.94 MB 1.43 MB \n",
" Shape (214, 898, 398) (1, 898, 398) \n",
" Count 856 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 214 \n",
" \n",
" \n",
" \n",
"
deptht_bounds
(time_counter, deptht, axis_nbounds)
float32
dask.array<chunksize=(1, 40, 2), meta=np.ndarray>
\n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 68.48 kB 320 B \n",
" Shape (214, 40, 2) (1, 40, 2) \n",
" Count 856 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 2 \n",
" 40 \n",
" 214 \n",
" \n",
" \n",
" \n",
"
nitrate
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_nitrate_in_sea_water long_name : Nitrate Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
time_centered_bounds
(time_counter, axis_nbounds)
datetime64[ns]
dask.array<chunksize=(1, 2), meta=np.ndarray>
\n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 3.42 kB 16 B \n",
" Shape (214, 2) (1, 2) \n",
" Count 642 Tasks 214 Chunks \n",
" Type datetime64[ns] numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 2 \n",
" 214 \n",
" \n",
" \n",
" \n",
"
time_counter_bounds
(time_counter, axis_nbounds)
datetime64[ns]
dask.array<chunksize=(1, 2), meta=np.ndarray>
\n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 3.42 kB 16 B \n",
" Shape (214, 2) (1, 2) \n",
" Count 642 Tasks 214 Chunks \n",
" Type datetime64[ns] numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 2 \n",
" 214 \n",
" \n",
" \n",
" \n",
"
ammonium
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_ammonium_in_sea_water long_name : Ammonium Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
silicon
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_silicate_in_sea_water long_name : Silicon Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
diatoms
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_diatoms_expressed_as_nitrogen_in_sea_water long_name : Diatoms Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
flagellates
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_flagellates_expressed_as_nitrogen_in_sea_water long_name : Flagellates Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
ciliates
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_mesodinium_rubrum_expressed_as_nitrogen_in_sea_water long_name : Mesodinium rubrum Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
microzooplankton
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_microzooplankton_expressed_as_nitrogen_in_sea_water long_name : Microzooplankton Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
dissolved_organic_nitrogen
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_organic_detritus_expressed_as_nitrogen_in_sea_water long_name : Dissolved Organic N Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
particulate_organic_nitrogen
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water long_name : Particulate Organic N Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
biogenic_silicon
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_organic_detritus_expressed_as_silicon_in_sea_water long_name : Biogenic Silicon Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
Fraser_tracer
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : fraser_river_turbidity_tracer long_name : Fraser River Turbidity Tracer units : NTU online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
mesozooplankton
(time_counter, deptht, y, x)
float32
dask.array<chunksize=(1, 40, 898, 398), meta=np.ndarray>
standard_name : mole_concentration_of_mesozooplankton_expressed_as_nitrogen_in_sea_water long_name : Mesozooplankton Concentration units : mmol m-3 online_operation : average interval_operation : 40 s interval_write : 1 d cell_methods : time: mean (interval: 40 s) cell_measures : area: area \n",
"\n",
"\n",
"\n",
" \n",
" Array Chunk \n",
" \n",
" \n",
" Bytes 12.24 GB 57.18 MB \n",
" Shape (214, 40, 898, 398) (1, 40, 898, 398) \n",
" Count 642 Tasks 214 Chunks \n",
" Type float32 numpy.ndarray \n",
" \n",
"
\n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 214 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 398 \n",
" 898 \n",
" 40 \n",
" \n",
" \n",
" \n",
"
Attributes: (6)
name : SalishSea_1d_20170301_20170310 description : biogeochemical variables title : biogeochemical variables Conventions : CF-1.6 timeStamp : 2019-Jan-11 10:18:36 GMT uuid : 8082bc6c-e5cf-46f8-a8ce-8e6f05c20614 "
],
"text/plain": [
"\n",
"Dimensions: (axis_nbounds: 2, deptht: 40, nvertex: 4, time_counter: 214, x: 398, y: 898)\n",
"Coordinates:\n",
" nav_lat (y, x) float32 dask.array\n",
" nav_lon (y, x) float32 dask.array\n",
" * deptht (deptht) float32 0.5 1.5 2.5 ... 414.5 441.5\n",
" time_centered (time_counter) datetime64[ns] dask.array\n",
" * time_counter (time_counter) datetime64[ns] 2017-03-01T12...\n",
"Dimensions without coordinates: axis_nbounds, nvertex, x, y\n",
"Data variables:\n",
" bounds_lon (time_counter, y, x, nvertex) float32 dask.array\n",
" bounds_lat (time_counter, y, x, nvertex) float32 dask.array\n",
" area (time_counter, y, x) float32 dask.array\n",
" deptht_bounds (time_counter, deptht, axis_nbounds) float32 dask.array\n",
" nitrate (time_counter, deptht, y, x) float32 dask.array\n",
" time_centered_bounds (time_counter, axis_nbounds) datetime64[ns] dask.array\n",
" time_counter_bounds (time_counter, axis_nbounds) datetime64[ns] dask.array\n",
" ammonium (time_counter, deptht, y, x) float32 dask.array\n",
" silicon (time_counter, deptht, y, x) float32 dask.array\n",
" diatoms (time_counter, deptht, y, x) float32 dask.array\n",
" flagellates (time_counter, deptht, y, x) float32 dask.array\n",
" ciliates (time_counter, deptht, y, x) float32 dask.array\n",
" microzooplankton (time_counter, deptht, y, x) float32 dask.array\n",
" dissolved_organic_nitrogen (time_counter, deptht, y, x) float32 dask.array\n",
" particulate_organic_nitrogen (time_counter, deptht, y, x) float32 dask.array\n",
" biogenic_silicon (time_counter, deptht, y, x) float32 dask.array\n",
" Fraser_tracer (time_counter, deptht, y, x) float32 dask.array\n",
" mesozooplankton (time_counter, deptht, y, x) float32 dask.array\n",
"Attributes:\n",
" name: SalishSea_1d_20170301_20170310\n",
" description: biogeochemical variables\n",
" title: biogeochemical variables\n",
" Conventions: CF-1.6\n",
" timeStamp: 2019-Jan-11 10:18:36 GMT\n",
" uuid: 8082bc6c-e5cf-46f8-a8ce-8e6f05c20614"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bio"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4 ms, sys: 0 ns, total: 4 ms\n",
"Wall time: 4.58 ms\n"
]
}
],
"source": [
"%%time\n",
"tt=bio.time_centered\n",
"micZ=bio.microzooplankton.isel(deptht=ik,y=ij,x=ii)\n",
"diat=bio.diatoms.isel(deptht=ik,y=ij,x=ii)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1min 8s, sys: 11.2 s, total: 1min 19s\n",
"Wall time: 3min 28s\n"
]
},
{
"data": {
"text/plain": [
"(17226.5, 17439.5)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%%time\n",
"fig,ax=plt.subplots(1,1,figsize=(12,3))\n",
"ax.plot(tt,diat,'c-',label='diatoms')\n",
"ax.plot(tt,micZ,'-',color='darkorange',label='microzooplankton')\n",
"ax.legend(loc=2);\n",
"ax.set_ylabel('Concentration ($\\mu$M N)')\n",
"ax.set_xlim(tt[0],tt[-1])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Adjust date format display\n",
"fig,ax=plt.subplots(1,1,figsize=(12,3))\n",
"ax.plot(tt,diat,'c-',label='diatoms')\n",
"ax.plot(tt,micZ,'-',color='darkorange',label='microzooplankton')\n",
"ax.legend(loc=2);\n",
"ax.set_ylabel('Concentration ($\\mu$M N)')\n",
"ax.set_xlim(tt[0],tt[-1])\n",
"yearsFmt = mdates.DateFormatter('%d %b')\n",
"ax.xaxis.set_major_formatter(yearsFmt)\n",
"ax.set_title('March 2017')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"bio.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### repeat with hourly data over a shorter interval"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'/results/SalishSea/nowcast-green.201812/01mar17/SalishSea_1h_20170301_20170301_ptrc_T.nc'"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"start= dt.datetime(2017,3,1)\n",
"end=dt.datetime(2017,3,5) # the code called below (evaltools.index_model_files) includes the end date \n",
" # in the values returned\n",
"tres=1 # 1: hourly resolution; 24: daily resolution <- try changing to 1 and loading hourly data\n",
"flist=et.index_model_files(start,end,basedir,nam_fmt,flen,ftype,tres)\n",
"# flist contains paths: file pathes; t_0 timestemp of start of each file; t_n: timestamp of start of next file\n",
"flist['paths'][0]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 188 ms, sys: 16 ms, total: 204 ms\n",
"Wall time: 616 ms\n"
]
}
],
"source": [
"%%time\n",
"bio=xr.open_mfdataset(flist['paths'])\n",
"tt=bio.time_centered\n",
"micZ=bio.microzooplankton.isel(deptht=0,y=ij,x=ii)\n",
"diat=bio.diatoms.isel(deptht=0,y=ij,x=ii)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 32.7 s, sys: 5.46 s, total: 38.2 s\n",
"Wall time: 42.2 s\n"
]
},
{
"data": {
"text/plain": [
"(17226.020833333332, 17230.979166666668)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%%time\n",
"fig,ax=plt.subplots(1,1,figsize=(12,3))\n",
"ax.plot(tt,diat,'c-',label='diatoms')\n",
"ax.plot(tt,micZ,'-',color='darkorange',label='microzooplankton')\n",
"ax.legend(loc=2);\n",
"ax.set_ylabel('Concentration ($\\mu$M N)')\n",
"ax.set_xlim(tt[0],tt[-1])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"bio.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Aside: this can also be done using ERDDAP, but only to access 201905 model output"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 24 ms, sys: 4 ms, total: 28 ms\n",
"Wall time: 57.4 ms\n"
]
}
],
"source": [
"%%time\n",
"hc1905 = xr.open_dataset('https://salishsea.eos.ubc.ca/erddap/griddap/ubcSSg3DBiologyFields1hV19-05')"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 0 ns, sys: 0 ns, total: 0 ns\n",
"Wall time: 4.53 µs\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
<xarray.Dataset>\n",
"Dimensions: (depth: 40, gridX: 398, gridY: 898, time: 123216)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2007-01-01T00:30:00 ....\n",
" * depth (depth) float32 0.5 1.5 2.5 ... 414.5 441.5\n",
" * gridY (gridY) int16 0 1 2 3 4 ... 894 895 896 897\n",
" * gridX (gridX) int16 0 1 2 3 4 ... 394 395 396 397\n",
"Data variables:\n",
" ammonium (time, depth, gridY, gridX) float32 ...\n",
" biogenic_silicon (time, depth, gridY, gridX) float32 ...\n",
" ciliates (time, depth, gridY, gridX) float32 ...\n",
" diatoms (time, depth, gridY, gridX) float32 ...\n",
" dissolved_organic_nitrogen (time, depth, gridY, gridX) float32 ...\n",
" flagellates (time, depth, gridY, gridX) float32 ...\n",
" mesozooplankton (time, depth, gridY, gridX) float32 ...\n",
" microzooplankton (time, depth, gridY, gridX) float32 ...\n",
" nitrate (time, depth, gridY, gridX) float32 ...\n",
" particulate_organic_nitrogen (time, depth, gridY, gridX) float32 ...\n",
" silicon (time, depth, gridY, gridX) float32 ...\n",
"Attributes:\n",
" acknowledgement: MEOPAR, ONC, Compute Canada\n",
" cdm_data_type: Grid\n",
" comment: If you use this dataset in your research,\\nple...\n",
" Conventions: CF-1.6, COARDS, ACDD-1.3\n",
" creator_email: sallen@eoas.ubc.ca\n",
" creator_name: Salish Sea MEOPAR Project Contributors\n",
" creator_url: https://salishsea-meopar-docs.readthedocs.io/\n",
" description: biogeochemical variables\n",
" drawLandMask: over\n",
" history: 2021-01-21T19:06:06Z (local files)\\n2021-01-21...\n",
" infoUrl: https://salishsea-meopar-docs.readthedocs.io/e...\n",
" institution: UBC EOAS\n",
" institution_fullname: Earth, Ocean & Atmospheric Sciences, Universit...\n",
" keywords: ammonia, ammonium, aquatic, biogenic, biogenic...\n",
" keywords_vocabulary: GCMD Science Keywords\n",
" license: The Salish Sea MEOPAR NEMO model results are c...\n",
" project: Salish Sea MEOPAR NEMO Model\n",
" sourceUrl: (local files)\n",
" standard_name_vocabulary: CF Standard Name Table v29\n",
" summary: Green, Salish Sea, 3d Biology Fields, Hourly, ...\n",
" testOutOfDate: now-16hours\n",
" time_coverage_end: 2021-01-20T23:30:00Z\n",
" time_coverage_start: 2007-01-01T00:30:00Z\n",
" timeStamp: 2021-Jan-20 19:28:54 GMT\n",
" title: Green, Salish Sea, 3d Biology Fields, Hourly, ...\n",
" uuid: 541bbc8f-d5b3-41e7-99b8-be00298750dd Dimensions: depth : 40gridX : 398gridY : 898time : 123216
Coordinates: (4)
time
(time)
datetime64[ns]
2007-01-01T00:30:00 ... 2021-01-...
_ChunkSizes : 1 _CoordinateAxisType : Time actual_range : [1.1676114e+09 1.6111854e+09] axis : T comment : time values are UTC at the centre of the intervals over which the calculated model results are averaged coverage_content_type : modelResult ioos_category : Time long_name : Time axis standard_name : time time_origin : 01-JAN-1970 00:00:00 array(['2007-01-01T00:30:00.000000000', '2007-01-01T01:30:00.000000000',\n",
" '2007-01-01T02:30:00.000000000', ..., '2021-01-20T21:30:00.000000000',\n",
" '2021-01-20T22:30:00.000000000', '2021-01-20T23:30:00.000000000'],\n",
" dtype='datetime64[ns]') depth
(depth)
float32
0.5 1.5 2.5 ... 387.6 414.5 441.5
_ChunkSizes : 40 _CoordinateAxisType : Height _CoordinateZisPositive : down actual_range : [ 0.5000003 441.4661 ] axis : Z coverage_content_type : modelResult ioos_category : Location long_name : Depth name : deptht positive : down standard_name : depth units : m array([ 0.5 , 1.500003, 2.500011, 3.500031, 4.500071, 5.500151,\n",
" 6.50031 , 7.500623, 8.501236, 9.502433, 10.504766, 11.509312,\n",
" 12.518167, 13.535412, 14.568982, 15.634288, 16.761173, 18.007135,\n",
" 19.481785, 21.389978, 24.100256, 28.229916, 34.685757, 44.517723,\n",
" 58.484333, 76.58559 , 98.06296 , 121.866516, 147.08946 , 173.11449 ,\n",
" 199.57304 , 226.2603 , 253.06664 , 279.93454 , 306.8342 , 333.75018 ,\n",
" 360.67453 , 387.6032 , 414.5341 , 441.4661 ], dtype=float32) gridY
(gridY)
int16
0 1 2 3 4 5 ... 893 894 895 896 897
actual_range : [ 0 897] coverage_content_type : modelResult ioos_category : location long_name : Y units : count array([ 0, 1, 2, ..., 895, 896, 897], dtype=int16) gridX
(gridX)
int16
0 1 2 3 4 5 ... 393 394 395 396 397
actual_range : [ 0 397] coverage_content_type : modelResult ioos_category : location long_name : X units : count array([ 0, 1, 2, ..., 395, 396, 397], dtype=int16) Data variables: (11)
ammonium
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] colorBarMaximum : 5.0 colorBarMinimum : 0.0 coverage_content_type : modelResult ioos_category : dissolved_nutrients long_name : Ammonium Concentration standard_name : mole_concentration_of_ammonium_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] biogenic_silicon
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] colorBarMaximum : 70.0 colorBarMinimum : 0.0 coverage_content_type : modelResult ioos_category : dissolved_nutrients long_name : Biogenic Silicon Concentration standard_name : mole_concentration_of_organic_detritus_expressed_as_silicon_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] ciliates
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] coverage_content_type : modelResult ioos_category : biology long_name : Mesodinium rubrum Concentration standard_name : mole_concentration_of_mesodinium_rubrum_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] diatoms
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] colorBarMaximum : 20.0 colorBarMinimum : 0.0 coverage_content_type : modelResult ioos_category : biology long_name : Diatoms Concentration standard_name : mole_concentration_of_diatoms_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] dissolved_organic_nitrogen
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] coverage_content_type : modelResult ioos_category : dissolved_nutrients long_name : Dissolved Organic N Concentration standard_name : mole_concentration_of_organic_detritus_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] flagellates
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] colorBarMaximum : 128.0 colorBarMinimum : 0.0 coverage_content_type : modelResult ioos_category : biology long_name : Flagellates Concentration standard_name : mole_concentration_of_flagellates_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] mesozooplankton
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] coverage_content_type : modelResult ioos_category : biology long_name : Mesozooplankton Concentration standard_name : mole_concentration_of_mesozooplankton_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] microzooplankton
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] coverage_content_type : modelResult ioos_category : biology long_name : Microzooplankton Concentration standard_name : mole_concentration_of_microzooplankton_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] nitrate
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] colorBarMaximum : 40.0 colorBarMinimum : 0.0 coverage_content_type : modelResult ioos_category : dissolved_nutrients long_name : Nitrate Concentration standard_name : mole_concentration_of_nitrate_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] particulate_organic_nitrogen
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] coverage_content_type : modelResult ioos_category : dissolved_nutrients long_name : Particulate Organic N Concentration standard_name : mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] silicon
(time, depth, gridY, gridX)
float32
...
_ChunkSizes : [ 1 40 898 398] colorBarMaximum : 70.0 colorBarMinimum : 0.0 coverage_content_type : modelResult ioos_category : dissolved_nutrients long_name : Silicon Concentration standard_name : mole_concentration_of_silicate_in_sea_water units : mmol m-3 [1761515650560 values with dtype=float32] Attributes: (26)
acknowledgement : MEOPAR, ONC, Compute Canada cdm_data_type : Grid comment : If you use this dataset in your research,\n",
"please reference it with wording similar to the example below,\n",
"and include citations of the publications below.\n",
"Inclusion of the date(s) when you downloaded the dataset,\n",
"and the dataset id help to ensure reproducibility of your work.\n",
"\n",
"Reference wording:\n",
"\n",
"3d SMELT biological model field values from the SalishSeaCast model\n",
"(Soontiens et al, 2016; Moore-Maley et al, 2016; Soontiens and Allen, 2017, Olson et al, 2020)\n",
"were downloaded from their ERDDAP server\n",
"(https://salishsea.eos.ubc.ca/erddap/)\n",
"on DATE from dataset ubcSSg3DBiologyFields1hV19-05.\n",
"\n",
"Citations:\n",
"\n",
"Soontiens, N., Allen, S., Latornell, D., Le Souef, K., Machuca, I., Paquin, J.-P., Lu, Y., Thompson, K., Korabel, V., 2016.\n",
"Storm surges in the Strait of Georgia simulated with a regional model. Atmosphere-Ocean 54 1-21.\n",
"https://dx.doi.org/10.1080/07055900.2015.1108899\n",
"\n",
"Moore-Maley, B. L., Allen, S. E., and IansonD., 2016.\n",
"Locally-driven interannual variability of near-surface pH and ΩA in the Strait of Georgia.\n",
"J. Geophys. Res. Oceans, 121(3), 1600–1625.\n",
"https://dx.doi.org/10.1002/2015JC011118\n",
"\n",
"Soontiens, N. and Allen, S., 2017.\n",
"Modelling sensitivities to mixing and advection in a sill-basin estuarine system. Ocean Modelling, 112, 17-32.\n",
"https://dx.doi.org/10.1016/j.ocemod.2017.02.008\n",
"\n",
"Olson, E. M., Allen, S. E., Do, Vy, Dunphy, M., and Ianson, D., 2020. Assessment of Nutrient Supply by a Tidal Jet in the Northern Strait of Georgia Based on a Biogeochemical Model. J. Geophys. Res. Oceans, 125(8). https://doi.org/10.1029/2019JC015766 Conventions : CF-1.6, COARDS, ACDD-1.3 creator_email : sallen@eoas.ubc.ca creator_name : Salish Sea MEOPAR Project Contributors creator_url : https://salishsea-meopar-docs.readthedocs.io/ description : biogeochemical variables drawLandMask : over history : 2021-01-21T19:06:06Z (local files)\n",
"2021-01-21T19:06:06Z https://salishsea.eos.ubc.ca/erddap/griddap/ubcSSg3DBiologyFields1hV19-05.das infoUrl : https://salishsea-meopar-docs.readthedocs.io/en/latest/results_server/index.html#salish-sea-model-results institution : UBC EOAS institution_fullname : Earth, Ocean & Atmospheric Sciences, University of British Columbia keywords : ammonia, ammonium, aquatic, biogenic, biogenic_silicon, biological, biosphere, chemistry, ciliates, concentration, deptht, detritus, diatoms, dissolved, dissolved_organic_nitrogen, Earth Science > Biological Classification > Protists > Diatoms, Earth Science > Biosphere > Aquatic Ecosystems > Plankton > Zooplankton, Earth Science > Oceans > Ocean Chemistry > Ammonia, Earth Science > Oceans > Ocean Chemistry > Nitrate, Earth Science > Oceans > Ocean Chemistry > Nitrogen, Earth Science > Oceans > Ocean Chemistry > Organic Matter, Earth Science > Oceans > Ocean Chemistry > Silicate, ecosystems, flagellates, marine, mesodinium rubrum, mesozooplankton, microzooplankton, mole_concentration_of_ammonium_in_sea_water, mole_concentration_of_diatoms_expressed_as_nitrogen_in_sea_water, mole_concentration_of_flagellates_expressed_as_nitrogen_in_sea_water, mole_concentration_of_mesodinium_rubrum_expressed_as_nitrogen_in_sea_water, mole_concentration_of_mesozooplankton_expressed_as_nitrogen_in_sea_water, mole_concentration_of_microzooplankton_expressed_as_nitrogen_in_sea_water, mole_concentration_of_nitrate_in_sea_water, mole_concentration_of_organic_detritus_expressed_as_nitrogen_in_sea_water, mole_concentration_of_organic_detritus_expressed_as_silicon_in_sea_water, mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water, mole_concentration_of_silicate_in_sea_water, n02, nh4, nitrate, nitrogen, no3, ocean, oceans, organic, particulate, particulate_organic_nitrogen, plankton, protists, river, sea, seawater, silicate, silicon, time_counter, tracer, water, zooplankton keywords_vocabulary : GCMD Science Keywords license : The Salish Sea MEOPAR NEMO model results are copyright\n",
"by the Salish Sea MEOPAR Project Contributors and The University of British Columbia.\n",
"\n",
"They are licensed under the Apache License, Version 2.0. https://www.apache.org/licenses/LICENSE-2.0 project : Salish Sea MEOPAR NEMO Model sourceUrl : (local files) standard_name_vocabulary : CF Standard Name Table v29 summary : Green, Salish Sea, 3d Biology Fields, Hourly, v19-05\n",
"\n",
"3d SMELT biological model field values averaged over 1 hour intervals\n",
"from Salish Sea NEMO model runs with physics, biology and chemistry. The values are calculated for the entire model grid\n",
"that includes the Juan de Fuca Strait, the Strait of Georgia, Puget Sound,\n",
"and Johnstone Strait on the coasts of Washington State and British Columbia.\n",
"The time values are UTC.\n",
"They are the centre of the intervals over which the calculated model results are averaged.\n",
"Geo-location and depth data for the Salish Sea NEMO model grid are available in the ubcSSnBathymetry2V17-02 dataset.\n",
"\n",
"v17-02: Micromolar concentrations of ammonium, biogenic silicon, ciliates (mesodinium rubrum),\n",
" diatoms, dissolved organic nitrogen, flagellates (nanophytoplankton), mesozooplankton, microzooplankton,\n",
" nitrate, particulate organic nitrogen, silicon.\n",
" Fraser River water turbidity tracer.\n",
" NEMO-3.6; ubcSSnBathymetryV17-02 bathymetry; see infoUrl link for full details.\n",
"v18-06: NEMO-3.6 SalishSeaCast-201806 configuration; ubcSSnBathymetryV17-02 bathymetry;\n",
" see infoUrl link for full details.\n",
"v18-12: NEMO-3.6 SalishSeaCast-201812 configuration; ubcSSnBathymetryV17-02 bathymetry;\n",
" see infoUrl link for full details.\n",
"v19-05: NEMO-3.6 SalishSeaCast-201905 configuration; ubcSSnBathymetryV17-02 bathymetry;\n",
" see infoUrl link for full details. testOutOfDate : now-16hours time_coverage_end : 2021-01-20T23:30:00Z time_coverage_start : 2007-01-01T00:30:00Z timeStamp : 2021-Jan-20 19:28:54 GMT title : Green, Salish Sea, 3d Biology Fields, Hourly, v19-05 uuid : 541bbc8f-d5b3-41e7-99b8-be00298750dd "
],
"text/plain": [
"\n",
"Dimensions: (depth: 40, gridX: 398, gridY: 898, time: 123216)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2007-01-01T00:30:00 ....\n",
" * depth (depth) float32 0.5 1.5 2.5 ... 414.5 441.5\n",
" * gridY (gridY) int16 0 1 2 3 4 ... 894 895 896 897\n",
" * gridX (gridX) int16 0 1 2 3 4 ... 394 395 396 397\n",
"Data variables:\n",
" ammonium (time, depth, gridY, gridX) float32 ...\n",
" biogenic_silicon (time, depth, gridY, gridX) float32 ...\n",
" ciliates (time, depth, gridY, gridX) float32 ...\n",
" diatoms (time, depth, gridY, gridX) float32 ...\n",
" dissolved_organic_nitrogen (time, depth, gridY, gridX) float32 ...\n",
" flagellates (time, depth, gridY, gridX) float32 ...\n",
" mesozooplankton (time, depth, gridY, gridX) float32 ...\n",
" microzooplankton (time, depth, gridY, gridX) float32 ...\n",
" nitrate (time, depth, gridY, gridX) float32 ...\n",
" particulate_organic_nitrogen (time, depth, gridY, gridX) float32 ...\n",
" silicon (time, depth, gridY, gridX) float32 ...\n",
"Attributes:\n",
" acknowledgement: MEOPAR, ONC, Compute Canada\n",
" cdm_data_type: Grid\n",
" comment: If you use this dataset in your research,\\nple...\n",
" Conventions: CF-1.6, COARDS, ACDD-1.3\n",
" creator_email: sallen@eoas.ubc.ca\n",
" creator_name: Salish Sea MEOPAR Project Contributors\n",
" creator_url: https://salishsea-meopar-docs.readthedocs.io/\n",
" description: biogeochemical variables\n",
" drawLandMask: over\n",
" history: 2021-01-21T19:06:06Z (local files)\\n2021-01-21...\n",
" infoUrl: https://salishsea-meopar-docs.readthedocs.io/e...\n",
" institution: UBC EOAS\n",
" institution_fullname: Earth, Ocean & Atmospheric Sciences, Universit...\n",
" keywords: ammonia, ammonium, aquatic, biogenic, biogenic...\n",
" keywords_vocabulary: GCMD Science Keywords\n",
" license: The Salish Sea MEOPAR NEMO model results are c...\n",
" project: Salish Sea MEOPAR NEMO Model\n",
" sourceUrl: (local files)\n",
" standard_name_vocabulary: CF Standard Name Table v29\n",
" summary: Green, Salish Sea, 3d Biology Fields, Hourly, ...\n",
" testOutOfDate: now-16hours\n",
" time_coverage_end: 2021-01-20T23:30:00Z\n",
" time_coverage_start: 2007-01-01T00:30:00Z\n",
" timeStamp: 2021-Jan-20 19:28:54 GMT\n",
" title: Green, Salish Sea, 3d Biology Fields, Hourly, ...\n",
" uuid: 541bbc8f-d5b3-41e7-99b8-be00298750dd"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"hc1905"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4 ms, sys: 4 ms, total: 8 ms\n",
"Wall time: 7.84 ms\n"
]
}
],
"source": [
"%%time\n",
"modt=hc1905.time.sel(time=slice(start,end))\n",
"micZ1905=hc1905.microzooplankton.sel(time=slice(start,end)).isel(depth=ik,gridY=ij,gridX=ii)\n",
"diat1905=hc1905.diatoms.sel(time=slice(start,end)).isel(depth=ik,gridY=ij,gridX=ii)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 28 ms, sys: 0 ns, total: 28 ms\n",
"Wall time: 58.8 s\n"
]
},
{
"data": {
"text/plain": [
"(17226.020833333332, 17229.979166666668)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%%time\n",
"fig,ax=plt.subplots(1,1,figsize=(12,3))\n",
"ax.plot(modt,diat1905,'c-',label='diatoms')\n",
"ax.plot(modt,micZ1905,'-',color='darkorange',label='microzooplankton')\n",
"ax.legend(loc=2);\n",
"ax.set_ylabel('Concentration ($\\mu$M N)')\n",
"ax.set_xlim(modt[0],modt[-1]);"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"hc1905.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## back to accessing files from /results and /results2, but now switch to loading 201905 results"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"basedir='/results2/SalishSea/nowcast-green.201905/'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot mid Feb -- Jun Surface phytoplankton and nitrate at S3 for 2017:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"newstart=dt.datetime(2017,2,15)\n",
"newend=dt.datetime(2017,6,1)\n",
"flist=et.index_model_files(newstart,newend,basedir,'nowcast',1,'ptrc_T',1)\n",
"bio2=xr.open_mfdataset(flist['paths'])\n",
"ij,ii=places.PLACES['S3']['NEMO grid ji']\n",
"ik=0 # choose surface level"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/matplotlib/cbook/__init__.py\u001b[0m in \u001b[0;36m_check_1d\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 1317\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1318\u001b[0;31m \u001b[0mndim\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1319\u001b[0m \u001b[0;31m# we have definitely hit a pandas index or series object\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/dataarray.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 700\u001b[0m \u001b[0;31m# xarray-style array indexing\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 701\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0misel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexers\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_item_key_to_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 702\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/dataarray.py\u001b[0m in \u001b[0;36m_item_key_to_dict\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 664\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 665\u001b[0;31m \u001b[0mkey\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindexing\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpanded_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 666\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdims\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/indexing.py\u001b[0m in \u001b[0;36mexpanded_indexer\u001b[0;34m(key, ndim)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew_key\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mndim\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"too many indices\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0mnew_key\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mIndexError\u001b[0m: too many indices",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1741\u001b[0m \"\"\"\n\u001b[1;32m 1742\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmlines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1743\u001b[0;31m \u001b[0mlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1744\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1745\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 271\u001b[0m \u001b[0mthis\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 272\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 273\u001b[0;31m \u001b[0;32myield\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 274\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 275\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_next_color\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[0;34m(self, tup, kwargs)\u001b[0m\n\u001b[1;32m 387\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 388\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_check_1d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 389\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_check_1d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 390\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 391\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindex_of\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/matplotlib/cbook/__init__.py\u001b[0m in \u001b[0;36m_check_1d\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 1332\u001b[0m \u001b[0;31m# https://github.com/pandas-dev/pandas/issues/35527\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mAssertionError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1334\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0matleast_1d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1335\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1336\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<__array_function__ internals>\u001b[0m in \u001b[0;36matleast_1d\u001b[0;34m(*args, **kwargs)\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/numpy/core/shape_base.py\u001b[0m in \u001b[0;36matleast_1d\u001b[0;34m(*arys)\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mary\u001b[0m \u001b[0;32min\u001b[0m \u001b[0marys\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 66\u001b[0;31m \u001b[0mary\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0masanyarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mary\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 67\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mary\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mary\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/numpy/core/_asarray.py\u001b[0m in \u001b[0;36masanyarray\u001b[0;34m(a, dtype, order)\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 135\u001b[0m \"\"\"\n\u001b[0;32m--> 136\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morder\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubok\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 137\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 138\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/common.py\u001b[0m in \u001b[0;36m__array__\u001b[0;34m(self, dtype)\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__array__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mDTypeLike\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 131\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 132\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 133\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__repr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/dataarray.py\u001b[0m in \u001b[0;36mvalues\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 626\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0;34m\"\"\"The array's data as a numpy.ndarray\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 628\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariable\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 629\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 630\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/variable.py\u001b[0m in \u001b[0;36mvalues\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 511\u001b[0m \u001b[0;34m\"\"\"The variable's data as a numpy.ndarray\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 512\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_as_array_or_item\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 513\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/xarray/core/variable.py\u001b[0m in \u001b[0;36m_as_array_or_item\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 272\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 273\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 274\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 275\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 276\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkind\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"M\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/numpy/core/_asarray.py\u001b[0m in \u001b[0;36masarray\u001b[0;34m(a, dtype, order)\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 82\u001b[0m \"\"\"\n\u001b[0;32m---> 83\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0morder\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 84\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/dask/array/core.py\u001b[0m in \u001b[0;36m__array__\u001b[0;34m(self, dtype, **kwargs)\u001b[0m\n\u001b[1;32m 1414\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1415\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__array__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1416\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1417\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdtype\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1418\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/dask/base.py\u001b[0m in \u001b[0;36mcompute\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 277\u001b[0m \u001b[0mdask\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompute\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 278\u001b[0m \"\"\"\n\u001b[0;32m--> 279\u001b[0;31m \u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraverse\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 280\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/dask/base.py\u001b[0m in \u001b[0;36mcompute\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 565\u001b[0m \u001b[0mpostcomputes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dask_postcompute__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 567\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mschedule\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdsk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 568\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mrepack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpostcomputes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 569\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/dask/threaded.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(dsk, result, cache, num_workers, pool, **kwargs)\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[0mpools\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mthread\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnum_workers\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpool\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 76\u001b[0;31m results = get_async(\n\u001b[0m\u001b[1;32m 77\u001b[0m \u001b[0mpool\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_async\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpool\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_pool\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/dask/local.py\u001b[0m in \u001b[0;36mget_async\u001b[0;34m(apply_async, num_workers, dsk, result, cache, get_id, rerun_exceptions_locally, pack_exception, raise_exception, callbacks, dumps, loads, **kwargs)\u001b[0m\n\u001b[1;32m 473\u001b[0m \u001b[0;31m# Main loop, wait on tasks to finish, insert new ones\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 474\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"waiting\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"ready\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"running\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 475\u001b[0;31m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mres_info\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfailed\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mqueue_get\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mqueue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 476\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfailed\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 477\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mloads\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mres_info\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/site-packages/dask/local.py\u001b[0m in \u001b[0;36mqueue_get\u001b[0;34m(q)\u001b[0m\n\u001b[1;32m 131\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 132\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mqueue_get\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 133\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 134\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/queue.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, block, timeout)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_qsize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnot_empty\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 172\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"'timeout' must be a non-negative number\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/py39/lib/python3.9/threading.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 310\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# restore state no matter what (e.g., KeyboardInterrupt)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtimeout\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 312\u001b[0;31m \u001b[0mwaiter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0macquire\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 313\u001b[0m \u001b[0mgotit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 314\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%%time\n",
"fig,ax=plt.subplots(1,1,figsize=(12,3))\n",
"p1=ax.plot(bio2.time_centered,bio2.diatoms.isel(deptht=ik,y=ij,x=ii)+\\\n",
" bio2.flagellates.isel(deptht=ik,y=ij,x=ii)+bio2.ciliates.isel(deptht=ik,y=ij,x=ii),\n",
" '-',color='teal',label='Phytoplankton')\n",
"p2=ax.plot(bio2.time_centered,bio2.nitrate.isel(deptht=ik,y=ij,x=ii),\n",
" '-',color='orange',label='Nitrate')\n",
"ax.legend(handles=[p1[0],p2[0]],loc=1)\n",
"ax.set_ylabel('$\\mu$M N')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fraser River flow for same times"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"dfFra=pd.read_csv('/ocean/eolson/MEOPAR/obs/ECRivers/Flow/FraserHopeDaily__Dec-2-2020_10_31_05PM.csv',\n",
" skiprows=1)\n",
"# the original file contains both flow and water level information in the same field (Value)\n",
"# keep only the flow data, where PARAM=1 (drop PARAM=2 values)\n",
"# flow units are m3/s\n",
"dfFra.drop(dfFra.loc[dfFra.PARAM==2].index,inplace=True) "
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"# rename 'Value' column to 'Flow' now that we have removed all the water level rows\n",
"dfFra.rename(columns={'Value':'Flow'},inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" ID \n",
" PARAM \n",
" YEAR \n",
" DD \n",
" Flow \n",
" SYM \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 61 \n",
" 538.0 \n",
" NaN \n",
" \n",
" \n",
" 1 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 62 \n",
" 538.0 \n",
" NaN \n",
" \n",
" \n",
" 2 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 63 \n",
" 538.0 \n",
" NaN \n",
" \n",
" \n",
" 3 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 64 \n",
" 538.0 \n",
" NaN \n",
" \n",
" \n",
" 4 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 65 \n",
" 538.0 \n",
" NaN \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 39016 \n",
" 08MF005 \n",
" 1 \n",
" 2018 \n",
" 360 \n",
" 1090.0 \n",
" NaN \n",
" \n",
" \n",
" 39017 \n",
" 08MF005 \n",
" 1 \n",
" 2018 \n",
" 361 \n",
" 1050.0 \n",
" NaN \n",
" \n",
" \n",
" 39018 \n",
" 08MF005 \n",
" 1 \n",
" 2018 \n",
" 362 \n",
" 1030.0 \n",
" NaN \n",
" \n",
" \n",
" 39019 \n",
" 08MF005 \n",
" 1 \n",
" 2018 \n",
" 363 \n",
" 1120.0 \n",
" NaN \n",
" \n",
" \n",
" 39020 \n",
" 08MF005 \n",
" 1 \n",
" 2018 \n",
" 364 \n",
" 1170.0 \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
39021 rows × 6 columns
\n",
"
"
],
"text/plain": [
" ID PARAM YEAR DD Flow SYM\n",
"0 08MF005 1 1912 61 538.0 NaN\n",
"1 08MF005 1 1912 62 538.0 NaN\n",
"2 08MF005 1 1912 63 538.0 NaN\n",
"3 08MF005 1 1912 64 538.0 NaN\n",
"4 08MF005 1 1912 65 538.0 NaN\n",
"... ... ... ... ... ... ...\n",
"39016 08MF005 1 2018 360 1090.0 NaN\n",
"39017 08MF005 1 2018 361 1050.0 NaN\n",
"39018 08MF005 1 2018 362 1030.0 NaN\n",
"39019 08MF005 1 2018 363 1120.0 NaN\n",
"39020 08MF005 1 2018 364 1170.0 NaN\n",
"\n",
"[39021 rows x 6 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfFra"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"# no time information so use dt.date\n",
"dfFra['Date']=[dt.date(iyr,1,1)+dt.timedelta(days=idd-1) for iyr, idd in zip(dfFra['YEAR'],dfFra['DD'])]"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" ID \n",
" PARAM \n",
" YEAR \n",
" DD \n",
" Flow \n",
" SYM \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 61 \n",
" 538.0 \n",
" NaN \n",
" 1912-03-01 \n",
" \n",
" \n",
" 1 \n",
" 08MF005 \n",
" 1 \n",
" 1912 \n",
" 62 \n",
" 538.0 \n",
" NaN \n",
" 1912-03-02 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ID PARAM YEAR DD Flow SYM Date\n",
"0 08MF005 1 1912 61 538.0 NaN 1912-03-01\n",
"1 08MF005 1 1912 62 538.0 NaN 1912-03-02"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfFra.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"# select portion of dataframe in desired date range\n",
"dfFra2=dfFra.loc[(dfFra.Date>=newstart.date())&(dfFra.Date<=newend.date())]"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Fraser Flow at Hope')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig,ax=plt.subplots(1,1,figsize=(12,3))\n",
"ax.plot(dfFra2['Date'],dfFra2['Flow'],'c-')\n",
"ax.set_ylabel('Flow (m$^3$s$^{-1}$)')\n",
"ax.set_title('Fraser Flow at Hope')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python (py39)",
"language": "python",
"name": "py39"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}