├── environments ├── base.yaml ├── tutorial.yaml ├── conda-osx-64.lock └── conda-linux-64.lock ├── .gitignore ├── notebooks ├── 00_overview.ipynb ├── 04_other.ipynb ├── 03_calculation.ipynb ├── 01_general.ipynb └── 02_plotting.ipynb ├── README.md └── scripts └── download_cartopy_assets.py /environments/base.yaml: -------------------------------------------------------------------------------- 1 | name: base 2 | channels: 3 | - conda-forge 4 | - nodefaults 5 | dependencies: 6 | - python=3.8 7 | - pip 8 | - jupyterlab>=3 9 | - ipywidgets 10 | - nodejs 11 | - nb_conda_kernels 12 | - tornado 13 | - widgetsnbextension 14 | - dask-labextension 15 | - jupyter-server-proxy 16 | - pip -------------------------------------------------------------------------------- /environments/tutorial.yaml: -------------------------------------------------------------------------------- 1 | name: acom-tutorial 2 | channels: 3 | - conda-forge 4 | - nodefaults 5 | dependencies: 6 | - python=3.8 7 | - pip 8 | - jupyterlab>=3 9 | # core pydata 10 | - bottleneck 11 | - dask 12 | - dask-mpi 13 | - distributed 14 | - eofs 15 | - metpy 16 | - numba 17 | - numpy 18 | - pandas 19 | - scipy 20 | - statsmodels 21 | - xarray>=0.17 22 | # serialization 23 | - h5netcdf 24 | - h5py 25 | - netcdf4 26 | - numcodecs 27 | - rasterio 28 | - zarr 29 | # visualization 30 | - basemap 31 | - bokeh 32 | - cartopy 33 | - cmocean 34 | - datashader 35 | - geoviews 36 | - holoviews 37 | - hvplot 38 | - matplotlib 39 | - panel 40 | - seaborn 41 | # Misc 42 | - cf-units 43 | - cftime 44 | - cytoolz 45 | - datashader 46 | - esmpy 47 | - graphviz 48 | - gsw # https://teos-10.github.io/GSW-Python/install.html 49 | - intake 50 | - intake-xarray 51 | - ipykernel 52 | - ipywidgets 53 | - lz4 54 | - memory_profiler 55 | - mpi4py 56 | - nc-time-axis 57 | - nodejs 58 | - papermill 59 | - pint 60 | - psutil 61 | - python-blosc 62 | - python-graphviz 63 | - snakeviz 64 | - toolz 65 | - tornado 66 | - tqdm 67 | - xesmf 68 | - zict 69 | - dask-jobqueue 70 | - ncar-jobqueue 71 | - watermark 72 | - cfgrib 73 | - intake-esm 74 | 75 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Python template 3 | # Byte-compiled / optimized / DLL files 4 | __pycache__/ 5 | *.py[cod] 6 | *$py.class 7 | 8 | # C extensions 9 | *.so 10 | 11 | # Distribution / packaging 12 | .Python 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | .hypothesis/ 50 | .pytest_cache/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | local_settings.py 59 | db.sqlite3 60 | 61 | # Flask stuff: 62 | instance/ 63 | .webassets-cache 64 | 65 | # Scrapy stuff: 66 | .scrapy 67 | 68 | # Sphinx documentation 69 | docs/_build/ 70 | 71 | # PyBuilder 72 | target/ 73 | 74 | # Jupyter Notebook 75 | .ipynb_checkpoints 76 | 77 | # pyenv 78 | .python-version 79 | 80 | # celery beat schedule file 81 | celerybeat-schedule 82 | 83 | # SageMath parsed files 84 | *.sage.py 85 | 86 | # Environments 87 | .env 88 | .venv 89 | env/ 90 | venv/ 91 | ENV/ 92 | env.bak/ 93 | venv.bak/ 94 | 95 | # Spyder project settings 96 | .spyderproject 97 | .spyproject 98 | 99 | # Rope project settings 100 | .ropeproject 101 | 102 | # mkdocs documentation 103 | /site 104 | 105 | # mypy 106 | .mypy_cache/ 107 | 108 | # Jetbrains 109 | .idea/ 110 | -------------------------------------------------------------------------------- /notebooks/00_overview.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Tutorial Preliminaries: Jupyter & Python" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": { 13 | "slideshow": { 14 | "slide_type": "slide" 15 | } 16 | }, 17 | "source": [ 18 | "---\n", 19 | "## Why Jupyter Notebooks (and Lab)?" 20 | ] 21 | }, 22 | { 23 | "cell_type": "markdown", 24 | "metadata": {}, 25 | "source": [ 26 | "- How many of you are familiar with Jupyter Notebooks?\n", 27 | "\n", 28 | "- How many of you use Jupyter Notebooks on a daily basis?\n", 29 | "\n", 30 | "- Why not?\n", 31 | "\n", 32 | "- How do you interact with Cheyenne and Casper? Describe your process." 33 | ] 34 | }, 35 | { 36 | "cell_type": "markdown", 37 | "metadata": {}, 38 | "source": [ 39 | "### A typical process" 40 | ] 41 | }, 42 | { 43 | "cell_type": "markdown", 44 | "metadata": {}, 45 | "source": [ 46 | "For most people, interaction with a supercomputer or cluster means:\n", 47 | "\n", 48 | "- Go to my terminal application\n", 49 | "- SSH into the remote machine (enabling X tunneling so I can use `ncview`, for example)\n", 50 | "- Type commands into my chosen shell (bash, csh, etc.)\n", 51 | "\n", 52 | "What's wrong with that process? Nothing, but..." 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": {}, 58 | "source": [ 59 | "### Graphics over X" 60 | ] 61 | }, 62 | { 63 | "cell_type": "markdown", 64 | "metadata": {}, 65 | "source": [ 66 | "Graphics have to be communicated over your `ssh` connection using X. If you were _not_ remote, X is fast. Or, if you have access to an _X-accelerator_ (such as `fastX`), then X is (kinda) fast. But if you are remote, and you aren't using an X-accelerator, then X is slow. And painful. Why? Because X is communicating all of the information needed to display the \"X-window\" on your computer over the internet. X was not designed for that, but..." 67 | ] 68 | }, 69 | { 70 | "cell_type": "markdown", 71 | "metadata": {}, 72 | "source": [ 73 | "### HTML & Javascript" 74 | ] 75 | }, 76 | { 77 | "cell_type": "markdown", 78 | "metadata": {}, 79 | "source": [ 80 | "HTML (and Javascript and serialization formats like JSON) _was_ designed for that. It's what modern interactive (HTML3) websites use every day! So, why not ditch X and use HTML?" 81 | ] 82 | }, 83 | { 84 | "cell_type": "markdown", 85 | "metadata": {}, 86 | "source": [ 87 | "Well, you need a webserver to \"serve\" up your HTML content. Where do you get a webserver to do that?" 88 | ] 89 | }, 90 | { 91 | "cell_type": "markdown", 92 | "metadata": {}, 93 | "source": [ 94 | "### Jupyter" 95 | ] 96 | }, 97 | { 98 | "cell_type": "markdown", 99 | "metadata": {}, 100 | "source": [ 101 | "Jupyter _is_ a webserver. When you run it on your laptop (`jupyter notebook` or `jupyter lab`), you can directly interact with the webserver from your browser. When you are remote, you just communicate HTML (and serialized data) back and forth from your browser to the webserver. It's fast. It's efficient." 102 | ] 103 | }, 104 | { 105 | "cell_type": "markdown", 106 | "metadata": {}, 107 | "source": [ 108 | "JupyterHub allows for _multi-user_ sessions, in a safe and secure manor." 109 | ] 110 | }, 111 | { 112 | "cell_type": "markdown", 113 | "metadata": {}, 114 | "source": [ 115 | "### Reproducibility & Extensibility" 116 | ] 117 | }, 118 | { 119 | "cell_type": "markdown", 120 | "metadata": {}, 121 | "source": [ 122 | "Jupyter allows you to save your work in a notebook (`ipynb`), so you can share your work with other people simply by sharing your notebook file. Other people can use it and extend it for their own purposes." 123 | ] 124 | }, 125 | { 126 | "cell_type": "markdown", 127 | "metadata": {}, 128 | "source": [ 129 | "#### Try it out! Go to the Jupyter Lab Launcher and create a new notebook!" 130 | ] 131 | }, 132 | { 133 | "cell_type": "markdown", 134 | "metadata": {}, 135 | "source": [ 136 | "---\n", 137 | "## Why Python?" 138 | ] 139 | }, 140 | { 141 | "cell_type": "markdown", 142 | "metadata": {}, 143 | "source": [ 144 | "Python is a _high-productivity_ language. That means, it's designed (from the ground up) to do a lot with very little typing/code. It's also designed to enforce readability (with spaces for indentation)." 145 | ] 146 | }, 147 | { 148 | "cell_type": "markdown", 149 | "metadata": {}, 150 | "source": [ 151 | "Python is _interpretted_, like IDL or Matlab, so you don't need to compile your code for it to run. You just need `python` on your system. That also makes Python portable!" 152 | ] 153 | }, 154 | { 155 | "cell_type": "markdown", 156 | "metadata": {}, 157 | "source": [ 158 | "Python is _popular_. Perhaps too popular, but popularity is still nice. As of this morning, there are 179,881 Python packages on the Python Package Index (PyPI). They are easy to install and publish, helping other developers to not have to \"reinvent the wheel.\"" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": null, 164 | "metadata": {}, 165 | "outputs": [], 166 | "source": [] 167 | } 168 | ], 169 | "metadata": { 170 | "kernelspec": { 171 | "display_name": "Python 3", 172 | "language": "python", 173 | "name": "python3" 174 | }, 175 | "language_info": { 176 | "codemirror_mode": { 177 | "name": "ipython", 178 | "version": 3 179 | }, 180 | "file_extension": ".py", 181 | "mimetype": "text/x-python", 182 | "name": "python", 183 | "nbconvert_exporter": "python", 184 | "pygments_lexer": "ipython3", 185 | "version": "3.7.2" 186 | } 187 | }, 188 | "nbformat": 4, 189 | "nbformat_minor": 2 190 | } 191 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ACOM Python Tutorial 2 | 3 | Python Tutorial requested by individuals in NCAR's ACOM laboratory. 4 | 5 | or... 6 | 7 | > "How to use Python to read and plot CESM output, satellite output, 8 | > aircraft observations (netcdf files)." 9 | 10 | I'm not sure we'll get to everything in the time allotted, but we'll try to make 11 | the most of our time. 12 | 13 | ## Preparation & Setup 14 | 15 | **Note:** These instructions are for `bash` shell users, only. There appear to be 16 | problems when installing conda/miniconda with `csh` or `tcsh`. (I'm not even sure 17 | it works at all with `csh`.) There is a fix for this coming, but the easiest way 18 | to set up conda on Cheyenne, if you are a `tcsh` shell user, then just do everythin 19 | below inside a `bash` instance. In other words, just start by typing: 20 | 21 | ```bash 22 | bash 23 | ``` 24 | 25 | ### Get Miniconda and install 26 | 27 | We will use _Miniconda_ to install and manage our Python environment. 28 | 29 | For this tutorial, we will do everything on Cheyenne, but the _same 30 | steps_ work on your laptop, too. (Or, when there are differences, we will 31 | indicate them so you can reproduce this on your laptop.) 32 | 33 | First, download the Miniconda installer for your system 34 | [here](https://docs.conda.io/en/latest/miniconda.html), and follow the 35 | instructions to install it on your system. On Cheyenne, you need to 36 | install the _Linux_ version of the bash install script and install 37 | that way. 38 | 39 | ```bash 40 | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh 41 | bash miniconda.sh # Follow the prompts on the installer screens. 42 | ``` 43 | 44 | If you are unsure about any setting, accept the defaults. We recommend adding the miniconda 45 | path to your PATH variable manually. For a bash user, this would entail adding something 46 | like the following to your `.bashrc` file: 47 | 48 | ```bash 49 | export PATH=/path/to/installation/miniconda3/bin:${PATH} 50 | ``` 51 | 52 | To make the changes take effect, logout and log back in. (You will need 53 | to initialize another `bash` instance, if you are a `tcsh` user.) 54 | 55 | To verify that conda is available on your system, you can try 56 | 57 | ```bash 58 | conda --version 59 | ``` 60 | 61 | After install, update conda: 62 | 63 | ```bash 64 | conda update -n base conda 65 | ``` 66 | 67 | And configure the shell, replacing `{SHELL}` in the command below with your shell 68 | (e.g., bash, tcsh, ...): 69 | 70 | ```bash 71 | conda init {SHELL} 72 | ``` 73 | 74 | **Note:** This last step will probably not work for you if you use `csh` or `tcsh` 75 | as your default shell on Cheyenne (or your laptop). That does not mean you cannot 76 | use conda, though. And there is a fix coming for `tcsh` users, apparently. 77 | 78 | ### Create environments 79 | 80 | After Miniconda is installed, you will want to set up Conda so that it 81 | installs packages from a trusted _channel_. Within the Python community, 82 | the `conda-forge` channel is considered the most trusted source of packages 83 | that will work together. So, we enable the use of the `conda-forge` channel 84 | for all packages with the following: 85 | 86 | ```bash 87 | conda config --add channels conda-forge 88 | ``` 89 | 90 | You will probably want to download this tutorial to a space on your laptop or 91 | workspace (e.g., `$HOME`) on Cheyenne, like so: 92 | 93 | ```bash 94 | git clone https://github.com/NCAR/ACOM-Python-Tutorial.git 95 | ``` 96 | 97 | and then change directory into the tutorial repository: 98 | 99 | ```bash 100 | cd ACOM-Python-Tutorial 101 | ``` 102 | 103 | First update the conda base environment. 104 | 105 | ```bash 106 | conda env update -f environments/base.yaml 107 | ``` 108 | 109 | Next create the Conda _environment_ for this tutorial (this can take ~ 5 min). 110 | 111 | ```bash 112 | conda env update -f environments/tutorial.yaml 113 | ``` 114 | 115 | To use one of these environments, we need to activate it using the command 116 | `conda activate {ENV_NAME}`, and to deactivate an environment, we use 117 | `conda deactivate`. 118 | 119 | 120 | **Note:** To manage environments, the `conda env`, `conda info`, and 121 | `conda list` commands are helpful tools. The `conda info --envs` command 122 | can be used to list available environments (same as `conda env list`). 123 | 124 | Finally, you will need to download additional plotting assets (for `cartopy`) 125 | such as coastlines, etc., by executing the following script: 126 | 127 | ```bash 128 | python scripts/download_cartopy_assets.py --output ~/.local/share/cartopy cultural-extra cultural gshhs physical 129 | ``` 130 | 131 | This last step is only necessary for certain special aspects of `cartopy` 132 | to work, namely the plotting of coastlines at different resolutions, etc. 133 | 134 | ## Running JupyterLab 135 | 136 | ### Cheyenne 137 | 138 | When you are ready to start your Jupyter Lab session, simply point your 139 | browser to NCAR's JupyterHub deployment. This JupyterHub is accessible at: 140 | 141 | ``` 142 | https://jupyterhub.ucar.edu 143 | ``` 144 | 145 | Online documentation for NCAR JupyterHub is available [here](https://www2.cisl.ucar.edu/resources/jupyterhub-ncar). 146 | 147 | 148 | **Note:** You may find the Conda environment we created above useful after this tutorial, but you 149 | may want to give it a name that is more informative than `acom-tutorial`, such as `mypython` or 150 | something. There is no simple "rename" operation in Conda, but you can make a copy of the environment 151 | (with a new name) and delete the original environment by do the following: 152 | 153 | ```bash 154 | conda create --name {NEW_NAME} --clone acom-tutorial 155 | conda remove --name acom-tutorial --all 156 | ``` 157 | 158 | ### Running Locally 159 | 160 | To run the tutorial from your laptop. You can launch Jupyter 161 | Lab from your laptop's command line to start going through the tutorial: 162 | 163 | ```bash 164 | jupyter lab 165 | ``` 166 | 167 | and this will take you to a browser window/tab where your Jupyter Lab session 168 | will run. 169 | -------------------------------------------------------------------------------- /scripts/download_cartopy_assets.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # (C) British Crown Copyright 2011 - 2016, Met Office 3 | # 4 | # This file is part of cartopy. 5 | # 6 | # cartopy is free software: you can redistribute it and/or modify it under 7 | # the terms of the GNU Lesser General Public License as published by the 8 | # Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # cartopy is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU Lesser General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU Lesser General Public License 17 | # along with cartopy. If not, see . 18 | """ 19 | This module provides a command-line tool for triggering the download of 20 | the data used by various Feature instances. 21 | 22 | For detail on how to use this tool, execute it with the `-h` option: 23 | 24 | python download.py -h 25 | 26 | """ 27 | 28 | from __future__ import (absolute_import, division, print_function) 29 | 30 | import argparse 31 | 32 | from cartopy import config 33 | from cartopy.feature import Feature, GSHHSFeature, NaturalEarthFeature 34 | from cartopy.io import Downloader 35 | 36 | 37 | ALL_SCALES = ('110m', '50m', '10m') 38 | 39 | 40 | FEATURE_DEFN_GROUPS = { 41 | # Only need one GSHHS resolution because they *all* get downloaded 42 | # from one file. 43 | 'gshhs': GSHHSFeature(scale='f'), 44 | 'physical': ( 45 | ('physical', 'coastline', ALL_SCALES), 46 | ('physical', 'land', ALL_SCALES), 47 | ('physical', 'ocean', ALL_SCALES), 48 | ('physical', 'rivers_lake_centerlines', ALL_SCALES), 49 | ('physical', 'lakes', ALL_SCALES), 50 | ('physical', 'geography_regions_polys', ALL_SCALES), 51 | ('physical', 'geography_regions_points', ALL_SCALES), 52 | ('physical', 'geography_marine_polys', ALL_SCALES), 53 | ('physical', 'glaciated_areas', ALL_SCALES) 54 | ), 55 | 'cultural': ( 56 | ('cultural', 'admin_0_countries', ALL_SCALES), 57 | ('cultural', 'admin_0_countries_lakes', ALL_SCALES), 58 | ('cultural', 'admin_0_sovereignty', ALL_SCALES), 59 | ('cultural', 'admin_0_boundary_lines_land', ALL_SCALES), 60 | 61 | ('cultural', 'urban_areas', ('50m', '10m')), 62 | 63 | ('cultural', 'roads', '10m'), 64 | ('cultural', 'roads_north_america', '10m'), 65 | ('cultural', 'railroads', '10m'), 66 | ('cultural', 'railroads_north_america', '10m'), 67 | ), 68 | 'cultural-extra': ( 69 | ('cultural', 'admin_0_map_units', '110m'), 70 | ('cultural', 'admin_0_scale_rank', '110m'), 71 | ('cultural', 'admin_0_tiny_countries', '110m'), 72 | ('cultural', 'admin_0_pacific_groupings', '110m'), 73 | ('cultural', 'admin_1_states_provinces_shp', '110m'), 74 | ('cultural', 'admin_1_states_provinces_lines', '110m'), 75 | ), 76 | } 77 | 78 | 79 | def download_features(group_names, dry_run=True): 80 | for group_name in group_names: 81 | feature_defns = FEATURE_DEFN_GROUPS[group_name] 82 | if isinstance(feature_defns, Feature): 83 | feature = feature_defns 84 | level = list(feature._levels)[0] 85 | downloader = Downloader.from_config(('shapefiles', 'gshhs', 86 | feature._scale, level)) 87 | format_dict = {'config': config, 'scale': feature._scale, 88 | 'level': level} 89 | if dry_run: 90 | print('URL: {}'.format(downloader.url(format_dict))) 91 | else: 92 | downloader.path(format_dict) 93 | geoms = list(feature.geometries()) 94 | print('Feature {} length: {}'.format(feature, len(geoms))) 95 | else: 96 | for category, name, scales in feature_defns: 97 | if not isinstance(scales, tuple): 98 | scales = (scales,) 99 | for scale in scales: 100 | downloader = Downloader.from_config(('shapefiles', 101 | 'natural_earth', 102 | scale, category, 103 | name)) 104 | feature = NaturalEarthFeature(category, name, scale) 105 | format_dict = {'config': config, 'category': category, 106 | 'name': name, 'resolution': scale} 107 | if dry_run: 108 | print('URL: {}'.format(downloader.url(format_dict))) 109 | else: 110 | downloader.path(format_dict) 111 | geoms = list(feature.geometries()) 112 | print('Feature {}, {}, {} length: {}' 113 | ''.format(category, name, scale, len(geoms))) 114 | 115 | 116 | if __name__ == '__main__': 117 | parser = argparse.ArgumentParser(description='Download feature datasets.') 118 | parser.add_argument('group_names', nargs='+', 119 | choices=FEATURE_DEFN_GROUPS, 120 | metavar='GROUP_NAME', 121 | help='Feature group name: %(choices)s') 122 | parser.add_argument('--output', '-o', 123 | help='save datasets in the specified directory ' 124 | '(default: user cache directory)') 125 | parser.add_argument('--dry-run', 126 | help='just print the URLs to download', 127 | action='store_true') 128 | parser.add_argument('--ignore-repo-data', action='store_true', 129 | help='ignore existing repo data when downloading') 130 | args = parser.parse_args() 131 | 132 | if args.output: 133 | config['pre_existing_data_dir'] = args.output 134 | config['data_dir'] = args.output 135 | if args.ignore_repo_data: 136 | config['repo_data_dir'] = config['data_dir'] 137 | download_features(args.group_names, dry_run=args.dry_run) 138 | 139 | -------------------------------------------------------------------------------- /notebooks/04_other.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Other" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## Jupyter notebooks browser to run on Casper" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "This is coming soon! We've been told to expect a trial in a week or two. More development will be coming in the next year." 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "## Modifying netCDF files as can be done with NCO" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "This is not really the normal pattern of work that we use Python for, unfortunately. However, NCO is not going away any time soon. (Nor is NCL, either. New updates of NCL are the only things that will not be coming.)" 36 | ] 37 | }, 38 | { 39 | "cell_type": "markdown", 40 | "metadata": {}, 41 | "source": [ 42 | "## Adding shell script commands into python" 43 | ] 44 | }, 45 | { 46 | "cell_type": "markdown", 47 | "metadata": {}, 48 | "source": [ 49 | "This is a common question." 50 | ] 51 | }, 52 | { 53 | "cell_type": "markdown", 54 | "metadata": {}, 55 | "source": [ 56 | "### Jupyter" 57 | ] 58 | }, 59 | { 60 | "cell_type": "markdown", 61 | "metadata": {}, 62 | "source": [ 63 | "In Jupyter, you can use the `%%bash` \"magic command\" to turn a cell into a \"Bash cell\". And you can execute your bash commands that way." 64 | ] 65 | }, 66 | { 67 | "cell_type": "markdown", 68 | "metadata": {}, 69 | "source": [ 70 | "For example, try the next cell:" 71 | ] 72 | }, 73 | { 74 | "cell_type": "code", 75 | "execution_count": 2, 76 | "metadata": {}, 77 | "outputs": [ 78 | { 79 | "name": "stdout", 80 | "output_type": "stream", 81 | "text": [ 82 | "1\n", 83 | "2\n", 84 | "3\n", 85 | "4\n", 86 | "5\n", 87 | "6\n", 88 | "7\n", 89 | "8\n", 90 | "9\n", 91 | "10\n" 92 | ] 93 | } 94 | ], 95 | "source": [ 96 | "%%bash\n", 97 | "for i in $(seq 10); do\n", 98 | " echo $i\n", 99 | "done" 100 | ] 101 | }, 102 | { 103 | "cell_type": "markdown", 104 | "metadata": {}, 105 | "source": [ 106 | "Just be careful about your PATH when using the Cheyenne JupyterHub..." 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": 4, 112 | "metadata": {}, 113 | "outputs": [ 114 | { 115 | "name": "stdout", 116 | "output_type": "stream", 117 | "text": [ 118 | "/opt/pbs/bin:/ncar/usr/jupyterhub/20190118/bin:/glade/u/apps/ch/opt/lmod/7.2.1/bin:/usr/sbin:/usr/bin:/sbin:/bin\n" 119 | ] 120 | } 121 | ], 122 | "source": [ 123 | "%%bash\n", 124 | "echo $PATH" 125 | ] 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "metadata": {}, 130 | "source": [ 131 | "### In Python..." 132 | ] 133 | }, 134 | { 135 | "cell_type": "markdown", 136 | "metadata": {}, 137 | "source": [ 138 | "In Python, if you need to make a system call, then you should use the `subprocess` package." 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 12, 144 | "metadata": {}, 145 | "outputs": [ 146 | { 147 | "name": "stdout", 148 | "output_type": "stream", 149 | "text": [ 150 | "total 320\n", 151 | "-rw-r--r-- 1 kpaul ncar 5137 May 15 09:12 00_overview.ipynb\n", 152 | "-rw-r--r-- 1 kpaul ncar 7469 May 15 07:09 01_general.ipynb\n", 153 | "-rw-r--r-- 1 kpaul ncar 17835 May 15 08:53 02_plotting.ipynb\n", 154 | "-rw-r--r-- 1 kpaul ncar 6013 May 15 08:20 03_calculation.ipynb\n", 155 | "-rw-r--r-- 1 kpaul ncar 4082 May 15 09:37 04_other.ipynb\n", 156 | "\n" 157 | ] 158 | } 159 | ], 160 | "source": [ 161 | "import subprocess\n", 162 | "\n", 163 | "p = subprocess.run(['ls', '-l'], capture_output=True)\n", 164 | "print(p.stdout.decode('utf8'))" 165 | ] 166 | }, 167 | { 168 | "cell_type": "markdown", 169 | "metadata": {}, 170 | "source": [ 171 | "Read more about the `subprocess` module for more details." 172 | ] 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "metadata": {}, 177 | "source": [ 178 | "## Calling Fortran routines from within python" 179 | ] 180 | }, 181 | { 182 | "cell_type": "markdown", 183 | "metadata": {}, 184 | "source": [ 185 | "The main tool that exists for this is F2PY, a tool that comes with NumPy." 186 | ] 187 | }, 188 | { 189 | "cell_type": "markdown", 190 | "metadata": {}, 191 | "source": [ 192 | "Imagine a Fortran 77 subroutine like follows, in a file called `fib1.f`:" 193 | ] 194 | }, 195 | { 196 | "cell_type": "markdown", 197 | "metadata": {}, 198 | "source": [ 199 | "```fortran\n", 200 | "C FILE: FIB1.F\n", 201 | " SUBROUTINE FIB(A,N)\n", 202 | "C\n", 203 | "C CALCULATE FIRST N FIBONACCI NUMBERS\n", 204 | "C\n", 205 | " INTEGER N\n", 206 | " REAL*8 A(N)\n", 207 | " DO I=1,N\n", 208 | " IF (I.EQ.1) THEN\n", 209 | " A(I) = 0.0D0\n", 210 | " ELSEIF (I.EQ.2) THEN\n", 211 | " A(I) = 1.0D0\n", 212 | " ELSE \n", 213 | " A(I) = A(I-1) + A(I-2)\n", 214 | " ENDIF\n", 215 | " ENDDO\n", 216 | " END\n", 217 | "C END FILE FIB1.F\n", 218 | "```" 219 | ] 220 | }, 221 | { 222 | "cell_type": "markdown", 223 | "metadata": {}, 224 | "source": [ 225 | "You can compile this and turn it into an importable module with:\n", 226 | "\n", 227 | "```bash\n", 228 | "python -m numpy.f2py -c fib1.f -m fib1\n", 229 | "```" 230 | ] 231 | }, 232 | { 233 | "cell_type": "markdown", 234 | "metadata": {}, 235 | "source": [ 236 | "And then you can import the `fib1` module into your Python code:\n", 237 | "\n", 238 | "```python\n", 239 | "import numpy\n", 240 | "import fib1\n", 241 | "\n", 242 | "a = numpy.zeros(8,'d')\n", 243 | "fib1.fib(a)\n", 244 | "```" 245 | ] 246 | }, 247 | { 248 | "cell_type": "code", 249 | "execution_count": null, 250 | "metadata": {}, 251 | "outputs": [], 252 | "source": [] 253 | } 254 | ], 255 | "metadata": { 256 | "kernelspec": { 257 | "display_name": "Python 3", 258 | "language": "python", 259 | "name": "python3" 260 | }, 261 | "language_info": { 262 | "codemirror_mode": { 263 | "name": "ipython", 264 | "version": 3 265 | }, 266 | "file_extension": ".py", 267 | "mimetype": "text/x-python", 268 | "name": "python", 269 | "nbconvert_exporter": "python", 270 | "pygments_lexer": "ipython3", 271 | "version": "3.7.2" 272 | } 273 | }, 274 | "nbformat": 4, 275 | "nbformat_minor": 2 276 | } 277 | -------------------------------------------------------------------------------- /notebooks/03_calculation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Processing/Regridding CESM inputs and outputs" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "---" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "## Regrid between rectilinear grids with xesmf" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "Regridding SE and FV output and emissions" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "Regridding CESM ocean T grids / U grids" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": null, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "%matplotlib inline \n", 45 | "import matplotlib.pyplot as plt\n", 46 | "import matplotlib as mpl\n", 47 | "import xarray as xr\n", 48 | "import cartopy.crs as ccrs\n", 49 | "import numpy as np" 50 | ] 51 | }, 52 | { 53 | "cell_type": "markdown", 54 | "metadata": {}, 55 | "source": [ 56 | "### Input data" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": null, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "data_vars = ['SST']\n", 66 | "ds1 = xr.open_mfdataset(\"/glade/scratch/emmons/PYTHON_TUTORIAL/f.e21.FWHISTBgcCrop.f09_f09_mg17.CMIP6-AMIP-WACCM.001.cam.h0.2013-*.nc\")\n", 67 | "drop_vars = set(ds1.data_vars) - set(data_vars)\n", 68 | "dset = ds1.drop(drop_vars).load()\n", 69 | "dset" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": null, 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [ 78 | "dr = dset['SST'] # get a DataArray" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": null, 84 | "metadata": {}, 85 | "outputs": [], 86 | "source": [ 87 | "ax = plt.axes(projection=ccrs.PlateCarree())\n", 88 | "dr.isel(time=3).plot.pcolormesh(ax=ax, vmin=250, vmax=370, cmap='jet')\n", 89 | "ax.coastlines()" 90 | ] 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "metadata": {}, 95 | "source": [ 96 | "### Input grid" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": null, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [ 105 | "dset['lat'].data.shape, dset['lon'].data.shape" 106 | ] 107 | }, 108 | { 109 | "cell_type": "markdown", 110 | "metadata": {}, 111 | "source": [ 112 | "### Output grid\n", 113 | "\n", 114 | "Let's downsample our data to 0.5∘×0.5∘. Just define the output grid as an xarray " 115 | ] 116 | }, 117 | { 118 | "cell_type": "code", 119 | "execution_count": null, 120 | "metadata": {}, 121 | "outputs": [], 122 | "source": [ 123 | "dset_out = xr.Dataset({'lat': (['lat'], np.arange(-90, 90, 0.5)),\n", 124 | " 'lon': (['lon'], np.arange(0, 360, 0.5)),\n", 125 | " }\n", 126 | " )\n", 127 | "dset_out" 128 | ] 129 | }, 130 | { 131 | "cell_type": "markdown", 132 | "metadata": {}, 133 | "source": [ 134 | "### Perform regridding\n", 135 | "\n", 136 | "Make a regridder by `xe.Regridder(grid_in, grid_out, method)`. `grid` is just an xarray DataSet containing lat and lon values." 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": null, 142 | "metadata": {}, 143 | "outputs": [], 144 | "source": [ 145 | "import xesmf as xe" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": null, 151 | "metadata": {}, 152 | "outputs": [], 153 | "source": [ 154 | "regridder = xe.Regridder(dset, dset_out, method='bilinear')\n", 155 | "regridder" 156 | ] 157 | }, 158 | { 159 | "cell_type": "markdown", 160 | "metadata": {}, 161 | "source": [ 162 | "The regridder says it can transform data from shape (192, 288) to shape (360, 720)." 163 | ] 164 | }, 165 | { 166 | "cell_type": "markdown", 167 | "metadata": {}, 168 | "source": [ 169 | "Once the regridder object is created, regridding our input `DataArray` is straightforward:" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": null, 175 | "metadata": {}, 176 | "outputs": [], 177 | "source": [ 178 | "dr_out = regridder(dr)\n", 179 | "dr_out" 180 | ] 181 | }, 182 | { 183 | "cell_type": "markdown", 184 | "metadata": {}, 185 | "source": [ 186 | "### Check results\n", 187 | "\n", 188 | "The regridding result is consistent with the original data, with a much finer resolution:\n", 189 | "\n" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "execution_count": null, 195 | "metadata": {}, 196 | "outputs": [], 197 | "source": [ 198 | "ax = plt.axes(projection=ccrs.PlateCarree())\n", 199 | "dr_out.isel(time=3).plot.pcolormesh(ax=ax, vmin=250, vmax=370, cmap='jet');\n", 200 | "ax.coastlines();" 201 | ] 202 | }, 203 | { 204 | "cell_type": "markdown", 205 | "metadata": {}, 206 | "source": [ 207 | "### Broadcasting over extra dimensions\n", 208 | " \n", 209 | "xESMF tracks coordinate values over extra dimensions, since horizontal regridding should not affect them." 210 | ] 211 | }, 212 | { 213 | "cell_type": "code", 214 | "execution_count": null, 215 | "metadata": {}, 216 | "outputs": [], 217 | "source": [ 218 | "dr_out['time']" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": null, 224 | "metadata": {}, 225 | "outputs": [], 226 | "source": [ 227 | "# exactly the same as input\n", 228 | "xr.testing.assert_identical(dr_out['time'], dset['time'])" 229 | ] 230 | }, 231 | { 232 | "cell_type": "markdown", 233 | "metadata": {}, 234 | "source": [ 235 | "We can plot the time series at a specific location, to make sure the broadcasting is correct:" 236 | ] 237 | }, 238 | { 239 | "cell_type": "code", 240 | "execution_count": null, 241 | "metadata": {}, 242 | "outputs": [], 243 | "source": [ 244 | "dr.sel(lon=260, lat=40, method='nearest').plot() # input data" 245 | ] 246 | }, 247 | { 248 | "cell_type": "code", 249 | "execution_count": null, 250 | "metadata": {}, 251 | "outputs": [], 252 | "source": [ 253 | "dr_out.sel(lon=260, lat=40, method='nearest').plot()" 254 | ] 255 | }, 256 | { 257 | "cell_type": "markdown", 258 | "metadata": {}, 259 | "source": [ 260 | "Creating timeseries from averages over regions" 261 | ] 262 | } 263 | ], 264 | "metadata": { 265 | "kernelspec": { 266 | "display_name": "Python [conda env:acom-tutorial]", 267 | "language": "python", 268 | "name": "conda-env-acom-tutorial-py" 269 | }, 270 | "language_info": { 271 | "codemirror_mode": { 272 | "name": "ipython", 273 | "version": 3 274 | }, 275 | "file_extension": ".py", 276 | "mimetype": "text/x-python", 277 | "name": "python", 278 | "nbconvert_exporter": "python", 279 | "pygments_lexer": "ipython3", 280 | "version": "3.7.3" 281 | } 282 | }, 283 | "nbformat": 4, 284 | "nbformat_minor": 2 285 | } 286 | -------------------------------------------------------------------------------- /notebooks/01_general.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "slideshow": { 7 | "slide_type": "slide" 8 | } 9 | }, 10 | "source": [ 11 | "# General Python Information" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": { 17 | "slideshow": { 18 | "slide_type": "slide" 19 | } 20 | }, 21 | "source": [ 22 | "---" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": { 28 | "slideshow": { 29 | "slide_type": "subslide" 30 | } 31 | }, 32 | "source": [ 33 | "## \"What is currently available in Python libraries?\"" 34 | ] 35 | }, 36 | { 37 | "cell_type": "markdown", 38 | "metadata": { 39 | "slideshow": { 40 | "slide_type": "fragment" 41 | } 42 | }, 43 | "source": [ 44 | "There are two parts to this question:\n", 45 | "- What packages _exist_ that are useful?\n", 46 | "- What is the current _state_ of these packages?" 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": { 52 | "slideshow": { 53 | "slide_type": "subslide" 54 | } 55 | }, 56 | "source": [ 57 | "### What packages _exist_ that are useful?" 58 | ] 59 | }, 60 | { 61 | "cell_type": "markdown", 62 | "metadata": { 63 | "slideshow": { 64 | "slide_type": "fragment" 65 | } 66 | }, 67 | "source": [ 68 | "Python has a _huge_ number of packages out there for data analysis and computation." 69 | ] 70 | }, 71 | { 72 | "cell_type": "markdown", 73 | "metadata": { 74 | "slideshow": { 75 | "slide_type": "fragment" 76 | } 77 | }, 78 | "source": [ 79 | "There are lots to consider when selecting what packages you use, such as _scalability_ and _portability_." 80 | ] 81 | }, 82 | { 83 | "cell_type": "markdown", 84 | "metadata": { 85 | "slideshow": { 86 | "slide_type": "subslide" 87 | } 88 | }, 89 | "source": [ 90 | "Personally, I recommend the _Pangeo_ software stack, based on:\n", 91 | "\n", 92 | "- [xarray](http://xarray.pydata.org/en/stable/): CDF-like data model (can read and write NetCDF files)\n", 93 | "- [dask/distributed](https://dask.org/): To easily parallelize `xarray` workflows\n", 94 | "- [Jupyter](https://jupyterlab.readthedocs.io/en/stable/): A browser-based, \"terminal\"-like interface with nice graphics capabilities" 95 | ] 96 | }, 97 | { 98 | "cell_type": "markdown", 99 | "metadata": { 100 | "slideshow": { 101 | "slide_type": "subslide" 102 | } 103 | }, 104 | "source": [ 105 | "Other packages provide additional useful capabilities, such as:\n", 106 | "\n", 107 | "- [numpy](https://www.numpy.org/): For general Python N-dimensional arrays\n", 108 | "- [scipy](https://docs.scipy.org/doc/scipy/reference/): For scientific python functions and features based on NumPy arrays\n", 109 | "- [scikit-learn](https://scikit-learn.org/stable/): For data mining and data analysis\n", 110 | "- [matplotlib](https://matplotlib.org/): For general plotting capabilities\n", 111 | "- [cartopy](https://scitools.org.uk/cartopy/docs/latest/): For plotting data on map projections\n", 112 | "- [geoviews](http://geoviews.org/): For simple, concise geographical visualization\n", 113 | "- [hvplot](https://hvplot.pyviz.org/): A high-level plotting API for the PyData ecosystem built on HoloViews.\n", 114 | "- [esmlab](https://esmlab.readthedocs.io/en/latest/): NCAR package built on `xarray` to provide common statistics, climatology, and anomaly computation\n", 115 | "- [intake/intake-esm](https://intake-esm.readthedocs.io/en/latest/): For easily \"getting\" CESM and CMIP data into `xarray` data structures\n", 116 | "- [xesmf](https://xesmf.readthedocs.io/en/latest/): Xarray-based regridding package" 117 | ] 118 | }, 119 | { 120 | "cell_type": "markdown", 121 | "metadata": { 122 | "slideshow": { 123 | "slide_type": "subslide" 124 | } 125 | }, 126 | "source": [ 127 | "More packages are on the horizon. For example, the NCL team is \"pivoting\" to Python (codename `Skylab`)." 128 | ] 129 | }, 130 | { 131 | "cell_type": "markdown", 132 | "metadata": { 133 | "slideshow": { 134 | "slide_type": "subslide" 135 | } 136 | }, 137 | "source": [ 138 | "### What is the current _state_ of these packages?" 139 | ] 140 | }, 141 | { 142 | "cell_type": "markdown", 143 | "metadata": { 144 | "slideshow": { 145 | "slide_type": "fragment" 146 | } 147 | }, 148 | "source": [ 149 | "...Well, that's what this tutorial is all about." 150 | ] 151 | }, 152 | { 153 | "cell_type": "markdown", 154 | "metadata": { 155 | "slideshow": { 156 | "slide_type": "subslide" 157 | } 158 | }, 159 | "source": [ 160 | "---" 161 | ] 162 | }, 163 | { 164 | "cell_type": "markdown", 165 | "metadata": { 166 | "slideshow": { 167 | "slide_type": "subslide" 168 | } 169 | }, 170 | "source": [ 171 | "## \"Which statistics packages are available in Python?\"" 172 | ] 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "metadata": { 177 | "slideshow": { 178 | "slide_type": "fragment" 179 | } 180 | }, 181 | "source": [ 182 | "Again, there are plenty." 183 | ] 184 | }, 185 | { 186 | "cell_type": "markdown", 187 | "metadata": { 188 | "slideshow": { 189 | "slide_type": "fragment" 190 | } 191 | }, 192 | "source": [ 193 | "The most commonly used today are:\n", 194 | "\n", 195 | "- [scipy.stats](https://docs.scipy.org/doc/scipy/reference/stats.html): General-purpose Python statistics functions (for NumPy arrays)\n", 196 | "- [Statsmodel](https://www.statsmodels.org/stable/index.html): For estimation of many different statistical models, as well as for conducting statistical tests, and statistical data exploration. \n", 197 | "- [rpy2](https://rpy2.bitbucket.io/): R for Python\n", 198 | "- [esmlab](https://esmlab.readthedocs.io/en/latest/): In progress, but is `xarray`-friendly" 199 | ] 200 | }, 201 | { 202 | "cell_type": "markdown", 203 | "metadata": { 204 | "slideshow": { 205 | "slide_type": "subslide" 206 | } 207 | }, 208 | "source": [ 209 | "---" 210 | ] 211 | }, 212 | { 213 | "cell_type": "markdown", 214 | "metadata": { 215 | "slideshow": { 216 | "slide_type": "subslide" 217 | } 218 | }, 219 | "source": [ 220 | "## \"How to install external python libs on my laptop / desktop?\"" 221 | ] 222 | }, 223 | { 224 | "cell_type": "markdown", 225 | "metadata": { 226 | "slideshow": { 227 | "slide_type": "fragment" 228 | } 229 | }, 230 | "source": [ 231 | " To best way to get the scientific Python environment is using the [Conda package management system](https://conda.io/docs/). Please follow the [official installation guide](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) for installing on \n", 232 | " - Linux: https://conda.io/projects/conda/en/latest/user-guide/install/linux.html\n", 233 | " - Mac: https://conda.io/projects/conda/en/latest/user-guide/install/macos.html\n", 234 | " - Windows: https://conda.io/projects/conda/en/latest/user-guide/install/windows.html" 235 | ] 236 | }, 237 | { 238 | "cell_type": "markdown", 239 | "metadata": { 240 | "slideshow": { 241 | "slide_type": "fragment" 242 | } 243 | }, 244 | "source": [ 245 | "Linux/Mac also comes with a system Python (/usr/bin/python). Don't touch that. Windows users might find the full Anaconda (Conda plus tons of packages) with graphical interface easier to use than the command line." 246 | ] 247 | }, 248 | { 249 | "cell_type": "markdown", 250 | "metadata": { 251 | "slideshow": { 252 | "slide_type": "fragment" 253 | } 254 | }, 255 | "source": [ 256 | "After installation, check the paths:\n", 257 | "\n", 258 | "```bash\n", 259 | "$ which conda python\n", 260 | ".../miniconda3/bin/conda\n", 261 | ".../miniconda3/bin/python\n", 262 | "```" 263 | ] 264 | }, 265 | { 266 | "cell_type": "code", 267 | "execution_count": null, 268 | "metadata": {}, 269 | "outputs": [], 270 | "source": [] 271 | } 272 | ], 273 | "metadata": { 274 | "celltoolbar": "Slideshow", 275 | "kernelspec": { 276 | "display_name": "Python 3", 277 | "language": "python", 278 | "name": "python3" 279 | }, 280 | "language_info": { 281 | "codemirror_mode": { 282 | "name": "ipython", 283 | "version": 3 284 | }, 285 | "file_extension": ".py", 286 | "mimetype": "text/x-python", 287 | "name": "python", 288 | "nbconvert_exporter": "python", 289 | "pygments_lexer": "ipython3", 290 | "version": "3.7.3" 291 | } 292 | }, 293 | "nbformat": 4, 294 | "nbformat_minor": 2 295 | } 296 | -------------------------------------------------------------------------------- /notebooks/02_plotting.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Plotting CESM Output\n", 8 | "\n", 9 | "Contents:\n", 10 | "- Maps of CESM output (chemical compounds)\n", 11 | "- Maps of CESM-SE output, and regional refinement projections\n", 12 | "- Zonal average contour plots (including calculating ZA)\n", 13 | "- Difference maps - how to choose different color bars\n", 14 | "- Panel map plots with different legends\n", 15 | "- Box-plots (percentiles)\n", 16 | "- Polar graph (e.g. wind rose) [missing]\n", 17 | "- Multi-panel graph (customizing sizes and locations of each panel)\n", 18 | "- Add flow stream lines on contour map [missing]" 19 | ] 20 | }, 21 | { 22 | "cell_type": "markdown", 23 | "metadata": {}, 24 | "source": [ 25 | "---" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "## Let's read some CESM and CESM-SE data\n", 33 | "\n", 34 | "To do this, we need to use `xarray`." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": null, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "import warnings\n", 44 | "warnings.simplefilter(\"ignore\") # Silence warnings\n", 45 | "%matplotlib inline\n", 46 | "import xarray as xr\n", 47 | "import numpy as np" 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": {}, 53 | "source": [ 54 | "And now lets read CAM-chem on SE ne30 grid from GLADE." 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": null, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "file_pattern = \"/glade/scratch/emmons/PYTHON_TUTORIAL/f.e20.FCHIST.ne30_ne30_mg17.cam6_1_019.GEOS5_nudged.next_obs.timescale0.cam.h1.2013-*.nc\"\n", 64 | "ds = xr.open_mfdataset(file_pattern).load()" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": null, 70 | "metadata": {}, 71 | "outputs": [], 72 | "source": [ 73 | "ds" 74 | ] 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": null, 79 | "metadata": {}, 80 | "outputs": [], 81 | "source": [ 82 | "# Set all invariant variables to be coords.\n", 83 | "invariants = [v for v in ds.variables if not {'ncol', 'time'}.issubset(set(ds[v].dims))]\n", 84 | "invariants.extend(['lat', 'lon', 'area'])\n", 85 | "print(invariants)" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": null, 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": [ 94 | "ds = ds.set_coords(invariants)\n", 95 | "ds" 96 | ] 97 | }, 98 | { 99 | "cell_type": "markdown", 100 | "metadata": {}, 101 | "source": [ 102 | "# Visualizing unstructured data" 103 | ] 104 | }, 105 | { 106 | "cell_type": "markdown", 107 | "metadata": {}, 108 | "source": [ 109 | "Here we show how to visualize data on an unstructure grid using `cartopy` and `matplotlib`. To plot this dataset, we will need to read the topology of the dataset into a triangular mesh using `matplotlib`." 110 | ] 111 | }, 112 | { 113 | "cell_type": "markdown", 114 | "metadata": {}, 115 | "source": [ 116 | "First, let's transform longitude values from 0 - 360 range to -180 - 180 range" 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": null, 122 | "metadata": {}, 123 | "outputs": [], 124 | "source": [ 125 | "ds.lon.data.min(), ds.lon.data.max()" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": null, 131 | "metadata": {}, 132 | "outputs": [], 133 | "source": [ 134 | "lons = np.mod(ds.lon.data[0] - 180.0, 360.0) - 180.0\n", 135 | "lons.min(), lons.max()" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": null, 141 | "metadata": {}, 142 | "outputs": [], 143 | "source": [ 144 | "lats = ds.lat.data[0]\n", 145 | "print(lons.shape, lats.shape)" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": null, 151 | "metadata": {}, 152 | "outputs": [], 153 | "source": [ 154 | "import matplotlib.tri as tri\n", 155 | "import matplotlib as mpl" 156 | ] 157 | }, 158 | { 159 | "cell_type": "code", 160 | "execution_count": null, 161 | "metadata": {}, 162 | "outputs": [], 163 | "source": [ 164 | "triang = tri.Triangulation(lons, lats)" 165 | ] 166 | }, 167 | { 168 | "cell_type": "markdown", 169 | "metadata": {}, 170 | "source": [ 171 | "Matplotlib just created an unstructured triangular grid consisting of npoints points and\n", 172 | "ntri triangles. Since we didn't specify the indices of the three points that make\n", 173 | "up the triangle, matpotlib automatically generates triangles using a [Delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation)." 174 | ] 175 | }, 176 | { 177 | "cell_type": "code", 178 | "execution_count": null, 179 | "metadata": {}, 180 | "outputs": [], 181 | "source": [ 182 | "triang.edges.shape" 183 | ] 184 | }, 185 | { 186 | "cell_type": "code", 187 | "execution_count": null, 188 | "metadata": {}, 189 | "outputs": [], 190 | "source": [ 191 | "triang.edges" 192 | ] 193 | }, 194 | { 195 | "cell_type": "markdown", 196 | "metadata": {}, 197 | "source": [ 198 | "Let's get one sample from the dataset to look at" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": null, 204 | "metadata": {}, 205 | "outputs": [], 206 | "source": [ 207 | "sample = ds.isel(ilev=slice(0,2), lev=0, time=slice(0, 1))[['O3']]\n", 208 | "sample" 209 | ] 210 | }, 211 | { 212 | "cell_type": "code", 213 | "execution_count": null, 214 | "metadata": {}, 215 | "outputs": [], 216 | "source": [ 217 | "sample['O3'].data.flatten().shape" 218 | ] 219 | }, 220 | { 221 | "cell_type": "markdown", 222 | "metadata": {}, 223 | "source": [ 224 | "### Matplotlib & Cartopy" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": null, 230 | "metadata": {}, 231 | "outputs": [], 232 | "source": [ 233 | "import cartopy.crs as ccrs\n", 234 | "import matplotlib.pyplot as plt\n", 235 | "from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER" 236 | ] 237 | }, 238 | { 239 | "cell_type": "code", 240 | "execution_count": null, 241 | "metadata": {}, 242 | "outputs": [], 243 | "source": [ 244 | "def make_quick_map():\n", 245 | " fig, ax = plt.subplots(figsize=(16, 9), subplot_kw=dict(projection=ccrs.PlateCarree()))\n", 246 | " ax.coastlines(resolution='50m')\n", 247 | " gl = ax.gridlines(draw_labels=True)\n", 248 | " gl.xlabels_top = gl.ylabels_right = False\n", 249 | " gl.xformatter = LONGITUDE_FORMATTER\n", 250 | " gl.yformatter = LATITUDE_FORMATTER\n", 251 | " return fig, ax" 252 | ] 253 | }, 254 | { 255 | "cell_type": "code", 256 | "execution_count": null, 257 | "metadata": {}, 258 | "outputs": [], 259 | "source": [ 260 | "make_quick_map()" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": null, 266 | "metadata": {}, 267 | "outputs": [], 268 | "source": [ 269 | "fig, ax = make_quick_map()\n", 270 | "ax.tripcolor(triang, sample['O3'].values.flatten(), cmap='YlGn')\n", 271 | "ax.coastlines()" 272 | ] 273 | }, 274 | { 275 | "cell_type": "markdown", 276 | "metadata": {}, 277 | "source": [ 278 | "Let's generalize our plotting utility function so that we can plot arbitrary data points" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": null, 284 | "metadata": {}, 285 | "outputs": [], 286 | "source": [ 287 | "def make_map(nrows, ncols, lat, lon):\n", 288 | " fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(16, 9),\n", 289 | " subplot_kw=dict(projection=ccrs.PlateCarree()), sharex=True, sharey=True)\n", 290 | " for row in range(nrows):\n", 291 | " for col in range(ncols):\n", 292 | " axes[row][col].coastlines(resolution='50m')\n", 293 | " gl = axes[row][col].gridlines(draw_labels=True)\n", 294 | " gl.xlabels_top = gl.ylabels_right = False\n", 295 | " gl.xformatter = LONGITUDE_FORMATTER\n", 296 | " gl.yformatter = LATITUDE_FORMATTER\n", 297 | " axes[row][col].set_aspect('equal') \n", 298 | " triang = tri.Triangulation(lon, lat)\n", 299 | " return fig, axes, triang" 300 | ] 301 | }, 302 | { 303 | "cell_type": "code", 304 | "execution_count": null, 305 | "metadata": {}, 306 | "outputs": [], 307 | "source": [ 308 | "def map_plotter(ds, data_var, nrows, ncols, lats, lons, lev_idx=0, cmap='gist_ncar'):\n", 309 | " sample = ds.isel(lev=lev_idx, time=slice(0, nrows*ncols))[[data_var]]\n", 310 | " fig, axes, triang = make_map(nrows, ncols, lats, lons)\n", 311 | " idxs = nrows * ncols\n", 312 | " for row in range(nrows):\n", 313 | " for col in range(ncols):\n", 314 | " idx = row * ncols + col\n", 315 | " tcp = axes[row][col].tripcolor(triang, sample[data_var].isel(time=idx).values.flatten(), cmap=cmap)\n", 316 | " axes[row][col].set_title(f'time={str(sample.time.values[idx])}')\n", 317 | " cax, kw = mpl.colorbar.make_axes([ax for ax in axes.flat])\n", 318 | " fig.suptitle(f'{sample[data_var].long_name} \\n @ {sample.lev.long_name}={sample.lev.values} {sample.lev.units}', fontsize=20)\n", 319 | " fig.colorbar(tcp, cax=cax, label=f'units={sample[data_var].units}', **kw)" 320 | ] 321 | }, 322 | { 323 | "cell_type": "code", 324 | "execution_count": null, 325 | "metadata": {}, 326 | "outputs": [], 327 | "source": [ 328 | "# Plot Ozone concentration from 12 time steps, at lev with index=10\n", 329 | "map_plotter(ds, 'O3', 4, 3, lats, lons, lev_idx=10)" 330 | ] 331 | }, 332 | { 333 | "cell_type": "code", 334 | "execution_count": null, 335 | "metadata": {}, 336 | "outputs": [], 337 | "source": [ 338 | "# Plot NO2 concentration from 4 time steps at lev with index=20\n", 339 | "map_plotter(ds, 'NO2', 2, 2, lats, lons, lev_idx=20)" 340 | ] 341 | }, 342 | { 343 | "cell_type": "code", 344 | "execution_count": null, 345 | "metadata": {}, 346 | "outputs": [], 347 | "source": [ 348 | "map_plotter(ds, 'NO', 2, 2, lats, lons, lev_idx=30)" 349 | ] 350 | }, 351 | { 352 | "cell_type": "code", 353 | "execution_count": null, 354 | "metadata": {}, 355 | "outputs": [], 356 | "source": [ 357 | "map_plotter(ds, 'ISOP', 2, 2, lats, lons, lev_idx=20)" 358 | ] 359 | }, 360 | { 361 | "cell_type": "code", 362 | "execution_count": null, 363 | "metadata": {}, 364 | "outputs": [], 365 | "source": [ 366 | "map_plotter(ds, 'CLOUD', 2, 2, lats, lons, lev_idx=15)" 367 | ] 368 | }, 369 | { 370 | "cell_type": "code", 371 | "execution_count": null, 372 | "metadata": {}, 373 | "outputs": [], 374 | "source": [ 375 | "map_plotter(ds, 'T', 3, 3, lats, lons, lev_idx=8, cmap=mpl.cm.Spectral_r)" 376 | ] 377 | }, 378 | { 379 | "cell_type": "markdown", 380 | "metadata": {}, 381 | "source": [ 382 | "## HoloViews (hvplot) & GeoViews\n", 383 | "\n", 384 | "### Exploring data of different dimensionality ranging from simple 1D data, to 2D image-like data, to multi-dimensional cubes of data" 385 | ] 386 | }, 387 | { 388 | "cell_type": "markdown", 389 | "metadata": {}, 390 | "source": [ 391 | "For these examples we’ll use the CO2 data from standard monthly average WACCM output:" 392 | ] 393 | }, 394 | { 395 | "cell_type": "code", 396 | "execution_count": null, 397 | "metadata": {}, 398 | "outputs": [], 399 | "source": [ 400 | "import hvplot.xarray\n", 401 | "import geoviews as gv" 402 | ] 403 | }, 404 | { 405 | "cell_type": "code", 406 | "execution_count": null, 407 | "metadata": {}, 408 | "outputs": [], 409 | "source": [ 410 | "file_pattern = \"/glade/scratch/emmons/PYTHON_TUTORIAL/f.e21.FWHISTBgcCrop.f09_f09_mg17.CMIP6-AMIP-WACCM.001.cam.h0.2013-*.nc\"\n", 411 | "data_vars = ['CO2']\n", 412 | "ds1 = xr.open_mfdataset(file_pattern)\n", 413 | "drop_vars = set(ds1.data_vars) - set(data_vars)\n", 414 | "dset = ds1.drop(drop_vars).load()\n", 415 | "co2 = dset.CO2\n", 416 | "dset" 417 | ] 418 | }, 419 | { 420 | "cell_type": "markdown", 421 | "metadata": {}, 422 | "source": [ 423 | "#### 1D Plots \n", 424 | "\n", 425 | "Selecting the data at a particular lat/lon coordinate we get a 1D dataset of CO2 over time:" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": null, 431 | "metadata": {}, 432 | "outputs": [], 433 | "source": [ 434 | "co21d = co2.isel(lev=0, lat=10, lon=10)\n", 435 | "co21d.hvplot()" 436 | ] 437 | }, 438 | { 439 | "cell_type": "markdown", 440 | "metadata": {}, 441 | "source": [ 442 | "Notice how the axes are already appropriately labeled, because xarray stores the metadata required. We can also further subselect the data and use * to overlay plots:" 443 | ] 444 | }, 445 | { 446 | "cell_type": "code", 447 | "execution_count": null, 448 | "metadata": {}, 449 | "outputs": [], 450 | "source": [ 451 | "co21d.hvplot(color='purple') * co21d.hvplot.scatter(marker='o', color='blue', size=15)" 452 | ] 453 | }, 454 | { 455 | "cell_type": "markdown", 456 | "metadata": {}, 457 | "source": [ 458 | "#### Selecting multiple \n", 459 | "If we select multiple coordinates along one axis and plot a chart type, the data will automatically be split by the coordinate:\n" 460 | ] 461 | }, 462 | { 463 | "cell_type": "code", 464 | "execution_count": null, 465 | "metadata": {}, 466 | "outputs": [], 467 | "source": [ 468 | "co2.isel(lev=0, lon=100, lat=[14, 20, 30, 60]).hvplot.line()" 469 | ] 470 | }, 471 | { 472 | "cell_type": "markdown", 473 | "metadata": {}, 474 | "source": [ 475 | "To plot a different relationship we can explicitly request to display the latitude along the y-axis and use the by keyword to color each longitude (or 'lon') differently:\n", 476 | "\n" 477 | ] 478 | }, 479 | { 480 | "cell_type": "code", 481 | "execution_count": null, 482 | "metadata": {}, 483 | "outputs": [], 484 | "source": [ 485 | "co2.isel(time=0, lev=0, lon=[0, 50, 100, 120, 130]).hvplot.line(y='lat', by='lon')" 486 | ] 487 | }, 488 | { 489 | "cell_type": "markdown", 490 | "metadata": {}, 491 | "source": [ 492 | "#### 2D Plots \n", 493 | "By default the `DataArray.hvplot()` method generates an image if the data is two-dimensional.\n" 494 | ] 495 | }, 496 | { 497 | "cell_type": "code", 498 | "execution_count": null, 499 | "metadata": {}, 500 | "outputs": [], 501 | "source": [ 502 | "co22d = co2.isel(time=5, lev=0)\n", 503 | "co22d" 504 | ] 505 | }, 506 | { 507 | "cell_type": "code", 508 | "execution_count": null, 509 | "metadata": {}, 510 | "outputs": [], 511 | "source": [ 512 | "co22d.hvplot(width=600)" 513 | ] 514 | }, 515 | { 516 | "cell_type": "markdown", 517 | "metadata": {}, 518 | "source": [ 519 | "Alternatively we can also plot the same data using the `contour` and `contourf` methods, which provide a levels argument to control the number of iso-contours to draw:\n", 520 | "\n" 521 | ] 522 | }, 523 | { 524 | "cell_type": "code", 525 | "execution_count": null, 526 | "metadata": {}, 527 | "outputs": [], 528 | "source": [ 529 | "co22d.hvplot.contour(width=600, levels=20) + co22d.hvplot.contourf(width=600, levels=8)" 530 | ] 531 | }, 532 | { 533 | "cell_type": "markdown", 534 | "metadata": {}, 535 | "source": [ 536 | "#### n-D Plots \n", 537 | "However if the data has more than two dimensions it will default to a histogram without providing it further hints:\n", 538 | "\n" 539 | ] 540 | }, 541 | { 542 | "cell_type": "code", 543 | "execution_count": null, 544 | "metadata": {}, 545 | "outputs": [], 546 | "source": [ 547 | "co2.hvplot()" 548 | ] 549 | }, 550 | { 551 | "cell_type": "markdown", 552 | "metadata": {}, 553 | "source": [ 554 | "However we can tell it to apply a groupby along a particular dimension, allowing us to explore the data as images along that dimension with a slider:" 555 | ] 556 | }, 557 | { 558 | "cell_type": "code", 559 | "execution_count": null, 560 | "metadata": {}, 561 | "outputs": [], 562 | "source": [ 563 | "co2.hvplot(groupby=['time', 'lev'], width=600, cmap=mpl.cm.Spectral)" 564 | ] 565 | }, 566 | { 567 | "cell_type": "markdown", 568 | "metadata": {}, 569 | "source": [ 570 | "If we pick a different, lower dimensional plot type (such as a `line`) it will automatically apply a groupby over the remaining dimensions:" 571 | ] 572 | }, 573 | { 574 | "cell_type": "code", 575 | "execution_count": null, 576 | "metadata": {}, 577 | "outputs": [], 578 | "source": [ 579 | "co2.hvplot.line()" 580 | ] 581 | }, 582 | { 583 | "cell_type": "markdown", 584 | "metadata": {}, 585 | "source": [ 586 | "#### Statistical plots \n", 587 | "\n", 588 | "Statistical plots such as histograms, kernel-density estimates, or violin and box-whisker plots aggregate the data across one or more of the coordinate dimensions. For instance, plotting a KDE provides a summary of all the CO2 values but we can, once again, use the by keyword to view each selected latitude (or 'lat') separately:\n", 589 | "\n" 590 | ] 591 | }, 592 | { 593 | "cell_type": "code", 594 | "execution_count": null, 595 | "metadata": {}, 596 | "outputs": [], 597 | "source": [ 598 | "co2.sel(lev=[1, 2], lat=[25, 50, 75, 85], method='nearest').hvplot.kde('CO2', by=['lev', 'lat'], alpha=0.5)" 599 | ] 600 | }, 601 | { 602 | "cell_type": "code", 603 | "execution_count": null, 604 | "metadata": {}, 605 | "outputs": [], 606 | "source": [ 607 | "co2.sel(lev=[1, 2], lat=[25, 50, 75, 85], method='nearest').hvplot.hist('CO2', by=['lev', 'lat'], alpha=0.5)" 608 | ] 609 | }, 610 | { 611 | "cell_type": "code", 612 | "execution_count": null, 613 | "metadata": {}, 614 | "outputs": [], 615 | "source": [ 616 | "co2.sel(lev=[1, 2], lat=[25, 50, 75, 85], method='nearest').hvplot.box('CO2', by=['lev', 'lat'], box_alpha=0.5)" 617 | ] 618 | }, 619 | { 620 | "cell_type": "markdown", 621 | "metadata": {}, 622 | "source": [ 623 | "#### Geographic plots\n", 624 | "\n", 625 | "To declare a geographic plot we have to supply a `cartopy.crs.CRS` (or coordinate reference system). Coordinate reference systems are described in the [GeoViews documentation](http://geoviews.org/user_guide/Projections.html) and the full list of available CRSs is in the [cartopy documentation](https://scitools.org.uk/cartopy/docs/v0.15/crs/projections.html). \n", 626 | "Only certain hvPlot types support geographic coordinates, currently including: \n", 627 | "\n", 628 | "- `points`\n", 629 | "- `polygons`\n", 630 | "- `paths`\n", 631 | "- `image`\n", 632 | "- `quadmesh`\n", 633 | "- `contour`\n", 634 | "- `contourf`\n" 635 | ] 636 | }, 637 | { 638 | "cell_type": "code", 639 | "execution_count": null, 640 | "metadata": {}, 641 | "outputs": [], 642 | "source": [ 643 | "co2.isel(lev=[10, 15]).hvplot.quadmesh(\n", 644 | " 'lon', 'lat', 'CO2', projection=ccrs.Orthographic(-90, 30),\n", 645 | " global_extent=True, width=600, height=540, cmap=mpl.cm.Spectral, \n", 646 | " dynamic=True, rasterize=True\n", 647 | ") * gv.feature.coastline\n" 648 | ] 649 | }, 650 | { 651 | "cell_type": "code", 652 | "execution_count": null, 653 | "metadata": {}, 654 | "outputs": [], 655 | "source": [ 656 | "co2.isel(lev=[10, 15]).hvplot.contourf(\n", 657 | " 'lon', 'lat', 'CO2', crs=ccrs.PlateCarree(), projection=ccrs.PlateCarree(),\n", 658 | " width=800, height=540, cmap=mpl.cm.Spectral, levels=8\n", 659 | ") * gv.feature.coastline\n" 660 | ] 661 | }, 662 | { 663 | "cell_type": "code", 664 | "execution_count": null, 665 | "metadata": {}, 666 | "outputs": [], 667 | "source": [] 668 | } 669 | ], 670 | "metadata": { 671 | "kernelspec": { 672 | "display_name": "Python [conda env:acom-tutorial]", 673 | "language": "python", 674 | "name": "conda-env-acom-tutorial-py" 675 | }, 676 | "language_info": { 677 | "codemirror_mode": { 678 | "name": "ipython", 679 | "version": 3 680 | }, 681 | "file_extension": ".py", 682 | "mimetype": "text/x-python", 683 | "name": "python", 684 | "nbconvert_exporter": "python", 685 | "pygments_lexer": "ipython3", 686 | "version": "3.7.3" 687 | } 688 | }, 689 | "nbformat": 4, 690 | "nbformat_minor": 2 691 | } 692 | -------------------------------------------------------------------------------- /environments/conda-osx-64.lock: -------------------------------------------------------------------------------- 1 | # platform: osx-64 2 | # env_hash: cb41a94dfe39b9af26f41686d2777f5d1ca47c012376a9394ed69f537d63a586 3 | @EXPLICIT 4 | https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hc929b4f_4.tar.bz2#521b82c700a64bac7d8da27539422e91 5 | https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.17.1-h0d85af4_1.tar.bz2#786a1af1bc9194e43bb3a9e1ea0146ed 6 | https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2020.12.5-h033912b_0.tar.bz2#4483d8ea13bd57b52e3539e741501a7d 7 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 8 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-2.001-hab24e00_0.tar.bz2#1fcc67d5eed875734d8b3eec00b29ce4 9 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.030-hab24e00_0.tar.bz2#dfc1ee25079fd9314698d73ef38b557f 10 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 11 | https://conda.anaconda.org/conda-forge/osx-64/freexl-1.0.6-h0d85af4_0.tar.bz2#077e147086c0a8ca19071e312a5d12e0 12 | https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2#f1c6b41e0f56998ecd9a3e210faa1dc0 13 | https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hbcb3906_2.tar.bz2#be8f747c37e4d7e346c133e641966750 14 | https://conda.anaconda.org/conda-forge/osx-64/jpeg-9d-hbcb3906_0.tar.bz2#ff6fba028f282f94ceb10597d58a56e8 15 | https://conda.anaconda.org/conda-forge/osx-64/json-c-0.13.1-h575e443_1002.tar.bz2#79d224748da1805ae297b21fbb83b1e0 16 | https://conda.anaconda.org/conda-forge/osx-64/libcxx-11.1.0-habf9029_0.tar.bz2#a88609e545f948a404419c65cd96fa1a 17 | https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-haf1e3a3_1.tar.bz2#79dc2be110b2a3d1e97ec21f691c50ad 18 | https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.16-haf1e3a3_0.tar.bz2#c5fab167412a52e491c8e11453ae016f 19 | https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2#24632c09ed931af617fe6d5292919cab 20 | https://conda.anaconda.org/conda-forge/osx-64/libtool-2.4.6-h2e338ed_1007.tar.bz2#014bb0a1b0fe744bbfaa95db0569eebe 21 | https://conda.anaconda.org/conda-forge/osx-64/libuv-1.41.0-hbcf498f_0.tar.bz2#42903eadc4979eae8e9d2c6a1dc2e5e5 22 | https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.2.0-h0d85af4_2.tar.bz2#a5d807d5f16967981d45d6f33621f580 23 | https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-11.1.0-hda6cdc1_1.tar.bz2#ca57c0d989dda699ee387581f781e239 24 | https://conda.anaconda.org/conda-forge/osx-64/mpi-1.0-mpich.tar.bz2#7316a634ed27146b42d28433ec3bc227 25 | https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.2-h2e338ed_4.tar.bz2#9cef1910395d1543527583e73dba30f1 26 | https://conda.anaconda.org/conda-forge/osx-64/pandoc-2.13-h0d85af4_0.tar.bz2#bee54b1cef69dd845f1057014a3461ee 27 | https://conda.anaconda.org/conda-forge/osx-64/pixman-0.40.0-hbcb3906_0.tar.bz2#09a583a6f172715be21d93aaa1b42d71 28 | https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.10-0.tar.bz2#02204e159c8596584135923fd81a2c10 29 | https://conda.anaconda.org/conda-forge/osx-64/tzcode-2021a-h0d85af4_1.tar.bz2#a3ec24006a851c6971726b009cc675c0 30 | https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.5-haf1e3a3_1.tar.bz2#41116deb499e9bc58048c297d6403ce6 31 | https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-haf1e3a3_0.tar.bz2#84c2fc186995c25a43e86ed708065572 32 | https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.11-h7795811_1010.tar.bz2#7d39e47e16ed0107f37c7224d5b5be8b 33 | https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.0-he49afe7_0.tar.bz2#95ea0559c188b34a888d42545c580268 34 | https://conda.anaconda.org/conda-forge/osx-64/expat-2.3.0-he49afe7_0.tar.bz2#da0de66781469d35a6358b4d1d1fbbf7 35 | https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 36 | https://conda.anaconda.org/conda-forge/osx-64/geos-3.8.1-h4a8c4bd_0.tar.bz2#b0590b5a8d2d488d469ab4cb343606ac 37 | https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h2e338ed_1001.tar.bz2#5f6e7f98caddd0fc2d345b207531814c 38 | https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.13-h71d84a9_1004.tar.bz2#798adc59c4f9633b4146fd0bde19437b 39 | https://conda.anaconda.org/conda-forge/osx-64/icu-68.1-h74dc148_0.tar.bz2#e4e7f8580abd1275ea2250fe606b66ac 40 | https://conda.anaconda.org/conda-forge/osx-64/jasper-1.900.1-h636a363_1006.tar.bz2#3da668fadd9fe0387d68180a21b9c3c7 41 | https://conda.anaconda.org/conda-forge/osx-64/libaec-1.0.4-h046ec9c_1.tar.bz2#b573eb14edcd87c201135eedc7057361 42 | https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2#6016a8a1d0e63cac3de2c352cd40208b 43 | https://conda.anaconda.org/conda-forge/osx-64/libffi-3.3-h046ec9c_2.tar.bz2#c7a196accaf92d40985d5c9b4d14f9cb 44 | https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-9.3.0-h6c81a4c_22.tar.bz2#15c2a786898e345e3865008236d50799 45 | https://conda.anaconda.org/conda-forge/osx-64/libllvm10-10.0.1-h009f743_3.tar.bz2#cc65eb0b26253d2789320bfd661852f9 46 | https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h7cec526_2.tar.bz2#9e52521faba2b53269672628d34e1513 47 | https://conda.anaconda.org/conda-forge/osx-64/libspatialindex-1.9.3-h1c7c35f_3.tar.bz2#0157080fcd4399874da817ce95296543 48 | https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.3-h046ec9c_0.tar.bz2#7f13d69c1b7989b85029efb6f3e35af9 49 | https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1k-h0d85af4_0.tar.bz2#f9582eb16f4e3bc7932995e122f30a74 50 | https://conda.anaconda.org/conda-forge/osx-64/pcre-8.44-hb1e8313_0.tar.bz2#e1c1a939ae5ecd32f13db1f742b434e5 51 | https://conda.anaconda.org/conda-forge/osx-64/readline-8.1-h05e3726_0.tar.bz2#2832e9b6a7caa7cb192fcda6cfcd8871 52 | https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.10-h0419947_1.tar.bz2#9a79a432473acddd936ff8bab8b86145 53 | https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.4-h1c7c35f_0.tar.bz2#2af55e3523e9210b2b2dff5855fb5382 54 | https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab 55 | https://conda.anaconda.org/conda-forge/osx-64/freetype-2.10.4-h4cff582_1.tar.bz2#5a136a432c6062362cd7990c514bd8d6 56 | https://conda.anaconda.org/conda-forge/osx-64/gettext-0.19.8.1-h7937167_1005.tar.bz2#52fd84c5cc5d61a6e05885f44d033efa 57 | https://conda.anaconda.org/conda-forge/osx-64/krb5-1.17.2-h60d9502_0.tar.bz2#abf2add2a1ade1920b25a8f3327a1aa0 58 | https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-9_3_0_h6c81a4c_22.tar.bz2#2a96d438e9b3b5ece940211a4259d3e3 59 | https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.43.0-h07e645a_0.tar.bz2#b4a9c405d47f3b120ed6cf86cc8a13aa 60 | https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h822eb06_4.tar.bz2#58edbfd25d3445f5df8097c6c013b9a7 61 | https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.9.0-h52ee1ee_6.tar.bz2#42cebefd1fd127d1180e3df004a413b7 62 | https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.9.10-h93ec3fd_4.tar.bz2#65d5f634e962c4883184aa65902241fd 63 | https://conda.anaconda.org/conda-forge/osx-64/nodejs-15.14.0-hb529b34_0.tar.bz2#ca62bc5319512796e2e42264a6d2f747 64 | https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.35.4-h44b9ce1_0.tar.bz2#8a07c36ce8a003a8213591882314dac6 65 | https://conda.anaconda.org/conda-forge/osx-64/udunits2-2.2.27.27-h664449b_1.tar.bz2#10a1c0239c272976e1cfc85be1d02f71 66 | https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.3-h379762d_2.tar.bz2#6e2e329eab8a50d64f841331f4de0468 67 | https://conda.anaconda.org/conda-forge/osx-64/zstd-1.4.9-h582d3a0_0.tar.bz2#551e04087371339ee63524f2988faa62 68 | https://conda.anaconda.org/conda-forge/osx-64/boost-cpp-1.74.0-h43a636a_2.tar.bz2#547d7c5e9afe4b7164ebc0c7b6df5bf0 69 | https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.1-h10f422b_1005.tar.bz2#95d7756fee0926aa2b6d111299c173f7 70 | https://conda.anaconda.org/conda-forge/osx-64/libcurl-7.76.0-h8ef9fac_0.tar.bz2#196de557ead286a583e176056a9f5e50 71 | https://conda.anaconda.org/conda-forge/osx-64/libglib-2.68.1-hd556434_0.tar.bz2#a2919868ce5a9ca26eb20689b5ce6baa 72 | https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.12-openmp_h54245bb_1.tar.bz2#ecaffce11312c27c18ad35e65095fecc 73 | https://conda.anaconda.org/conda-forge/osx-64/libpq-12.3-h7049927_3.tar.bz2#0d81d4294d3afd9b7269821e71d0fd0c 74 | https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.2.0-h355d032_0.tar.bz2#ad3cbf0f77b9f89df082eef584d9009a 75 | https://conda.anaconda.org/conda-forge/osx-64/mpich-3.4.1-hd33e60e_104.tar.bz2#66c5ac653650be446075645e3c07ddd6 76 | https://conda.anaconda.org/conda-forge/osx-64/python-3.8.8-h4e93d89_0_cpython.tar.bz2#fd8260be7af83c005bbf0767361da91d 77 | https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.2.7-he9a4fb4_0.tar.bz2#b3f39b995e31d302257cf6efaee969a2 78 | https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33 79 | https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b 80 | https://conda.anaconda.org/conda-forge/noarch/asciitree-0.3.3-py_2.tar.bz2#c0481c9de49f040272556e2cedf42816 81 | https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12 82 | https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.36.0-he69c4ee_4.tar.bz2#7b97814b391b446512be7df30c90ad26 83 | https://conda.anaconda.org/conda-forge/noarch/attrs-20.3.0-pyhd3deb0d_0.tar.bz2#5b319abb055eefcfa344bc21378ca23f 84 | https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213 85 | https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd 86 | https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a 87 | https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82 88 | https://conda.anaconda.org/conda-forge/osx-64/cfitsio-3.470-h01dc385_7.tar.bz2#7f3e6254480eeccf854238807b1798d9 89 | https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 90 | https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e 91 | https://conda.anaconda.org/conda-forge/osx-64/curl-7.76.0-h06286d4_0.tar.bz2#af55897a2351b4f88f642abf63f67ad5 92 | https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_1.tar.bz2#28e0de0ecba81334619a777fdc00febc 93 | https://conda.anaconda.org/conda-forge/noarch/decorator-5.0.6-pyhd8ed1ab_0.tar.bz2#39630f8daa82fec8133e83ca043db78a 94 | https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 95 | https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.3-pyhd8ed1ab_1003.tar.bz2#bbf9a201f6ce99a506f4955374d9a9f4 96 | https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.0-py_0.tar.bz2#0765c7a36e7ed365cab77858c9fba1b7 97 | https://conda.anaconda.org/conda-forge/noarch/fsspec-0.9.0-pyhd8ed1ab_0.tar.bz2#ea14c83a9e16d82ffa15d30ac5df7ba2 98 | https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.6-h2e6141f_0.tar.bz2#be5dd0a4ffc76407baa987e0d99d6c97 99 | https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-hccb3bdf_2.tar.bz2#ad799f4bcdacc510347c2d9d19b40bc3 100 | https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.10.6-mpi_mpich_h8c5dddf_1013.tar.bz2#e6eeb92b3b6f650b7a238e6ef20cad8f 101 | https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95 102 | https://conda.anaconda.org/conda-forge/noarch/idna-2.10-pyh9f0ad1d_0.tar.bz2#f95a12b4f435aae6680fe55ae2eb1b06 103 | https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287 104 | https://conda.anaconda.org/conda-forge/noarch/json5-0.9.5-pyh9f0ad1d_0.tar.bz2#10759827a94e6b14996e81fb002c0bda 105 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.0-pyhd8ed1ab_1.tar.bz2#f8da92114c8fbe1d951b0efaf54dd14b 106 | https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b 107 | https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-8_openblas.tar.bz2#054ee8e709d3d9c2678a3c8bda034896 108 | https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-h8fd9edb_1013.tar.bz2#422f4621e74a9ebff7cc68883f78e283 109 | https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.2.0-h1648767_0.tar.bz2#83d55a406842f05cdfecc995c1e69018 110 | https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d 111 | https://conda.anaconda.org/conda-forge/noarch/monotonic-1.5-py_0.tar.bz2#0cc5fd0140497c3f1e2db2e7493b62b3 112 | https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.1-pyhd8ed1ab_0.tar.bz2#47a51a5b8f9cc41004c8d7bd88b62447 113 | https://conda.anaconda.org/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2#0b2e68acc8c78c8cc392b90983481f58 114 | https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.4.0-h6cbf5cd_0.tar.bz2#38e701cb94a7e667a19c287f2398f04b 115 | https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.4.2-py_1.tar.bz2#ba6f4a308f1ea22abe1d72e72544af76 116 | https://conda.anaconda.org/conda-forge/noarch/param-1.10.1-pyhd3deb0d_0.tar.bz2#e990456731e2381b8801b26242234e26 117 | https://conda.anaconda.org/conda-forge/noarch/parso-0.8.2-pyhd8ed1ab_0.tar.bz2#fb40b157bd62b457a1cc82527b63f0b0 118 | https://conda.anaconda.org/conda-forge/noarch/pathspec-0.8.1-pyhd3deb0d_0.tar.bz2#fcd2fbb062b55d14a77e664c89ee17a6 119 | https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 120 | https://conda.anaconda.org/conda-forge/osx-64/postgresql-12.3-he852019_3.tar.bz2#2d052c9b8e4160233fa6755c322d843a 121 | https://conda.anaconda.org/conda-forge/osx-64/proj-7.2.0-h78d1473_2.tar.bz2#3d1cbf2f7d932f2d0fef10267bf787f8 122 | https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.10.1-pyhd8ed1ab_0.tar.bz2#088ca4c07d7b346a2a099b3685a0e992 123 | https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 124 | https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 125 | https://conda.anaconda.org/conda-forge/noarch/pyparsing-2.4.7-pyh9f0ad1d_0.tar.bz2#626c4f20d5bf06dcec9cf2eaa31725c7 126 | https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6 127 | https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.8-1_cp38.tar.bz2#5fe7757fd743e1c2d14d6170d4f53365 128 | https://conda.anaconda.org/conda-forge/noarch/pytz-2021.1-pyhd8ed1ab_0.tar.bz2#3af2e9424d5eb0063824a3f9b850d411 129 | https://conda.anaconda.org/conda-forge/noarch/send2trash-1.5.0-py_0.tar.bz2#c3779037a635e1150f1c53c28b875949 130 | https://conda.anaconda.org/conda-forge/noarch/six-1.15.0-pyh9f0ad1d_0.tar.bz2#1eec421f0f1f39e579e44e4a5ce646a2 131 | https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.3.0-pyhd8ed1ab_0.tar.bz2#2f5b87cd0bdf1822b62e40909f471db4 132 | https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 133 | https://conda.anaconda.org/conda-forge/noarch/testpath-0.4.4-py_0.tar.bz2#3b98fff4d5342bebde2ecaa314f796f9 134 | https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 135 | https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 136 | https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.1-py_0.tar.bz2#d1e66b58cb00b3817ad9f05eec098c00 137 | https://conda.anaconda.org/conda-forge/noarch/tqdm-4.60.0-pyhd8ed1ab_0.tar.bz2#d4d22fcd50ccf1925fe59efd36ba4358 138 | https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.7.4.3-py_0.tar.bz2#12b96e382730541a4b332420227055ae 139 | https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136 140 | https://conda.anaconda.org/conda-forge/noarch/wheel-0.36.2-pyhd3deb0d_0.tar.bz2#768bfbe026426d0e76b377997d1f2b98 141 | https://conda.anaconda.org/conda-forge/noarch/zipp-3.4.1-pyhd8ed1ab_0.tar.bz2#a4fa30eb74a326092b3d8078b1f1aae1 142 | https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd 143 | https://conda.anaconda.org/conda-forge/osx-64/antlr-python-runtime-4.7.2-py38h50d1736_1002.tar.bz2#aebea38d73e2a51401ac9f5953c9b021 144 | https://conda.anaconda.org/conda-forge/osx-64/appnope-0.1.2-py38h50d1736_1.tar.bz2#8426b3b9bb0f98118f24e55958f88b8e 145 | https://conda.anaconda.org/conda-forge/noarch/babel-2.9.0-pyhd3deb0d_0.tar.bz2#1cb532c9a6fd4e56a9f0906b87c17b76 146 | https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 147 | https://conda.anaconda.org/conda-forge/osx-64/certifi-2020.12.5-py38h50d1736_1.tar.bz2#fe528d606027dc2848f5a3577ab9b4eb 148 | https://conda.anaconda.org/conda-forge/osx-64/cffi-1.14.5-py38ha97d567_0.tar.bz2#e7e73148c3781ec81b23f02d7891f138 149 | https://conda.anaconda.org/conda-forge/osx-64/chardet-4.0.0-py38h50d1736_1.tar.bz2#78e43861bd8d39b948feaa1715b22851 150 | https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f 151 | https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.1-pyhd8ed1ab_0.tar.bz2#3170b1d23788c6b161dbd14bfb5c752e 152 | https://conda.anaconda.org/conda-forge/noarch/cycler-0.10.0-py_2.tar.bz2#f6d7c7e6d8f42cbbec7e07a8d879f91c 153 | https://conda.anaconda.org/conda-forge/osx-64/cytoolz-0.11.0-py38h5406a74_3.tar.bz2#47390f3152fb50f6bab264b3a91779b4 154 | https://conda.anaconda.org/conda-forge/noarch/fasteners-0.14.1-py_3.tar.bz2#8af0bf3cfe806fb001d9923b4fe1594b 155 | https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.6.0-h4fce3c3_4.tar.bz2#e3b8964148f1f8e307956186e4b51575 156 | https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-2.8.0-h159f659_1.tar.bz2#ee71b6631ddc17ba85c3b8aa8581b018 157 | https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-3.10.1-py38h50d1736_0.tar.bz2#48785406fa4f8437e593444d6dd91c78 158 | https://conda.anaconda.org/conda-forge/osx-64/importlib_resources-5.1.2-py38h50d1736_0.tar.bz2#c5c38c73d83cc2c3e4fe2eac69b485d6 159 | https://conda.anaconda.org/conda-forge/osx-64/jedi-0.18.0-py38h50d1736_2.tar.bz2#fd627462ba923b731e3220d729f05951 160 | https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.14-h31dd65d_2.tar.bz2#a6748170c0d1444fb46a330d2553ca3e 161 | https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.3.1-py38hd9c93a9_1.tar.bz2#74c943c367b1dd3e951e92520a71fc96 162 | https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-8_openblas.tar.bz2#67acafbc05ce608462a59740ef546b52 163 | https://conda.anaconda.org/conda-forge/osx-64/libdap4-3.20.6-h3e144a0_2.tar.bz2#55e0706347eb18f3616808366236bcaa 164 | https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.2-h4e7a7ea_0.tar.bz2#d9e83a65dafb084ef6d718206fb96699 165 | https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-8_openblas.tar.bz2#f20c01455d69b8a613bb92cd4544b553 166 | https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.7.4-mpi_mpich_h2865646_7.tar.bz2#bd9d0dc2880ed3e2a01215ddecfd202b 167 | https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.0.1-hc8f9cd9_1.tar.bz2#95b628262f2c68765a1547901351a456 168 | https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.36.0-py38h872f124_0.tar.bz2#4f2f6cb8e2212d9933fbf8729c5641e5 169 | https://conda.anaconda.org/conda-forge/osx-64/lz4-3.1.3-py38h5bcf07e_0.tar.bz2#8c5b0194daafbbe132abab508da95754 170 | https://conda.anaconda.org/conda-forge/osx-64/markupsafe-1.1.1-py38h5406a74_3.tar.bz2#f1334fc4cf0a7c6a7defc63457a9771c 171 | https://conda.anaconda.org/conda-forge/osx-64/mistune-0.8.4-py38h5406a74_1003.tar.bz2#a15cfd99b648dbb53db4ab2347ba80e8 172 | https://conda.anaconda.org/conda-forge/osx-64/mpi4py-3.0.3-py38h12313e3_5.tar.bz2#f031a4b0c8db7af25a437406616ef8ed 173 | https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.2-py38hd9c93a9_1.tar.bz2#4ff5344d211cde8532653025296a0ccc 174 | https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-py_0.tar.bz2#1073dc92c8f247d94ac14dd79ca0bbec 175 | https://conda.anaconda.org/conda-forge/osx-64/mypy_extensions-0.4.3-py38h50d1736_3.tar.bz2#ffac8711bd3ad114760e8773ba365240 176 | https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 177 | https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 178 | https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2#5909e7b978141dd80d28dbf9de627827 179 | https://conda.anaconda.org/conda-forge/osx-64/pillow-8.1.2-py38h83525de_1.tar.bz2#283aef313eba5fc215b0aba65cbdb2fa 180 | https://conda.anaconda.org/conda-forge/osx-64/poppler-0.89.0-hd735947_5.tar.bz2#8ccadd857799b0f550e86399b44c473b 181 | https://conda.anaconda.org/conda-forge/osx-64/psutil-5.8.0-py38h5406a74_1.tar.bz2#ede1fa6897d23711e140d04204c3eece 182 | https://conda.anaconda.org/conda-forge/noarch/pyct-core-0.4.6-py_0.tar.bz2#55ec526f95e0959de3f68bc6289a20da 183 | https://conda.anaconda.org/conda-forge/osx-64/pyrsistent-0.17.3-py38h5406a74_2.tar.bz2#50060fafbdcf7202bf3aec945555b911 184 | https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py38h50d1736_3.tar.bz2#cbf7ab149d29e578a094bcf99d2dbf09 185 | https://conda.anaconda.org/conda-forge/osx-64/python-blosc-1.10.2-py38h1588c1c_0.tar.bz2#2619f96b3c566f5e1b82fc380fbdf23b 186 | https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.1-py_0.tar.bz2#0d0150ed9c2d25817f5324108d3f7571 187 | https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.0.1-pyhd3deb0d_0.tar.bz2#12e4d3289ffcbdf465864af6eb2c6f4b 188 | https://conda.anaconda.org/conda-forge/osx-64/pyyaml-5.4.1-py38h5406a74_0.tar.bz2#bf86e551c8730e6f6fd8b01b082929c3 189 | https://conda.anaconda.org/conda-forge/osx-64/pyzmq-22.0.3-py38hd3b92b6_1.tar.bz2#9ad78b293488e09797216e8fd1acb4fb 190 | https://conda.anaconda.org/conda-forge/osx-64/regex-2021.4.4-py38h96a0964_0.tar.bz2#ce562fbde350df0d43e8685810586d3d 191 | https://conda.anaconda.org/conda-forge/osx-64/rtree-0.9.7-py38hc59ffc2_1.tar.bz2#0935c0d31e6703a3ba1f15e9dca39e50 192 | https://conda.anaconda.org/conda-forge/osx-64/sniffio-1.2.0-py38h50d1736_1.tar.bz2#5071a98de41511ed3b2f11f6034fa083 193 | https://conda.anaconda.org/conda-forge/noarch/tenacity-7.0.0-pyhd8ed1ab_0.tar.bz2#1e78781812622a6df0141e0857f52ab3 194 | https://conda.anaconda.org/conda-forge/osx-64/tomlkit-0.7.0-py38h50d1736_3.tar.bz2#66c2af865c2d545b6b5a5deb45084dfb 195 | https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py38h5406a74_1.tar.bz2#9f14218e2a273093a0249c3214972055 196 | https://conda.anaconda.org/conda-forge/noarch/traitlets-5.0.5-py_0.tar.bz2#99618ee9ab1323e40f231acdab92fe60 197 | https://conda.anaconda.org/conda-forge/osx-64/typed-ast-1.4.2-py38h5406a74_0.tar.bz2#50ecd62304129f73106a377498c3c41e 198 | https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 199 | https://conda.anaconda.org/conda-forge/osx-64/anyio-2.2.0-py38h50d1736_0.tar.bz2#cdc07bb9d62ee6e44c03e04a654f20d9 200 | https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-20.1.0-py38h5406a74_2.tar.bz2#0345d6e49af20d6aa8af98373075bcad 201 | https://conda.anaconda.org/conda-forge/noarch/black-20.8b1-py_1.tar.bz2#e555d6b71ec916c3dc4e6e3793cc9796 202 | https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38h5406a74_1001.tar.bz2#67c7c3b7a69e581e3a611730c8ea94fc 203 | https://conda.anaconda.org/conda-forge/osx-64/cryptography-3.4.7-py38h1fa4640_0.tar.bz2#5304e7f817ae1197827db78524f7c2a7 204 | https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.4.0-pyhd8ed1ab_0.tar.bz2#6a3cee4ed19dffa70d021526d0f07258 205 | https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2#7b6747d7cc2076341029cff659669e8b 206 | https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.21.0-h136bbf5_0.tar.bz2#c7f0b36735c7d8e897c44e8ff8aaabe6 207 | https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-3.10.1-hd8ed1ab_0.tar.bz2#daa6bb6edd7537397fc4363782e623aa 208 | https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-4.7.1-py38h50d1736_0.tar.bz2#1253aea385688aebc9941897681c8a2a 209 | https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.2.1-he1d4179_3.tar.bz2#11233da76c19c58b40b6a62fc532a9bf 210 | https://conda.anaconda.org/conda-forge/noarch/markdown-3.3.4-pyhd8ed1ab_0.tar.bz2#b8054f74fbed2b282f032219f114421a 211 | https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.58.0-py_0.tar.bz2#2a5e0b9d1279670b4bd6c80959050c52 212 | https://conda.anaconda.org/conda-forge/osx-64/netcdf-fortran-4.5.3-mpi_mpich_hc610113_3.tar.bz2#21085769c27fbb1dd152191b1c3801e4 213 | https://conda.anaconda.org/conda-forge/osx-64/numpy-1.20.2-py38had91d27_0.tar.bz2#9a5749fcbc6e2b0220f57491748728b2 214 | https://conda.anaconda.org/conda-forge/osx-64/pango-1.42.4-ha86e081_5.tar.bz2#23cc7aeb9c983f9bba284efb9de48078 215 | https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.0.1-py38hbfd3961_0.tar.bz2#530765b189c676faaa7e0cfd122bd89f 216 | https://conda.anaconda.org/conda-forge/osx-64/setuptools-49.6.0-py38h50d1736_3.tar.bz2#af8a81ee7c2c09fc2884c800a044b616 217 | https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.1.0-pyh9f0ad1d_0.tar.bz2#f3747861e233cca91866265b48382356 218 | https://conda.anaconda.org/conda-forge/osx-64/terminado-0.9.4-py38h50d1736_0.tar.bz2#d00253bba516c5a41988e34e60f16b3f 219 | https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6 220 | https://conda.anaconda.org/conda-forge/noarch/bleach-3.3.0-pyh44b312d_0.tar.bz2#abf6b76c39358ca36ca706c46f054f2a 221 | https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.3.2-py38hc7193ba_3.tar.bz2#ee082d2a1e13cb0c7ad50a16e8226638 222 | https://conda.anaconda.org/conda-forge/osx-64/cftime-1.4.1-py38ha1b04c9_0.tar.bz2#7c89fc51ac7481cc1df84ebc0757a1db 223 | https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 224 | https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5 225 | https://conda.anaconda.org/conda-forge/osx-64/distributed-2021.4.0-py38h50d1736_0.tar.bz2#ab0ca0f3e51e89dd19f80978867601e5 226 | https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.0-py_0.tar.bz2#6e166cd37cfeadefcfca1ffe00f222bb 227 | https://conda.anaconda.org/conda-forge/osx-64/esmf-8.1.0-mpi_mpich_he0c1309_100.tar.bz2#48c011a9c000ca7ff0e24fd132b7f8a1 228 | https://conda.anaconda.org/conda-forge/osx-64/gdal-3.2.1-py38h1cfd383_3.tar.bz2#cb14c62e96682199c12064d9bad22e02 229 | https://conda.anaconda.org/conda-forge/osx-64/gsw-3.4.0-py38h8cc9b4f_1.tar.bz2#f6e400626cff28a50eef37d1e5e98d66 230 | https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h55c0dba_0.tar.bz2#a02716cf9553c9a34299258ef6c9f08e 231 | https://conda.anaconda.org/conda-forge/osx-64/h5py-3.1.0-nompi_py38h5142359_100.tar.bz2#805917dbadc645072a237560a6520fce 232 | https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyh44b312d_0.tar.bz2#1d4c3605d85a3655b1595e0694138eb6 233 | https://conda.anaconda.org/conda-forge/noarch/jsonschema-3.2.0-pyhd8ed1ab_3.tar.bz2#66125e28711d8ffc04a207a2b170316d 234 | https://conda.anaconda.org/conda-forge/noarch/jupyter-packaging-0.9.1-pyhd8ed1ab_0.tar.bz2#a323e1fbb8b7ec51a02601cbd7dd9db5 235 | https://conda.anaconda.org/conda-forge/noarch/jupyter_client-6.1.12-pyhd8ed1ab_0.tar.bz2#f58b38ddb9f94fa3cafea4ba2b17f93b 236 | https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.50.3-hd4300c0_1.tar.bz2#f4a358de515f3168339ef3d688b3e90d 237 | https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.4.1-py38h6152e83_0.tar.bz2#1f3d9f48471bd68f29b3ae1f52bb4c08 238 | https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7 239 | https://conda.anaconda.org/conda-forge/osx-64/numba-0.53.1-py38h8fd2267_0.tar.bz2#8f6ca3107c90d9cdd334a20221747091 240 | https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.7.3-py38h0a5c65b_0.tar.bz2#71288172c573918178c251e740ce36fe 241 | https://conda.anaconda.org/conda-forge/osx-64/pandas-1.2.4-py38h1f261ad_0.tar.bz2#ba20ba2402186a1b7c3c30fa3d2e95b4 242 | https://conda.anaconda.org/conda-forge/noarch/pint-0.17-pyhd8ed1ab_0.tar.bz2#7a334c0cd901ae380ab30285ad2a4b8a 243 | https://conda.anaconda.org/conda-forge/noarch/pip-21.0.1-pyhd8ed1ab_0.tar.bz2#849477e10d78cbc283c78fd53bfbb567 244 | https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz2#196e0cff141677f430fc06eb0d0ad94d 245 | https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 246 | https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2021.03.0-py38h0793694_1.tar.bz2#25a94fc6b380382408389f18395e9d0e 247 | https://conda.anaconda.org/conda-forge/osx-64/scipy-1.6.2-py38h431c0a8_0.tar.bz2#3cb15ccfbe0243d35f9dd325d30a8887 248 | https://conda.anaconda.org/conda-forge/osx-64/shapely-1.7.1-py38h7843d1f_1.tar.bz2#49a7a8c43aca5934260aebf39b0c7552 249 | https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a 250 | https://conda.anaconda.org/conda-forge/osx-64/basemap-1.2.2-py38h5bd771d_3.tar.bz2#193b4949ff0a5cbde99eab2cc0666479 251 | https://conda.anaconda.org/conda-forge/osx-64/bokeh-2.3.1-py38h50d1736_0.tar.bz2#47e750b1c66a35d73b0267ac8d83d362 252 | https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.18.0-py38he423d8b_8.tar.bz2#a69f39a0f1c5aa03aed421b928d1f8e4 253 | https://conda.anaconda.org/conda-forge/osx-64/cf-units-2.1.4-py38h174b24a_2.tar.bz2#21c7006215d8520d80e1dc7bcdee8a3b 254 | https://conda.anaconda.org/conda-forge/noarch/cmocean-2.0-py_3.tar.bz2#10f08c3aa77dc4080ebc1c03cb542f70 255 | https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.7.2-pyhd8ed1ab_1.tar.bz2#cf9d1d4f7aaa0d99d7ec6251106686ea 256 | https://conda.anaconda.org/conda-forge/osx-64/dask-mpi-2.21.0-py38hcd06e49_1.tar.bz2#da5f3c5b8076474b31de4a3861902172 257 | https://conda.anaconda.org/conda-forge/osx-64/esmpy-8.1.0-mpi_mpich_py38h661e69c_100.tar.bz2#ee89f27587b9b161d528031dc9ea5578 258 | https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.18-py38hf4ff7c0_1.tar.bz2#6e6bfb6571dd62fc8c48f418d56edce2 259 | https://conda.anaconda.org/conda-forge/osx-64/graphviz-2.47.0-hdb475ea_1.tar.bz2#31b618cc82d999badc4873b701232874 260 | https://conda.anaconda.org/conda-forge/noarch/h5netcdf-0.10.0-pyhd8ed1ab_0.tar.bz2#b5c92155f9e1c3c7c18b95453f90145a 261 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7 262 | https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.4.1-py38h50d1736_0.tar.bz2#a21cdf96e13bcba856ed05583cca61f5 263 | https://conda.anaconda.org/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2#bafa5df6d4f8db69a4d197b4657127e7 264 | https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e 265 | https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.5.6-nompi_py38h2c97785_101.tar.bz2#00a000ef89f417c103d103f2df8a7553 266 | https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.1-py_0.tar.bz2#d971df2dcd1a453daabecec0ef76e88a 267 | https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.2.2-py38h9a50708_0.tar.bz2#a9440cf6a0090e3558fd93904b499ac4 268 | https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.1-pyhd8ed1ab_1.tar.bz2#f524b2bb48274790373a27128b25d7ca 269 | https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.4-pyhd8ed1ab_0.tar.bz2#d7b20b328e23d993994ea02077c009c0 270 | https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee 271 | https://conda.anaconda.org/conda-forge/noarch/xarray-0.17.0-pyhd8ed1ab_0.tar.bz2#972b41b5afded8acbfed8ea18d016765 272 | https://conda.anaconda.org/conda-forge/noarch/zarr-2.7.0-pyhd8ed1ab_0.tar.bz2#5c8a67c8148046d5a76bff6353de2d5a 273 | https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.5.1-pyh44b312d_0.tar.bz2#fe258d69bcdcaba1aa1c8fb5ae2965ba 274 | https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.0-pyhd8ed1ab_0.tar.bz2#5d17d4c43e5ff9b2c21e8940753e4149 275 | https://conda.anaconda.org/conda-forge/noarch/dask-2021.4.0-pyhd8ed1ab_0.tar.bz2#4d0b8fb16770cd96df3aea16ece19ea2 276 | https://conda.anaconda.org/conda-forge/noarch/geopandas-0.9.0-pyhd8ed1ab_0.tar.bz2#5ad23a6ba0896134cf42bae1a9a0eee7 277 | https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.3-pyhd8ed1ab_0.tar.bz2#67f12831640fde52fe9be1bbc6b699e7 278 | https://conda.anaconda.org/conda-forge/noarch/ncar-jobqueue-2021.2.10-pyh44b312d_0.tar.bz2#0a36e90562cb65063484544f805b6120 279 | https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.18-pyha770c72_0.tar.bz2#aa44d0f71016061e83df1126764acdb7 280 | https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.16-pyh243d235_2.tar.bz2#8a37b68eb6fd242a4112781c2f7b4b98 281 | https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc 282 | https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.12.2-py38ha1b04c9_0.tar.bz2#50203dbaa561232a7b293e9987a39356 283 | https://conda.anaconda.org/conda-forge/noarch/intake-0.6.2-pyhd8ed1ab_0.tar.bz2#159c093fadd067d8e1d6e559fae44288 284 | https://conda.anaconda.org/conda-forge/osx-64/ipython-7.22.0-py38h6c79ece_0.tar.bz2#73decd3e984a7556d780ae960c9169bb 285 | https://conda.anaconda.org/conda-forge/osx-64/nbconvert-6.0.7-py38h50d1736_3.tar.bz2#4f6620112b16223117249294cb939eac 286 | https://conda.anaconda.org/conda-forge/noarch/papermill-2.3.3-pyhd8ed1ab_0.tar.bz2#58a04c70e13f2f1f296729889491ba67 287 | https://conda.anaconda.org/conda-forge/noarch/pooch-1.3.0-pyhd8ed1ab_0.tar.bz2#7041d42601fe3de878565ca84c952237 288 | https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326 289 | https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.1-hd8ed1ab_1.tar.bz2#0fa8696d6ef25ac366f04a27c238da31 290 | https://conda.anaconda.org/conda-forge/noarch/xesmf-0.5.3-pyhd8ed1ab_0.tar.bz2#a83576c3de22695f4bcd53d54755c7e2 291 | https://conda.anaconda.org/conda-forge/noarch/colorcet-2.0.6-pyhd8ed1ab_0.tar.bz2#bdf0d14cb996a18a3df88ddac83e11f9 292 | https://conda.anaconda.org/conda-forge/noarch/intake-esm-2021.1.15-pyhd8ed1ab_0.tar.bz2#f9905ccbc28a73fc2fc17b6fed9b0bd6 293 | https://conda.anaconda.org/conda-forge/noarch/intake-xarray-0.5.0-pyhd8ed1ab_0.tar.bz2#43d9d1c90da0b2b28cc16e58a52a0f2b 294 | https://conda.anaconda.org/conda-forge/osx-64/ipykernel-5.5.3-py38h6c79ece_0.tar.bz2#42b61e83d5a5f352af639fe7abd7d726 295 | https://conda.anaconda.org/conda-forge/osx-64/jupyter_server-1.6.1-py38h50d1736_0.tar.bz2#25292f9b5ca439c1a8459d7418661fd1 296 | https://conda.anaconda.org/conda-forge/noarch/metpy-1.0-pyhd8ed1ab_0.tar.bz2#b7da8602ec108ea1e056598f8d861909 297 | https://conda.anaconda.org/conda-forge/noarch/panel-0.11.2-pyhd8ed1ab_0.tar.bz2#b2a3261576b942aee0adabc232a8b7b1 298 | https://conda.anaconda.org/conda-forge/noarch/watermark-2.2.0-pyhd8ed1ab_0.tar.bz2#c93926fd4f95bd26153f28cdf8b8f78b 299 | https://conda.anaconda.org/conda-forge/noarch/datashader-0.12.1-pyh44b312d_1.tar.bz2#3c04cf57042d44a61fea446d281ad17c 300 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.4.0-pyhd8ed1ab_0.tar.bz2#ad7648e33c04637ba640945340302741 301 | https://conda.anaconda.org/conda-forge/osx-64/notebook-6.3.0-py38h50d1736_0.tar.bz2#702086d1d9ba5370a4ac7ff41052faaf 302 | https://conda.anaconda.org/conda-forge/noarch/holoviews-1.14.3-pyhd8ed1ab_0.tar.bz2#e262a3bc1443cfee28f1d49236cc2acd 303 | https://conda.anaconda.org/conda-forge/noarch/nbclassic-0.2.7-pyhd8ed1ab_0.tar.bz2#cf4723f3178fb1cae4f7bf8e31db0e38 304 | https://conda.anaconda.org/conda-forge/osx-64/widgetsnbextension-3.5.1-py38h50d1736_4.tar.bz2#7d69dd67c8a01d72b41e73102141afb8 305 | https://conda.anaconda.org/conda-forge/noarch/geoviews-core-1.9.1-pyha770c72_0.tar.bz2#2b6b08ce5c64d1661f9a69af0622e778 306 | https://conda.anaconda.org/conda-forge/noarch/hvplot-0.7.1-pyh44b312d_0.tar.bz2#440851c33f336e5a6eb107120946869a 307 | https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.3-pyhd3deb0d_0.tar.bz2#536a9ed6d9e740f2b83d1a3c388e4388 308 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.0.14-pyhd8ed1ab_0.tar.bz2#a40aa8ef6258bf7c2ef42ecd97701b74 309 | https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.1-pyhd8ed1ab_0.tar.bz2#45759ff37a465ab7b3bfbf6150f3e405 310 | -------------------------------------------------------------------------------- /environments/conda-linux-64.lock: -------------------------------------------------------------------------------- 1 | # platform: linux-64 2 | # env_hash: 3226ee88877108ea530e5c30c12e1426286e42ea84cbee91420955e0591aed6e 3 | @EXPLICIT 4 | https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 5 | https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b 6 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 7 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-2.001-hab24e00_0.tar.bz2#1fcc67d5eed875734d8b3eec00b29ce4 8 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.030-hab24e00_0.tar.bz2#dfc1ee25079fd9314698d73ef38b557f 9 | https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 10 | https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.35.1-hea4e1c9_2.tar.bz2#83610dba766a186bdc7a116053b782a4 11 | https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-9.3.0-hff62375_19.tar.bz2#c2d8da3cb171e4aa642d20c6e4e42a04 12 | https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-9.3.0-h6de172a_19.tar.bz2#cd9a24a8dde03ec0cf0e603b0bea85a1 13 | https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-mpich.tar.bz2#c1fcff3417b5a22bbc4cf6e8c23648cf 14 | https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.22-ha770c72_3.tar.bz2#99377b85af276f4558e263a8e8676ea7 15 | https://conda.anaconda.org/conda-forge/linux-64/pandoc-2.12-h7f98852_0.tar.bz2#21d4ae04f0c60b1e1150ded8ac24b4c2 16 | https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.10-0.tar.bz2#02204e159c8596584135923fd81a2c10 17 | https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 18 | https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-9.3.0-hff62375_19.tar.bz2#aea379bd68fdcdf9499fa1453f852ac1 19 | https://conda.anaconda.org/conda-forge/linux-64/libgomp-9.3.0-h2828fa1_19.tar.bz2#ab0a307912033126da02507b59e79ec9 20 | https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#561e277319a41d4f24f5c05a9ef63c04 21 | https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab 22 | https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2#9d5cdfc51476ee4dcdd96ed2dca3f943 23 | https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.0-h9c3ff4c_0.tar.bz2#5e815e5126c6f7e34ab4496fa1b48dca 24 | https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 25 | https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.17.1-h7f98852_1.tar.bz2#ed1dc233ed5e3eaa9bfbaac64d130c5e 26 | https://conda.anaconda.org/conda-forge/linux-64/expat-2.3.0-h9c3ff4c_0.tar.bz2#1fb8f0254eb78a2a0c120155e1b1a207 27 | https://conda.anaconda.org/conda-forge/linux-64/freexl-1.0.6-h7f98852_0.tar.bz2#fb707484f02b122edec5fe3d1f3f552f 28 | https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 29 | https://conda.anaconda.org/conda-forge/linux-64/geos-3.8.1-he1b5a44_0.tar.bz2#7282fbe0c036bacad959c03c05a7eb9a 30 | https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d 31 | https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 32 | https://conda.anaconda.org/conda-forge/linux-64/icu-68.1-h58526e2_0.tar.bz2#fc7a4271dc2a7f4fd78cd63695baf7c3 33 | https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2#ea02ce6037dbe81803ae6123e5ba1568 34 | https://conda.anaconda.org/conda-forge/linux-64/json-c-0.13.1-hbfbb72e_1002.tar.bz2#a620e3c958b36503fa21f690178180c6 35 | https://conda.anaconda.org/conda-forge/linux-64/libaec-1.0.4-h9c3ff4c_1.tar.bz2#90dbd3066828b76fa810578e49cef920 36 | https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 37 | https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2#665369991d8dd290ac5ee92fce3e6bf5 38 | https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 39 | https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.12-pthreads_h4812303_1.tar.bz2#2c7126a584f05e7bc8885d64dad3d21a 40 | https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d 41 | https://conda.anaconda.org/conda-forge/linux-64/libspatialindex-1.9.3-h9c3ff4c_3.tar.bz2#5cfecb0aa384fd3831cc106794e3f968 42 | https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h58526e2_1007.tar.bz2#7f6569a0c2f27acb8fc90600b382e544 43 | https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d 44 | https://conda.anaconda.org/conda-forge/linux-64/libuv-1.41.0-h7f98852_0.tar.bz2#808b41ebae1d9bd4aa8ffbc365d468c6 45 | https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.0-h7f98852_2.tar.bz2#fb63a035a3b552c88a30d84b89ebf4c4 46 | https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_0.tar.bz2#4eb64ee0d5cd43096ffcf843c76b05d4 47 | https://conda.anaconda.org/conda-forge/linux-64/mpich-3.4.1-h846660c_104.tar.bz2#94f01e56905a7af1479c9f72b00e9864 48 | https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.2-h58526e2_4.tar.bz2#509f2a21c4a09214cd737a480dfd80c9 49 | https://conda.anaconda.org/conda-forge/linux-64/nspr-4.30-h9c3ff4c_0.tar.bz2#e6dc1f8f6e0bcebe8e3d8a5bca258dbe 50 | https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1k-h7f98852_0.tar.bz2#07fae2cb088379c8441e0f3ffa1f4025 51 | https://conda.anaconda.org/conda-forge/linux-64/pcre-8.44-he1b5a44_0.tar.bz2#e647d89cd5cdf62760cf283a001841ff 52 | https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2#660e72c82f2e75a6b3fe6a6e75c79f19 53 | https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 54 | https://conda.anaconda.org/conda-forge/linux-64/tzcode-2021a-h7f98852_1.tar.bz2#69cffb84da3d06a78925fe3c5fa51646 55 | https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a 56 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2#d6b0b50b49eccfe0be0373be628be0f3 57 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 58 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 59 | https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 60 | https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2#1e15f6ad85a7d743a2ac68dae6c82b98 61 | https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 62 | https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 63 | https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h516909a_0.tar.bz2#03a530e925414902547cf48da7756db8 64 | https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h516909a_1010.tar.bz2#339cc5584e6d26bc73a875ba900028c3 65 | https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h0b5b191_1005.tar.bz2#ff6f69b593a9e74c0e6b61908ac513fa 66 | https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.13-h10796ff_1004.tar.bz2#aa1b96c7801b4876bb40f46f4d519836 67 | https://conda.anaconda.org/conda-forge/linux-64/jasper-1.900.1-h07fcdf6_1006.tar.bz2#babe76b3c95cc3e9005a66855ffe4e21 68 | https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-8_openblas.tar.bz2#95cee6371a5b901797075040941171f3 69 | https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 70 | https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-hcdb4288_3.tar.bz2#d8f51405997093ff1799ded7650439c4 71 | https://conda.anaconda.org/conda-forge/linux-64/libllvm10-10.0.1-he513fc3_3.tar.bz2#b1c57947b2a9231e0cd037ab0ed96b5d 72 | https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2#646fa2f7c60b69ee8f918668e9c2fd31 73 | https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.43.0-h812cca2_0.tar.bz2#1867d1e9658596b3fac8847a7702eef4 74 | https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 75 | https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hb271727_4.tar.bz2#857963a959bca1b2feee3836535d9ca8 76 | https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.9.0-ha56f1ee_6.tar.bz2#f0dfb86444df325e599dbc3f4c0a3f5b 77 | https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1003.tar.bz2#a9371e9e40aded194dcba1447606c9a1 78 | https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-h72842e0_4.tar.bz2#48577b6e1605c935d7178f6694506ee9 79 | https://conda.anaconda.org/conda-forge/linux-64/nodejs-15.14.0-h92b4a50_0.tar.bz2#7776523c882ac0439ab12a7496f14c04 80 | https://conda.anaconda.org/conda-forge/linux-64/readline-8.0-he28a2e2_2.tar.bz2#4d0ae8d473f863696088f76800ef9d38 81 | https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.10-h21135ba_1.tar.bz2#c647f70aa7e3d4cc4e029cc1c9a99953 82 | https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.27.27-h975c496_1.tar.bz2#e663bd5dbc8cc4c1647d9f51cf25872c 83 | https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.3-h9d8b166_2.tar.bz2#c083e55b8f51b42b2487826e6d35c6a1 84 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2#9e856f78d5c80d5a78f61e72d1d473a3 85 | https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.4-h9c3ff4c_0.tar.bz2#9105c7da67ebfb39ff08e2a8ea72bb71 86 | https://conda.anaconda.org/conda-forge/linux-64/zstd-1.4.9-ha95c52a_0.tar.bz2#b481dc9fda3af2a681d08a4d5cd1ea0b 87 | https://conda.anaconda.org/conda-forge/linux-64/boost-cpp-1.74.0-hc6e9bd1_2.tar.bz2#eca3e3674bf1f00fcddd63e6668fd9dd 88 | https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa 89 | https://conda.anaconda.org/conda-forge/linux-64/krb5-1.17.2-h926e7f8_0.tar.bz2#926325c11478d6e781e76072c117763b 90 | https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-8_openblas.tar.bz2#d8e2151683bc12acffedea26eba27e0f 91 | https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_0.tar.bz2#b7bc364d3ecf51443d48e14f87d784de 92 | https://conda.anaconda.org/conda-forge/linux-64/libglib-2.68.1-h3e27bee_0.tar.bz2#486fecf2277a154e5f73f62328764310 93 | https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-8_openblas.tar.bz2#9a860887c77e923c2807c715a7731fb8 94 | https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.2.0-hdc55705_0.tar.bz2#f1406324f1d02fa26447a0a0f2dd0107 95 | https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b 96 | https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.22-h935591d_3.tar.bz2#72e7d22983d7406e149d3f5395c7b828 97 | https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.35.4-h74cdb3f_0.tar.bz2#bc1c6047464060ba82a71448292be9c3 98 | https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.2.7-h91fcb0e_0.tar.bz2#5450f90cfa874c98d7f7317d5d58cd61 99 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.7.0-h7f98852_0.tar.bz2#0cd07abd75b2fad023161c657524ddbd 100 | https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.36.0-h3371d22_4.tar.bz2#661e1ed5d92552785d9f8c781ce68685 101 | https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2#fd3611672eb91bc9d24fd6fb970037eb 102 | https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.6-h04a7f16_0.tar.bz2#b24a1e18325a6e8f8b6b4a2ec5860ce2 103 | https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.68.1-h9c3ff4c_0.tar.bz2#b1ecd0fa079de56a1ba8d03063ee39bb 104 | https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.4-h76c114f_0.tar.bz2#8b55c71895bce3ea0beb5bf907840bb2 105 | https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h64030ff_2.tar.bz2#112eb9b5b93f0c02e59aea4fd1967363 106 | https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f 107 | https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.76.0-hc4aaa36_0.tar.bz2#ef274544b3de8d0f474fe113b568c7fb 108 | https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h238a007_1013.tar.bz2#1c3e0fbdc332f7a3a3cd1a2e9317953f 109 | https://conda.anaconda.org/conda-forge/linux-64/libpq-12.3-h255efa7_3.tar.bz2#a1daa43848e9e2b655a9af817a8bb613 110 | https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.0-h3452ae3_0.tar.bz2#8f4e19a8988c38feec7db41bcd0bf0d0 111 | https://conda.anaconda.org/conda-forge/linux-64/nss-3.63-hb5efdd6_0.tar.bz2#f7c6c9299233162f3fb1f8d75aa5ae99 112 | https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hf7af979_0.tar.bz2#f677c4652b03ed5d1352bf976be7192c 113 | https://conda.anaconda.org/conda-forge/linux-64/python-3.8.8-hffdb5ce_0_cpython.tar.bz2#da5f00968a732f5da324fff565909a05 114 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 115 | https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2#f59c1242cc1dd93e72c2ee2b360979eb 116 | https://conda.anaconda.org/conda-forge/noarch/affine-2.3.0-py_0.tar.bz2#5a9bfe23652d0ad9aa27e56cd75bfe33 117 | https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b 118 | https://conda.anaconda.org/conda-forge/noarch/asciitree-0.3.3-py_2.tar.bz2#c0481c9de49f040272556e2cedf42816 119 | https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12 120 | https://conda.anaconda.org/conda-forge/noarch/attrs-20.3.0-pyhd3deb0d_0.tar.bz2#5b319abb055eefcfa344bc21378ca23f 121 | https://conda.anaconda.org/conda-forge/noarch/backcall-0.2.0-pyh9f0ad1d_0.tar.bz2#6006a6d08a3fa99268a2681c7fb55213 122 | https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd 123 | https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a 124 | https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f 125 | https://conda.anaconda.org/conda-forge/linux-64/cfitsio-3.470-hb418390_7.tar.bz2#5bda2e5ca5edb0c207c3ec76f57f8ecc 126 | https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 127 | https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e 128 | https://conda.anaconda.org/conda-forge/linux-64/curl-7.76.0-h979ede3_0.tar.bz2#c1b5e7869f2878fdd66118345a2e49f2 129 | https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_1.tar.bz2#28e0de0ecba81334619a777fdc00febc 130 | https://conda.anaconda.org/conda-forge/noarch/decorator-5.0.6-pyhd8ed1ab_0.tar.bz2#39630f8daa82fec8133e83ca043db78a 131 | https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 132 | https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.3-pyhd8ed1ab_1003.tar.bz2#bbf9a201f6ce99a506f4955374d9a9f4 133 | https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.0-py_0.tar.bz2#0765c7a36e7ed365cab77858c9fba1b7 134 | https://conda.anaconda.org/conda-forge/noarch/fsspec-0.9.0-pyhd8ed1ab_0.tar.bz2#ea14c83a9e16d82ffa15d30ac5df7ba2 135 | https://conda.anaconda.org/conda-forge/linux-64/glib-2.68.1-h9c3ff4c_0.tar.bz2#9fb05e9b0df734f92df7810c7c8975e3 136 | https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d 137 | https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95 138 | https://conda.anaconda.org/conda-forge/noarch/idna-2.10-pyh9f0ad1d_0.tar.bz2#f95a12b4f435aae6680fe55ae2eb1b06 139 | https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-py_1.tar.bz2#5071c982548b3a20caf70462f04f5287 140 | https://conda.anaconda.org/conda-forge/noarch/json5-0.9.5-pyh9f0ad1d_0.tar.bz2#10759827a94e6b14996e81fb002c0bda 141 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.0.0-pyhd8ed1ab_1.tar.bz2#f8da92114c8fbe1d951b0efaf54dd14b 142 | https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.2-h78a0170_0.tar.bz2#ac0c23e6f3bbb61569781f00b5666f97 143 | https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d 144 | https://conda.anaconda.org/conda-forge/noarch/monotonic-1.5-py_0.tar.bz2#0cc5fd0140497c3f1e2db2e7493b62b3 145 | https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.1-pyhd8ed1ab_0.tar.bz2#47a51a5b8f9cc41004c8d7bd88b62447 146 | https://conda.anaconda.org/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2#0b2e68acc8c78c8cc392b90983481f58 147 | https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.4.2-py_1.tar.bz2#ba6f4a308f1ea22abe1d72e72544af76 148 | https://conda.anaconda.org/conda-forge/noarch/param-1.10.1-pyhd3deb0d_0.tar.bz2#e990456731e2381b8801b26242234e26 149 | https://conda.anaconda.org/conda-forge/noarch/parso-0.8.2-pyhd8ed1ab_0.tar.bz2#fb40b157bd62b457a1cc82527b63f0b0 150 | https://conda.anaconda.org/conda-forge/noarch/pathspec-0.8.1-pyhd3deb0d_0.tar.bz2#fcd2fbb062b55d14a77e664c89ee17a6 151 | https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 152 | https://conda.anaconda.org/conda-forge/linux-64/postgresql-12.3-hc2f5b80_3.tar.bz2#6a9163aab37026dad03ec2e113c58dd1 153 | https://conda.anaconda.org/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2#db654ee11298d3463bad67445707654c 154 | https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.10.1-pyhd8ed1ab_0.tar.bz2#088ca4c07d7b346a2a099b3685a0e992 155 | https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 156 | https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 157 | https://conda.anaconda.org/conda-forge/noarch/pyparsing-2.4.7-pyh9f0ad1d_0.tar.bz2#626c4f20d5bf06dcec9cf2eaa31725c7 158 | https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6 159 | https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-1_cp38.tar.bz2#8d05152d6fb3012b27a0e6fbcc14bea1 160 | https://conda.anaconda.org/conda-forge/noarch/pytz-2021.1-pyhd8ed1ab_0.tar.bz2#3af2e9424d5eb0063824a3f9b850d411 161 | https://conda.anaconda.org/conda-forge/noarch/send2trash-1.5.0-py_0.tar.bz2#c3779037a635e1150f1c53c28b875949 162 | https://conda.anaconda.org/conda-forge/noarch/six-1.15.0-pyh9f0ad1d_0.tar.bz2#1eec421f0f1f39e579e44e4a5ce646a2 163 | https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.3.0-pyhd8ed1ab_0.tar.bz2#2f5b87cd0bdf1822b62e40909f471db4 164 | https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 165 | https://conda.anaconda.org/conda-forge/noarch/testpath-0.4.4-py_0.tar.bz2#3b98fff4d5342bebde2ecaa314f796f9 166 | https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 167 | https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 168 | https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.1-py_0.tar.bz2#d1e66b58cb00b3817ad9f05eec098c00 169 | https://conda.anaconda.org/conda-forge/noarch/tqdm-4.60.0-pyhd8ed1ab_0.tar.bz2#d4d22fcd50ccf1925fe59efd36ba4358 170 | https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.7.4.3-py_0.tar.bz2#12b96e382730541a4b332420227055ae 171 | https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136 172 | https://conda.anaconda.org/conda-forge/noarch/wheel-0.36.2-pyhd3deb0d_0.tar.bz2#768bfbe026426d0e76b377997d1f2b98 173 | https://conda.anaconda.org/conda-forge/noarch/zipp-3.4.1-pyhd8ed1ab_0.tar.bz2#a4fa30eb74a326092b3d8078b1f1aae1 174 | https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd 175 | https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py38h578d9bd_1002.tar.bz2#2b2207e2c8a05fc0bc5b62fc32c355e6 176 | https://conda.anaconda.org/conda-forge/noarch/babel-2.9.0-pyhd3deb0d_0.tar.bz2#1cb532c9a6fd4e56a9f0906b87c17b76 177 | https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 178 | https://conda.anaconda.org/conda-forge/linux-64/certifi-2020.12.5-py38h578d9bd_1.tar.bz2#be470d89b0678991fd4ba67d4a35bc80 179 | https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.5-py38ha65f79e_0.tar.bz2#386057f231a571b75bfa7307c9acd5f6 180 | https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py38h578d9bd_1.tar.bz2#9294a5e2c7545a2f67ac348aadd53344 181 | https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f 182 | https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.1-pyhd8ed1ab_0.tar.bz2#3170b1d23788c6b161dbd14bfb5c752e 183 | https://conda.anaconda.org/conda-forge/noarch/cycler-0.10.0-py_2.tar.bz2#f6d7c7e6d8f42cbbec7e07a8d879f91c 184 | https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.0-py38h497a2fe_3.tar.bz2#45568bae22c3825f22b631101ecbad35 185 | https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2#eba672c69baf366fdedd1c6f702dbb81 186 | https://conda.anaconda.org/conda-forge/noarch/fasteners-0.14.1-py_3.tar.bz2#8af0bf3cfe806fb001d9923b4fe1594b 187 | https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.6.0-h2b14fbe_4.tar.bz2#95731212a74717b0368f9805513f6da7 188 | https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311 189 | https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-2.8.0-h83ec7ef_1.tar.bz2#0b20d7ac5b7beec9615f35ab88c161f8 190 | https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-3.10.1-py38h578d9bd_0.tar.bz2#430e936a8bc97899abeba2b5af8d0438 191 | https://conda.anaconda.org/conda-forge/linux-64/importlib_resources-5.1.2-py38h578d9bd_0.tar.bz2#86e3d225a89a81d6859e76e1700c4496 192 | https://conda.anaconda.org/conda-forge/linux-64/jedi-0.18.0-py38h578d9bd_2.tar.bz2#6911600fda608a76bcb58e562457c696 193 | https://conda.anaconda.org/conda-forge/linux-64/kealib-1.4.14-hcc255d8_2.tar.bz2#ae7e21f861c37500627f7122df804c26 194 | https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py38h1fd1430_1.tar.bz2#01488c80daae318ed5c17e7bb12af64e 195 | https://conda.anaconda.org/conda-forge/linux-64/libdap4-3.20.6-hd7c4107_2.tar.bz2#c265ae57e3acdc891f3e2b93cf6784f5 196 | https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.7.4-mpi_mpich_hdef422e_7.tar.bz2#7e1544ceea2c644e23140f2bb0b4c48e 197 | https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.0.1-h4e7eb2b_1.tar.bz2#f92ed56c954924417caa42558a188230 198 | https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.36.0-py38h4630a5e_0.tar.bz2#a805cb9a530a6524f7f832cce981fa0e 199 | https://conda.anaconda.org/conda-forge/linux-64/lz4-3.1.3-py38hebdc3cf_0.tar.bz2#86a9e8e12d9bd8814c576b472032d43c 200 | https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h497a2fe_3.tar.bz2#d51cdb48d2792a63174c0ee66a602e7e 201 | https://conda.anaconda.org/conda-forge/linux-64/mistune-0.8.4-py38h497a2fe_1003.tar.bz2#8faa27abe54325865c8082bd3d37b7cd 202 | https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py38he865349_5.tar.bz2#102cb42cdcf626ff68a225dbbe4e53df 203 | https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py38h1fd1430_1.tar.bz2#5854c568e0d341313fb0a6487f1c687e 204 | https://conda.anaconda.org/conda-forge/noarch/multipledispatch-0.6.0-py_0.tar.bz2#1073dc92c8f247d94ac14dd79ca0bbec 205 | https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py38h578d9bd_3.tar.bz2#2821575c3884edf40e02cf1966e1c504 206 | https://conda.anaconda.org/conda-forge/linux-64/numpy-1.20.2-py38h9894fe3_0.tar.bz2#d159afa37685037c73461e8f2fa22e50 207 | https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 208 | https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 209 | https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2#5909e7b978141dd80d28dbf9de627827 210 | https://conda.anaconda.org/conda-forge/linux-64/pillow-8.1.2-py38ha0e1e83_1.tar.bz2#4e02d5c31b7dbfaed76d69233950e60e 211 | https://conda.anaconda.org/conda-forge/linux-64/poppler-0.89.0-h2de54a5_5.tar.bz2#b93182f03ad6d36a4fd1054bb4d62b7b 212 | https://conda.anaconda.org/conda-forge/linux-64/psutil-5.8.0-py38h497a2fe_1.tar.bz2#3c465545aa3cec37f8f1341546677956 213 | https://conda.anaconda.org/conda-forge/noarch/pyct-core-0.4.6-py_0.tar.bz2#55ec526f95e0959de3f68bc6289a20da 214 | https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py38h709712a_7.tar.bz2#e012838bbbe92f6a458c2584634830f1 215 | https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.17.3-py38h497a2fe_2.tar.bz2#239e9357764e43276e8e80e65535b46f 216 | https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_3.tar.bz2#8284bab4783fd6fdd11b695958945614 217 | https://conda.anaconda.org/conda-forge/linux-64/python-blosc-1.10.2-py38h51da96c_0.tar.bz2#fcbfb01b6b37d4b9c2a931a5934de0b4 218 | https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.1-py_0.tar.bz2#0d0150ed9c2d25817f5324108d3f7571 219 | https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-2.0.1-pyhd3deb0d_0.tar.bz2#12e4d3289ffcbdf465864af6eb2c6f4b 220 | https://conda.anaconda.org/conda-forge/linux-64/pyyaml-5.4.1-py38h497a2fe_0.tar.bz2#36d6e06148013694eb943576cd305f67 221 | https://conda.anaconda.org/conda-forge/linux-64/pyzmq-22.0.3-py38h2035c66_1.tar.bz2#cb624b5ab0fee319a6b97a94850130e5 222 | https://conda.anaconda.org/conda-forge/linux-64/regex-2021.4.4-py38h497a2fe_0.tar.bz2#fd8c69b8da2edc1dbdf6ff619257ee00 223 | https://conda.anaconda.org/conda-forge/linux-64/rtree-0.9.7-py38h02d302b_1.tar.bz2#25f9aed49cf82480e85967bb5db18408 224 | https://conda.anaconda.org/conda-forge/linux-64/sniffio-1.2.0-py38h578d9bd_1.tar.bz2#9d2f849149c1bcce8b74ecdfcff8d4c7 225 | https://conda.anaconda.org/conda-forge/noarch/tenacity-7.0.0-pyhd8ed1ab_0.tar.bz2#1e78781812622a6df0141e0857f52ab3 226 | https://conda.anaconda.org/conda-forge/linux-64/tomlkit-0.7.0-py38h578d9bd_3.tar.bz2#7911ee5ebb7301f797e55827c6b9d167 227 | https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_1.tar.bz2#e772c8383768280af283e814e2126663 228 | https://conda.anaconda.org/conda-forge/noarch/traitlets-5.0.5-py_0.tar.bz2#99618ee9ab1323e40f231acdab92fe60 229 | https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.4.2-py38h497a2fe_0.tar.bz2#986207fad60f7f9330a899b9d966286c 230 | https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 231 | https://conda.anaconda.org/conda-forge/linux-64/anyio-2.2.0-py38h578d9bd_0.tar.bz2#8c1552d357e82fb15ec7e017e7f74cc7 232 | https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-20.1.0-py38h497a2fe_2.tar.bz2#254bc9d931e9891ce1068eb0335700c1 233 | https://conda.anaconda.org/conda-forge/noarch/black-20.8b1-py_1.tar.bz2#e555d6b71ec916c3dc4e6e3793cc9796 234 | https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.3.2-py38h5c078b8_3.tar.bz2#89e4ec22a0d45c6e8f5219170d548418 235 | https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1001.tar.bz2#56753dd777a6517b34966ddcb39af734 236 | https://conda.anaconda.org/conda-forge/linux-64/cftime-1.4.1-py38h5c078b8_0.tar.bz2#0e73822c0d05c68a8d8a70c382839e9d 237 | https://conda.anaconda.org/conda-forge/noarch/colorspacious-1.1.2-pyh24bf2e0_0.tar.bz2#b73afa0d009a51cabd3ec99c4d2ef4f3 238 | https://conda.anaconda.org/conda-forge/linux-64/cryptography-3.4.7-py38ha5dfef3_0.tar.bz2#a8b014aba670157256dabdc885f71af4 239 | https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.4.0-pyhd8ed1ab_0.tar.bz2#6a3cee4ed19dffa70d021526d0f07258 240 | https://conda.anaconda.org/conda-forge/noarch/datashape-0.5.4-py_1.tar.bz2#50ddfce434ea596fc4497085f403a9d5 241 | https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2#7b6747d7cc2076341029cff659669e8b 242 | https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.21.0-ha0e6eb6_0.tar.bz2#b4468d515e661efb68ab575ca5ca9558 243 | https://conda.anaconda.org/conda-forge/noarch/eofs-1.4.0-py_0.tar.bz2#6e166cd37cfeadefcfca1ffe00f222bb 244 | https://conda.anaconda.org/conda-forge/linux-64/gsw-3.4.0-py38h5c078b8_1.tar.bz2#9d82a6bd4cd33ef622ad353b809fce63 245 | https://conda.anaconda.org/conda-forge/linux-64/h5py-3.1.0-nompi_py38hafa665b_100.tar.bz2#550f5817655c72e184df36588bb32e64 246 | https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-3.10.1-hd8ed1ab_0.tar.bz2#daa6bb6edd7537397fc4363782e623aa 247 | https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-4.7.1-py38h578d9bd_0.tar.bz2#3a30e19c8b7b5673fe98d92979757561 248 | https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.2.1-h744752d_3.tar.bz2#01ee68a23f4e7edbda50692ff1264bdd 249 | https://conda.anaconda.org/conda-forge/noarch/markdown-3.3.4-pyhd8ed1ab_0.tar.bz2#b8054f74fbed2b282f032219f114421a 250 | https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.58.0-py_0.tar.bz2#2a5e0b9d1279670b4bd6c80959050c52 251 | https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.3-mpi_mpich_hafa3f36_3.tar.bz2#220d812595472716d810bb6fc5b7f822 252 | https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.7.3-py38h709712a_0.tar.bz2#d49306a26fe8acff2f4ac34901e5607b 253 | https://conda.anaconda.org/conda-forge/linux-64/pandas-1.2.4-py38h1abd341_0.tar.bz2#91150ede50b13d34a03e9ef51b7b379f 254 | https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2#9e325ab71e743c57955e73172d1db615 255 | https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.0.1-py38h16ecdd7_0.tar.bz2#b7e53d18a1cdefe3fe22e6a938018b00 256 | https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h9d6b050_2.tar.bz2#2f7c14748e3d98ff1ff27cadffb34d97 257 | https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.2-py38h7b17777_0.tar.bz2#e0be90ecf33b94ac3f407f1bf3c76de2 258 | https://conda.anaconda.org/conda-forge/linux-64/setuptools-49.6.0-py38h578d9bd_3.tar.bz2#59c561cd1be0db9cf1c83f7d7cc74f4d 259 | https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38ha11d057_1.tar.bz2#0e033a2cf8e512dfebc4aff5a0130519 260 | https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.1.0-pyh9f0ad1d_0.tar.bz2#f3747861e233cca91866265b48382356 261 | https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-py_0.tar.bz2#cb83a3d6ecf73f50117635192414426a 262 | https://conda.anaconda.org/conda-forge/linux-64/terminado-0.9.4-py38h578d9bd_0.tar.bz2#bc644cbe521455667e0f0690147dbe48 263 | https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0.tar.bz2#c5b3edc62d6309088f4970b3eaaa65a6 264 | https://conda.anaconda.org/conda-forge/noarch/bleach-3.3.0-pyh44b312d_0.tar.bz2#abf6b76c39358ca36ca706c46f054f2a 265 | https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.4-py38hab2c0dc_2.tar.bz2#416d0f09951c5faf71d5de180b1d8903 266 | https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.4.0-py38h578d9bd_0.tar.bz2#c59abf025cc1dd6b622c21e311738931 267 | https://conda.anaconda.org/conda-forge/linux-64/esmf-8.1.0-mpi_mpich_h224d73f_100.tar.bz2#d3c60cc04ecb31694dd4cfefe8c8fdb7 268 | https://conda.anaconda.org/conda-forge/linux-64/gdal-3.2.1-py38hc0b2d6b_3.tar.bz2#9da501625b5ed7e0e01e7110e2429325 269 | https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-hab0c2f8_0.tar.bz2#8acbef87761a4b90f090168737822611 270 | https://conda.anaconda.org/conda-forge/noarch/h5netcdf-0.10.0-pyhd8ed1ab_0.tar.bz2#b5c92155f9e1c3c7c18b95453f90145a 271 | https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyh44b312d_0.tar.bz2#1d4c3605d85a3655b1595e0694138eb6 272 | https://conda.anaconda.org/conda-forge/noarch/jsonschema-3.2.0-pyhd8ed1ab_3.tar.bz2#66125e28711d8ffc04a207a2b170316d 273 | https://conda.anaconda.org/conda-forge/noarch/jupyter-packaging-0.9.1-pyhd8ed1ab_0.tar.bz2#a323e1fbb8b7ec51a02601cbd7dd9db5 274 | https://conda.anaconda.org/conda-forge/noarch/jupyter_client-6.1.12-pyhd8ed1ab_0.tar.bz2#f58b38ddb9f94fa3cafea4ba2b17f93b 275 | https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.50.3-hfa39831_1.tar.bz2#7578526979e852a1f8650080214c6cd6 276 | https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.1-py38hcc49a3a_0.tar.bz2#a39ef001290edc846f61d184ea734767 277 | https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7 278 | https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.5.6-nompi_py38hf887595_101.tar.bz2#e47f1ac9bdf0f276841dcedc3fdf1880 279 | https://conda.anaconda.org/conda-forge/linux-64/numba-0.53.1-py38h0e12cce_0.tar.bz2#446d623019e922c161cee34948c1eb06 280 | https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.1-py_0.tar.bz2#d971df2dcd1a453daabecec0ef76e88a 281 | https://conda.anaconda.org/conda-forge/noarch/pint-0.17-pyhd8ed1ab_0.tar.bz2#7a334c0cd901ae380ab30285ad2a4b8a 282 | https://conda.anaconda.org/conda-forge/noarch/pip-21.0.1-pyhd8ed1ab_0.tar.bz2#849477e10d78cbc283c78fd53bfbb567 283 | https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz2#196e0cff141677f430fc06eb0d0ad94d 284 | https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 285 | https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h7400c14_7.tar.bz2#8fe28c949b01e3d69c2b357b5abf3916 286 | https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2021.03.0-py38hb5d20a5_1.tar.bz2#1586d8fb31f3aa7b2f9f206ed2b9ea7e 287 | https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.2.2-py38h56add21_0.tar.bz2#ed8aa89b3c71625e45f889dc5be2df74 288 | https://conda.anaconda.org/conda-forge/noarch/xarray-0.17.0-pyhd8ed1ab_0.tar.bz2#972b41b5afded8acbfed8ea18d016765 289 | https://conda.anaconda.org/conda-forge/noarch/zarr-2.7.0-pyhd8ed1ab_0.tar.bz2#5c8a67c8148046d5a76bff6353de2d5a 290 | https://conda.anaconda.org/conda-forge/linux-64/basemap-1.2.2-py38h85717e3_3.tar.bz2#4557331da98feabbbd0d8fffd9cdb980 291 | https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.3.1-py38h578d9bd_0.tar.bz2#1895246899394e17007e425fe300aec4 292 | https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.18.0-py38h9b98833_8.tar.bz2#b67818c464203386554528fc3afb0658 293 | https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.5.1-pyh44b312d_0.tar.bz2#fe258d69bcdcaba1aa1c8fb5ae2965ba 294 | https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.9.0-pyhd8ed1ab_0.tar.bz2#5d17d4c43e5ff9b2c21e8940753e4149 295 | https://conda.anaconda.org/conda-forge/noarch/cmocean-2.0-py_3.tar.bz2#10f08c3aa77dc4080ebc1c03cb542f70 296 | https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.7.2-pyhd8ed1ab_1.tar.bz2#cf9d1d4f7aaa0d99d7ec6251106686ea 297 | https://conda.anaconda.org/conda-forge/linux-64/dask-mpi-2.21.0-py38h4ecba47_1.tar.bz2#e4fad9a4f5e14146e8a67f9528189d8f 298 | https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.0-mpi_mpich_py38h7f78e9f_100.tar.bz2#cca438c3589dede04b176cc91921120f 299 | https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.18-py38h58f84aa_1.tar.bz2#47bd73be08703428b4233a568569ee8c 300 | https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.0-he056042_1.tar.bz2#9a51360bfc242b348193e88dc81ee9cd 301 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.1.2-pyh9f0ad1d_0.tar.bz2#2cbd910890bb328e8959246a1e16fac7 302 | https://conda.anaconda.org/conda-forge/noarch/nbformat-5.1.3-pyhd8ed1ab_0.tar.bz2#bafa5df6d4f8db69a4d197b4657127e7 303 | https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e 304 | https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py38h7400c14_7.tar.bz2#3003444b4f41742a33b7afdeb3260cbc 305 | https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py38h7400c14_7.tar.bz2#1c17944e118b314ff4d0bfc05f03a5e1 306 | https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.1-pyhd8ed1ab_1.tar.bz2#f524b2bb48274790373a27128b25d7ca 307 | https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.12.2-py38h5c078b8_0.tar.bz2#33787719ad03d33cffc4e2e3ea82bc9e 308 | https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.4-pyhd8ed1ab_0.tar.bz2#d7b20b328e23d993994ea02077c009c0 309 | https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee 310 | https://conda.anaconda.org/conda-forge/noarch/dask-2021.4.0-pyhd8ed1ab_0.tar.bz2#4d0b8fb16770cd96df3aea16ece19ea2 311 | https://conda.anaconda.org/conda-forge/noarch/geopandas-0.9.0-pyhd8ed1ab_0.tar.bz2#5ad23a6ba0896134cf42bae1a9a0eee7 312 | https://conda.anaconda.org/conda-forge/noarch/nbclient-0.5.3-pyhd8ed1ab_0.tar.bz2#67f12831640fde52fe9be1bbc6b699e7 313 | https://conda.anaconda.org/conda-forge/noarch/ncar-jobqueue-2021.2.10-pyh44b312d_0.tar.bz2#0a36e90562cb65063484544f805b6120 314 | https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.18-pyha770c72_0.tar.bz2#aa44d0f71016061e83df1126764acdb7 315 | https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38h578d9bd_7.tar.bz2#7166890c160d0441f59973a40b74f6e5 316 | https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.16-pyh243d235_2.tar.bz2#8a37b68eb6fd242a4112781c2f7b4b98 317 | https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc 318 | https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.1-hd8ed1ab_1.tar.bz2#0fa8696d6ef25ac366f04a27c238da31 319 | https://conda.anaconda.org/conda-forge/noarch/xesmf-0.5.3-pyhd8ed1ab_0.tar.bz2#a83576c3de22695f4bcd53d54755c7e2 320 | https://conda.anaconda.org/conda-forge/noarch/intake-0.6.2-pyhd8ed1ab_0.tar.bz2#159c093fadd067d8e1d6e559fae44288 321 | https://conda.anaconda.org/conda-forge/linux-64/ipython-7.22.0-py38hd0cf306_0.tar.bz2#2c0efbd100b9a0b26983f7dff4f9009d 322 | https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.4.1-py38h578d9bd_0.tar.bz2#850026fe180249b53fd3df025ea434f6 323 | https://conda.anaconda.org/conda-forge/linux-64/nbconvert-6.0.7-py38h578d9bd_3.tar.bz2#7d0922152b769b5489407f90e84562a6 324 | https://conda.anaconda.org/conda-forge/noarch/papermill-2.3.3-pyhd8ed1ab_0.tar.bz2#58a04c70e13f2f1f296729889491ba67 325 | https://conda.anaconda.org/conda-forge/noarch/pooch-1.3.0-pyhd8ed1ab_0.tar.bz2#7041d42601fe3de878565ca84c952237 326 | https://conda.anaconda.org/conda-forge/noarch/pyct-0.4.6-py_0.tar.bz2#42d91c89bc3993ec88681cffd3c0e326 327 | https://conda.anaconda.org/conda-forge/noarch/colorcet-2.0.6-pyhd8ed1ab_0.tar.bz2#bdf0d14cb996a18a3df88ddac83e11f9 328 | https://conda.anaconda.org/conda-forge/noarch/intake-esm-2021.1.15-pyhd8ed1ab_0.tar.bz2#f9905ccbc28a73fc2fc17b6fed9b0bd6 329 | https://conda.anaconda.org/conda-forge/noarch/intake-xarray-0.5.0-pyhd8ed1ab_0.tar.bz2#43d9d1c90da0b2b28cc16e58a52a0f2b 330 | https://conda.anaconda.org/conda-forge/linux-64/ipykernel-5.5.3-py38hd0cf306_0.tar.bz2#3468db5ccd3e3bf53f21fc262d18cc6e 331 | https://conda.anaconda.org/conda-forge/linux-64/jupyter_server-1.6.1-py38h578d9bd_0.tar.bz2#81cf690684483adddbdb71a954825bf4 332 | https://conda.anaconda.org/conda-forge/noarch/metpy-1.0-pyhd8ed1ab_0.tar.bz2#b7da8602ec108ea1e056598f8d861909 333 | https://conda.anaconda.org/conda-forge/noarch/panel-0.11.2-pyhd8ed1ab_0.tar.bz2#b2a3261576b942aee0adabc232a8b7b1 334 | https://conda.anaconda.org/conda-forge/noarch/watermark-2.2.0-pyhd8ed1ab_0.tar.bz2#c93926fd4f95bd26153f28cdf8b8f78b 335 | https://conda.anaconda.org/conda-forge/noarch/datashader-0.12.1-pyh44b312d_1.tar.bz2#3c04cf57042d44a61fea446d281ad17c 336 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.4.0-pyhd8ed1ab_0.tar.bz2#ad7648e33c04637ba640945340302741 337 | https://conda.anaconda.org/conda-forge/linux-64/notebook-6.3.0-py38h578d9bd_0.tar.bz2#4adf7284501331a056f2d1a501570609 338 | https://conda.anaconda.org/conda-forge/noarch/holoviews-1.14.3-pyhd8ed1ab_0.tar.bz2#e262a3bc1443cfee28f1d49236cc2acd 339 | https://conda.anaconda.org/conda-forge/noarch/nbclassic-0.2.7-pyhd8ed1ab_0.tar.bz2#cf4723f3178fb1cae4f7bf8e31db0e38 340 | https://conda.anaconda.org/conda-forge/linux-64/widgetsnbextension-3.5.1-py38h578d9bd_4.tar.bz2#beb8a105545382ba138c81c926289b5b 341 | https://conda.anaconda.org/conda-forge/noarch/geoviews-core-1.9.1-pyha770c72_0.tar.bz2#2b6b08ce5c64d1661f9a69af0622e778 342 | https://conda.anaconda.org/conda-forge/noarch/hvplot-0.7.1-pyh44b312d_0.tar.bz2#440851c33f336e5a6eb107120946869a 343 | https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.6.3-pyhd3deb0d_0.tar.bz2#536a9ed6d9e740f2b83d1a3c388e4388 344 | https://conda.anaconda.org/conda-forge/noarch/jupyterlab-3.0.14-pyhd8ed1ab_0.tar.bz2#a40aa8ef6258bf7c2ef42ecd97701b74 345 | https://conda.anaconda.org/conda-forge/noarch/geoviews-1.9.1-pyhd8ed1ab_0.tar.bz2#45759ff37a465ab7b3bfbf6150f3e405 346 | --------------------------------------------------------------------------------