diff --git a/.binder/conda-linux-64.lock b/.binder/conda-linux-64.lock
index 52c7501b..0d7e2068 100644
--- a/.binder/conda-linux-64.lock
+++ b/.binder/conda-linux-64.lock
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: linux-64
-# input_hash: 3659b251928f7a607ddfb2d863e2f4c6594eac7359f437af5ebb09cde4a53b54
+# input_hash: 4803ba4061f07e5fb910453dcb43d87702e5cc928cd410c47bf7f357d979d578
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38
@@ -94,8 +94,8 @@ https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h72842e0_0.tar.bz
https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.1.0-h9202a9a_1.tar.bz2#ea9ebeddb066da8fad4a815e61b139be
https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.36-h032f7d1_1.tar.bz2#ffc35300e65074a386aa151f135986b8
https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6
-https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.11-h21135ba_0.tar.bz2#17e20f2d8435ffa2831fb5e328219e04
-https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.27.27-h975c496_1.tar.bz2#e663bd5dbc8cc4c1647d9f51cf25872c
+https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.11-h27826a3_1.tar.bz2#84e76fb280e735fec1efd2d21fd9cb27
+https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.27.27-hc3e0081_2.tar.bz2#91f5207ecab9bab80964f49dfd81dbcc
https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.3-h9d8b166_2.tar.bz2#c083e55b8f51b42b2487826e6d35c6a1
https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2#9e856f78d5c80d5a78f61e72d1d473a3
https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_1.tar.bz2#21743a8d2ea0c8cfbbf8fe489b0347df
@@ -139,12 +139,14 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_
https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2#60d6eec5273f1c9af096c10c268912e3
https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0
+https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-20.3.0-pyhd3deb0d_0.tar.bz2#5b319abb055eefcfa344bc21378ca23f
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
https://conda.anaconda.org/conda-forge/noarch/bagit-1.8.1-pyhd8ed1ab_0.tar.bz2#fb50f22b353ed3a12f5e8b7c01b58832
https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f
+https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c
https://conda.anaconda.org/conda-forge/linux-64/cfitsio-3.470-hb418390_7.tar.bz2#5bda2e5ca5edb0c207c3ec76f57f8ecc
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.0-pyhd8ed1ab_0.tar.bz2#4a57e24d5b759893615c05926b7b5fb9
https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1
@@ -154,7 +156,9 @@ https://conda.anaconda.org/conda-forge/linux-64/curl-7.78.0-hea6ffbf_0.tar.bz2#8
https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
https://conda.anaconda.org/conda-forge/noarch/decorator-5.0.9-pyhd8ed1ab_0.tar.bz2#0ae9cca42e37b5ce6267c2a2b1383546
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.2-pyhd8ed1ab_0.tar.bz2#ae8b866c376568b0342ae2c9b68f1e65
https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-py_1.tar.bz2#a9ed63e45579cfef026a916af2bc27c9
+https://conda.anaconda.org/conda-forge/noarch/filelock-3.0.12-pyh9f0ad1d_0.tar.bz2#7544ed05bbbe9bb687bc9bcbe4d6cb46
https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.8.1-pyhd8ed1ab_0.tar.bz2#c91815f86a9c2ed7525e9dc78fb189e4
https://conda.anaconda.org/conda-forge/noarch/geojson-2.5.0-py_0.tar.bz2#b4a361c7b70eeda6342a54555144c419
https://conda.anaconda.org/conda-forge/noarch/geolinks-0.2.0-py_1.tar.bz2#7e3b24ea59632f170798a9489ebcc70a
@@ -294,6 +298,7 @@ https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.2-pyhd8ed1ab_0.tar.bz2#1
https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
https://conda.anaconda.org/conda-forge/linux-64/tzlocal-3.0-py39hf3d152e_2.tar.bz2#c364627df922c3c8597ba8e56c2dd3d8
https://conda.anaconda.org/conda-forge/noarch/validators-0.18.2-pyhd3deb0d_0.tar.bz2#a805c335f2d82b3dfb2f987520aae879
+https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.4.7-py39hf3d152e_0.tar.bz2#4d71a79ffa38875eabf760f15c9454a8
https://conda.anaconda.org/conda-forge/linux-64/websocket-client-0.57.0-py39hf3d152e_4.tar.bz2#d4b25baf59c9c67c47dc48ceabd1b750
https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
https://conda.anaconda.org/conda-forge/linux-64/anyio-3.3.0-py39hf3d152e_0.tar.bz2#8d0a68ecdf6cdd869593cc180aa98975
@@ -304,6 +309,7 @@ https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39h3811e60_1001
https://conda.anaconda.org/conda-forge/linux-64/cftime-1.5.0-py39hce5d2b2_0.tar.bz2#a2fe483a5e9958e33515ae2cd45d46d7
https://conda.anaconda.org/conda-forge/linux-64/cryptography-3.4.7-py39hbca0aa6_0.tar.bz2#04e97f7d5c60f75a36b1e4bdf3652ebd
https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.8.1-pyhd8ed1ab_0.tar.bz2#e42f775ec0e7b8ef9adc9384e0918345
+https://conda.anaconda.org/conda-forge/linux-64/editdistance-s-1.0.0-py39h1a9c180_1.tar.bz2#d9c1794506d677cf3e8f981f1c5a25d1
https://conda.anaconda.org/conda-forge/noarch/flake8-3.9.2-pyhd8ed1ab_0.tar.bz2#37d685abea0a25c921431edda02ad143
https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.18-pyhd8ed1ab_0.tar.bz2#19520f600cddf466cc3551e521809b66
https://conda.anaconda.org/conda-forge/linux-64/gsw-3.4.0-py39hce5d2b2_1.tar.bz2#d5af82589bc14e58d1871b072e6883f8
@@ -317,6 +323,7 @@ https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.3-py39h2fa2b
https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7
https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.3-nompi_h996563d_103.tar.bz2#d962280767f52183d63204f5cb222a25
https://conda.anaconda.org/conda-forge/noarch/networkx-2.5-py_0.tar.bz2#d836ad8453c22192357707026ca21653
+https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.6.0-pyhd8ed1ab_0.tar.bz2#0941325bf48969e2b3b19d0951740950
https://conda.anaconda.org/conda-forge/linux-64/numba-0.53.1-py39h56b8d98_1.tar.bz2#2b8674a6cb39ccd00833311aae90640e
https://conda.anaconda.org/conda-forge/noarch/palettable-3.3.0-py_0.tar.bz2#a6c85d491cb6a9fbf429d3ffc9bebb39
https://conda.anaconda.org/conda-forge/linux-64/pandas-1.3.2-py39hde0f152_0.tar.bz2#5ebb4fba97768420888915d92c02c90c
@@ -349,6 +356,7 @@ https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.8.1-py39hf3d152
https://conda.anaconda.org/conda-forge/linux-64/esmf-8.1.0-nompi_hed08645_0.tar.bz2#e547a20d7a83f6037580a0b041d8a5bf
https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py39h409cc32_7.tar.bz2#15cd6dc8e8f2104713ded05263c86450
https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.9.0-pyhd8ed1ab_1.tar.bz2#d654735553553f158da4be365fdaa51a
+https://conda.anaconda.org/conda-forge/noarch/identify-2.2.13-pyhd8ed1ab_0.tar.bz2#1889223441d67f7c30327c97a78b980f
https://conda.anaconda.org/conda-forge/noarch/jwcrypto-0.6.0-py_0.tar.bz2#925016b84d13bb11e631560e9bb2ef12
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2#bafa5df6d4f8db69a4d197b4657127e7
https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.3.1-pyhd8ed1ab_2.tar.bz2#d37916d7bf9519a3e3abb902a4c06b69
@@ -377,6 +385,7 @@ https://conda.anaconda.org/conda-forge/noarch/ndg-httpsclient-0.5.1-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/paegan-1.1.4-py_1.tar.bz2#50677bb3024eb10e2823021bb9cfae93
https://conda.anaconda.org/conda-forge/noarch/pandas-flavor-0.2.0-py_0.tar.bz2#4e7641376dbfc2ca5abff209273ed37c
https://conda.anaconda.org/conda-forge/noarch/pocean-core-1.9.3-py_0.tar.bz2#69cf8e4ccf9b4a0c9adeb2d1711dd531
+https://conda.anaconda.org/conda-forge/linux-64/pre-commit-2.14.1-py39hf3d152e_0.tar.bz2#be46a084dffffe167d91960e93b34d7e
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.20-pyha770c72_0.tar.bz2#98a90e847b48fc14b2d5b12e4884e8d4
https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py39h0fcd23e_7.tar.bz2#6b818c4973110a3a3753d8bb17147689
https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py39h0fcd23e_7.tar.bz2#6423ece9d95e91a110dff695b2aaae91
@@ -539,7 +548,7 @@ https://conda.anaconda.org/conda-forge/noarch/panel-0.12.1-pyhd8ed1ab_0.tar.bz2#
https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.6.3-pyhd8ed1ab_0.tar.bz2#a84900edc6e963d1cb448488bc06086b
https://conda.anaconda.org/conda-forge/noarch/pyoos-0.8.4-py_1.tar.bz2#8cbd51a9b796e43cb3f7ecb6cb194be7
https://conda.anaconda.org/conda-forge/noarch/qtconsole-5.1.1-pyhd8ed1ab_0.tar.bz2#d5ad640caccf8221364d566c9259ac6f
-https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.2.5.1-r40hc72bb7e_0.tar.bz2#740da0de2bdc86e957d53ad99175c029
+https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.3.0-r40hc72bb7e_0.tar.bz2#c1055589eee4dbdbe6a6dcb6981723ca
https://conda.anaconda.org/conda-forge/linux-64/r-classint-0.4_3-r40h859d828_2.tar.bz2#787d6e689a1c7d6931e90f1eb76a1716
https://conda.anaconda.org/conda-forge/noarch/r-crul-1.1.0-r40h785f33e_0.tar.bz2#68a8f99a232a3df76af66c0fde072964
https://conda.anaconda.org/conda-forge/noarch/r-dt-0.18-r40hc72bb7e_0.tar.bz2#63710f724d74b5521a400716da5d0aac
diff --git a/.binder/conda-osx-64.lock b/.binder/conda-osx-64.lock
index 7509fe7a..68e895ab 100644
--- a/.binder/conda-osx-64.lock
+++ b/.binder/conda-osx-64.lock
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: osx-64
-# input_hash: d1da4db854c77eccad8cb30cd83b7eded8928f2b503f97286da232c77c6e52d0
+# input_hash: 0ad12210625a26b1306a8e4bb3cd700f1f33d626c1dacbe87eb818beafbd263a
@EXPLICIT
https://conda.anaconda.org/conda-forge/osx-64/phantomjs-2.1.1-1.tar.bz2#d5a58d2eccdeadd2e83aa094d72aff5d
https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38
@@ -62,7 +62,7 @@ https://conda.anaconda.org/conda-forge/osx-64/pcre-8.45-he49afe7_0.tar.bz2#05268
https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.36-h5cf9962_1.tar.bz2#72bdc145d557ae2d06624d8bd73dca39
https://conda.anaconda.org/conda-forge/osx-64/readline-8.1-h05e3726_0.tar.bz2#2832e9b6a7caa7cb192fcda6cfcd8871
https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2#f9ff42ccf809a21ba6f8607f8de36108
-https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.11-hd798d34_0.tar.bz2#579405c0cc2780700a2fbe9778285bda
+https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.11-h5dbffcc_1.tar.bz2#e35b11155bd70facee39dfdec7368ad0
https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.4-he49afe7_1.tar.bz2#1972d732b123ed04b60fd21e94f0b178
https://conda.anaconda.org/conda-forge/osx-64/bwidget-1.9.14-h694c41f_0.tar.bz2#93c5adccf25273ded4d7d17680c6ba22
https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab
@@ -81,7 +81,7 @@ https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-11.1.0-hd011deb_2.tar.b
https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.1.0-h0f52abe_1.tar.bz2#afe26b08c2d2265b4d663d199000e5da
https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.36.0-h23a322b_0.tar.bz2#6b6f868ab26da23c5a9b518799de901a
https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-h49f0cf7_3.tar.bz2#7bef1276592e76da81806b20c2ddacd0
-https://conda.anaconda.org/conda-forge/osx-64/udunits2-2.2.27.27-h664449b_1.tar.bz2#10a1c0239c272976e1cfc85be1d02f71
+https://conda.anaconda.org/conda-forge/osx-64/udunits2-2.2.27.27-h06ef574_2.tar.bz2#8907715e9c3cf7a413df7e6b918761df
https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.3-h379762d_2.tar.bz2#6e2e329eab8a50d64f841331f4de0468
https://conda.anaconda.org/conda-forge/osx-64/zstd-1.4.9-h582d3a0_0.tar.bz2#551e04087371339ee63524f2988faa62
https://conda.anaconda.org/conda-forge/osx-64/boost-cpp-1.74.0-hbdcdab7_3.tar.bz2#61ca86836981730ce63be5ef0d2b1765
@@ -97,16 +97,18 @@ https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.33-h5739fc3_2.tar.bz2#
https://conda.anaconda.org/conda-forge/osx-64/mpc-1.1.0-ha57cd0f_1009.tar.bz2#e97438cea7c25b9906edf9525f580674
https://conda.anaconda.org/conda-forge/osx-64/mysql-libs-8.0.25-h54f5a68_0.tar.bz2#54f67c33b2cdfd28a2d5de03a680b047
https://conda.anaconda.org/conda-forge/osx-64/nss-3.69-h31e2bf1_0.tar.bz2#137a7ad0db3020c9efe7aae1d7f12f59
-https://conda.anaconda.org/conda-forge/osx-64/python-3.9.6-hd187cdc_1_cpython.tar.bz2#886248054c0b072f06a689f952389548
+https://conda.anaconda.org/conda-forge/osx-64/python-3.9.7-hd187cdc_0_cpython.tar.bz2#8490109f11ce524a87a47055add1e44c
https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.2.9-he9a4fb4_0.tar.bz2#2fdef59e3c478c430d628c696328aaa8
https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0
+https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/attrs-20.3.0-pyhd3deb0d_0.tar.bz2#5b319abb055eefcfa344bc21378ca23f
https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
https://conda.anaconda.org/conda-forge/noarch/bagit-1.8.1-pyhd8ed1ab_0.tar.bz2#fb50f22b353ed3a12f5e8b7c01b58832
https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82
+https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c
https://conda.anaconda.org/conda-forge/osx-64/cfitsio-3.470-h01dc385_7.tar.bz2#7f3e6254480eeccf854238807b1798d9
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.0-pyhd8ed1ab_0.tar.bz2#4a57e24d5b759893615c05926b7b5fb9
https://conda.anaconda.org/conda-forge/osx-64/clang-11.1.0-h694c41f_1.tar.bz2#a0ed699033e22df5a346780e1e8acd02
@@ -117,7 +119,9 @@ https://conda.anaconda.org/conda-forge/osx-64/curl-7.78.0-hb861fe1_0.tar.bz2#439
https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
https://conda.anaconda.org/conda-forge/noarch/decorator-5.0.9-pyhd8ed1ab_0.tar.bz2#0ae9cca42e37b5ce6267c2a2b1383546
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.2-pyhd8ed1ab_0.tar.bz2#ae8b866c376568b0342ae2c9b68f1e65
https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-py_1.tar.bz2#a9ed63e45579cfef026a916af2bc27c9
+https://conda.anaconda.org/conda-forge/noarch/filelock-3.0.12-pyh9f0ad1d_0.tar.bz2#7544ed05bbbe9bb687bc9bcbe4d6cb46
https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.8.1-pyhd8ed1ab_0.tar.bz2#c91815f86a9c2ed7525e9dc78fb189e4
https://conda.anaconda.org/conda-forge/noarch/geojson-2.5.0-py_0.tar.bz2#b4a361c7b70eeda6342a54555144c419
https://conda.anaconda.org/conda-forge/noarch/geolinks-0.2.0-py_1.tar.bz2#7e3b24ea59632f170798a9489ebcc70a
@@ -265,6 +269,7 @@ https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.2-pyhd8ed1ab_0.tar.bz2#1
https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
https://conda.anaconda.org/conda-forge/osx-64/tzlocal-3.0-py39h6e9494a_2.tar.bz2#4a8b2266046af4d03c23775a8669af41
https://conda.anaconda.org/conda-forge/noarch/validators-0.18.2-pyhd3deb0d_0.tar.bz2#a805c335f2d82b3dfb2f987520aae879
+https://conda.anaconda.org/conda-forge/osx-64/virtualenv-20.4.7-py39h6e9494a_0.tar.bz2#c88514192ed7bb7780328da66e137b05
https://conda.anaconda.org/conda-forge/osx-64/websocket-client-0.57.0-py39h6e9494a_4.tar.bz2#c805c25507bb4b90dc949581e756fb7d
https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
https://conda.anaconda.org/conda-forge/osx-64/anyio-3.3.0-py39h6e9494a_0.tar.bz2#d38d714048fe4298f171c49ee2d10f38
@@ -276,6 +281,7 @@ https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-11.1.0-h8c5fa43
https://conda.anaconda.org/conda-forge/osx-64/cryptography-3.4.7-py39ha2c9959_0.tar.bz2#2c4542d3abca07b2b7263e15c85917db
https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.8.1-pyhd8ed1ab_0.tar.bz2#e42f775ec0e7b8ef9adc9384e0918345
https://conda.anaconda.org/conda-forge/osx-64/dbus-1.13.6-ha13b53f_2.tar.bz2#419c24c09b564083e2407afe507e0266
+https://conda.anaconda.org/conda-forge/osx-64/editdistance-s-1.0.0-py39hf018cea_1.tar.bz2#7c96542e713d6dee2743955e80a308a2
https://conda.anaconda.org/conda-forge/noarch/flake8-3.9.2-pyhd8ed1ab_0.tar.bz2#37d685abea0a25c921431edda02ad143
https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.18-pyhd8ed1ab_0.tar.bz2#19520f600cddf466cc3551e521809b66
https://conda.anaconda.org/conda-forge/osx-64/gsl-2.6-h71c5fe9_2.tar.bz2#6468b455b2234916ebc07c2058611a3d
@@ -288,6 +294,7 @@ https://conda.anaconda.org/conda-forge/noarch/markdown-3.3.4-pyhd8ed1ab_0.tar.bz
https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7
https://conda.anaconda.org/conda-forge/osx-64/netcdf-fortran-4.5.3-nompi_h45448fb_103.tar.bz2#2e8af66c534405a1e59b8c817f26ae27
https://conda.anaconda.org/conda-forge/noarch/networkx-2.5-py_0.tar.bz2#d836ad8453c22192357707026ca21653
+https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.6.0-pyhd8ed1ab_0.tar.bz2#0941325bf48969e2b3b19d0951740950
https://conda.anaconda.org/conda-forge/osx-64/numpy-1.21.2-py39h7eed0ac_0.tar.bz2#d460f332a4d13cd2194eef96720f0030
https://conda.anaconda.org/conda-forge/noarch/palettable-3.3.0-py_0.tar.bz2#a6c85d491cb6a9fbf429d3ffc9bebb39
https://conda.anaconda.org/conda-forge/osx-64/pango-1.48.9-ha05cd14_0.tar.bz2#873765c639303b9dffe5deeaa618eb89
@@ -311,6 +318,7 @@ https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.8.1-py39h6e9494a_
https://conda.anaconda.org/conda-forge/osx-64/esmf-8.1.0-nompi_haa9dfef_0.tar.bz2#6e020fa69daa896faf9af61d8059336e
https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py39h0530131_7.tar.bz2#be56499c8d120947650bbb1590017d40
https://conda.anaconda.org/conda-forge/osx-64/gsw-3.4.0-py39hc89836e_1.tar.bz2#031c09984c895f374f09e1569849037b
+https://conda.anaconda.org/conda-forge/noarch/identify-2.2.13-pyhd8ed1ab_0.tar.bz2#1889223441d67f7c30327c97a78b980f
https://conda.anaconda.org/conda-forge/noarch/jwcrypto-0.6.0-py_0.tar.bz2#925016b84d13bb11e631560e9bb2ef12
https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.4.3-py39hb07454d_0.tar.bz2#bb326c96eddccf74ff8717c9c813a5de
https://conda.anaconda.org/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2#bafa5df6d4f8db69a4d197b4657127e7
@@ -340,6 +348,7 @@ https://conda.anaconda.org/conda-forge/osx-64/nco-4.9.9-h644ae32_0.tar.bz2#24128
https://conda.anaconda.org/conda-forge/noarch/ndg-httpsclient-0.5.1-py_1.tar.bz2#0204e1481c4cd9065d772f6556f00a16
https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.5.6-nompi_py39h353b61e_102.tar.bz2#6fda6d801460fa5855e24a0d9791dcdb
https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.1-py_0.tar.bz2#d971df2dcd1a453daabecec0ef76e88a
+https://conda.anaconda.org/conda-forge/osx-64/pre-commit-2.14.1-py39h6e9494a_0.tar.bz2#aad49987c3914eaa70ca4dc0e69bcb40
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.20-pyha770c72_0.tar.bz2#98a90e847b48fc14b2d5b12e4884e8d4
https://conda.anaconda.org/conda-forge/osx-64/pyqtchart-5.12-py39hef7122c_7.tar.bz2#3f186249a34245913a84d225a058c7ac
https://conda.anaconda.org/conda-forge/osx-64/pyqtwebengine-5.12.1-py39hef7122c_7.tar.bz2#d5f4e863293f6f614becde4107be4a97
@@ -547,7 +556,7 @@ https://conda.anaconda.org/conda-forge/noarch/jupyter-cache-0.4.3-pyhd8ed1ab_0.t
https://conda.anaconda.org/conda-forge/noarch/jupyter-sphinx-0.3.2-py_0.tar.bz2#9ae5148b076ddba22552ddb57a4c22ee
https://conda.anaconda.org/conda-forge/osx-64/jupyter_contrib_nbextensions-0.5.1-py39hde42818_1.tar.bz2#42395307d23950a2a4cf5871a9d85c66
https://conda.anaconda.org/conda-forge/noarch/oct2py-5.2.0-pyh9f0ad1d_0.tar.bz2#34419f6dc6e6ad69b7ecd63c56ffb0c0
-https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.2.5.1-r40hc72bb7e_0.tar.bz2#740da0de2bdc86e957d53ad99175c029
+https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.3.0-r40hc72bb7e_0.tar.bz2#c1055589eee4dbdbe6a6dcb6981723ca
https://conda.anaconda.org/conda-forge/osx-64/r-classint-0.4_3-r40h749f5a1_2.tar.bz2#d4b7e7aee2b337a492f8dbb83c3ee31b
https://conda.anaconda.org/conda-forge/noarch/r-crul-1.1.0-r40h785f33e_0.tar.bz2#68a8f99a232a3df76af66c0fde072964
https://conda.anaconda.org/conda-forge/noarch/r-dt-0.18-r40hc72bb7e_0.tar.bz2#63710f724d74b5521a400716da5d0aac
diff --git a/.binder/conda-win-64.lock b/.binder/conda-win-64.lock
index c4bbc433..dabfbb21 100644
--- a/.binder/conda-win-64.lock
+++ b/.binder/conda-win-64.lock
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: win-64
-# input_hash: bb8b86572bf5ee0c0e4f214793955dc14364b4c6394915912d89411c16ae71f8
+# input_hash: 180cf60e846049859de8843bec89c44e02c35ee01a3701986cdfd979c269ff5e
@EXPLICIT
https://conda.anaconda.org/conda-forge/win-64/phantomjs-2.1.1-1.tar.bz2#74e3849c9358ef75a7bb3bba13ed696b
https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38
@@ -45,7 +45,7 @@ https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1k-h8ffe710_1.tar.bz2#
https://conda.anaconda.org/conda-forge/win-64/pcre-8.45-h0e60522_0.tar.bz2#3cd3948bb5de74ebef93b6be6d8cf0d5
https://conda.anaconda.org/conda-forge/win-64/pixman-0.40.0-h8ffe710_0.tar.bz2#32b45d3fcffddc84cc1a014a0b5f0d58
https://conda.anaconda.org/conda-forge/win-64/sqlite-3.36.0-h8ffe710_0.tar.bz2#b7e2a74bafb1c94b0ea7195ef2149f8e
-https://conda.anaconda.org/conda-forge/win-64/tk-8.6.11-h8ffe710_0.tar.bz2#f7f8c13fe850a115ccd34dd1c5119272
+https://conda.anaconda.org/conda-forge/win-64/tk-8.6.11-h8ffe710_1.tar.bz2#fd3c141a1ed5a77e5813795950fb7395
https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.2.3-h0e60522_2.tar.bz2#6bed4df78415424209dbc679ead14078
https://conda.anaconda.org/conda-forge/win-64/xxhash-0.8.0-h8ffe710_3.tar.bz2#155e6d388fe6ffef0fa67acd270e1df3
https://conda.anaconda.org/conda-forge/win-64/xz-5.2.5-h62dcd97_1.tar.bz2#eabcbfedd14d7c18a514afca09ea0ebb
@@ -62,12 +62,13 @@ https://conda.anaconda.org/conda-forge/win-64/librttopo-1.1.0-hb340de5_6.tar.bz2
https://conda.anaconda.org/conda-forge/win-64/libssh2-1.10.0-h680486a_0.tar.bz2#29cff3495235ae8b71ecb7c144f4c55c
https://conda.anaconda.org/conda-forge/win-64/libxml2-2.9.12-hf5bbc77_0.tar.bz2#0f1e832cbd8ae60708f4419f4b25c208
https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2#fe759119b8b3bfa720b8762c6fdc35de
-https://conda.anaconda.org/conda-forge/win-64/python-3.9.6-h7840368_1_cpython.tar.bz2#d496fe9f3d042b7c05396895757fb6c6
-https://conda.anaconda.org/conda-forge/win-64/udunits2-2.2.27.27-he38c35c_1.tar.bz2#f80446ddd6f613f34dd1b8b9646ef02b
+https://conda.anaconda.org/conda-forge/win-64/python-3.9.7-h7840368_0_cpython.tar.bz2#853db460383a228fb7a2e95663fda4c7
+https://conda.anaconda.org/conda-forge/win-64/udunits2-2.2.27.27-h892ecd3_2.tar.bz2#bb91acc6c018d6883ca49af36a415bdc
https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.4-h0e60522_1.tar.bz2#e1aff0583dda5fb917eb3d2c1025aa80
https://conda.anaconda.org/conda-forge/win-64/zstd-1.4.9-h6255e5f_0.tar.bz2#f90b3cf10fd4528f52a681f0337b4889
https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33
https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0
+https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b
https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12
https://conda.anaconda.org/conda-forge/noarch/atomicwrites-1.4.0-pyh9f0ad1d_0.tar.bz2#5e36230ffaf3b7bb599424592684ae53
https://conda.anaconda.org/conda-forge/noarch/attrs-20.3.0-pyhd3deb0d_0.tar.bz2#5b319abb055eefcfa344bc21378ca23f
@@ -75,6 +76,7 @@ https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz
https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd
https://conda.anaconda.org/conda-forge/noarch/bagit-1.8.1-pyhd8ed1ab_0.tar.bz2#fb50f22b353ed3a12f5e8b7c01b58832
https://conda.anaconda.org/conda-forge/win-64/boost-cpp-1.74.0-h54f0996_3.tar.bz2#26e38118d22a7a1af7f337b5bc39a30e
+https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c
https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.0-pyhd8ed1ab_0.tar.bz2#4a57e24d5b759893615c05926b7b5fb9
https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1
https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e
@@ -82,7 +84,9 @@ https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz
https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d
https://conda.anaconda.org/conda-forge/noarch/decorator-5.0.9-pyhd8ed1ab_0.tar.bz2#0ae9cca42e37b5ce6267c2a2b1383546
https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2
+https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.2-pyhd8ed1ab_0.tar.bz2#ae8b866c376568b0342ae2c9b68f1e65
https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-py_1.tar.bz2#a9ed63e45579cfef026a916af2bc27c9
+https://conda.anaconda.org/conda-forge/noarch/filelock-3.0.12-pyh9f0ad1d_0.tar.bz2#7544ed05bbbe9bb687bc9bcbe4d6cb46
https://conda.anaconda.org/conda-forge/win-64/freetype-2.10.4-h546665d_1.tar.bz2#1215a2e49d23da91c28d97cff8de35ea
https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.8.1-pyhd8ed1ab_0.tar.bz2#c91815f86a9c2ed7525e9dc78fb189e4
https://conda.anaconda.org/conda-forge/noarch/geojson-2.5.0-py_0.tar.bz2#b4a361c7b70eeda6342a54555144c419
@@ -217,7 +221,7 @@ https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0
https://conda.anaconda.org/conda-forge/win-64/python-xxhash-2.0.2-py39hb82d6ee_0.tar.bz2#07dcd7bfa1c42868991e29f67e9cb03c
https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.1.0-pyhd8ed1ab_0.tar.bz2#9b3f9639f96de0242e0d96f7862c1bc8
https://conda.anaconda.org/conda-forge/win-64/pywin32-301-py39hb82d6ee_0.tar.bz2#571edae43ee6497f18f05f7b9a8c1ecd
-https://conda.anaconda.org/conda-forge/win-64/pywinpty-1.1.3-py39h99910a6_0.tar.bz2#2ac1663f4a6f051a735bfb84e8b327af
+https://conda.anaconda.org/conda-forge/win-64/pywinpty-1.1.4-py39h99910a6_0.tar.bz2#76272ca42b1eebae86042bd17092b447
https://conda.anaconda.org/conda-forge/win-64/pyyaml-5.4.1-py39hb82d6ee_1.tar.bz2#5e85ee7bc18969e50dee7e6b7acce30a
https://conda.anaconda.org/conda-forge/win-64/pyzmq-22.2.1-py39he46f08e_0.tar.bz2#8ccabf951d84a134fcf99d1ea8813f21
https://conda.anaconda.org/conda-forge/win-64/regex-2021.8.28-py39hb82d6ee_0.tar.bz2#61ac2f3e696f6e93ba56946faa74e8ea
@@ -234,6 +238,7 @@ https://conda.anaconda.org/conda-forge/noarch/tqdm-4.62.2-pyhd8ed1ab_0.tar.bz2#1
https://conda.anaconda.org/conda-forge/noarch/traittypes-0.2.1-pyh9f0ad1d_2.tar.bz2#7d32ccb5334a6822c28af3e864550618
https://conda.anaconda.org/conda-forge/win-64/tzlocal-3.0-py39hcbf5309_2.tar.bz2#8b657420335f44f1375fb68104d93ed9
https://conda.anaconda.org/conda-forge/noarch/validators-0.18.2-pyhd3deb0d_0.tar.bz2#a805c335f2d82b3dfb2f987520aae879
+https://conda.anaconda.org/conda-forge/win-64/virtualenv-20.4.7-py39hcbf5309_0.tar.bz2#07bff9ec47f940e875a4a5e8156c6d50
https://conda.anaconda.org/conda-forge/win-64/websocket-client-0.57.0-py39hcbf5309_4.tar.bz2#51cfeb27a94f879925029be166909a7d
https://conda.anaconda.org/conda-forge/win-64/win_inet_pton-1.1.0-py39hcbf5309_2.tar.bz2#10d4cf2796ef9d1a71f52056469ad587
https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3
@@ -246,6 +251,7 @@ https://conda.anaconda.org/conda-forge/win-64/cairo-1.16.0-hb19e0ff_1008.tar.bz2
https://conda.anaconda.org/conda-forge/win-64/cftime-1.5.0-py39h5d4886f_0.tar.bz2#d48aaaad544ec561d22c70849a3d38ba
https://conda.anaconda.org/conda-forge/win-64/cryptography-3.4.7-py39hd8d06c1_0.tar.bz2#fc998c5feff8c1d8c0779f003952eda3
https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.8.1-pyhd8ed1ab_0.tar.bz2#e42f775ec0e7b8ef9adc9384e0918345
+https://conda.anaconda.org/conda-forge/win-64/editdistance-s-1.0.0-py39h2e07f2f_1.tar.bz2#06e40ad809a0917a85dfeed5726be674
https://conda.anaconda.org/conda-forge/noarch/flake8-3.9.2-pyhd8ed1ab_0.tar.bz2#37d685abea0a25c921431edda02ad143
https://conda.anaconda.org/conda-forge/win-64/geotiff-1.6.0-hee96dd5_4.tar.bz2#066408151843c261eaacbac8aa66b28a
https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.18-pyhd8ed1ab_0.tar.bz2#19520f600cddf466cc3551e521809b66
@@ -266,6 +272,7 @@ https://conda.anaconda.org/conda-forge/win-64/m2w64-tcl-8.6.5-3.tar.bz2#0b1ac1d1
https://conda.anaconda.org/conda-forge/noarch/markdown-3.3.4-pyhd8ed1ab_0.tar.bz2#b8054f74fbed2b282f032219f114421a
https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7
https://conda.anaconda.org/conda-forge/noarch/networkx-2.5-py_0.tar.bz2#d836ad8453c22192357707026ca21653
+https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.6.0-pyhd8ed1ab_0.tar.bz2#0941325bf48969e2b3b19d0951740950
https://conda.anaconda.org/conda-forge/win-64/numba-0.53.1-py39hb8cd55e_1.tar.bz2#a7821d4039961e73038528bfc08358b6
https://conda.anaconda.org/conda-forge/noarch/palettable-3.3.0-py_0.tar.bz2#a6c85d491cb6a9fbf429d3ffc9bebb39
https://conda.anaconda.org/conda-forge/win-64/pandas-1.3.2-py39h2e25243_0.tar.bz2#a4c1351d3976a31d888713eeed2898aa
@@ -294,6 +301,7 @@ https://conda.anaconda.org/conda-forge/win-64/cf-units-3.0.1.post0-py39h5d4886f_
https://conda.anaconda.org/conda-forge/win-64/click-completion-0.5.2-py39hcbf5309_2.tar.bz2#69273a2790de4d16fa412c875f2df231
https://conda.anaconda.org/conda-forge/win-64/distributed-2021.8.1-py39hcbf5309_0.tar.bz2#bef113c35b4ae94a65656555e3c30d01
https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.9.0-pyhd8ed1ab_1.tar.bz2#d654735553553f158da4be365fdaa51a
+https://conda.anaconda.org/conda-forge/noarch/identify-2.2.13-pyhd8ed1ab_0.tar.bz2#1889223441d67f7c30327c97a78b980f
https://conda.anaconda.org/conda-forge/noarch/jupyter_client-7.0.2-pyhd8ed1ab_0.tar.bz2#cd7d030433c1546300c9279c192f9b6b
https://conda.anaconda.org/conda-forge/noarch/jwcrypto-0.6.0-py_0.tar.bz2#925016b84d13bb11e631560e9bb2ef12
https://conda.anaconda.org/conda-forge/win-64/m2w64-tk-8.6.5-3.tar.bz2#c2d85c85caf655893ea11b92c395b3b6
@@ -327,6 +335,7 @@ https://conda.anaconda.org/conda-forge/noarch/ndg-httpsclient-0.5.1-py_1.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/paegan-1.1.4-py_1.tar.bz2#50677bb3024eb10e2823021bb9cfae93
https://conda.anaconda.org/conda-forge/noarch/pandas-flavor-0.2.0-py_0.tar.bz2#4e7641376dbfc2ca5abff209273ed37c
https://conda.anaconda.org/conda-forge/noarch/pocean-core-1.9.3-py_0.tar.bz2#69cf8e4ccf9b4a0c9adeb2d1711dd531
+https://conda.anaconda.org/conda-forge/win-64/pre-commit-2.14.1-py39hcbf5309_0.tar.bz2#06e567d4564d7566b06c9725ad055e96
https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.20-pyha770c72_0.tar.bz2#98a90e847b48fc14b2d5b12e4884e8d4
https://conda.anaconda.org/conda-forge/win-64/pyqt-5.12.3-py39hcbf5309_7.tar.bz2#9a008158c8983d1df9e9cf019da574b3
https://conda.anaconda.org/conda-forge/noarch/pysgrid-0.3.5-py_0.tar.bz2#11eb6973e57bdf0f704955c9b706fd26
@@ -519,7 +528,7 @@ https://conda.anaconda.org/conda-forge/win-64/jupyter_latex_envs-1.4.6-py39hcbf5
https://conda.anaconda.org/conda-forge/win-64/jupyter_nbextensions_configurator-0.4.1-py39hcbf5309_2.tar.bz2#b57a25822fb9d478432ece82022401f2
https://conda.anaconda.org/conda-forge/noarch/nbdime-3.1.0-pyhd8ed1ab_0.tar.bz2#01a2197677952bf94a26f8995f8703fe
https://conda.anaconda.org/conda-forge/noarch/octave_kernel-0.32.0-pyh9f0ad1d_0.tar.bz2#4231985039d6c7b4ccb3a3ebe1f5afd5
-https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.2.5.1-r40hc72bb7e_0.tar.bz2#740da0de2bdc86e957d53ad99175c029
+https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.3.0-r40hc72bb7e_0.tar.bz2#c1055589eee4dbdbe6a6dcb6981723ca
https://conda.anaconda.org/conda-forge/win-64/r-classint-0.4_3-r40he816bda_2.tar.bz2#e08a4b5997e43a52a512a205ec45cabb
https://conda.anaconda.org/conda-forge/noarch/r-crul-1.1.0-r40h785f33e_0.tar.bz2#68a8f99a232a3df76af66c0fde072964
https://conda.anaconda.org/conda-forge/noarch/r-dt-0.18-r40hc72bb7e_0.tar.bz2#63710f724d74b5521a400716da5d0aac
diff --git a/.binder/environment-python_and_r.yml b/.binder/environment-python_and_r.yml
index 0c33f324..f43f5df8 100644
--- a/.binder/environment-python_and_r.yml
+++ b/.binder/environment-python_and_r.yml
@@ -40,6 +40,7 @@ dependencies:
- palettable
- phantomjs
- pocean-core
+ - pre-commit
- pyoos
- pyresample
- pysgrid
diff --git a/.binder/environment.yml b/.binder/environment.yml
index b65b4ee5..c6730244 100644
--- a/.binder/environment.yml
+++ b/.binder/environment.yml
@@ -40,6 +40,7 @@ dependencies:
- palettable
- phantomjs
- pocean-core
+ - pre-commit
- pyoos
- pyresample
- pysgrid
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index 84d81326..4d6c83bf 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -2,36 +2,39 @@ name: Build and Deploy docs
on:
push:
- branches: [master]
+ branches:
+ - main
+ pull_request:
jobs:
build-docs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v2
- - name: Setup Conda
- uses: s-weigand/setup-conda@v1
- with:
- activate-conda: false
- conda-channels: conda-forge
+ - name: Setup Conda
+ uses: s-weigand/setup-conda@v1
+ with:
+ activate-conda: false
+ conda-channels: conda-forge
- - name: Build environment
- shell: bash -l {0}
- run: |
- conda create --name IOOS --file .binder/conda-linux-64.lock
- source activate IOOS
+ - name: Build environment
+ shell: bash -l {0}
+ run: |
+ conda create --name IOOS --file .binder/conda-linux-64.lock
+ source activate IOOS
- - name: Build documentation
- shell: bash -l {0}
- run: |
- set -e
- source activate IOOS
- jupyter-book build jupyterbook
+ - name: Build documentation
+ shell: bash -l {0}
+ run: |
+ set -e
+ source activate IOOS
+ jupyter-book build jupyterbook
- - name: GitHub Pages action
- uses: peaceiris/actions-gh-pages@v3.6.1
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: jupyterbook/_build/html
+ - name: GitHub Pages action
+ if: github.ref == 'refs/heads/master'
+ uses: peaceiris/actions-gh-pages@v3.6.1
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: jupyterbook/_build/html
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 6ecd8b68..502497e0 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -7,6 +7,6 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- - uses: pre-commit/action@v2.0.0
+ - uses: actions/checkout@v2
+ - uses: actions/setup-python@v2
+ - uses: pre-commit/action@v2.0.0
diff --git a/.github/workflows/test-env-linux.yml b/.github/workflows/test-env-linux.yml
index 77df1392..1cb379ba 100644
--- a/.github/workflows/test-env-linux.yml
+++ b/.github/workflows/test-env-linux.yml
@@ -8,17 +8,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v2
- - name: Setup Conda
- uses: s-weigand/setup-conda@v1
- with:
- activate-conda: false
- conda-channels: conda-forge
+ - name: Setup Conda
+ uses: s-weigand/setup-conda@v1
+ with:
+ activate-conda: false
+ conda-channels: conda-forge
- - name: Build environment
- shell: bash -l {0}
- run: |
- conda create --name IOOS --file .binder/conda-linux-64.lock
- source activate IOOS
- python -c 'import osgeo.gdal; print(dir(osgeo.gdal))'
+ - name: Build environment
+ shell: bash -l {0}
+ run: |
+ conda create --name IOOS --file .binder/conda-linux-64.lock
+ source activate IOOS
+ python -c 'import osgeo.gdal; print(dir(osgeo.gdal))'
diff --git a/.github/workflows/test-env-macOS.yml b/.github/workflows/test-env-macOS.yml
index 33f4e2c8..098ae8d5 100644
--- a/.github/workflows/test-env-macOS.yml
+++ b/.github/workflows/test-env-macOS.yml
@@ -8,17 +8,17 @@ jobs:
runs-on: macos-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v2
- - name: Setup Conda
- uses: s-weigand/setup-conda@v1
- with:
- activate-conda: false
- conda-channels: conda-forge
+ - name: Setup Conda
+ uses: s-weigand/setup-conda@v1
+ with:
+ activate-conda: false
+ conda-channels: conda-forge
- - name: Build environment
- shell: bash -l {0}
- run: |
- conda create --name IOOS --file .binder/conda-osx-64.lock
- source activate IOOS
- python -c 'import osgeo.gdal; print(dir(osgeo.gdal))'
+ - name: Build environment
+ shell: bash -l {0}
+ run: |
+ conda create --name IOOS --file .binder/conda-osx-64.lock
+ source activate IOOS
+ python -c 'import osgeo.gdal; print(dir(osgeo.gdal))'
diff --git a/.github/workflows/test-env-win.yml b/.github/workflows/test-env-win.yml
index f4ad516f..8b3aae38 100644
--- a/.github/workflows/test-env-win.yml
+++ b/.github/workflows/test-env-win.yml
@@ -8,17 +8,17 @@ jobs:
runs-on: windows-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v2
- - name: Setup Conda
- uses: s-weigand/setup-conda@v1
- with:
- activate-conda: false
- conda-channels: conda-forge
+ - name: Setup Conda
+ uses: s-weigand/setup-conda@v1
+ with:
+ activate-conda: false
+ conda-channels: conda-forge
- - name: Build environment
- shell: bash -l {0}
- run: |
- conda create --name IOOS --file .binder/conda-win-64.lock
- source activate IOOS
- python -c 'import osgeo.gdal; print(dir(osgeo.gdal))'
+ - name: Build environment
+ shell: bash -l {0}
+ run: |
+ conda create --name IOOS --file .binder/conda-win-64.lock
+ source activate IOOS
+ python -c 'import osgeo.gdal; print(dir(osgeo.gdal))'
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 85e6bfb8..6431183e 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -8,22 +8,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v2
- - name: Setup Conda
- uses: s-weigand/setup-conda@v1
- with:
- activate-conda: false
- conda-channels: conda-forge
+ - name: Setup Conda
+ uses: s-weigand/setup-conda@v1
+ with:
+ activate-conda: false
+ conda-channels: conda-forge
- - name: Build environment
- shell: bash -l {0}
- run: |
- conda create --name IOOS --file .binder/conda-linux-64.lock
- source activate IOOS
+ - name: Build environment
+ shell: bash -l {0}
+ run: |
+ conda create --name IOOS --file .binder/conda-linux-64.lock
+ source activate IOOS
- - name: Notebook tests
- shell: bash -l {0}
- run: |
- source activate IOOS
- pytest --nbval --nbval-lax jupyterbook/
+ - name: Notebook tests
+ shell: bash -l {0}
+ run: |
+ source activate IOOS
+ pytest --nbval --nbval-lax jupyterbook/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5e394b0b..c3a5d40d 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,29 +1,39 @@
repos:
-- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.0.1
- hooks:
- - id: trailing-whitespace
- - id: check-ast
- - id: debug-statements
- - id: end-of-file-fixer
- - id: check-docstring-first
- - id: check-added-large-files
- exclude_types: [yaml]
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.0.1
+ hooks:
+ - id: trailing-whitespace
+ - id: check-ast
+ - id: debug-statements
+ - id: end-of-file-fixer
+ - id: check-docstring-first
+ - id: check-added-large-files
+ exclude_types: [yaml]
+ - id: check-docstring-first
+ - id: check-json
+ - id: check-yaml
+ - id: double-quote-string-fixer
-- repo: https://gitlab.com/pycqa/flake8
- rev: 3.9.2
- hooks:
- - id: flake8
- exclude: docs/source/conf.py
- args: [--max-line-length=105]
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ rev: v2.4.0
+ hooks:
+ - id: prettier
+ exclude: "_templates/layout.html"
-- repo: https://github.com/psf/black
- rev: 21.8b0
- hooks:
- - id: black
- language_version: python3
+ - repo: https://gitlab.com/pycqa/flake8
+ rev: 3.9.2
+ hooks:
+ - id: flake8
+ exclude: docs/source/conf.py
+ args: [--max-line-length=105]
-- repo: https://github.com/asottile/add-trailing-comma
- rev: v2.1.0
- hooks:
- - id: add-trailing-comma
+ - repo: https://github.com/psf/black
+ rev: 21.8b0
+ hooks:
+ - id: black
+ language_version: python3
+
+ - repo: https://github.com/asottile/add-trailing-comma
+ rev: v2.1.0
+ hooks:
+ - id: add-trailing-comma
diff --git a/README.md b/README.md
index b7750e92..46f4723d 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,7 @@ See the rendered version at https://ioos.github.io/ioos_code_lab
To suggest a notebook or ask questions please open an issue at: https://github.com/ioos/ioos_code_lab/issues
## Run on Pangeo Binder
+
[](https://binder.pangeo.io/v2/gh/ioos/ioos_code_lab/master)
## Citation
diff --git a/jupyterbook/_config.yml b/jupyterbook/_config.yml
index a7283d51..06c1b532 100644
--- a/jupyterbook/_config.yml
+++ b/jupyterbook/_config.yml
@@ -1,88 +1,86 @@
# Book settings
-title : The U.S. Integrated Ocean Observing System (IOOS) # The title of the book. Will be placed in the left navbar.
-author : IOOS # The author of the book
-logo : images/IOOS_logo.png # A path to the book logo
+title: The U.S. Integrated Ocean Observing System (IOOS) # The title of the book. Will be placed in the left navbar.
+author: IOOS # The author of the book
+logo: images/IOOS_logo.png # A path to the book logo
# Patterns to skip when building the book. Can be glob-style (e.g. "*skip.ipynb")
-exclude_patterns : [_build, Thumbs.db, .DS_Store, "**.ipynb_checkpoints"]
+exclude_patterns: [_build, Thumbs.db, .DS_Store, "**.ipynb_checkpoints"]
# Auto-exclude files not in the toc
-only_build_toc_files : true
+only_build_toc_files: true
#######################################################################################
# Execution settings
execute:
- execute_notebooks : off # Whether to execute notebooks at build time. Must be one of ("auto", "force", "cache", "off")
- cache : "" # A path to the jupyter cache that will be used to store execution artifacts. Defaults to `_build/.jupyter_cache/`
- exclude_patterns : [] # A list of patterns to *skip* in execution (e.g. a notebook that takes a really long time)
- timeout : 30 # The maximum time (in seconds) each notebook cell is allowed to run.
- run_in_temp : false # If `True`, then a temporary directory will be created and used as the command working directory (cwd),otherwise the notebook's parent directory will be the cwd.
- allow_errors : false # If `False`, when a code cell raises an error the execution is stopped, otherwise all cells are always run.
- stderr_output : show # One of 'show', 'remove', 'remove-warn', 'warn', 'error', 'severe'
+ execute_notebooks: off # Whether to execute notebooks at build time. Must be one of ("auto", "force", "cache", "off")
+ cache: "" # A path to the jupyter cache that will be used to store execution artifacts. Defaults to `_build/.jupyter_cache/`
+ exclude_patterns: [] # A list of patterns to *skip* in execution (e.g. a notebook that takes a really long time)
+ timeout: 30 # The maximum time (in seconds) each notebook cell is allowed to run.
+ run_in_temp: false # If `True`, then a temporary directory will be created and used as the command working directory (cwd),otherwise the notebook's parent directory will be the cwd.
+ allow_errors: false # If `False`, when a code cell raises an error the execution is stopped, otherwise all cells are always run.
+ stderr_output: show # One of 'show', 'remove', 'remove-warn', 'warn', 'error', 'severe'
#######################################################################################
# Parse and render settings
parse:
- myst_enable_extensions: # default extensions to enable in the myst parser. See https://myst-parser.readthedocs.io/en/latest/using/syntax-optional.html
- # - amsmath
+ myst_enable_extensions: # default extensions to enable in the myst parser. See https://myst-parser.readthedocs.io/en/latest/using/syntax-optional.html
+ - amsmath
- colon_fence
- # - deflist
+ - deflist
- dollarmath
- # - html_admonition
- # - html_image
+ - html_admonition
+ - html_image
- linkify
- # - replacements
- # - smartquotes
+ - replacements
+ - smartquotes
- substitution
- myst_url_schemes : [mailto, http, https] # URI schemes that will be recognised as external URLs in Markdown links
+ myst_url_schemes: [mailto, http, https] # URI schemes that will be recognized as external URLs in Markdown links
#######################################################################################
# HTML-specific settings
html:
- favicon : "images/IOOS_logo.png" # A path to a favicon image
- use_edit_page_button : false # Whether to add an "edit this page" button to pages. If `true`, repository information in repository: must be filled in
- use_repository_button : true # Whether to add a link to your repository button
- use_issues_button : true # Whether to add an "open an issue" button
- extra_navbar : IOOS # Will be displayed underneath the left navbar.
- extra_footer : ioos.noaa.gov  
- Facebook  
- Twitter  
- Contact Us
- U.S. Integrated Ocean Observing System Program
- 1315 East-West Highway
- SSMC3, 2nd Floor
- Silver Spring, MD 20910
- (240) 533-9444
- google_analytics_id : "G-546J258RCJ"
- home_page_in_navbar : false # Whether to include your home page in the left Navigation Bar
- baseurl : "" # The base URL where your book will be hosted. Used for creating image previews and social links. e.g.: https://mypage.com/mybook/
+ favicon: "images/IOOS_logo.png" # A path to a favicon image
+ use_edit_page_button: false # Whether to add an "edit this page" button to pages. If `true`, repository information in repository: must be filled in
+ use_repository_button: true # Whether to add a link to your repository button
+ use_issues_button: true # Whether to add an "open an issue" button
+ extra_navbar: IOOS # Will be displayed underneath the left navbar.
+ extra_footer: ioos.noaa.gov  
+ Facebook  
+ Twitter  
+ Contact Us
+ U.S. Integrated Ocean Observing System Program
+ 1315 East-West Highway
+ SSMC3, 2nd Floor
+ Silver Spring, MD 20910
+ (240) 533-9444
+ google_analytics_id: "G-546J258RCJ"
+ home_page_in_navbar: false # Whether to include your home page in the left Navigation Bar
+ baseurl: "" # The base URL where your book will be hosted. Used for creating image previews and social links. e.g.: https://mypage.com/mybook/
comments:
- hypothesis : false
- utterances : false
- #######################################################################################
+ hypothesis: false
+ utterances: false
+ #######################################################################################
# LaTeX-specific settings
latex:
- latex_engine : pdflatex # one of 'pdflatex', 'xelatex' (recommended for unicode), 'luatex', 'platex', 'uplatex'
- use_jupyterbook_latex : true # use jupyterbook-latex for pdf builds as default
+ latex_engine: pdflatex # one of 'pdflatex', 'xelatex' (recommended for unicode), 'luatex', 'platex', 'uplatex'
+ use_jupyterbook_latex: true # use jupyterbook-latex for pdf builds as default
#######################################################################################
# Launch button settings
launch_buttons:
- notebook_interface : jupyterlab # The interface interactive links will activate ["classic", "jupyterlab"]
- binderhub_url : https://binder.pangeo.io # The URL of the BinderHub (e.g., https://mybinder.org)
- jupyterhub_url : "" # The URL of the JupyterHub (e.g., https://datahub.berkeley.edu)
- thebe : false # Add a thebe button to pages (requires the repository to run on Binder)
- colab_url : "https://colab.research.google.com" # The URL of Google Colab (https://colab.research.google.com)
+ notebook_interface: jupyterlab # The interface interactive links will activate ["classic", "jupyterlab"]
+ binderhub_url: https://binder.pangeo.io # The URL of the BinderHub (e.g., https://mybinder.org)
+ jupyterhub_url: "" # The URL of the JupyterHub (e.g., https://datahub.berkeley.edu)
+ thebe: false # Add a thebe button to pages (requires the repository to run on Binder)
+ colab_url: "https://colab.research.google.com" # The URL of Google Colab (https://colab.research.google.com)
repository:
- url : https://github.com/ioos/ioos_code_lab # The URL to your book's repository
- path_to_book : "jupyterbook" # A path to your book's folder, relative to the repository root.
- branch : master # Which branch of the repository should be used when creating links
+ url: https://github.com/ioos/ioos_code_lab # The URL to your book's repository
+ path_to_book: "jupyterbook" # A path to your book's folder, relative to the repository root.
+ branch: master # Which branch of the repository should be used when creating links
#######################################################################################
# Advanced and power-user settings
sphinx:
- extra_extensions : # A list of extra extensions to load by Sphinx (added to those already used by JB).
- local_extensions : # A list of local extensions to load by sphinx specified by "name: path" items
config:
html_show_copyright: false
diff --git a/jupyterbook/_toc.yml b/jupyterbook/_toc.yml
index f084c201..95565425 100644
--- a/jupyterbook/_toc.yml
+++ b/jupyterbook/_toc.yml
@@ -2,38 +2,38 @@ format: jb-book
root: content/intro.md
title: The IOOS Data Demo Center
parts:
-- caption: Code Gallery
- chapters:
- - file: content/Code Gallery/data_access.md
- sections:
- - glob: content/Code Gallery/data_access_notebooks/*
+ - caption: Code Gallery
+ chapters:
+ - file: content/code_gallery/data_access.md
+ sections:
+ - glob: content/code_gallery/data_access_notebooks/*
- - file: content/Code Gallery/data_analysis_and_visualization.md
- sections:
- - glob: content/Code Gallery/data_analysis_and_visualization_notebooks/*
+ - file: content/code_gallery/data_analysis_and_visualization.md
+ sections:
+ - glob: content/code_gallery/data_analysis_and_visualization_notebooks/*
- - file: content/Code Gallery/data_management.md
- sections:
- - glob: content/Code Gallery/data_management_notebooks/*
+ - file: content/code_gallery/data_management.md
+ sections:
+ - glob: content/code_gallery/data_management_notebooks/*
-- caption: Video Tutorials
- chapters:
- - glob: content/Video_Demo_Markdown/*
+ - caption: Video Tutorials
+ chapters:
+ - glob: content/Video_Demo_Markdown/*
-- caption: Other Resources
- chapters:
- - file: content/ioos_installation_conda.md
- title: Installing the IOOS Conda Environment
- - url: https://help.aodn.org.au/aodn-data-tools/user-code-library/
- title: Opening netCDF files - hints from AODN
- - url: http://unidata.github.io/notebook-gallery/
- title: Unidata Jupyter Notebook Gallery
- - url: http://iobis.org/tutorial/
- title: Extracting and Enriching OBIS data with R
- - url: https://github.com/USGS-R
- title: USGS-R Examples
+ - caption: Other Resources
+ chapters:
+ - file: content/ioos_installation_conda.md
+ title: Installing the IOOS Conda Environment
+ - url: https://help.aodn.org.au/aodn-data-tools/user-code-library/
+ title: Opening netCDF files - hints from AODN
+ - url: http://unidata.github.io/notebook-gallery/
+ title: Unidata Jupyter Notebook Gallery
+ - url: http://iobis.org/tutorial/
+ title: Extracting and Enriching OBIS data with R
+ - url: https://github.com/USGS-R
+ title: USGS-R Examples
-- caption: Contact Us
- chapters:
- - file: content/contact_us.md
- title: Contact Us
+ - caption: Contact Us
+ chapters:
+ - file: content/contact_us.md
+ title: Contact Us
diff --git a/jupyterbook/content/Video_Demo_Markdown/glos.md b/jupyterbook/content/Video_Demo_Markdown/glos.md
index 42156b24..56abf50b 100644
--- a/jupyterbook/content/Video_Demo_Markdown/glos.md
+++ b/jupyterbook/content/Video_Demo_Markdown/glos.md
@@ -6,6 +6,5 @@
:align: center
```
-
-* [How to use the GLOS data portal](https://www.youtube.com/playlist?list=PLEK-mxRrHSZ5LkSSUyYHEy4lEXnEdNJJc)
-* [How to use the GLOS boater’s tool](https://www.youtube.com/playlist?list=PLEK-mxRrHSZ6rH1qCpfpD6-rSljE8fbUC)
+- [How to use the GLOS data portal](https://www.youtube.com/playlist?list=PLEK-mxRrHSZ5LkSSUyYHEy4lEXnEdNJJc)
+- [How to use the GLOS boater’s tool](https://www.youtube.com/playlist?list=PLEK-mxRrHSZ6rH1qCpfpD6-rSljE8fbUC)
diff --git a/jupyterbook/content/Video_Demo_Markdown/ioos.md b/jupyterbook/content/Video_Demo_Markdown/ioos.md
index 76a7399b..024503c8 100644
--- a/jupyterbook/content/Video_Demo_Markdown/ioos.md
+++ b/jupyterbook/content/Video_Demo_Markdown/ioos.md
@@ -6,6 +6,6 @@
:align: center
```
- * [COMT Tutorial](https://www.youtube.com/watch?v=Dqc1C1HeemQ)
- * [IOOS EDS Demo](https://nccospublicstor.blob.core.windows.net/ioos/ioos_demo_1280.mp4)
- * [MBON Portal Tutorial](https://www.youtube.com/watch?v=ZITqDRa6u9c)
+- [COMT Tutorial](https://www.youtube.com/watch?v=Dqc1C1HeemQ)
+- [IOOS EDS Demo](https://nccospublicstor.blob.core.windows.net/ioos/ioos_demo_1280.mp4)
+- [MBON Portal Tutorial](https://www.youtube.com/watch?v=ZITqDRa6u9c)
diff --git a/jupyterbook/content/Video_Demo_Markdown/nanoos.md b/jupyterbook/content/Video_Demo_Markdown/nanoos.md
index 3a4598a6..601b32ed 100644
--- a/jupyterbook/content/Video_Demo_Markdown/nanoos.md
+++ b/jupyterbook/content/Video_Demo_Markdown/nanoos.md
@@ -1,11 +1,10 @@
# NANOOS
-
```{image} ../../images/NANOOS.png
:alt: IOOS
:width: 150px
:align: center
```
- * [NANOOS Visualization System](https://www.youtube.com/watch?v=MEVz0jOsqmI)
- * [NANOOS Data Explorer](https://www.youtube.com/playlist?list=PLBvrtRArn5ffsBARjKsczvfxyYX1wGtFP)
+- [NANOOS Visualization System](https://www.youtube.com/watch?v=MEVz0jOsqmI)
+- [NANOOS Data Explorer](https://www.youtube.com/playlist?list=PLBvrtRArn5ffsBARjKsczvfxyYX1wGtFP)
diff --git a/jupyterbook/content/Video_Demo_Markdown/ooi.md b/jupyterbook/content/Video_Demo_Markdown/ooi.md
index 3f7abcbf..d5d11225 100644
--- a/jupyterbook/content/Video_Demo_Markdown/ooi.md
+++ b/jupyterbook/content/Video_Demo_Markdown/ooi.md
@@ -6,4 +6,4 @@
:align: center
```
-* [Demo of OOI ERDDAP endpoint](https://www.youtube.com/watch?v=tj4M9hodTG0)
+- [Demo of OOI ERDDAP endpoint](https://www.youtube.com/watch?v=tj4M9hodTG0)
diff --git a/jupyterbook/content/Video_Demo_Markdown/python_dem.md b/jupyterbook/content/Video_Demo_Markdown/python_dem.md
index 3e87e3c9..a9bc337a 100644
--- a/jupyterbook/content/Video_Demo_Markdown/python_dem.md
+++ b/jupyterbook/content/Video_Demo_Markdown/python_dem.md
@@ -5,5 +5,6 @@
:width: 150px
:align: center
```
- * [Catalog Driven Reproducible Workflows for Ocean-science](https://www.youtube.com/watch?v=05ax0lkQFrg)
- * [Extracting data from NOAA ERDDAP](https://www.youtube.com/watch?v=18xZoXu1USM)
+
+- [Catalog Driven Reproducible Workflows for Ocean-science](https://www.youtube.com/watch?v=05ax0lkQFrg)
+- [Extracting data from NOAA ERDDAP](https://www.youtube.com/watch?v=18xZoXu1USM)
diff --git a/jupyterbook/content/Code Gallery/data/oceans.dbf b/jupyterbook/content/code_gallery/data/oceans.dbf
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/oceans.dbf
rename to jupyterbook/content/code_gallery/data/oceans.dbf
diff --git a/jupyterbook/content/Code Gallery/data/oceans.prj b/jupyterbook/content/code_gallery/data/oceans.prj
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/oceans.prj
rename to jupyterbook/content/code_gallery/data/oceans.prj
diff --git a/jupyterbook/content/Code Gallery/data/oceans.qpj b/jupyterbook/content/code_gallery/data/oceans.qpj
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/oceans.qpj
rename to jupyterbook/content/code_gallery/data/oceans.qpj
diff --git a/jupyterbook/content/Code Gallery/data/oceans.shp b/jupyterbook/content/code_gallery/data/oceans.shp
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/oceans.shp
rename to jupyterbook/content/code_gallery/data/oceans.shp
diff --git a/jupyterbook/content/Code Gallery/data/oceans.shx b/jupyterbook/content/code_gallery/data/oceans.shx
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/oceans.shx
rename to jupyterbook/content/code_gallery/data/oceans.shx
diff --git a/jupyterbook/content/Code Gallery/data/timeseriesProfile.csv b/jupyterbook/content/code_gallery/data/timeseriesProfile.csv
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/timeseriesProfile.csv
rename to jupyterbook/content/code_gallery/data/timeseriesProfile.csv
diff --git a/jupyterbook/content/Code Gallery/data/water_level_example.csv b/jupyterbook/content/code_gallery/data/water_level_example.csv
similarity index 100%
rename from jupyterbook/content/Code Gallery/data/water_level_example.csv
rename to jupyterbook/content/code_gallery/data/water_level_example.csv
diff --git a/jupyterbook/content/Code Gallery/data_access.md b/jupyterbook/content/code_gallery/data_access.md
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access.md
rename to jupyterbook/content/code_gallery/data_access.md
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2016-10-12-fetching_data.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2016-10-12-fetching_data.ipynb
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2016-10-12-fetching_data.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2016-10-12-fetching_data.ipynb
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2016-11-15-glider_data_example.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2016-11-15-glider_data_example.ipynb
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2016-11-15-glider_data_example.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2016-11-15-glider_data_example.ipynb
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2016-12-19-exploring_csw.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2016-12-19-exploring_csw.ipynb
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2016-12-19-exploring_csw.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2016-12-19-exploring_csw.ipynb
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2016-12-20-searching_glider_deployments.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2016-12-20-searching_glider_deployments.ipynb
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2016-12-20-searching_glider_deployments.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2016-12-20-searching_glider_deployments.ipynb
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2016-12-22-boston_light_swim.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2016-12-22-boston_light_swim.ipynb
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2016-12-22-boston_light_swim.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2016-12-22-boston_light_swim.ipynb
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2017-01-18-siphon-explore-thredds.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2017-01-18-siphon-explore-thredds.ipynb
similarity index 100%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2017-01-18-siphon-explore-thredds.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2017-01-18-siphon-explore-thredds.ipynb
diff --git a/jupyterbook/content/Code Gallery/data_access_notebooks/2017-03-21-ERDDAP_IOOS_Sensor_Map.ipynb b/jupyterbook/content/code_gallery/data_access_notebooks/2017-03-21-ERDDAP_IOOS_Sensor_Map.ipynb
similarity index 99%
rename from jupyterbook/content/Code Gallery/data_access_notebooks/2017-03-21-ERDDAP_IOOS_Sensor_Map.ipynb
rename to jupyterbook/content/code_gallery/data_access_notebooks/2017-03-21-ERDDAP_IOOS_Sensor_Map.ipynb
index 53fedb8f..6b3ec436 100644
--- a/jupyterbook/content/Code Gallery/data_access_notebooks/2017-03-21-ERDDAP_IOOS_Sensor_Map.ipynb
+++ b/jupyterbook/content/code_gallery/data_access_notebooks/2017-03-21-ERDDAP_IOOS_Sensor_Map.ipynb
@@ -6,6 +6,15 @@
"source": [
"# Read realtime data from IOOS Sensor Map via ERDDAP tabledap\n",
"\n",
+ "