Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Era5 notebook #200

Merged
merged 39 commits into from
Mar 10, 2020
Merged

Era5 notebook #200

merged 39 commits into from
Mar 10, 2020

Conversation

richardarsenault
Copy link
Contributor

@richardarsenault richardarsenault commented Mar 5, 2020

Overview

This PR includes a few notebooks, with one particular notebook "WF_FromShapefileToStreamflow.ipynb" that allows users to select the dataset (ERA5/NRCAN) and hydrological model (GR4JCN/HMETS/MOHYSE/HBVEC) and perform a complete simulation starting from just a shapefile.

The code makes use of WPS services to extract properties from within the shapefile (area, centroid lat/long, elevation) required to run RAVEN. It then uses the boundaries to extract the gridded data source selected and takes the spatial average of the points falling within the contour. The hydrological model is parameterized and run, providing streamflow stats and graphs.

Current limitations are:
1- Works for North America but West of 0° will be problematic for ERA5 due to 0:360° longitude scheme. Right now is hardcoded as longitude-360.
2- HBVEC and GR4JCN return an error due to the rain_snow_separation that seems to not be coded.
3- No streamflow provided, therefore calibration is not an option. Parameters are fixed and no NSE diagnostics are returned.
4- Had to install python package "salem", Don't know how to force that to be done automatically for future users during the deployment.

Also other notebooks are present in the PR that I wish to continue improving but are not necessarily required in the master at this stage...

@richardarsenault
Copy link
Contributor Author

Salem seems to be failing to parse CRS of the shapefile now, even though it worked yesterday. @huard can you test and see if it works for you? Do you have an ETA on when we'll be able to do this type of operation on the server side (as we'll eventually replace the code in these workbooks to use the methods on the server)? Thanks!

@huard
Copy link
Contributor

huard commented Mar 6, 2020

Working on it.

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this pull request Mar 10, 2020
…tebooks

docker: add regionmask and salem for Era5 Raven notebooks, removed jupyter_bokeh

jupyter_bokeh (the extension, not the package) was removed due to this issue bokeh/jupyter_bokeh#93

Era5 Raven notebook PR: Ouranosinc/raven#200

Noticeable  rather large Jupyter env changes:

```diff
<   - birdy=v0.6.5=py_0
>   - birdy=v0.6.6=py_0

<   - bokeh=1.4.0=py36_0
>     - bokeh==2.0.0  # from pip recursive dependencies (we get newer version by not explicitly get from conda !)


<   - esgf-compute-api=2.2.1=py_2
>   - esgf-compute-api=2.2.3=py_0

<   - jupyterlab=1.2.5=py_0
>   - jupyterlab=2.0.1=py_0

<   - owslib=0.19.0=py_2
>   - owslib=0.19.1=py_0

<   - pandas=0.25.3=py36hb3f55d8_0
>   - pandas=1.0.1=py37hb3f55d8_0

<   - python=3.6.7=h357f687_1006
>   - python=3.7.6=h357f687_4_cpython

>   - regionmask=0.5.0=py_1

<   - xarray=0.14.1=py_1
>   - xarray=0.15.0=py_0

<     - dask==2.9.2
>     - dask==2.12.0

>     - salem==0.2.4

<     - xclim==0.13.0
>     - xclim==0.14.0
```

Full conda env export Diff:
[200120-200309-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4309639/200120-200309-conda-env-export.diff.txt)

```diff
10c10
<   - alembic=1.3.2=py_0
---
>   - alembic=1.4.1=py_0
14,16c14,16
<   - beautifulsoup4=4.8.2=py36_0
<   - birdy=v0.6.5=py_0
<   - bleach=3.1.0=py_0
---
>   - beautifulsoup4=4.8.2=py37_0
>   - birdy=v0.6.6=py_0
>   - bleach=3.1.1=py_0
18d17
<   - bokeh=1.4.0=py36_0
20c19
<   - boost-cpp=1.70.0=h8e57a91_2
---
>   - boost-cpp=1.72.0=h8e57a91_0
25,27c24,26
<   - cartopy=0.17.0=py36h423102d_1009
<   - cdat_info=8.2=py_6
<   - cdtime=3.1.2=py36h1ac8016_8
---
>   - cartopy=0.17.0=py37h39d8c00_1011
>   - cdat_info=8.2=py_7
>   - cdtime=3.1.3=py37h1ac8016_0
29c28
<   - certifi=2019.11.28=py36_0
---
>   - certifi=2019.11.28=py37_0
31c30
<   - cffi=1.13.2=py36h8022711_0
---
>   - cffi=1.14.0=py37hd463f26_0
33,34c32,33
<   - cftime=1.0.4.2=py36hc1659b7_0
<   - chardet=3.0.4=py36_1003
---
>   - cftime=1.0.4.2=py37hc1659b7_0
>   - chardet=3.0.4=py37_1003
40,42c39,41
<   - coverage=5.0.3=py36h516909a_0
<   - cryptography=2.8=py36h72c5cf5_1
<   - curl=7.65.3=hf8cf82a_0
---
>   - coverage=5.0.3=py37h516909a_0
>   - cryptography=2.8=py37h72c5cf5_1
>   - curl=7.68.0=hf8cf82a_0
45c44
<   - decorator=4.4.1=py_0
---
>   - decorator=4.4.2=py_0
51,55c50,54
<   - entrypoints=0.3=py36_1000
<   - esgf-compute-api=2.2.1=py_2
<   - esmf=8.0.0=nompi_he6d0a24_4
<   - esmpy=8.0.0=nompi_py36hf0e99fa_1
<   - expat=2.2.5=he1b5a44_1004
---
>   - entrypoints=0.3=py37_1000
>   - esgf-compute-api=2.2.3=py_0
>   - esmf=8.0.0=nompi_he6d0a24_5
>   - esmpy=8.0.0=nompi_py37hf0e99fa_1
>   - expat=2.2.9=he1b5a44_2
57c56
<   - fiona=1.8.13=py36h900e953_0
---
>   - fiona=1.8.13=py37h900e953_0
62c61
<   - future=0.18.2=py36_0
---
>   - future=0.18.2=py37_0
64,66c63,65
<   - gdal=3.0.2=py36hbb6b9fb_7
<   - genutil=8.2=py36hc1659b7_3
<   - geopandas=0.6.2=py_0
---
>   - gdal=3.0.4=py37hbb6b9fb_1
>   - genutil=8.2=py37hc1659b7_3
>   - geopandas=0.7.0=py_1
68c67
<   - geotiff=1.5.1=hbd99317_7
---
>   - geotiff=1.5.1=hcbe54f9_9
71,75c70,74
<   - giflib=5.2.1=h516909a_1
<   - gitdb2=2.0.6=py_0
<   - gitpython=3.0.5=py_0
<   - glib=2.58.3=py36h6f030ca_1002
<   - gmp=6.2.0=he1b5a44_0
---
>   - giflib=5.2.1=h516909a_2
>   - gitdb=4.0.2=py_0
>   - gitpython=3.1.0=py_0
>   - glib=2.58.3=py37h6f030ca_1002
>   - gmp=6.2.0=he1b5a44_2
77,78c76,77
<   - gst-plugins-base=1.14.5=h0935bb2_0
<   - gstreamer=1.14.5=h36ae1b5_0
---
>   - gst-plugins-base=1.14.5=h0935bb2_2
>   - gstreamer=1.14.5=h36ae1b5_2
82,86c81,85
<   - idna=2.8=py36_1000
<   - importlib_metadata=1.4.0=py36_0
<   - ipykernel=5.1.3=py36h5ca1d4c_0
<   - ipyleaflet=0.12.1=py36_0
<   - ipython=7.11.1=py36h5ca1d4c_0
---
>   - idna=2.9=py_1
>   - importlib_metadata=1.5.0=py37_0
>   - ipykernel=5.1.4=py37h5ca1d4c_0
>   - ipyleaflet=0.12.3=py_1
>   - ipython=7.13.0=py37h5ca1d4c_0
90,91c89,90
<   - jedi=0.15.2=py36_0
<   - jinja2=2.10.3=py_0
---
>   - jedi=0.16.0=py37_0
>   - jinja2=2.11.1=py_0
94,95c93,94
<   - json5=0.8.5=py_0
<   - jsonschema=3.2.0=py36_0
---
>   - json5=0.9.0=py_0
>   - jsonschema=3.2.0=py37_0
97,102c96,103
<   - jupyter_client=5.3.4=py36_1
<   - jupyter_console=5.1.0=py36_0
<   - jupyter_core=4.6.1=py36_0
<   - jupyter_server=0.1.1=py36_0
<   - jupyterhub=1.0.0=py36_0
<   - jupyterlab=1.2.5=py_0
---
>   - jupyter_client=6.0.0=py_0
>   - jupyter_console=6.0.0=py_0
>   - jupyter_core=4.6.3=py37_0
>   - jupyter_server=0.1.1=py37_0
>   - jupyter_telemetry=0.0.5=py_0
>   - jupyterhub=1.1.0=py37_2
>   - jupyterhub-base=1.1.0=py37_2
>   - jupyterlab=2.0.1=py_0
104c105
<   - jupyterlab_server=1.0.6=py_0
---
>   - jupyterlab_server=1.0.7=py_0
106c107
<   - kiwisolver=1.1.0=py36hc9558a2_0
---
>   - kiwisolver=1.1.0=py37hc9558a2_0
109c110,111
<   - lazy-object-proxy=1.4.3=py36h516909a_0
---
>   - lazy-object-proxy=1.4.3=py37h516909a_1
>   - ld_impl_linux-64=2.33.1=h53a641e_8
113c115
<   - libcf=1.0.3=py36hdee1361_5
---
>   - libcf=1.0.3=py37hdee1361_5
115c117
<   - libcurl=7.65.3=hda55be3_0
---
>   - libcurl=7.68.0=hda55be3_0
122,123c124,125
<   - libgdal=3.0.2=hbe56659_7
<   - libgfortran-ng=7.3.0=hdf63c60_4
---
>   - libgdal=3.0.4=h022d3c0_1
>   - libgfortran-ng=7.3.0=hdf63c60_5
127c129
<   - libkml=1.3.0=h4fcabce_1010
---
>   - libkml=1.3.0=hb574062_1011
130c132
<   - libnetcdf=4.7.3=nompi_h94020b1_100
---
>   - libnetcdf=4.7.3=nompi_h9f9fd6a_101
133c135
<   - libpq=12.1=hd9ab2ff_0
---
>   - libpq=12.2=hae5116b_0
135,136c137,138
<   - libspatialindex=1.9.3=he1b5a44_1
<   - libspatialite=4.3.0a=h343d7df_1033
---
>   - libspatialindex=1.9.3=he1b5a44_3
>   - libspatialite=4.3.0a=hd318ce7_1035
145c147
<   - libxkbcommon=0.9.1=hebb1f50_0
---
>   - libxkbcommon=0.10.0=he1b5a44_0
148c150
<   - lxml=4.4.2=py36h7ec2d77_0
---
>   - lxml=4.5.0=py37h7ec2d77_0
151,153c153,155
<   - markupsafe=1.1.1=py36h516909a_0
<   - matplotlib=3.1.2=py36_1
<   - matplotlib-base=3.1.2=py36h250f245_1
---
>   - markupsafe=1.1.1=py37h516909a_0
>   - matplotlib=3.2.0=1
>   - matplotlib-base=3.2.0=py37h250f245_1
156,157c158,159
<   - mistune=0.8.4=py36h516909a_1000
<   - more-itertools=8.1.0=py_0
---
>   - mistune=0.8.4=py37h516909a_1000
>   - more-itertools=8.2.0=py_0
159,162c161,164
<   - nbconvert=5.6.1=py36_0
<   - nbdime=1.1.0=py36_0
<   - nbformat=5.0.3=py_0
<   - nbval=0.9.4=py_0
---
>   - nbconvert=5.6.1=py37_0
>   - nbdime=1.1.0=py37_0
>   - nbformat=5.0.4=py_0
>   - nbval=0.9.5=py_0
165c167
<   - netcdf4=1.5.3=nompi_py36hd35fb8e_102
---
>   - netcdf4=1.5.3=nompi_py37hd35fb8e_102
167,169c169,171
<   - nodejs=13.6.0=h10a4023_0
<   - notebook=6.0.2=py36_0
<   - nspr=4.24=he1b5a44_0
---
>   - nodejs=13.9.0=h10a4023_0
>   - notebook=6.0.3=py37_0
>   - nspr=4.25=he1b5a44_0
171c173
<   - numpy=1.17.5=py36h95a1406_0
---
>   - numpy=1.18.1=py37h95a1406_0
178,179c180,181
<   - owslib=0.19.0=py_2
<   - packaging=20.0=py_0
---
>   - owslib=0.19.1=py_0
>   - packaging=20.1=py_0
181,182c183,184
<   - pandas=0.25.3=py36hb3f55d8_0
<   - pandoc=2.9.1.1=0
---
>   - pandas=1.0.1=py37hb3f55d8_0
>   - pandoc=2.9.2=0
184,189c186,191
<   - parso=0.5.2=py_0
<   - pcre=8.43=he1b5a44_0
<   - pexpect=4.7.0=py36_0
<   - pickleshare=0.7.5=py36_1000
<   - pillow=7.0.0=py36hefe7db6_0
<   - pip=19.3.1=py36_0
---
>   - parso=0.6.2=py_0
>   - pcre=8.44=he1b5a44_0
>   - pexpect=4.8.0=py37_0
>   - pickleshare=0.7.5=py37_1000
>   - pillow=7.0.0=py37hefe7db6_0
>   - pip=20.0.2=py_2
191c193
<   - pluggy=0.12.0=py_0
---
>   - pluggy=0.13.0=py37_0
194,195c196,197
<   - postgresql=12.1=hc63931a_0
<   - proj=6.2.1=hc80f0dc_0
---
>   - postgresql=12.2=hf1211e9_0
>   - proj=6.3.1=hc80f0dc_1
197c199
<   - prompt_toolkit=3.0.2=py_0
---
>   - prompt_toolkit=2.0.10=py_0
201,203c203,205
<   - pycparser=2.19=py36_1
<   - pycurl=7.43.0.4=py36h16ce93b_0
<   - pydap=3.2.2=py36_1000
---
>   - pycparser=2.20=py_0
>   - pycurl=7.43.0.5=py37h16ce93b_0
>   - pydap=3.2.2=py37_1000
205c207
<   - pygments=2.5.2=py_0
---
>   - pygments=2.6.1=py_0
207,208c209,210
<   - pykdtree=1.3.1=py36hc1659b7_1002
<   - pyopenssl=19.1.0=py36_0
---
>   - pykdtree=1.3.1=py37hc1659b7_1002
>   - pyopenssl=19.1.0=py_1
210,212c212,214
<   - pyproj=2.4.2.post1=py36h12732c1_0
<   - pyqt=5.12.3=py36hcca6a23_1
<   - pyrsistent=0.15.7=py36h516909a_0
---
>   - pyproj=2.5.0=py37he3cd046_1
>   - pyqt=5.12.3=py37hcca6a23_1
>   - pyrsistent=0.15.7=py37h516909a_0
214,216c216,218
<   - pysocks=1.7.1=py36_0
<   - pytest=5.3.4=py36_0
<   - python=3.6.7=h357f687_1006
---
>   - pysocks=1.7.1=py37_0
>   - pytest=5.3.5=py37_1
>   - python=3.7.6=h357f687_4_cpython
218a221,222
>   - python-json-logger=0.1.11=py_0
>   - python_abi=3.7=1_cp37m
220,221c224
<   - pyyaml=5.3=py36h516909a_0
<   - pyzmq=18.1.1=py36h1768529_0
---
>   - pyzmq=19.0.0=py37h1768529_0
223,224c226,228
<   - qtconsole=4.6.0=py_0
<   - rasterio=1.1.2=py36h900e953_0
---
>   - qtconsole=4.7.1=py_0
>   - qtpy=1.9.0=py_0
>   - rasterio=1.1.3=py37h900e953_0
226,228c230,235
<   - requests=2.22.0=py36_1
<   - rtree=0.9.3=py36h7b0cdae_0
<   - scipy=1.4.1=py36h921218d_0
---
>   - regionmask=0.5.0=py_1
>   - requests=2.23.0=py37_0
>   - rtree=0.9.4=py37h7b0cdae_0
>   - ruamel.yaml=0.16.6=py37h516909a_0
>   - ruamel.yaml.clib=0.2.0=py37h516909a_0
>   - scipy=1.4.1=py37h921218d_0
230,233c237,240
<   - setuptools=45.1.0=py36_0
<   - shapely=1.6.4=py36h5d51c17_1007
<   - six=1.14.0=py36_0
<   - smmap2=2.0.5=py_0
---
>   - setuptools=46.0.0=py37_0
>   - shapely=1.7.0=py37h5d51c17_0
>   - six=1.14.0=py37_0
>   - smmap=3.0.1=py_0
235,236c242,243
<   - soupsieve=1.9.4=py36_0
<   - sqlalchemy=1.3.12=py36h516909a_0
---
>   - soupsieve=1.9.4=py37_0
>   - sqlalchemy=1.3.13=py37h516909a_0
239c246
<   - terminado=0.8.3=py36_0
---
>   - terminado=0.8.3=py37_0
244,245c251,252
<   - tornado=6.0.3=py36h516909a_0
<   - traitlets=4.3.3=py36_0
---
>   - tornado=6.0.4=py37h516909a_0
>   - traitlets=4.3.3=py37_0
249c256
<   - urllib3=1.25.7=py36_0
---
>   - urllib3=1.25.7=py37_0
251,252c258,259
<   - voila=0.1.20=py_0
<   - vtk-cdat=8.2.0.8.2=py36_mesalibhead77ed_0
---
>   - voila=0.1.21=py_0
>   - vtk-cdat=8.2.0.8.2=py37_mesalibhead77ed_0
255c262
<   - webob=1.8.5=py_0
---
>   - webob=1.8.6=py_0
257,259c264,266
<   - wheel=0.33.6=py36_0
<   - widgetsnbextension=3.5.1=py36_0
<   - wrapt=1.11.2=py36h516909a_0
---
>   - wheel=0.34.2=py_1
>   - widgetsnbextension=3.5.1=py37_0
>   - wrapt=1.12.1=py37h516909a_0
261c268
<   - xarray=0.14.1=py_1
---
>   - xarray=0.15.0=py_0
275d281
<   - yaml=0.2.2=h516909a_1
277c283
<   - zipp=2.0.0=py_0
---
>   - zipp=3.1.0=py_0
282c288,289
<     - bottleneck==1.3.1
---
>     - bokeh==2.0.0
>     - bottleneck==1.3.2
284c291
<     - cloudpickle==1.2.2
---
>     - cloudpickle==1.3.0
286,287c293,294
<     - dask==2.9.2
<     - distributed==2.9.3
---
>     - dask==2.12.0
>     - distributed==2.12.0
293c300
<     - markdown==3.1.1
---
>     - markdown==3.2.1
295c302
<     - msgpack==0.6.2
---
>     - msgpack==1.0.0
297c304
<     - pint==0.9
---
>     - pint==0.11
299c306
<     - psutil==5.6.7
---
>     - psutil==5.7.0
301a309
>     - pyyaml==5.3
304c312,313
<     - scikit-learn==0.22.1
---
>     - salem==0.2.4
>     - scikit-learn==0.22.2.post1
308,309c317,319
<     - xclim==0.13.0
<     - zict==1.0.0
---
>     - typing-extensions==3.7.4.1
>     - xclim==0.14.0
>     - zict==2.0.0
```

Full new conda env export:
[200309-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4309640/200309-conda-env-export.yml.txt)

```
name: birdy
channels:
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=0_gnu
  - affine=2.3.0=py_0
  - alembic=1.4.1=py_0
  - async_generator=1.10=py_0
  - attrs=19.3.0=py_0
  - backcall=0.1.0=py_0
  - beautifulsoup4=4.8.2=py37_0
  - birdy=v0.6.6=py_0
  - bleach=3.1.1=py_0
  - blinker=1.4=py_1
  - boltons=20.0.0=py_0
  - boost-cpp=1.72.0=h8e57a91_0
  - branca=0.3.1=py_0
  - bzip2=1.0.8=h516909a_2
  - ca-certificates=2019.11.28=hecc5488_0
  - cairo=1.16.0=hfb77d84_1002
  - cartopy=0.17.0=py37h39d8c00_1011
  - cdat_info=8.2=py_7
  - cdtime=3.1.3=py37h1ac8016_0
  - cdutil=8.2=py_2
  - certifi=2019.11.28=py37_0
  - certipy=0.1.3=py_0
  - cffi=1.14.0=py37hd463f26_0
  - cfitsio=3.470=hb60a0a2_2
  - cftime=1.0.4.2=py37hc1659b7_0
  - chardet=3.0.4=py37_1003
  - click=7.0=py_0
  - click-plugins=1.1.1=py_0
  - cligj=0.5.0=py_0
  - colorama=0.4.3=py_0
  - configurable-http-proxy=4.2.0=node13_he01fd0c_2
  - coverage=5.0.3=py37h516909a_0
  - cryptography=2.8=py37h72c5cf5_1
  - curl=7.68.0=hf8cf82a_0
  - cycler=0.10.0=py_2
  - dbus=1.13.6=he372182_0
  - decorator=4.4.2=py_0
  - defusedxml=0.6.0=py_0
  - descartes=1.1.0=py_4
  - distarray=2.12.2=py_1
  - docopt=0.6.2=py_1
  - dv3d=8.2=py_0
  - entrypoints=0.3=py37_1000
  - esgf-compute-api=2.2.3=py_0
  - esmf=8.0.0=nompi_he6d0a24_5
  - esmpy=8.0.0=nompi_py37hf0e99fa_1
  - expat=2.2.9=he1b5a44_2
  - ffmpeg=4.2=h167e202_0
  - fiona=1.8.13=py37h900e953_0
  - fontconfig=2.13.1=h86ecdb6_1001
  - freetype=2.10.0=he983fc9_1
  - freexl=1.0.5=h14c3975_1002
  - funcsigs=1.0.2=py_3
  - future=0.18.2=py37_0
  - g2clib=1.6.0=hf3f1b0b_9
  - gdal=3.0.4=py37hbb6b9fb_1
  - genutil=8.2=py37hc1659b7_3
  - geopandas=0.7.0=py_1
  - geos=3.8.0=he1b5a44_0
  - geotiff=1.5.1=hcbe54f9_9
  - gettext=0.19.8.1=hc5be6a0_1002
  - ghostscript=9.22=hf484d3e_1001
  - giflib=5.2.1=h516909a_2
  - gitdb=4.0.2=py_0
  - gitpython=3.1.0=py_0
  - glib=2.58.3=py37h6f030ca_1002
  - gmp=6.2.0=he1b5a44_2
  - gnutls=3.6.5=hd3a4fd2_1002
  - gst-plugins-base=1.14.5=h0935bb2_2
  - gstreamer=1.14.5=h36ae1b5_2
  - hdf4=4.2.13=hf30be14_1003
  - hdf5=1.10.5=nompi_h3c11f04_1104
  - icu=64.2=he1b5a44_1
  - idna=2.9=py_1
  - importlib_metadata=1.5.0=py37_0
  - ipykernel=5.1.4=py37h5ca1d4c_0
  - ipyleaflet=0.12.3=py_1
  - ipython=7.13.0=py37h5ca1d4c_0
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.5.1=py_0
  - jasper=1.900.1=h07fcdf6_1006
  - jedi=0.16.0=py37_0
  - jinja2=2.11.1=py_0
  - jpeg=9c=h14c3975_1001
  - json-c=0.13.1=h14c3975_1001
  - json5=0.9.0=py_0
  - jsonschema=3.2.0=py37_0
  - jupyter=1.0.0=py_2
  - jupyter_client=6.0.0=py_0
  - jupyter_console=6.0.0=py_0
  - jupyter_core=4.6.3=py37_0
  - jupyter_server=0.1.1=py37_0
  - jupyter_telemetry=0.0.5=py_0
  - jupyterhub=1.1.0=py37_2
  - jupyterhub-base=1.1.0=py37_2
  - jupyterlab=2.0.1=py_0
  - jupyterlab_pygments=0.1.0=py_0
  - jupyterlab_server=1.0.7=py_0
  - kealib=1.4.10=h58c409b_1005
  - kiwisolver=1.1.0=py37hc9558a2_0
  - krb5=1.16.4=h2fd8d38_0
  - lame=3.100=h14c3975_1001
  - lazy-object-proxy=1.4.3=py37h516909a_1
  - ld_impl_linux-64=2.33.1=h53a641e_8
  - libblas=3.8.0=11_openblas
  - libcblas=3.8.0=11_openblas
  - libcdms=3.1.2=ha54dda3_8
  - libcf=1.0.3=py37hdee1361_5
  - libclang=9.0.1=default_hde54327_0
  - libcurl=7.68.0=hda55be3_0
  - libdap4=3.20.4=hd3bb157_0
  - libdrs=3.1.2=h9b7ed86_9
  - libdrs_f=3.1.2=h322d3c2_5
  - libedit=3.1.20170329=hf8c457e_1001
  - libffi=3.2.1=he1b5a44_1006
  - libgcc-ng=9.2.0=h24d8f2e_2
  - libgdal=3.0.4=h022d3c0_1
  - libgfortran-ng=7.3.0=hdf63c60_5
  - libgomp=9.2.0=h24d8f2e_2
  - libiconv=1.15=h516909a_1005
  - libidn2=2.3.0=h516909a_0
  - libkml=1.3.0=hb574062_1011
  - liblapack=3.8.0=11_openblas
  - libllvm9=9.0.1=hc9558a2_0
  - libnetcdf=4.7.3=nompi_h9f9fd6a_101
  - libopenblas=0.3.6=h6e990d7_6
  - libpng=1.6.37=hed695b0_0
  - libpq=12.2=hae5116b_0
  - libsodium=1.0.17=h516909a_0
  - libspatialindex=1.9.3=he1b5a44_3
  - libspatialite=4.3.0a=hd318ce7_1035
  - libssh2=1.8.2=h22169c7_2
  - libstdcxx-ng=9.2.0=hdf63c60_2
  - libtiff=4.1.0=hc3755c2_3
  - libunistring=0.9.10=h14c3975_0
  - libuuid=2.32.1=h14c3975_1000
  - libuv=1.34.0=h516909a_0
  - libwebp=1.0.2=h56121f0_5
  - libxcb=1.13=h14c3975_1002
  - libxkbcommon=0.10.0=he1b5a44_0
  - libxml2=2.9.10=hee79883_0
  - libxslt=1.1.33=h31b3aaa_0
  - lxml=4.5.0=py37h7ec2d77_0
  - lz4-c=1.8.3=he1b5a44_1001
  - mako=1.1.0=py_0
  - markupsafe=1.1.1=py37h516909a_0
  - matplotlib=3.2.0=1
  - matplotlib-base=3.2.0=py37h250f245_1
  - mechanicalsoup=0.12.0=py_0
  - mesalib=18.3.1=h590aaf7_0
  - mistune=0.8.4=py37h516909a_1000
  - more-itertools=8.2.0=py_0
  - munch=2.5.0=py_0
  - nbconvert=5.6.1=py37_0
  - nbdime=1.1.0=py37_0
  - nbformat=5.0.4=py_0
  - nbval=0.9.5=py_0
  - ncurses=6.1=hf484d3e_1002
  - netcdf-fortran=4.5.2=nompi_h09cde99_103
  - netcdf4=1.5.3=nompi_py37hd35fb8e_102
  - nettle=3.4.1=h1bed415_1002
  - nodejs=13.9.0=h10a4023_0
  - notebook=6.0.3=py37_0
  - nspr=4.25=he1b5a44_0
  - nss=3.47=he751ad9_0
  - numpy=1.18.1=py37h95a1406_0
  - oauthlib=3.0.1=py_0
  - olefile=0.46=py_0
  - openblas=0.3.6=h6e990d7_6
  - openh264=1.8.0=hdbcaa40_1000
  - openjpeg=2.3.1=h981e76c_3
  - openssl=1.1.1d=h516909a_0
  - owslib=0.19.1=py_0
  - packaging=20.1=py_0
  - pamela=1.0.0=py_0
  - pandas=1.0.1=py37hb3f55d8_0
  - pandoc=2.9.2=0
  - pandocfilters=1.4.2=py_1
  - parso=0.6.2=py_0
  - pcre=8.44=he1b5a44_0
  - pexpect=4.8.0=py37_0
  - pickleshare=0.7.5=py37_1000
  - pillow=7.0.0=py37hefe7db6_0
  - pip=20.0.2=py_2
  - pixman=0.38.0=h516909a_1003
  - pluggy=0.13.0=py37_0
  - poppler=0.67.0=h14e79db_8
  - poppler-data=0.4.9=1
  - postgresql=12.2=hf1211e9_0
  - proj=6.3.1=hc80f0dc_1
  - prometheus_client=0.7.1=py_0
  - prompt_toolkit=2.0.10=py_0
  - pthread-stubs=0.4=h14c3975_1001
  - ptyprocess=0.6.0=py_1001
  - py=1.8.1=py_0
  - pycparser=2.20=py_0
  - pycurl=7.43.0.5=py37h16ce93b_0
  - pydap=3.2.2=py37_1000
  - pyepsg=0.4.0=py_0
  - pygments=2.6.1=py_0
  - pyjwt=1.7.1=py_0
  - pykdtree=1.3.1=py37hc1659b7_1002
  - pyopenssl=19.1.0=py_1
  - pyparsing=2.4.6=py_0
  - pyproj=2.5.0=py37he3cd046_1
  - pyqt=5.12.3=py37hcca6a23_1
  - pyrsistent=0.15.7=py37h516909a_0
  - pyshp=2.1.0=py_0
  - pysocks=1.7.1=py37_0
  - pytest=5.3.5=py37_1
  - python=3.7.6=h357f687_4_cpython
  - python-dateutil=2.8.1=py_0
  - python-editor=1.0.4=py_0
  - python-json-logger=0.1.11=py_0
  - python_abi=3.7=1_cp37m
  - pytz=2019.3=py_0
  - pyzmq=19.0.0=py37h1768529_0
  - qt=5.12.5=hd8c4c69_1
  - qtconsole=4.7.1=py_0
  - qtpy=1.9.0=py_0
  - rasterio=1.1.3=py37h900e953_0
  - readline=8.0=hf8c457e_0
  - regionmask=0.5.0=py_1
  - requests=2.23.0=py37_0
  - rtree=0.9.4=py37h7b0cdae_0
  - ruamel.yaml=0.16.6=py37h516909a_0
  - ruamel.yaml.clib=0.2.0=py37h516909a_0
  - scipy=1.4.1=py37h921218d_0
  - send2trash=1.5.0=py_0
  - setuptools=46.0.0=py37_0
  - shapely=1.7.0=py37h5d51c17_0
  - six=1.14.0=py37_0
  - smmap=3.0.1=py_0
  - snuggs=1.4.7=py_0
  - soupsieve=1.9.4=py37_0
  - sqlalchemy=1.3.13=py37h516909a_0
  - sqlite=3.30.1=hcee41ef_0
  - tbb=2018.0.5=h2d50403_0
  - terminado=0.8.3=py37_0
  - testpath=0.4.4=py_0
  - threddsclient=0.4.2=py_0
  - tiledb=1.7.0=hcde45ca_2
  - tk=8.6.10=hed695b0_0
  - tornado=6.0.4=py37h516909a_0
  - traitlets=4.3.3=py37_0
  - traittypes=0.2.1=py_1
  - tzcode=2019a=h516909a_1002
  - udunits2=2.2.27.6=h4e0c4b3_1001
  - urllib3=1.25.7=py37_0
  - vcs=8.2=py_2
  - voila=0.1.21=py_0
  - vtk-cdat=8.2.0.8.2=py37_mesalibhead77ed_0
  - wcwidth=0.1.8=py_0
  - webencodings=0.5.1=py_1
  - webob=1.8.6=py_0
  - wget=1.20.1=h22169c7_0
  - wheel=0.34.2=py_1
  - widgetsnbextension=3.5.1=py37_0
  - wrapt=1.12.1=py37h516909a_0
  - x264=1!152.20180806=h14c3975_0
  - xarray=0.15.0=py_0
  - xerces-c=3.2.2=h8412b87_1004
  - xorg-kbproto=1.0.7=h14c3975_1002
  - xorg-libice=1.0.10=h516909a_0
  - xorg-libsm=1.2.3=h84519dc_1000
  - xorg-libx11=1.6.9=h516909a_0
  - xorg-libxau=1.0.9=h14c3975_0
  - xorg-libxdmcp=1.1.3=h516909a_0
  - xorg-libxext=1.3.4=h516909a_0
  - xorg-libxrender=0.9.10=h516909a_1002
  - xorg-renderproto=0.11.1=h14c3975_1002
  - xorg-xextproto=7.3.0=h14c3975_1002
  - xorg-xproto=7.0.31=h14c3975_1007
  - xz=5.2.4=h14c3975_1001
  - zeromq=4.3.2=he1b5a44_2
  - zipp=3.1.0=py_0
  - zlib=1.2.11=h516909a_1006
  - zstd=1.4.4=h3b9ef0a_1
  - pip:
    - astunparse==1.6.3
    - bokeh==2.0.0
    - bottleneck==1.3.2
    - cdms2==3.1.4
    - cloudpickle==1.3.0
    - colour==0.1.5
    - dask==2.12.0
    - distributed==2.12.0
    - fsspec==0.6.2
    - geojson==2.5.0
    - heapdict==1.0.1
    - joblib==0.14.1
    - locket==0.2.0
    - markdown==3.2.1
    - mpld3==0.3
    - msgpack==1.0.0
    - partd==1.1.0
    - pint==0.11
    - pixiedust==1.1.18
    - psutil==5.7.0
    - pyqt5-sip==4.19.18
    - pyqtwebengine==5.12.1
    - pyyaml==5.3
    - regrid2==3.1.4
    - requests-magpie==0.1.1
    - salem==0.2.4
    - scikit-learn==0.22.2.post1
    - sortedcontainers==2.1.0
    - tblib==1.6.0
    - toolz==0.10.0
    - typing-extensions==3.7.4.1
    - xclim==0.14.0
    - zict==2.0.0
prefix: /usr/local/envs/birdy
```
tlvu added a commit to bird-house/birdhouse-deploy that referenced this pull request Mar 10, 2020
… salem for Era5 Raven notebooks

See PR Ouranosinc/PAVICS-e2e-workflow-tests#36
or commit
Ouranosinc/PAVICS-e2e-workflow-tests@f916bea

jupyter_bokeh (the extension, not the package) was removed due to this issue bokeh/jupyter_bokeh#93

Era5 Raven notebook PR: Ouranosinc/raven#200

Noticeable  rather large Jupyter env changes:

```diff
<   - birdy=v0.6.5=py_0
>   - birdy=v0.6.6=py_0

<   - bokeh=1.4.0=py36_0
>     - bokeh==2.0.0  # from pip recursive dependencies (we get newer version by not explicitly get from conda !)

<   - esgf-compute-api=2.2.1=py_2
>   - esgf-compute-api=2.2.3=py_0

<   - jupyterlab=1.2.5=py_0
>   - jupyterlab=2.0.1=py_0

<   - owslib=0.19.0=py_2
>   - owslib=0.19.1=py_0

<   - pandas=0.25.3=py36hb3f55d8_0
>   - pandas=1.0.1=py37hb3f55d8_0

<   - python=3.6.7=h357f687_1006
>   - python=3.7.6=h357f687_4_cpython

>   - regionmask=0.5.0=py_1

<   - xarray=0.14.1=py_1
>   - xarray=0.15.0=py_0

<     - dask==2.9.2
>     - dask==2.12.0

>     - salem==0.2.4

<     - xclim==0.13.0
>     - xclim==0.14.0
```

Full conda env export Diff:
[200120-200309-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4309639/200120-200309-conda-env-export.diff.txt)

Full new conda env export:
[200309-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4309640/200309-conda-env-export.yml.txt)
@huard huard merged commit 6259bb9 into master Mar 10, 2020
tlvu added a commit to bird-house/birdhouse-deploy that referenced this pull request Mar 10, 2020
tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this pull request Mar 13, 2020
jupyter docker: upgrade birdy, pin pandas and geopandas for Era5 Raven notebooks

This is to productize all the manual `pip install --user` we had to do to demo Era5 Raven notebook PR: Ouranosinc/raven#200

Latest birdy 0.6.9 is working flawlessly with existing old Finch 0.2.7 and existing recently released Raven 0.10.0.  See Jenkins run http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/install-birdy-from-source/9/console for Finch testing.  Raven test done manually.

So I'll release this Jupyter env so at least the Raven notebooks works without manually hacking the Jupyter env.  Old Finch is not broken anymore so no regression there.

birdy updated for Raven, then for Finch.

Pinning of pandas and geopandas is due to salem not supporting geopandas >= 0.7 as in this issue fmaussion/salem#152 so can unpin once there are new release of salem.

scikit-image was also need by Raven notebook `gridded_data_subset.ipynb`.

The ipyleaflet marker do not display in Raven `Region_selection.ipynb` but can be moved and its coordinate can be extracted.

Not sure why, maybe relate to jupyter-widgets/ipyleaflet#91.  Possibly also due to the freshly released jupyterlab-2.0 but downgrading jupyterlab means downgrading all the other jupyter extensions we used, too much work to just fix one broken extension so did not follow that road.

The marker was working fine in the previous image `pavics/workflow-tests:200120` which had jupyterlab-1.2.5 which further support the theory that jupyterlab-2.0 broke it.

Noticeable Jupyter env changes:

```diff
<   - birdy=v0.6.6=py_0
>     - birdhouse-birdy==0.6.9  (install from Pypi instead of Conda to fix DockerHub failure !)

<   - geopandas=0.7.0=py_1
>   - geopandas=0.6.2=py_0 

<   - pandas=1.0.1=py37hb3f55d8_0                                                                                                                     
>   - pandas=0.25.3=py37hb3f55d8_0

>   - scikit-image=0.16.2=py37hb3f55d8_0
```

Full conda env export Diff:
[200309-200310-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4315141/200309-200310-conda-env-export.diff.txt)

[200310-200312-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4326073/200310-200312-conda-env-export.diff.txt)

[200309-200312-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4326058/200309-200312-conda-env-export.diff.txt)

```diff
15d14
<   - birdy=v0.6.6=py_0
18d16
<   - boltons=20.0.0=py_0
28c26
<   - certifi=2019.11.28=py37_0
---
>   - certifi=2019.11.28=py37hc8dfbb8_1
36a35
>   - cloudpickle=1.3.0=py_0
39c38
<   - coverage=5.0.3=py37h516909a_0
---
>   - coverage=5.0.3=py37h8f50634_1
42a42,43
>   - cytoolz=0.10.1=py37h516909a_0
>   - dask-core=2.12.0=py_0
60d60
<   - funcsigs=1.0.2=py_3
65,66c65,66
<   - geopandas=0.7.0=py_1
<   - geos=3.8.0=he1b5a44_0
---
>   - geopandas=0.6.2=py_0
>   - geos=3.8.0=he1b5a44_1
81a82
>   - imageio=2.8.0=py_0
97c98
<   - jupyter_console=6.0.0=py_0
---
>   - jupyter_console=6.1.0=py_0
106,107c107,108
<   - kealib=1.4.10=h58c409b_1005
<   - kiwisolver=1.1.0=py37hc9558a2_0
---
>   - kealib=1.4.12=hec59c27_0
>   - kiwisolver=1.1.0=py37h99015e2_1
138c139
<   - libspatialite=4.3.0a=hd318ce7_1035
---
>   - libspatialite=4.3.0a=hd318ce7_1036
153c154
<   - markupsafe=1.1.1=py37h516909a_0
---
>   - markupsafe=1.1.1=py37h8f50634_1
162c163
<   - nbdime=1.1.0=py37_0
---
>   - nbdime=2.0.0=py37hc8dfbb8_0
168a170
>   - networkx=2.4=py_1
173c175
<   - numpy=1.18.1=py37h95a1406_0
---
>   - numpy=1.18.1=py37h8960a57_0
183c185
<   - pandas=1.0.1=py37hb3f55d8_0
---
>   - pandas=0.25.3=py37hb3f55d8_0
223a226
>   - pywavelets=1.1.1=py37hc1659b7_0
234a238
>   - scikit-image=0.16.2=py37hb3f55d8_0
237,239c241,243
<   - setuptools=46.0.0=py37_0
<   - shapely=1.7.0=py37h5d51c17_0
<   - six=1.14.0=py37_0
---
>   - setuptools=46.0.0=py37hc8dfbb8_2
>   - shapely=1.7.0=py37hb106bac_1
>   - six=1.14.0=py_1
243c247
<   - sqlalchemy=1.3.13=py37h516909a_0
---
>   - sqlalchemy=1.3.15=py37h8f50634_1
251,252c255,257
<   - tornado=6.0.4=py37h516909a_0
<   - traitlets=4.3.3=py37_0
---
>   - toolz=0.10.0=py_0
>   - tornado=6.0.4=py37h8f50634_1
>   - traitlets=4.3.3=py37hc8dfbb8_1
266d270
<   - wrapt=1.12.1=py37h516909a_0
287a292
>     - birdhouse-birdy==0.6.9
288a294
>     - boltons==20.0.0
291d296
<     - cloudpickle==1.3.0
293d297
<     - dask==2.12.0
295a300
>     - funcsigs==1.0.2
316d320
<     - toolz==0.10.0
317a322
>     - wrapt==1.12.1
```

Full new conda env export:
[200310-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4315142/200310-conda-env-export.yml.txt)

[200312-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/4326061/200312-conda-env-export.yml.txt)

```
name: birdy
channels:
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=0_gnu
  - affine=2.3.0=py_0
  - alembic=1.4.1=py_0
  - async_generator=1.10=py_0
  - attrs=19.3.0=py_0
  - backcall=0.1.0=py_0
  - beautifulsoup4=4.8.2=py37_0
  - bleach=3.1.1=py_0
  - blinker=1.4=py_1
  - boost-cpp=1.72.0=h8e57a91_0
  - branca=0.3.1=py_0
  - bzip2=1.0.8=h516909a_2
  - ca-certificates=2019.11.28=hecc5488_0
  - cairo=1.16.0=hfb77d84_1002
  - cartopy=0.17.0=py37h39d8c00_1011
  - cdat_info=8.2=py_7
  - cdtime=3.1.3=py37h1ac8016_0
  - cdutil=8.2=py_2
  - certifi=2019.11.28=py37hc8dfbb8_1
  - certipy=0.1.3=py_0
  - cffi=1.14.0=py37hd463f26_0
  - cfitsio=3.470=hb60a0a2_2
  - cftime=1.0.4.2=py37hc1659b7_0
  - chardet=3.0.4=py37_1003
  - click=7.0=py_0
  - click-plugins=1.1.1=py_0
  - cligj=0.5.0=py_0
  - cloudpickle=1.3.0=py_0
  - colorama=0.4.3=py_0
  - configurable-http-proxy=4.2.0=node13_he01fd0c_2
  - coverage=5.0.3=py37h8f50634_1
  - cryptography=2.8=py37h72c5cf5_1
  - curl=7.68.0=hf8cf82a_0
  - cycler=0.10.0=py_2
  - cytoolz=0.10.1=py37h516909a_0
  - dask-core=2.12.0=py_0
  - dbus=1.13.6=he372182_0
  - decorator=4.4.2=py_0
  - defusedxml=0.6.0=py_0
  - descartes=1.1.0=py_4
  - distarray=2.12.2=py_1
  - docopt=0.6.2=py_1
  - dv3d=8.2=py_0
  - entrypoints=0.3=py37_1000
  - esgf-compute-api=2.2.3=py_0
  - esmf=8.0.0=nompi_he6d0a24_5
  - esmpy=8.0.0=nompi_py37hf0e99fa_1
  - expat=2.2.9=he1b5a44_2
  - ffmpeg=4.2=h167e202_0
  - fiona=1.8.13=py37h900e953_0
  - fontconfig=2.13.1=h86ecdb6_1001
  - freetype=2.10.0=he983fc9_1
  - freexl=1.0.5=h14c3975_1002
  - future=0.18.2=py37_0
  - g2clib=1.6.0=hf3f1b0b_9
  - gdal=3.0.4=py37hbb6b9fb_1
  - genutil=8.2=py37hc1659b7_3
  - geopandas=0.6.2=py_0
  - geos=3.8.0=he1b5a44_1
  - geotiff=1.5.1=hcbe54f9_9
  - gettext=0.19.8.1=hc5be6a0_1002
  - ghostscript=9.22=hf484d3e_1001
  - giflib=5.2.1=h516909a_2
  - gitdb=4.0.2=py_0
  - gitpython=3.1.0=py_0
  - glib=2.58.3=py37h6f030ca_1002
  - gmp=6.2.0=he1b5a44_2
  - gnutls=3.6.5=hd3a4fd2_1002
  - gst-plugins-base=1.14.5=h0935bb2_2
  - gstreamer=1.14.5=h36ae1b5_2
  - hdf4=4.2.13=hf30be14_1003
  - hdf5=1.10.5=nompi_h3c11f04_1104
  - icu=64.2=he1b5a44_1
  - idna=2.9=py_1
  - imageio=2.8.0=py_0
  - importlib_metadata=1.5.0=py37_0
  - ipykernel=5.1.4=py37h5ca1d4c_0
  - ipyleaflet=0.12.3=py_1
  - ipython=7.13.0=py37h5ca1d4c_0
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.5.1=py_0
  - jasper=1.900.1=h07fcdf6_1006
  - jedi=0.16.0=py37_0
  - jinja2=2.11.1=py_0
  - jpeg=9c=h14c3975_1001
  - json-c=0.13.1=h14c3975_1001
  - json5=0.9.0=py_0
  - jsonschema=3.2.0=py37_0
  - jupyter=1.0.0=py_2
  - jupyter_client=6.0.0=py_0
  - jupyter_console=6.1.0=py_0
  - jupyter_core=4.6.3=py37_0
  - jupyter_server=0.1.1=py37_0
  - jupyter_telemetry=0.0.5=py_0
  - jupyterhub=1.1.0=py37_2
  - jupyterhub-base=1.1.0=py37_2
  - jupyterlab=2.0.1=py_0
  - jupyterlab_pygments=0.1.0=py_0
  - jupyterlab_server=1.0.7=py_0
  - kealib=1.4.12=hec59c27_0
  - kiwisolver=1.1.0=py37h99015e2_1
  - krb5=1.16.4=h2fd8d38_0
  - lame=3.100=h14c3975_1001
  - lazy-object-proxy=1.4.3=py37h516909a_1
  - ld_impl_linux-64=2.33.1=h53a641e_8
  - libblas=3.8.0=11_openblas
  - libcblas=3.8.0=11_openblas
  - libcdms=3.1.2=ha54dda3_8
  - libcf=1.0.3=py37hdee1361_5
  - libclang=9.0.1=default_hde54327_0
  - libcurl=7.68.0=hda55be3_0
  - libdap4=3.20.4=hd3bb157_0
  - libdrs=3.1.2=h9b7ed86_9
  - libdrs_f=3.1.2=h322d3c2_5
  - libedit=3.1.20170329=hf8c457e_1001
  - libffi=3.2.1=he1b5a44_1006
  - libgcc-ng=9.2.0=h24d8f2e_2
  - libgdal=3.0.4=h022d3c0_1
  - libgfortran-ng=7.3.0=hdf63c60_5
  - libgomp=9.2.0=h24d8f2e_2
  - libiconv=1.15=h516909a_1005
  - libidn2=2.3.0=h516909a_0
  - libkml=1.3.0=hb574062_1011
  - liblapack=3.8.0=11_openblas
  - libllvm9=9.0.1=hc9558a2_0
  - libnetcdf=4.7.3=nompi_h9f9fd6a_101
  - libopenblas=0.3.6=h6e990d7_6
  - libpng=1.6.37=hed695b0_0
  - libpq=12.2=hae5116b_0
  - libsodium=1.0.17=h516909a_0
  - libspatialindex=1.9.3=he1b5a44_3
  - libspatialite=4.3.0a=hd318ce7_1036
  - libssh2=1.8.2=h22169c7_2
  - libstdcxx-ng=9.2.0=hdf63c60_2
  - libtiff=4.1.0=hc3755c2_3
  - libunistring=0.9.10=h14c3975_0
  - libuuid=2.32.1=h14c3975_1000
  - libuv=1.34.0=h516909a_0
  - libwebp=1.0.2=h56121f0_5
  - libxcb=1.13=h14c3975_1002
  - libxkbcommon=0.10.0=he1b5a44_0
  - libxml2=2.9.10=hee79883_0
  - libxslt=1.1.33=h31b3aaa_0
  - lxml=4.5.0=py37h7ec2d77_0
  - lz4-c=1.8.3=he1b5a44_1001
  - mako=1.1.0=py_0
  - markupsafe=1.1.1=py37h8f50634_1
  - matplotlib=3.2.0=1
  - matplotlib-base=3.2.0=py37h250f245_1
  - mechanicalsoup=0.12.0=py_0
  - mesalib=18.3.1=h590aaf7_0
  - mistune=0.8.4=py37h516909a_1000
  - more-itertools=8.2.0=py_0
  - munch=2.5.0=py_0
  - nbconvert=5.6.1=py37_0
  - nbdime=2.0.0=py37hc8dfbb8_0
  - nbformat=5.0.4=py_0
  - nbval=0.9.5=py_0
  - ncurses=6.1=hf484d3e_1002
  - netcdf-fortran=4.5.2=nompi_h09cde99_103
  - netcdf4=1.5.3=nompi_py37hd35fb8e_102
  - nettle=3.4.1=h1bed415_1002
  - networkx=2.4=py_1
  - nodejs=13.9.0=h10a4023_0
  - notebook=6.0.3=py37_0
  - nspr=4.25=he1b5a44_0
  - nss=3.47=he751ad9_0
  - numpy=1.18.1=py37h8960a57_0
  - oauthlib=3.0.1=py_0
  - olefile=0.46=py_0
  - openblas=0.3.6=h6e990d7_6
  - openh264=1.8.0=hdbcaa40_1000
  - openjpeg=2.3.1=h981e76c_3
  - openssl=1.1.1d=h516909a_0
  - owslib=0.19.1=py_0
  - packaging=20.1=py_0
  - pamela=1.0.0=py_0
  - pandas=0.25.3=py37hb3f55d8_0
  - pandoc=2.9.2=0
  - pandocfilters=1.4.2=py_1
  - parso=0.6.2=py_0
  - pcre=8.44=he1b5a44_0
  - pexpect=4.8.0=py37_0
  - pickleshare=0.7.5=py37_1000
  - pillow=7.0.0=py37hefe7db6_0
  - pip=20.0.2=py_2
  - pixman=0.38.0=h516909a_1003
  - pluggy=0.13.0=py37_0
  - poppler=0.67.0=h14e79db_8
  - poppler-data=0.4.9=1
  - postgresql=12.2=hf1211e9_0
  - proj=6.3.1=hc80f0dc_1
  - prometheus_client=0.7.1=py_0
  - prompt_toolkit=2.0.10=py_0
  - pthread-stubs=0.4=h14c3975_1001
  - ptyprocess=0.6.0=py_1001
  - py=1.8.1=py_0
  - pycparser=2.20=py_0
  - pycurl=7.43.0.5=py37h16ce93b_0
  - pydap=3.2.2=py37_1000
  - pyepsg=0.4.0=py_0
  - pygments=2.6.1=py_0
  - pyjwt=1.7.1=py_0
  - pykdtree=1.3.1=py37hc1659b7_1002
  - pyopenssl=19.1.0=py_1
  - pyparsing=2.4.6=py_0
  - pyproj=2.5.0=py37he3cd046_1
  - pyqt=5.12.3=py37hcca6a23_1
  - pyrsistent=0.15.7=py37h516909a_0
  - pyshp=2.1.0=py_0
  - pysocks=1.7.1=py37_0
  - pytest=5.3.5=py37_1
  - python=3.7.6=h357f687_4_cpython
  - python-dateutil=2.8.1=py_0
  - python-editor=1.0.4=py_0
  - python-json-logger=0.1.11=py_0
  - python_abi=3.7=1_cp37m
  - pytz=2019.3=py_0
  - pywavelets=1.1.1=py37hc1659b7_0
  - pyzmq=19.0.0=py37h1768529_0
  - qt=5.12.5=hd8c4c69_1
  - qtconsole=4.7.1=py_0
  - qtpy=1.9.0=py_0
  - rasterio=1.1.3=py37h900e953_0
  - readline=8.0=hf8c457e_0
  - regionmask=0.5.0=py_1
  - requests=2.23.0=py37_0
  - rtree=0.9.4=py37h7b0cdae_0
  - ruamel.yaml=0.16.6=py37h516909a_0
  - ruamel.yaml.clib=0.2.0=py37h516909a_0
  - scikit-image=0.16.2=py37hb3f55d8_0
  - scipy=1.4.1=py37h921218d_0
  - send2trash=1.5.0=py_0
  - setuptools=46.0.0=py37hc8dfbb8_2
  - shapely=1.7.0=py37hb106bac_1
  - six=1.14.0=py_1
  - smmap=3.0.1=py_0
  - snuggs=1.4.7=py_0
  - soupsieve=1.9.4=py37_0
  - sqlalchemy=1.3.15=py37h8f50634_1
  - sqlite=3.30.1=hcee41ef_0
  - tbb=2018.0.5=h2d50403_0
  - terminado=0.8.3=py37_0
  - testpath=0.4.4=py_0
  - threddsclient=0.4.2=py_0
  - tiledb=1.7.0=hcde45ca_2
  - tk=8.6.10=hed695b0_0
  - toolz=0.10.0=py_0
  - tornado=6.0.4=py37h8f50634_1
  - traitlets=4.3.3=py37hc8dfbb8_1
  - traittypes=0.2.1=py_1
  - tzcode=2019a=h516909a_1002
  - udunits2=2.2.27.6=h4e0c4b3_1001
  - urllib3=1.25.7=py37_0
  - vcs=8.2=py_2
  - voila=0.1.21=py_0
  - vtk-cdat=8.2.0.8.2=py37_mesalibhead77ed_0
  - wcwidth=0.1.8=py_0
  - webencodings=0.5.1=py_1
  - webob=1.8.6=py_0
  - wget=1.20.1=h22169c7_0
  - wheel=0.34.2=py_1
  - widgetsnbextension=3.5.1=py37_0
  - x264=1!152.20180806=h14c3975_0
  - xarray=0.15.0=py_0
  - xerces-c=3.2.2=h8412b87_1004
  - xorg-kbproto=1.0.7=h14c3975_1002
  - xorg-libice=1.0.10=h516909a_0
  - xorg-libsm=1.2.3=h84519dc_1000
  - xorg-libx11=1.6.9=h516909a_0
  - xorg-libxau=1.0.9=h14c3975_0
  - xorg-libxdmcp=1.1.3=h516909a_0
  - xorg-libxext=1.3.4=h516909a_0
  - xorg-libxrender=0.9.10=h516909a_1002
  - xorg-renderproto=0.11.1=h14c3975_1002
  - xorg-xextproto=7.3.0=h14c3975_1002
  - xorg-xproto=7.0.31=h14c3975_1007
  - xz=5.2.4=h14c3975_1001
  - zeromq=4.3.2=he1b5a44_2
  - zipp=3.1.0=py_0
  - zlib=1.2.11=h516909a_1006
  - zstd=1.4.4=h3b9ef0a_1
  - pip:
    - astunparse==1.6.3
    - birdhouse-birdy==0.6.9
    - bokeh==2.0.0
    - boltons==20.0.0
    - bottleneck==1.3.2
    - cdms2==3.1.4
    - colour==0.1.5
    - distributed==2.12.0
    - fsspec==0.6.2
    - funcsigs==1.0.2
    - geojson==2.5.0
    - heapdict==1.0.1
    - joblib==0.14.1
    - locket==0.2.0
    - markdown==3.2.1
    - mpld3==0.3
    - msgpack==1.0.0
    - partd==1.1.0
    - pint==0.11
    - pixiedust==1.1.18
    - psutil==5.7.0
    - pyqt5-sip==4.19.18
    - pyqtwebengine==5.12.1
    - pyyaml==5.3
    - regrid2==3.1.4
    - requests-magpie==0.1.1
    - salem==0.2.4
    - scikit-learn==0.22.2.post1
    - sortedcontainers==2.1.0
    - tblib==1.6.0
    - typing-extensions==3.7.4.1
    - wrapt==1.12.1
    - xclim==0.14.0
    - zict==2.0.0
prefix: /usr/local/envs/birdy
```
Zeitsperre pushed a commit that referenced this pull request Aug 17, 2023
* Added notebooks showing how to work with ERA5, NRCan and CANOPEX data
* Using NcML links for ERA5 and NRCan
* bumpversion

Co-authored-by: David Huard <huard.david@ouranos.ca>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants