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

ClimateDataAnalysis-5Visualization.ipynb: update for new Jupyter env #30

Merged
merged 1 commit into from
Jul 29, 2021

Conversation

tlvu
Copy link
Collaborator

@tlvu tlvu commented Jul 28, 2021

New Jupyter env in Ouranosinc/PAVICS-e2e-workflow-tests#85.

Funny that I have to add NBVAL_IGNORE_OUTPUT to a cell that has empty output!

Error fixed:

  _ PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb::Cell 3 _
  Notebook cell execution failed
  Cell 3: Cell outputs differ

  Input:
  # Start with 30 year means from mapping step
  # Calculate weighted average for each region as in last step
  with xr.set_options(keep_attrs=True):
      reg30y_sims = (d30yAvg * weight_masks).sum(dim=['lat','lon'])
      reg30y_ens = xens.ensemble_percentiles(reg30y_sims)
      # make the 'horizon' field the index of our table. rename the 'geom' field to 'region'
      df = reg30y_ens.swap_dims(dict(year='horizon')).rename({'geom':'region'}).to_dataframe()
  df.hvplot.table(title='Summary table',fit_columns=False, sortable=True, selectable=True, width=2000)

  Traceback:
   mismatch 'text/plain'

   assert reference_output == test_output failed:

    ':Table   [ho...ve_delta_p90]' == ':Table   [rc...ve_delta_p90]'
    Skipping 227 identical trailing characters in diff, use -v to show
    - :Table   [rcp,horizon,season,region,tx_mea
    + :Table   [horizon,rcp,region,season,tx_mea

New Jupyter env in Ouranosinc/PAVICS-e2e-workflow-tests#85.

Funny that I have to add NBVAL_IGNORE_OUTPUT to a cell that has empty output!

Error fixed:
```
  _ PAVICS-landing-master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb::Cell 3 _
  Notebook cell execution failed
  Cell 3: Cell outputs differ

  Input:
  # Start with 30 year means from mapping step
  # Calculate weighted average for each region as in last step
  with xr.set_options(keep_attrs=True):
      reg30y_sims = (d30yAvg * weight_masks).sum(dim=['lat','lon'])
      reg30y_ens = xens.ensemble_percentiles(reg30y_sims)
      # make the 'horizon' field the index of our table. rename the 'geom' field to 'region'
      df = reg30y_ens.swap_dims(dict(year='horizon')).rename({'geom':'region'}).to_dataframe()
  df.hvplot.table(title='Summary table',fit_columns=False, sortable=True, selectable=True, width=2000)

  Traceback:
   mismatch 'text/plain'

   assert reference_output == test_output failed:

    ':Table   [ho...ve_delta_p90]' == ':Table   [rc...ve_delta_p90]'
    Skipping 227 identical trailing characters in diff, use -v to show
    - :Table   [rcp,horizon,season,region,tx_mea
    + :Table   [horizon,rcp,region,season,tx_mea
```
@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

tlvu added a commit to Ouranosinc/PAVICS-e2e-workflow-tests that referenced this pull request Jul 29, 2021
docker: update to JupyterLab v3 and fix broken jupyterlab-system-monitor plugin

# Overview

JupyterLab v3 was available since January 2021 but we had to pin to v2 since many of the plugins we use were broken at the time for v3.

Fast forward 7 months later, only the Google Drive plugin still do not support JupyterLab v3 so we decided to drop it since it was only used by one single user (`ls -larth  /data/jupyterhub_user_data/*/.home/.jupyter/lab/user-settings/@jupyterlab/google-drive /dev/null` shows who uses it).  We have not enabled the system-wide Google Drive config due to security concern so each user had to configure it themselves separately.

Staying on JupyterLab v2 caused us the reverse problem, some plugins stopped working with v2, example the jupyterlab-system-monitor one.  That one is becoming more crucial as we have more and more users and we would like users to be aware of their resource consumptions on the system.

This PR fixes #83, the jupyterlab-system-monitor problem.

## Changes

- Update to JupyterLab v3
- Update install steps for all plugins to be compatible with JupyterLab v3
- Drop Google Drive plugin since not compatible with v3
- Fix jupyterlab-system-monitor plugin, was broken with v2
- Unpin pandas as xarray issue pydata/xarray/issues/5588 fixed
- Picked up latest RavenPy 0.7.0
- Relevant packages changes:
```diff
<   - jupyterlab=2.2.9=pyhd8ed1ab_0
>   - jupyterlab=3.1.0=pyhd8ed1ab_0

<   - jupyterlab_server=1.2.0=py_0
>   - jupyterlab_server=2.6.1=pyhd8ed1ab_0

<   - jupyter-archive=2.2.0=pyhd8ed1ab_0
>   - jupyter-archive=3.0.1=pyhd8ed1ab_0

<   - jupyter_bokeh=2.0.4=pyhd8ed1ab_0
>   - jupyter_bokeh=3.0.2=pyhd8ed1ab_0

<   - jupyterlab-git=0.24.0=pyhd8ed1ab_0
>   - jupyterlab-git=0.31.0=pyhd8ed1ab_0

<   - nbdime=2.1.0=py_0
>   - nbdime=3.1.0=pyhd8ed1ab_0

# Pip to Conda package
<     - nbresuse==0.4.0  
>   - nbresuse=0.4.0=pyhd8ed1ab_0

>   - nbclassic=0.3.1=pyhd8ed1ab_1

>   - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_1
>   - jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
>   - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2 
>     - jupyterlab-logout=0.5.0

<   - jupyter_conda=5.1.1=hd8ed1ab_0

<   - ravenpy=0.6.0=pyh1bb2064_2
>   - ravenpy=0.7.0=pyh1bb2064_0 

<   - pandas=1.2.5=py37h219a48f_0
>   - pandas=1.3.1=py37h219a48f_0

<   - xarray=0.18.2=pyhd8ed1ab_0
>   - xarray=0.19.0=pyhd8ed1ab_1

<   - dask=2021.7.0=pyhd8ed1ab_0
>   - dask=2021.7.1=pyhd8ed1ab_0

<   - regionmask=0.6.2=pyhd8ed1ab_0
>   - regionmask=0.7.0=pyhd8ed1ab_0
```

## Additional Information

Screenshot showing differences between v2 vs v3 and the working jupyterlab-system-monitor plugin.

![Screenshot from 2021-07-28 14-10-33](https://user-images.githubusercontent.com/11966697/127380391-7f3a6ad4-25c6-4a8b-ac01-8c8d9633d09c.png)

Bokeh and pyviz testing by running `ClimateDataAnalysis-5Visualization.ipynb` on the old and new Jupyter env and manually comparing the graphics generated.  They look similar.

Jenkins build all passed https://daccs-jenkins.crim.ca/job/PAVICS-e2e-workflow-tests/job/update-to-jupyterlab-v3/7/console (CRIM Jenkins)
Notebooks fixes required for the above passing Jenkins build:
* Ouranosinc/pavics-sdi#224
* bird-house/finch#196
* Ouranosinc/PAVICS-landing#30

Jenkins build for Raven nb, all passed: http://jenkins.ouranos.ca/job/PAVICS-e2e-workflow-tests/job/update-to-jupyterlab-v3/5/console

Matching PR to deploy this new Jupyter env to PAVICS: bird-house/birdhouse-deploy#185

Full diff of `conda env export`:
[210723-210728-conda-env-export.diff.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/6896271/210723-210728-conda-env-export.diff.txt)
```diff
20a21
>   - babel=2.9.1=pyh44b312d_0
71c72
<   - curl=7.77.0=hea6ffbf_0
---
>   - curl=7.78.0=hea6ffbf_0
74,76c75,77
<   - dash=1.20.0=pyhd8ed1ab_0
<   - dash-core-components=1.16.0=pyhd8ed1ab_0
<   - dash-html-components=1.1.3=pyhd8ed1ab_0
---
>   - dash=1.21.0=pyhd8ed1ab_0
>   - dash-core-components=1.17.1=pyhd8ed1ab_0
>   - dash-html-components=1.1.4=pyhd8ed1ab_0
78,80c79,81
<   - dash-table=4.11.3=pyhd8ed1ab_0
<   - dask=2021.7.0=pyhd8ed1ab_0
<   - dask-core=2021.7.0=pyhd8ed1ab_0
---
>   - dash-table=4.12.0=pyhd8ed1ab_0
>   - dask=2021.7.1=pyhd8ed1ab_0
>   - dask-core=2021.7.1=pyhd8ed1ab_0
85c86
<   - debugpy=1.4.0=py37hcd2ae1e_0
---
>   - debugpy=1.4.1=py37hcd2ae1e_0
90c91
<   - distributed=2021.7.0=py37h89c1867_0
---
>   - distributed=2021.7.1=py37h89c1867_0
127c128
<   - gitpython=3.1.19=pyhd8ed1ab_0
---
>   - gitpython=3.1.20=pyhd8ed1ab_0
138a140
>   - haversine=2.3.1=pyhd8ed1ab_0
173c175
<   - jupyter-archive=2.2.0=pyhd8ed1ab_0
---
>   - jupyter-archive=3.0.1=pyhd8ed1ab_0
175c177,179
<   - jupyter_bokeh=2.0.4=pyhd8ed1ab_0
---
>   - jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
>   - jupyter-server-mathjax=0.2.3=pyhd8ed1ab_0
>   - jupyter_bokeh=3.0.2=pyhd8ed1ab_0
177d180
<   - jupyter_conda=5.1.1=hd8ed1ab_0
184,185c187,190
<   - jupyterlab=2.2.9=pyhd8ed1ab_0
<   - jupyterlab-git=0.24.0=pyhd8ed1ab_0
---
>   - jupyterlab=3.1.0=pyhd8ed1ab_0
>   - jupyterlab-git=0.31.0=pyhd8ed1ab_0
>   - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_1
>   - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2
187c192
<   - jupyterlab_server=1.2.0=py_0
---
>   - jupyterlab_server=2.6.1=pyhd8ed1ab_0
193c198
<   - krb5=1.19.1=hcc1bbae_0
---
>   - krb5=1.19.2=hcc1bbae_0
197c202
<   - ld_impl_linux-64=2.36.1=hea4e1c9_1
---
>   - ld_impl_linux-64=2.36.1=hea4e1c9_2
208c213
<   - libcurl=7.77.0=h2574ce0_0
---
>   - libcurl=7.78.0=h2574ce0_0
217c222
<   - libgcc-ng=11.1.0=hc902ee8_0
---
>   - libgcc-ng=11.1.0=hc902ee8_2
222c227
<   - libgomp=11.1.0=hc902ee8_0
---
>   - libgomp=11.1.0=hc902ee8_2
242c247
<   - libstdcxx-ng=11.1.0=h56837e0_0
---
>   - libstdcxx-ng=11.1.0=h56837e0_2
260c265
<   - mapclassify=2.4.2=pyhd8ed1ab_0
---
>   - mapclassify=2.4.3=pyhd8ed1ab_0
278a284
>   - nbclassic=0.3.1=pyhd8ed1ab_1
281c287
<   - nbdime=2.1.0=py_0
---
>   - nbdime=3.1.0=pyhd8ed1ab_0
282a289
>   - nbresuse=0.4.0=pyhd8ed1ab_0
308c315
<   - pandas=1.2.5=py37h219a48f_0
---
>   - pandas=1.3.1=py37h219a48f_0
321c328
<   - pip=21.1.3=pyhd8ed1ab_0
---
>   - pip=21.2.1=pyhd8ed1ab_0
380c387
<   - ravenpy=0.6.0=pyh1bb2064_2
---
>   - ravenpy=0.7.0=pyh1bb2064_0
382c389
<   - regionmask=0.6.2=pyhd8ed1ab_0
---
>   - regionmask=0.7.0=pyhd8ed1ab_0
444c451
<   - xarray=0.18.2=pyhd8ed1ab_0
---
>   - xarray=0.19.0=pyhd8ed1ab_1
481a489
>     - jupyterlab-logout==0.5.0
483d490
<     - nbresuse==0.4.0
```

Full new `conda env export`:
[210728-conda-env-export.yml.txt](https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/files/6896274/210728-conda-env-export.yml.txt)
```
name: birdy
channels:
  - cdat
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=1_gnu
  - affine=2.3.0=py_0
  - aiohttp=3.7.4.post0=py37h5e8e339_0
  - alembic=1.6.5=pyhd8ed1ab_0
  - alsa-lib=1.2.3=h516909a_0
  - ansi2html=1.6.0=py37h89c1867_1
  - anyio=3.3.0=py37h89c1867_0
  - appdirs=1.4.4=pyh9f0ad1d_0
  - argon2-cffi=20.1.0=py37h5e8e339_2
  - asciitree=0.3.3=py_2
  - async-timeout=3.0.1=py_1000
  - async_generator=1.10=py_0
  - attrs=21.2.0=pyhd8ed1ab_0
  - babel=2.9.1=pyh44b312d_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=py_2
  - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
  - beautifulsoup4=4.9.3=pyhb0f4dca_0
  - birdy=v0.8.0=pyh6c4a22f_1
  - bleach=3.3.1=pyhd8ed1ab_0
  - blinker=1.4=py_1
  - blosc=1.21.0=h9c3ff4c_0
  - bokeh=2.3.3=py37h89c1867_0
  - boltons=21.0.0=pyhd8ed1ab_0
  - boost-cpp=1.74.0=hc6e9bd1_3
  - bottleneck=1.3.2=py37h902c9e0_3
  - branca=0.4.2=pyhd8ed1ab_0
  - brotli=1.0.9=h7f98852_5
  - brotli-bin=1.0.9=h7f98852_5
  - brotli-python=1.0.9=py37hcd2ae1e_5
  - brotlipy=0.7.0=py37h5e8e339_1001
  - brunsli=0.1=h9c3ff4c_0
  - bzip2=1.0.8=h7f98852_4
  - c-ares=1.17.1=h7f98852_1
  - ca-certificates=2021.5.30=ha878542_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cachetools=4.2.2=pyhd8ed1ab_0
  - cairo=1.16.0=h6cf1ce9_1008
  - cartopy=0.19.0.post1=py37h0c48da3_0
  - cdat_info=8.2.1=pyh9f0ad1d_1
  - cdtime=3.1.4=py37h5ad02f4_2
  - cdutil=8.2.1=pyh9f0ad1d_0
  - certifi=2021.5.30=py37h89c1867_0
  - certipy=0.1.3=py_0
  - cf_xarray=0.6.0=pyh6c4a22f_0
  - cffi=1.14.6=py37hc58025e_0
  - cfgrib=0.9.9.0=pyhd8ed1ab_1
  - cfitsio=3.470=hb418390_7
  - cftime=1.5.0=py37h6f94858_0
  - chardet=4.0.0=py37h89c1867_1
  - charls=2.2.0=h9c3ff4c_0
  - charset-normalizer=2.0.0=pyhd8ed1ab_0
  - click=7.1.2=pyh9f0ad1d_0
  - click-plugins=1.1.1=py_0
  - cligj=0.7.2=pyhd8ed1ab_0
  - climpred=2.1.4=pyhd8ed1ab_0
  - clisops=0.6.5=pyh6c4a22f_0
  - cloudpickle=1.6.0=py_0
  - colorama=0.4.4=pyh9f0ad1d_0
  - colorcet=2.0.6=pyhd8ed1ab_0
  - configurable-http-proxy=4.5.0=node15_he6ea98c_0
  - coverage=5.5=py37h5e8e339_0
  - cryptography=3.4.7=py37h5d9358c_0
  - curl=7.78.0=hea6ffbf_0
  - cycler=0.10.0=py_2
  - cytoolz=0.11.0=py37h5e8e339_3
  - dash=1.21.0=pyhd8ed1ab_0
  - dash-core-components=1.17.1=pyhd8ed1ab_0
  - dash-html-components=1.1.4=pyhd8ed1ab_0
  - dash-renderer=1.9.1=pyhd8ed1ab_0
  - dash-table=4.12.0=pyhd8ed1ab_0
  - dask=2021.7.1=pyhd8ed1ab_0
  - dask-core=2021.7.1=pyhd8ed1ab_0
  - dataclasses=0.8=pyhc8e2a94_1
  - datashader=0.13.0=pyh6c4a22f_0
  - datashape=0.5.4=py_1
  - dbus=1.13.6=h48d8840_2
  - debugpy=1.4.1=py37hcd2ae1e_0
  - decorator=5.0.9=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - descartes=1.1.0=py_4
  - distarray=2.12.2=pyhd8ed1ab_2
  - distributed=2021.7.1=py37h89c1867_0
  - docopt=0.6.2=py_1
  - docrep=0.3.2=pyh44b312d_0
  - dv3d=8.2.1=pyh9f0ad1d_0
  - eccodes=2.21.0=ha0e6eb6_0
  - entrypoints=0.3=pyhd8ed1ab_1003
  - eofs=1.4.0=py_0
  - esgf-compute-api=2.3.9=0_h1234567_
  - esmf=8.1.0=nompi_hed08645_0
  - esmpy=8.1.0=nompi_py37hff16fce_0
  - expat=2.4.1=h9c3ff4c_0
  - fasteners=0.16=pyhd8ed1ab_0
  - fastprogress=1.0.0=py_0
  - ffmpeg=4.2.3=h167e202_0
  - fiona=1.8.18=py37h527b4ca_0
  - flask=2.0.1=pyhd8ed1ab_0
  - flask-compress=1.10.1=pyhd8ed1ab_0
  - fontconfig=2.13.1=hba837de_1005
  - freetype=2.10.4=h0708190_1
  - freexl=1.0.6=h7f98852_0
  - fsspec=2021.7.0=pyhd8ed1ab_0
  - funcsigs=1.0.2=py_3
  - future=0.18.2=py37h89c1867_3
  - g2clib=1.6.3=hdfa6d74_0
  - gcsfs=2021.7.0=pyhd8ed1ab_0
  - gdal=3.1.4=py37h2ec2946_8
  - genutil=8.2.1=py37h161383b_1
  - geopandas=0.9.0=pyhd8ed1ab_1
  - geopandas-base=0.9.0=pyhd8ed1ab_1
  - geos=3.9.1=h9c3ff4c_2
  - geotiff=1.6.0=h2b14fbe_4
  - geoviews=1.9.1=pyhd8ed1ab_0
  - geoviews-core=1.9.1=pyha770c72_0
  - gettext=0.19.8.1=h0b5b191_1005
  - ghostscript=9.54.0=h9c3ff4c_1
  - giflib=5.2.1=h36c2ea0_2
  - gitdb=4.0.7=pyhd8ed1ab_0
  - gitpython=3.1.20=pyhd8ed1ab_0
  - glib=2.68.3=h9c3ff4c_0
  - glib-tools=2.68.3=h9c3ff4c_0
  - gmp=6.2.1=h58526e2_0
  - gnutls=3.6.13=h85f3911_1
  - google-auth=1.33.1=pyh6c4a22f_0
  - google-auth-oauthlib=0.4.4=pyhd8ed1ab_0
  - greenlet=1.1.0=py37hcd2ae1e_0
  - gst-plugins-base=1.18.4=hf529b03_2
  - gstreamer=1.18.4=h76c114f_2
  - h5netcdf=0.11.0=pyhd8ed1ab_0
  - h5py=3.3.0=nompi_py37ha3df211_100
  - haversine=2.3.1=pyhd8ed1ab_0
  - hdf4=4.2.15=h10796ff_3
  - hdf5=1.10.6=nompi_h6a2412b_1114
  - heapdict=1.0.1=py_0
  - holoviews=1.14.5=pyhd8ed1ab_0
  - hvplot=0.7.3=pyh6c4a22f_0
  - icu=68.1=h58526e2_0
  - idna=3.1=pyhd3deb0d_0
  - imagecodecs=2021.3.31=py37haf4b6ec_0
  - imageio=2.9.0=py_0
  - importlib-metadata=4.6.1=py37h89c1867_0
  - importlib_metadata=4.6.1=hd8ed1ab_0
  - importlib_resources=5.2.0=pyhd8ed1ab_0
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - intake=0.6.2=pyhd8ed1ab_0
  - intake-esm=2021.1.15=pyhd8ed1ab_0
  - intake-geopandas=0.2.4=pyhd8ed1ab_0
  - intake-thredds=2021.6.16=pyhd8ed1ab_0
  - intake-xarray=0.5.0=pyhd8ed1ab_0
  - ipykernel=5.5.5=py37h085eea5_0
  - ipyleaflet=0.14.0=pyhd8ed1ab_1
  - ipython=7.25.0=py37h085eea5_1
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.6.3=pyhd3deb0d_0
  - itsdangerous=2.0.1=pyhd8ed1ab_0
  - jasper=1.900.1=h07fcdf6_1006
  - jedi=0.18.0=py37h89c1867_2
  - jinja2=3.0.1=pyhd8ed1ab_0
  - joblib=1.0.1=pyhd8ed1ab_0
  - jpeg=9d=h36c2ea0_0
  - json-c=0.15=h98cffda_0
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonpickle=2.0.0=pyhd8ed1ab_0
  - jsonschema=3.2.0=pyhd8ed1ab_3
  - jupyter=1.0.0=py37h89c1867_6
  - jupyter-archive=3.0.1=pyhd8ed1ab_0
  - jupyter-dash=0.4.0=pyhd8ed1ab_0
  - jupyter-resource-usage=0.5.1=pyhd8ed1ab_0
  - jupyter-server-mathjax=0.2.3=pyhd8ed1ab_0
  - jupyter_bokeh=3.0.2=pyhd8ed1ab_0
  - jupyter_client=6.1.12=pyhd8ed1ab_0
  - jupyter_console=6.4.0=pyhd8ed1ab_0
  - jupyter_core=4.7.1=py37h89c1867_0
  - jupyter_server=1.10.1=pyhd8ed1ab_0
  - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
  - jupyterhub=1.4.2=py37h89c1867_0
  - jupyterhub-base=1.4.2=py37h89c1867_0
  - jupyterlab=3.1.0=pyhd8ed1ab_0
  - jupyterlab-git=0.31.0=pyhd8ed1ab_0
  - jupyterlab-system-monitor=0.8.0=pyhd8ed1ab_1
  - jupyterlab-topbar=0.6.1=pyhd8ed1ab_2
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - jupyterlab_server=2.6.1=pyhd8ed1ab_0
  - jupyterlab_widgets=1.0.0=pyhd8ed1ab_1
  - jupytext=1.11.4=pyhd0ecf6b_0
  - jxrlib=1.1=h7f98852_2
  - kealib=1.4.14=hcc255d8_2
  - kiwisolver=1.3.1=py37h2527ec5_1
  - krb5=1.19.2=hcc1bbae_0
  - lame=3.100=h7f98852_1001
  - lazy-object-proxy=1.6.0=py37h5e8e339_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.36.1=hea4e1c9_2
  - lerc=2.2.1=h9c3ff4c_0
  - libaec=1.0.5=h9c3ff4c_0
  - libblas=3.8.0=17_openblas
  - libbrotlicommon=1.0.9=h7f98852_5
  - libbrotlidec=1.0.9=h7f98852_5
  - libbrotlienc=1.0.9=h7f98852_5
  - libcblas=3.8.0=17_openblas
  - libcdms=3.1.2=h981a4fd_113
  - libcf=1.0.3=py37heda41dd_109
  - libclang=11.1.0=default_ha53f305_1
  - libcurl=7.78.0=h2574ce0_0
  - libdap4=3.20.6=hd7c4107_2
  - libdeflate=1.7=h7f98852_5
  - libdrs=3.1.2=h7918d09_113
  - libdrs_f=3.1.2=h5026c31_111
  - libedit=3.1.20191231=he28a2e2_2
  - libev=4.33=h516909a_1
  - libevent=2.1.10=hcdb4288_3
  - libffi=3.3=h58526e2_2
  - libgcc-ng=11.1.0=hc902ee8_2
  - libgdal=3.1.4=h38ff51b_8
  - libgfortran-ng=11.1.0=h69a702a_0
  - libgfortran5=11.1.0=h6c583b3_0
  - libglib=2.68.3=h3e27bee_0
  - libgomp=11.1.0=hc902ee8_2
  - libiconv=1.16=h516909a_0
  - libidn2=2.3.2=h7f98852_0
  - libkml=1.3.0=h238a007_1014
  - liblapack=3.8.0=17_openblas
  - libllvm10=10.0.1=he513fc3_3
  - libllvm11=11.1.0=hf817b99_2
  - libnetcdf=4.7.4=nompi_h56d31a8_107
  - libnghttp2=1.43.0=h812cca2_0
  - libogg=1.3.4=h7f98852_1
  - libopenblas=0.3.10=pthreads_h4812303_5
  - libopus=1.3.1=h7f98852_1
  - libpng=1.6.37=h21135ba_2
  - libpq=13.3=hd57d9b9_0
  - libprotobuf=3.17.2=h780b84a_1
  - librttopo=1.1.0=h1185371_6
  - libsodium=1.0.18=h36c2ea0_1
  - libspatialindex=1.9.3=h9c3ff4c_4
  - libspatialite=5.0.1=he52d314_3
  - libssh2=1.9.0=ha56f1ee_6
  - libstdcxx-ng=11.1.0=h56837e0_2
  - libtiff=4.2.0=hbd63e13_2
  - libunistring=0.9.10=h7f98852_0
  - libuuid=2.32.1=h7f98852_1000
  - libuv=1.41.1=h7f98852_0
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.2.0=h7f98852_2
  - libxcb=1.13=h7f98852_1003
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.12=h72842e0_0
  - libxslt=1.1.33=h15afd5d_2
  - libzopfli=1.0.3=h9c3ff4c_0
  - llvmlite=0.36.0=py37h9d7f4d0_0
  - locket=0.2.0=py_2
  - lxml=4.6.3=py37h77fd288_0
  - lz4-c=1.9.3=h9c3ff4c_0
  - mako=1.1.4=pyh44b312d_0
  - mamba_gator=5.1.1=pyhd8ed1ab_0
  - mapclassify=2.4.3=pyhd8ed1ab_0
  - markdown=3.3.4=pyhd8ed1ab_0
  - markdown-it-py=1.1.0=pyhd8ed1ab_0
  - markupsafe=2.0.1=py37h5e8e339_0
  - matplotlib=3.4.2=py37h89c1867_0
  - matplotlib-base=3.4.2=py37hdd32ed1_0
  - matplotlib-inline=0.1.2=pyhd8ed1ab_2
  - mdit-py-plugins=0.2.8=pyhd8ed1ab_0
  - memory_profiler=0.58.0=py_0
  - mesalib=18.3.1=h590aaf7_0
  - mistune=0.8.4=py37h5e8e339_1004
  - monotonic=1.5=py_0
  - more-itertools=8.8.0=pyhd8ed1ab_0
  - msgpack-python=1.0.2=py37h2527ec5_1
  - multidict=5.1.0=py37h5e8e339_1
  - multipledispatch=0.6.0=py_0
  - munch=2.5.0=py_0
  - mysql-common=8.0.25=ha770c72_0
  - mysql-libs=8.0.25=h935591d_0
  - nbclassic=0.3.1=pyhd8ed1ab_1
  - nbclient=0.5.3=pyhd8ed1ab_0
  - nbconvert=6.1.0=py37h89c1867_0
  - nbdime=3.1.0=pyhd8ed1ab_0
  - nbformat=5.1.3=pyhd8ed1ab_0
  - nbresuse=0.4.0=pyhd8ed1ab_0
  - nbval=0.9.6=pyh9f0ad1d_0
  - nc-time-axis=1.3.1=pyhd8ed1ab_2
  - ncurses=6.2=h58526e2_4
  - nest-asyncio=1.5.1=pyhd8ed1ab_0
  - netcdf-fortran=4.5.3=nompi_h996563d_103
  - netcdf4=1.5.6=nompi_py37hf7b6e46_102
  - nettle=3.6=he412f7d_0
  - networkx=2.5=py_0
  - nodejs=15.14.0=h92b4a50_0
  - notebook=6.4.0=pyha770c72_0
  - nspr=4.30=h9c3ff4c_0
  - nss=3.67=hb5efdd6_0
  - numba=0.53.1=py37hb11d6e1_1
  - numcodecs=0.8.0=py37hcd2ae1e_0
  - numpy=1.21.1=py37h038b26d_0
  - oauthlib=3.1.1=pyhd8ed1ab_0
  - olefile=0.46=pyh9f0ad1d_1
  - openblas=0.3.10=pthreads_h04b7a96_5
  - openh264=2.1.1=h780b84a_0
  - openjpeg=2.4.0=hb52868f_1
  - openssl=1.1.1k=h7f98852_0
  - ostrich=21.03.16=h4bd325d_1
  - owslib=0.24.1=pyhd8ed1ab_0
  - packaging=21.0=pyhd8ed1ab_0
  - pamela=1.0.0=py_0
  - pandas=1.3.1=py37h219a48f_0
  - pandoc=2.14.1=h7f98852_0
  - pandocfilters=1.4.2=py_1
  - panel=0.12.0=pyhd8ed1ab_0
  - param=1.11.1=pyh6c4a22f_0
  - parso=0.8.2=pyhd8ed1ab_0
  - partd=1.2.0=pyhd8ed1ab_0
  - patsy=0.5.1=py_0
  - pcre=8.45=h9c3ff4c_0
  - pexpect=4.8.0=pyh9f0ad1d_2
  - pickleshare=0.7.5=py_1003
  - pillow=8.2.0=py37h4600e1f_1
  - pint=0.17=pyhd8ed1ab_0
  - pip=21.2.1=pyhd8ed1ab_0
  - pixman=0.40.0=h36c2ea0_0
  - plotly=5.1.0=pyhd8ed1ab_1
  - pluggy=0.13.1=py37h89c1867_4
  - pooch=1.4.0=pyhd8ed1ab_0
  - poppler=0.89.0=h2de54a5_5
  - poppler-data=0.4.10=0
  - postgresql=13.3=h2510834_0
  - proj=7.2.0=h277dcde_2
  - prometheus_client=0.11.0=pyhd8ed1ab_0
  - prompt-toolkit=3.0.19=pyha770c72_0
  - prompt_toolkit=3.0.19=hd8ed1ab_0
  - properscoring=0.1=py_0
  - protobuf=3.17.2=py37hcd2ae1e_0
  - pscript=0.7.5=pyhd3deb0d_0
  - psutil=5.8.0=py37h5e8e339_1
  - pthread-stubs=0.4=h36c2ea0_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - py=1.10.0=pyhd3deb0d_0
  - pyasn1=0.4.8=py_0
  - pyasn1-modules=0.2.7=py_0
  - pycparser=2.20=pyh9f0ad1d_2
  - pyct=0.4.6=py_0
  - pyct-core=0.4.6=py_0
  - pycurl=7.43.0.6=py37h88a64d2_1
  - pydantic=1.8.2=py37h5e8e339_0
  - pydap=3.2.2=pyh9f0ad1d_1001
  - pygeos=0.10.1=py37h2d1e849_0
  - pygments=2.9.0=pyhd8ed1ab_0
  - pyjwt=2.1.0=pyhd8ed1ab_0
  - pyopenssl=20.0.1=pyhd8ed1ab_0
  - pyparsing=2.4.7=pyh9f0ad1d_0
  - pyproj=3.1.0=py37h20b8899_3
  - pyqt=5.12.3=py37h89c1867_7
  - pyqt-impl=5.12.3=py37he336c9b_7
  - pyqt5-sip=4.19.18=py37hcd2ae1e_7
  - pyqtchart=5.12=py37he336c9b_7
  - pyqtwebengine=5.12.1=py37he336c9b_7
  - pyrsistent=0.17.3=py37h5e8e339_2
  - pyshp=2.1.3=pyh44b312d_0
  - pysocks=1.7.1=py37h89c1867_3
  - pytest=6.2.4=py37h89c1867_0
  - python=3.7.10=hffdb5ce_100_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-eccodes=2021.03.0=py37h6f94858_1
  - python-editor=1.0.4=py_0
  - python-json-logger=2.0.1=pyh9f0ad1d_0
  - python_abi=3.7=2_cp37m
  - pytz=2021.1=pyhd8ed1ab_0
  - pyu2f=0.1.5=pyhd8ed1ab_0
  - pyviz_comms=2.1.0=pyhd8ed1ab_0
  - pywavelets=1.1.1=py37h902c9e0_3
  - pyyaml=5.4.1=py37h5e8e339_0
  - pyzmq=22.1.0=py37h336d617_0
  - qt=5.12.9=hda022c4_4
  - qtconsole=5.1.1=pyhd8ed1ab_0
  - qtpy=1.9.0=py_0
  - rasterio=1.2.1=py37ha549118_0
  - raven-hydro=3.0.4.322=h516393e_0
  - ravenpy=0.7.0=pyh1bb2064_0
  - readline=8.1=h46c0cb4_0
  - regionmask=0.7.0=pyhd8ed1ab_0
  - requests=2.26.0=pyhd8ed1ab_0
  - requests-oauthlib=1.3.0=pyh9f0ad1d_0
  - requests-unixsocket=0.2.0=py_0
  - retrying=1.3.3=py_2
  - rioxarray=0.5.0=pyhd8ed1ab_0
  - roocs-utils=0.4.2=pyh6c4a22f_0
  - rsa=4.7.2=pyh44b312d_0
  - rtree=0.9.7=py37h0b55af0_2
  - ruamel.yaml=0.17.10=py37h5e8e339_0
  - ruamel.yaml.clib=0.2.2=py37h5e8e339_2
  - scikit-image=0.18.2=py37h219a48f_0
  - scikit-learn=0.24.2=py37h18a542f_0
  - scipy=1.7.0=py37h29e03ee_1
  - send2trash=1.7.1=pyhd8ed1ab_0
  - setuptools=49.6.0=py37h89c1867_3
  - shapely=1.7.1=py37h2d1e849_5
  - siphon=0.9=py37h89c1867_0
  - six=1.16.0=pyh6c4a22f_0
  - smmap=3.0.5=pyh44b312d_0
  - snappy=1.1.8=he1b5a44_3
  - sniffio=1.2.0=py37h89c1867_1
  - snuggs=1.4.7=py_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.0.1=py_1
  - sqlalchemy=1.4.22=py37h5e8e339_0
  - sqlite=3.36.0=h9cd32fc_0
  - statsmodels=0.12.2=py37h902c9e0_0
  - tblib=1.7.0=pyhd8ed1ab_0
  - tenacity=8.0.1=pyhd8ed1ab_0
  - terminado=0.10.1=py37h89c1867_0
  - testpath=0.5.0=pyhd8ed1ab_0
  - threadpoolctl=2.2.0=pyh8a188c0_0
  - threddsclient=0.4.2=py_0
  - tifffile=2021.4.8=pyhd8ed1ab_0
  - tiledb=2.2.9=h91fcb0e_0
  - tk=8.6.10=h21135ba_1
  - toml=0.10.2=pyhd8ed1ab_0
  - toolz=0.11.1=py_0
  - tornado=6.1=py37h5e8e339_1
  - tqdm=4.61.2=pyhd8ed1ab_1
  - traitlets=5.0.5=py_0
  - traittypes=0.2.1=pyh9f0ad1d_2
  - typing-extensions=3.10.0.0=hd8ed1ab_0
  - typing_extensions=3.10.0.0=pyha770c72_0
  - tzcode=2021a=h7f98852_2
  - tzdata=2021a=he74cb21_1
  - udunits2=2.2.27.27=h975c496_1
  - urllib3=1.26.6=pyhd8ed1ab_0
  - vcs=8.2.1=pyh9f0ad1d_0
  - voila=0.2.10=pyhd8ed1ab_0
  - vtk-cdat=8.2.0.8.2=py37_mesalibhead77ed_0
  - wcwidth=0.2.5=pyh9f0ad1d_2
  - webencodings=0.5.1=py_1
  - webob=1.8.7=pyhd8ed1ab_0
  - websocket-client=0.57.0=py37h89c1867_4
  - werkzeug=2.0.1=pyhd8ed1ab_0
  - wget=1.20.3=ha56f1ee_0
  - wheel=0.36.2=pyhd3deb0d_0
  - widgetsnbextension=3.5.1=py37h89c1867_4
  - wrapt=1.12.1=py37h5e8e339_3
  - x264=1!152.20180806=h14c3975_0
  - xarray=0.19.0=pyhd8ed1ab_1
  - xclim=0.28.0=pyhd8ed1ab_0
  - xerces-c=3.2.3=h9d8b166_2
  - xesmf=0.6.0=pyhd8ed1ab_0
  - xeus=1.0.4=h7d0c39e_0
  - xeus-python=0.12.5=py37h4b46df4_2
  - xhistogram=0.3.0=pyhd8ed1ab_0
  - xorg-kbproto=1.0.7=h7f98852_1002
  - xorg-libice=1.0.10=h7f98852_0
  - xorg-libsm=1.2.3=hd9c2040_1000
  - xorg-libx11=1.7.2=h7f98852_0
  - xorg-libxau=1.0.9=h7f98852_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h7f98852_1
  - xorg-libxrender=0.9.10=h7f98852_1003
  - xorg-renderproto=0.11.1=h7f98852_1002
  - xorg-xextproto=7.3.0=h7f98852_1002
  - xorg-xproto=7.0.31=h7f98852_1007
  - xrft=0.3.0=pyhd8ed1ab_0
  - xskillscore=0.0.22=pyhd8ed1ab_0
  - xz=5.2.5=h516909a_1
  - yaml=0.2.5=h516909a_0
  - yarl=1.6.3=py37h5e8e339_2
  - zarr=2.8.3=pyhd8ed1ab_0
  - zeromq=4.3.4=h9c3ff4c_0
  - zfp=0.5.5=h9c3ff4c_5
  - zict=2.0.0=py_0
  - zipp=3.5.0=pyhd8ed1ab_0
  - zlib=1.2.11=h516909a_1010
  - zstd=1.4.9=ha95c52a_0
  - pip:
    - astunparse==1.6.3
    - cdms2==3.1.5
    - colour==0.1.5
    - geojson==2.5.0
    - handcalcs==1.4.1
    - innerscope==0.5.0
    - ipython-blocking==0.2.1
    - jupyterlab-logout==0.5.0
    - jupyternotify==0.1.15
    - pixiedust==1.1.19
    - pymetalink==6.2
    - pytest-tornasync==0.6.0.post2
    - regrid2==3.1.5
    - requests-magpie==0.1.1
prefix: /opt/conda/envs/birdy
```
@tlvu tlvu merged commit faac92e into master Jul 29, 2021
@tlvu tlvu deleted the update-for-new-jupyter-env branch July 29, 2021 17:54
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.

1 participant