diff --git a/day5_extras/1_welcome+login/10_ECAR2023_jupyter4hpc_welcome+introduction_5.pdf b/day5_extras/1_welcome+login/10_ECAR2023_jupyter4hpc_welcome+introduction_5.pdf new file mode 100644 index 0000000000000000000000000000000000000000..67c5055380d8ef90747bfe143df9ac1a492bba2f Binary files /dev/null and b/day5_extras/1_welcome+login/10_ECAR2023_jupyter4hpc_welcome+introduction_5.pdf differ diff --git a/day5_extras/1_welcome+login/SLURMWrapper.mp4 b/day5_extras/1_welcome+login/SLURMWrapper.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9ec38ecda7333418094d9b001022a39f92869eb0 Binary files /dev/null and b/day5_extras/1_welcome+login/SLURMWrapper.mp4 differ diff --git a/day5_extras/2_my_own_jupyterlab/1-JupyterLab-from-condaforge.ipynb b/day5_extras/2_my_own_jupyterlab/1-JupyterLab-from-condaforge.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..2485b2007a94f6cb73a900a773f19a2ddb58252b --- /dev/null +++ b/day5_extras/2_my_own_jupyterlab/1-JupyterLab-from-condaforge.ipynb @@ -0,0 +1,1077 @@ +{ + "cells": [ + { + "attachments": { + "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": { + "image/jpeg": "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" + } + }, + "cell_type": "markdown", + "id": "f7b6c34a-a874-4158-8015-3802bb5b3c01", + "metadata": { + "tags": [], + "toc-hr-collapsed": false + }, + "source": [ + "\n", + "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n", + "------------------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "665ed8a0-c103-4e27-912b-8dd9993cddbd", + "metadata": {}, + "source": [ + "# Supercomputing with JupyterLab - Tips & Tricks\n", + "\n", + "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n", + "\n", + "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.\n", + "\n", + "-------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "adopted-characterization", + "metadata": {}, + "source": [ + "### Install your own JupyterLab from conda\n" + ] + }, + { + "cell_type": "markdown", + "id": "extended-response", + "metadata": {}, + "source": [ + "### Prepare Conda Settings" + ] + }, + { + "cell_type": "markdown", + "id": "alternative-paris", + "metadata": {}, + "source": [ + "Selectable **CONDA_TARGET_DIR** path for the central conda installation, should be in the project filesystem" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "streaming-commissioner", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/p/project/coecschool22/goebbert1/miniconda3\n" + ] + } + ], + "source": [ + "export CONDA_TARGET_DIR=${PROJECT}/${USER}/miniconda3 ## ${HOME}/miniconda3\n", + "echo $CONDA_TARGET_DIR # double check" + ] + }, + { + "cell_type": "markdown", + "id": "operating-soviet", + "metadata": {}, + "source": [ + "Selectable **CONDA_ENV** name, will be used to specify the environment name\n", + " - must be lowercase" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "related-sessions", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "my_jupyterlab3\n" + ] + } + ], + "source": [ + "CONDA_ENV=my_jupyterlab3\n", + "\n", + "export CONDA_ENV=$(echo \"${CONDA_ENV}\" | awk '{print tolower($0)}')\n", + "echo ${CONDA_ENV} # double check" + ] + }, + { + "cell_type": "markdown", + "id": "olive-table", + "metadata": {}, + "source": [ + "---\n", + "## 1. Download/Install Miniconda" + ] + }, + { + "cell_type": "markdown", + "id": "confidential-pharmacy", + "metadata": {}, + "source": [ + "Start here if you want to run the full installation.\n", + "If you want to create another environment in an existing conda setup go to **create environment**. \n", + "If you want to attach yourself to an existing environment go to **create user kernel**." + ] + }, + { + "cell_type": "markdown", + "id": "composed-spending", + "metadata": {}, + "source": [ + "* 1.1 - Download Minconda installer" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "adapted-constraint", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2022-10-24 23:39:44-- https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh\n", + "Resolving repo.continuum.io (repo.continuum.io)... 104.18.200.79, 104.18.201.79, 2606:4700::6812:c94f, ...\n", + "Connecting to repo.continuum.io (repo.continuum.io)|104.18.200.79|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh [following]\n", + "--2022-10-24 23:39:44-- https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh\n", + "Resolving repo.anaconda.com (repo.anaconda.com)... 104.16.130.3, 104.16.131.3, 2606:4700::6810:8203, ...\n", + "Connecting to repo.anaconda.com (repo.anaconda.com)|104.16.130.3|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 76607678 (73M) [application/x-sh]\n", + "Saving to: ‘/p/project/ccstvs/goebbert1/home_juwels/Miniconda3.sh’\n", + "\n", + "/p/project/ccstvs/g 100%[===================>] 73.06M 61.7MB/s in 1.2s \n", + "\n", + "2022-10-24 23:39:45 (61.7 MB/s) - ‘/p/project/ccstvs/goebbert1/home_juwels/Miniconda3.sh’ saved [76607678/76607678]\n", + "\n" + ] + } + ], + "source": [ + "wget --output-document=$HOME/Miniconda3.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" + ] + }, + { + "cell_type": "markdown", + "id": "substantial-provider", + "metadata": {}, + "source": [ + "* 1.2 - Create target directory" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "secret-maker", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/p/project/coecschool22/goebbert1/miniconda3\n" + ] + } + ], + "source": [ + "mkdir -p ${CONDA_TARGET_DIR}\n", + "echo $CONDA_TARGET_DIR # double check" + ] + }, + { + "cell_type": "markdown", + "id": "streaming-shopping", + "metadata": {}, + "source": [ + "* 1.3 - Install Miniconda" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "characteristic-woman", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PREFIX=/p/project/coecschool22/goebbert1/miniconda3\n", + "Unpacking payload ...\n", + "Collecting package metadata (current_repodata.json): done \n", + "Solving environment: done\n", + "\n", + "## Package Plan ##\n", + "\n", + " environment location: /p/project/coecschool22/goebbert1/miniconda3\n", + "\n", + " added / updated specs:\n", + " - _libgcc_mutex==0.1=main\n", + " - _openmp_mutex==4.5=1_gnu\n", + " - brotlipy==0.7.0=py39h27cfd23_1003\n", + " - ca-certificates==2022.3.29=h06a4308_1\n", + " - certifi==2021.10.8=py39h06a4308_2\n", + " - cffi==1.15.0=py39hd667e15_1\n", + " - charset-normalizer==2.0.4=pyhd3eb1b0_0\n", + " - colorama==0.4.4=pyhd3eb1b0_0\n", + " - conda-content-trust==0.1.1=pyhd3eb1b0_0\n", + " - conda-package-handling==1.8.1=py39h7f8727e_0\n", + " - conda==4.12.0=py39h06a4308_0\n", + " - cryptography==36.0.0=py39h9ce1e76_0\n", + " - idna==3.3=pyhd3eb1b0_0\n", + " - ld_impl_linux-64==2.35.1=h7274673_9\n", + " - libffi==3.3=he6710b0_2\n", + " - libgcc-ng==9.3.0=h5101ec6_17\n", + " - libgomp==9.3.0=h5101ec6_17\n", + " - libstdcxx-ng==9.3.0=hd4cf53a_17\n", + " - ncurses==6.3=h7f8727e_2\n", + " - openssl==1.1.1n=h7f8727e_0\n", + " - pip==21.2.4=py39h06a4308_0\n", + " - pycosat==0.6.3=py39h27cfd23_0\n", + " - pycparser==2.21=pyhd3eb1b0_0\n", + " - pyopenssl==22.0.0=pyhd3eb1b0_0\n", + " - pysocks==1.7.1=py39h06a4308_0\n", + " - python==3.9.12=h12debd9_0\n", + " - readline==8.1.2=h7f8727e_1\n", + " - requests==2.27.1=pyhd3eb1b0_0\n", + " - ruamel_yaml==0.15.100=py39h27cfd23_0\n", + " - setuptools==61.2.0=py39h06a4308_0\n", + " - six==1.16.0=pyhd3eb1b0_1\n", + " - sqlite==3.38.2=hc218d9a_0\n", + " - tk==8.6.11=h1ccaba5_0\n", + " - tqdm==4.63.0=pyhd3eb1b0_0\n", + " - tzdata==2022a=hda174b7_0\n", + " - urllib3==1.26.8=pyhd3eb1b0_0\n", + " - wheel==0.37.1=pyhd3eb1b0_0\n", + " - xz==5.2.5=h7b6447c_0\n", + " - yaml==0.2.5=h7b6447c_0\n", + " - zlib==1.2.12=h7f8727e_1\n", + "\n", + "\n", + "The following NEW packages will be INSTALLED:\n", + "\n", + " _libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main\n", + " _openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu\n", + " brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py39h27cfd23_1003\n", + " ca-certificates pkgs/main/linux-64::ca-certificates-2022.3.29-h06a4308_1\n", + " certifi pkgs/main/linux-64::certifi-2021.10.8-py39h06a4308_2\n", + " cffi pkgs/main/linux-64::cffi-1.15.0-py39hd667e15_1\n", + " charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0\n", + " colorama pkgs/main/noarch::colorama-0.4.4-pyhd3eb1b0_0\n", + " conda pkgs/main/linux-64::conda-4.12.0-py39h06a4308_0\n", + " conda-content-tru~ pkgs/main/noarch::conda-content-trust-0.1.1-pyhd3eb1b0_0\n", + " conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.8.1-py39h7f8727e_0\n", + " cryptography pkgs/main/linux-64::cryptography-36.0.0-py39h9ce1e76_0\n", + " idna pkgs/main/noarch::idna-3.3-pyhd3eb1b0_0\n", + " ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9\n", + " libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2\n", + " libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17\n", + " libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17\n", + " libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17\n", + " ncurses pkgs/main/linux-64::ncurses-6.3-h7f8727e_2\n", + " openssl pkgs/main/linux-64::openssl-1.1.1n-h7f8727e_0\n", + " pip pkgs/main/linux-64::pip-21.2.4-py39h06a4308_0\n", + " pycosat pkgs/main/linux-64::pycosat-0.6.3-py39h27cfd23_0\n", + " pycparser pkgs/main/noarch::pycparser-2.21-pyhd3eb1b0_0\n", + " pyopenssl pkgs/main/noarch::pyopenssl-22.0.0-pyhd3eb1b0_0\n", + " pysocks pkgs/main/linux-64::pysocks-1.7.1-py39h06a4308_0\n", + " python pkgs/main/linux-64::python-3.9.12-h12debd9_0\n", + " readline pkgs/main/linux-64::readline-8.1.2-h7f8727e_1\n", + " requests pkgs/main/noarch::requests-2.27.1-pyhd3eb1b0_0\n", + " ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py39h27cfd23_0\n", + " setuptools pkgs/main/linux-64::setuptools-61.2.0-py39h06a4308_0\n", + " six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1\n", + " sqlite pkgs/main/linux-64::sqlite-3.38.2-hc218d9a_0\n", + " tk pkgs/main/linux-64::tk-8.6.11-h1ccaba5_0\n", + " tqdm pkgs/main/noarch::tqdm-4.63.0-pyhd3eb1b0_0\n", + " tzdata pkgs/main/noarch::tzdata-2022a-hda174b7_0\n", + " urllib3 pkgs/main/noarch::urllib3-1.26.8-pyhd3eb1b0_0\n", + " wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0\n", + " xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0\n", + " yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0\n", + " zlib pkgs/main/linux-64::zlib-1.2.12-h7f8727e_1\n", + "\n", + "\n", + "Preparing transaction: done\n", + "Executing transaction: done\n", + "installation finished.\n", + "WARNING:\n", + " You currently have a PYTHONPATH environment variable set. This may cause\n", + " unexpected behavior when running the Python interpreter in Miniconda3.\n", + " For best results, please verify that your PYTHONPATH only points to\n", + " directories of packages that are compatible with the Python interpreter\n", + " in Miniconda3: /p/project/coecschool22/goebbert1/miniconda3\n" + ] + } + ], + "source": [ + "bash $HOME/Miniconda3.sh -b -u -p ${CONDA_TARGET_DIR}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "intellectual-pipeline", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/p/software/juwels/stages/2022/software/JupyterKernel-PyDeepLearning/1.1-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Octave/6.4.0-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Julia/1.7.1-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Cling/0.9-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Bash/0.7.2-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterProxy-XpraHTML5/0.3.4-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Jupyter/2022.3.4-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Shapely/1.8.0-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/numba/0.55.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/scikit-image/0.18.3-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/dask/2021.9.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/bokeh/2.4.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/typing-extensions/3.10.0.0-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/PyYAML/5.4.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/scikit-learn/1.0.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/scikit-build/0.11.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/xarray/0.20.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/sympy/1.8-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/gmpy2/2.1.0b5-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Seaborn/0.11.2-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/matplotlib/3.4.3-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Pillow-SIMD/9.0.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Tkinter/3.9.6-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/netcdf4-python/1.5.7-GCCcore-11.2.0-serial/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/h5py/3.5.0-GCCcore-11.2.0-serial/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/ITK/5.2.1-GCCcore-11.2.0-nompi/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/SciPy-bundle/2021.10-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/pybind11/2.7.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Python/3.9.6-GCCcore-11.2.0/easybuild/python\n" + ] + } + ], + "source": [ + "# verify that PYTHONPATH only points to directories of packages\n", + "# that are compatible with the Python interpreter in Miniconda3\n", + "echo $PYTHONPATH" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "boring-tokyo", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# for now we unset the PYTHONPATH\n", + "# if you want to use modules with conda, you might need to think about this step again\n", + "unset PYTHONPATH\n", + "echo $PYTHONPATH" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "defensive-retail", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "no change /p/project/coecschool22/goebbert1/miniconda3/condabin/conda\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/bin/conda\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/bin/conda-env\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/bin/activate\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/bin/deactivate\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.sh\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/etc/fish/conf.d/conda.fish\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/shell/condabin/Conda.psm1\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/shell/condabin/conda-hook.ps1\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/lib/python3.9/site-packages/xontrib/conda.xsh\n", + "no change /p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.csh\n", + "modified /p/project/ccstvs/goebbert1/home_juwels/.bashrc\n", + "\n", + "==> For changes to take effect, close and re-open your current shell. <==\n", + "\n" + ] + } + ], + "source": [ + "${CONDA_TARGET_DIR}/bin/conda init bash" + ] + }, + { + "cell_type": "markdown", + "id": "furnished-infrared", + "metadata": {}, + "source": [ + "**ATTENTION:** Conda modifies $HOME/.bashrc\n", + "\n", + "```bash\n", + "# >>> conda initialize >>>\n", + "# !! Contents within this block are managed by 'conda init' !!\n", + "__conda_setup=\"$('/home/jovyan/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)\"\n", + "if [ $? -eq 0 ]; then\n", + " eval \"$__conda_setup\"\n", + "else\n", + " if [ -f \"/home/jovyan/miniconda3/etc/profile.d/conda.sh\" ]; then\n", + " . \"/home/jovyan/miniconda3/etc/profile.d/conda.sh\"\n", + " else\n", + " export PATH=\"/home/jovyan/miniconda3/bin:$PATH\"\n", + " fi\n", + "fi\n", + "unset __conda_setup\n", + "# <<< conda initialize <<<\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "textile-vacation", + "metadata": {}, + "source": [ + "* 1.4 - Disable automatic activation" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "proved-version", + "metadata": {}, + "outputs": [], + "source": [ + "${CONDA_TARGET_DIR}/bin/conda config --set auto_activate_base false" + ] + }, + { + "cell_type": "markdown", + "id": "surprised-carolina", + "metadata": {}, + "source": [ + "---\n", + "## 2. Create conda environment with JupyterLab 3 installed" + ] + }, + { + "cell_type": "markdown", + "id": "offensive-crack", + "metadata": {}, + "source": [ + "Create new conda environment. The following steps can be repeated if multiple environments should be created. If the Python version differ towards the external Python version, a mix of Conda modules and external modules will not be possible" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "central-rebecca", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting package metadata (current_repodata.json): done\n", + "Solving environment: done\n", + "\n", + "## Package Plan ##\n", + "\n", + " environment location: /p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3\n", + "\n", + " added / updated specs:\n", + " - ipywidgets\n", + " - jupyterlab=3\n", + " - matplotlib\n", + " - nodejs\n", + " - pandas=0.24\n", + " - pip\n", + "\n", + "\n", + "The following packages will be downloaded:\n", + "\n", + " package | build\n", + " ---------------------------|-----------------\n", + " _libgcc_mutex-0.1 | conda_forge 3 KB conda-forge\n", + " _openmp_mutex-4.5 | 2_gnu 23 KB conda-forge\n", + " anyio-3.6.2 | pyhd8ed1ab_0 83 KB conda-forge\n", + " argon2-cffi-21.3.0 | pyhd8ed1ab_0 15 KB conda-forge\n", + " argon2-cffi-bindings-21.2.0| py38h0a891b7_2 34 KB conda-forge\n", + " asttokens-2.0.8 | pyhd8ed1ab_0 24 KB conda-forge\n", + " attrs-22.1.0 | pyh71513ae_1 48 KB conda-forge\n", + " babel-2.10.3 | pyhd8ed1ab_0 6.7 MB conda-forge\n", + " backcall-0.2.0 | pyh9f0ad1d_0 13 KB conda-forge\n", + " backports-1.0 | py_2 4 KB conda-forge\n", + " backports.functools_lru_cache-1.6.4| pyhd8ed1ab_0 9 KB conda-forge\n", + " beautifulsoup4-4.11.1 | pyha770c72_0 96 KB conda-forge\n", + " bleach-5.0.1 | pyhd8ed1ab_0 124 KB conda-forge\n", + " brotlipy-0.7.0 |py38h0a891b7_1004 342 KB conda-forge\n", + " bzip2-1.0.8 | h7f98852_4 484 KB conda-forge\n", + " ca-certificates-2022.9.24 | ha878542_0 150 KB conda-forge\n", + " certifi-2022.9.24 | pyhd8ed1ab_0 155 KB conda-forge\n", + " cffi-1.15.1 | py38h4a40e3a_1 229 KB conda-forge\n", + " charset-normalizer-2.1.1 | pyhd8ed1ab_0 36 KB conda-forge\n", + " cryptography-38.0.2 | py38h80a4ca7_1 1.6 MB conda-forge\n", + " cycler-0.11.0 | pyhd8ed1ab_0 10 KB conda-forge\n", + " debugpy-1.6.3 | py38hfa26641_0 2.0 MB conda-forge\n", + " decorator-5.1.1 | pyhd8ed1ab_0 12 KB conda-forge\n", + " defusedxml-0.7.1 | pyhd8ed1ab_0 23 KB conda-forge\n", + " entrypoints-0.4 | pyhd8ed1ab_0 9 KB conda-forge\n", + " executing-1.1.1 | pyhd8ed1ab_0 23 KB conda-forge\n", + " flit-core-3.7.1 | pyhd8ed1ab_0 44 KB conda-forge\n", + " freetype-2.12.1 | hca18f0e_0 884 KB conda-forge\n", + " icu-67.1 | he1b5a44_0 12.9 MB conda-forge\n", + " idna-3.4 | pyhd8ed1ab_0 55 KB conda-forge\n", + " importlib-metadata-4.11.4 | py38h578d9bd_0 33 KB conda-forge\n", + " importlib_resources-5.10.0 | pyhd8ed1ab_0 29 KB conda-forge\n", + " ipykernel-6.16.1 | pyh210e3f2_0 100 KB conda-forge\n", + " ipython-8.5.0 | pyh41d4057_1 552 KB conda-forge\n", + " ipython_genutils-0.2.0 | py_1 21 KB conda-forge\n", + " ipywidgets-8.0.2 | pyhd8ed1ab_1 109 KB conda-forge\n", + " jedi-0.18.1 | pyhd8ed1ab_2 799 KB conda-forge\n", + " jinja2-3.1.2 | pyhd8ed1ab_1 99 KB conda-forge\n", + " json5-0.9.5 | pyh9f0ad1d_0 20 KB conda-forge\n", + " jsonschema-4.16.0 | pyhd8ed1ab_0 65 KB conda-forge\n", + " jupyter_client-7.4.3 | pyhd8ed1ab_0 91 KB conda-forge\n", + " jupyter_core-4.11.1 | py38h578d9bd_0 81 KB conda-forge\n", + " jupyter_server-1.21.0 | pyhd8ed1ab_0 239 KB conda-forge\n", + " jupyterlab-3.5.0 | pyhd8ed1ab_0 6.0 MB conda-forge\n", + " jupyterlab_pygments-0.2.2 | pyhd8ed1ab_0 17 KB conda-forge\n", + " jupyterlab_server-2.16.1 | pyhd8ed1ab_0 49 KB conda-forge\n", + " jupyterlab_widgets-3.0.3 | pyhd8ed1ab_0 222 KB conda-forge\n", + " kiwisolver-1.4.4 | py38h43d8883_0 76 KB conda-forge\n", + " ld_impl_linux-64-2.39 | hc81fddc_0 759 KB conda-forge\n", + " libblas-3.9.0 |16_linux64_openblas 13 KB conda-forge\n", + " libcblas-3.9.0 |16_linux64_openblas 13 KB conda-forge\n", + " libffi-3.4.2 | h7f98852_5 57 KB conda-forge\n", + " libgcc-7.2.0 | h69d50b8_2 304 KB conda-forge\n", + " libgcc-ng-12.2.0 | h65d4601_19 931 KB conda-forge\n", + " libgfortran-ng-12.2.0 | h69a702a_19 22 KB conda-forge\n", + " libgfortran5-12.2.0 | h337968e_19 1.8 MB conda-forge\n", + " libgomp-12.2.0 | h65d4601_19 455 KB conda-forge\n", + " liblapack-3.9.0 |16_linux64_openblas 13 KB conda-forge\n", + " libnsl-2.0.0 | h7f98852_0 31 KB conda-forge\n", + " libopenblas-0.3.21 |pthreads_h78a6416_3 10.1 MB conda-forge\n", + " libpng-1.6.38 | h753d276_0 371 KB conda-forge\n", + " libsodium-1.0.18 | h36c2ea0_1 366 KB conda-forge\n", + " libsqlite-3.39.4 | h753d276_0 803 KB conda-forge\n", + " libstdcxx-ng-12.2.0 | h46fd767_19 4.3 MB conda-forge\n", + " libuuid-2.32.1 | h7f98852_1000 28 KB conda-forge\n", + " libzlib-1.2.13 | h166bdaf_4 64 KB conda-forge\n", + " markupsafe-2.1.1 | py38h0a891b7_1 22 KB conda-forge\n", + " matplotlib-3.2.2 | 1 6 KB conda-forge\n", + " matplotlib-base-3.2.2 | py38h5d868c9_1 7.1 MB conda-forge\n", + " matplotlib-inline-0.1.6 | pyhd8ed1ab_0 12 KB conda-forge\n", + " mistune-2.0.4 | pyhd8ed1ab_0 67 KB conda-forge\n", + " nbclassic-0.4.5 | pyhd8ed1ab_0 7.7 MB conda-forge\n", + " nbclient-0.7.0 | pyhd8ed1ab_0 65 KB conda-forge\n", + " nbconvert-7.2.2 | pyhd8ed1ab_0 6 KB conda-forge\n", + " nbconvert-core-7.2.2 | pyhd8ed1ab_0 189 KB conda-forge\n", + " nbconvert-pandoc-7.2.2 | pyhd8ed1ab_0 5 KB conda-forge\n", + " nbformat-5.7.0 | pyhd8ed1ab_0 106 KB conda-forge\n", + " ncurses-6.3 | h27087fc_1 1002 KB conda-forge\n", + " nest-asyncio-1.5.6 | pyhd8ed1ab_0 10 KB conda-forge\n", + " nodejs-6.13.1 | 0 11.9 MB conda-forge\n", + " notebook-6.5.1 | pyha770c72_0 266 KB conda-forge\n", + " notebook-shim-0.2.0 | pyhd8ed1ab_0 15 KB conda-forge\n", + " numpy-1.23.4 | py38h7042d01_0 7.1 MB conda-forge\n", + " openssl-3.0.5 | h166bdaf_2 2.8 MB conda-forge\n", + " packaging-21.3 | pyhd8ed1ab_0 36 KB conda-forge\n", + " pandas-0.24.2 | py38hb3f55d8_1 11.5 MB conda-forge\n", + " pandoc-2.19.2 | h32600fe_1 30.0 MB conda-forge\n", + " pandocfilters-1.5.0 | pyhd8ed1ab_0 11 KB conda-forge\n", + " parso-0.8.3 | pyhd8ed1ab_0 69 KB conda-forge\n", + " pexpect-4.8.0 | pyh9f0ad1d_2 47 KB conda-forge\n", + " pickleshare-0.7.5 | py_1003 9 KB conda-forge\n", + " pip-22.3 | pyhd8ed1ab_0 1.5 MB conda-forge\n", + " pkgutil-resolve-name-1.3.10| pyhd8ed1ab_0 9 KB conda-forge\n", + " prometheus_client-0.15.0 | pyhd8ed1ab_0 50 KB conda-forge\n", + " prompt-toolkit-3.0.31 | pyha770c72_0 254 KB conda-forge\n", + " psutil-5.9.3 | py38h0a891b7_0 348 KB conda-forge\n", + " ptyprocess-0.7.0 | pyhd3deb0d_0 16 KB conda-forge\n", + " pure_eval-0.2.2 | pyhd8ed1ab_0 14 KB conda-forge\n", + " pycparser-2.21 | pyhd8ed1ab_0 100 KB conda-forge\n", + " pygments-2.13.0 | pyhd8ed1ab_0 821 KB conda-forge\n", + " pyopenssl-22.1.0 | pyhd8ed1ab_0 122 KB conda-forge\n", + " pyparsing-3.0.9 | pyhd8ed1ab_0 79 KB conda-forge\n", + " pyrsistent-0.18.1 | py38h0a891b7_1 92 KB conda-forge\n", + " pysocks-1.7.1 | pyha2e5f31_6 19 KB conda-forge\n", + " python-3.8.13 |ha86cf86_0_cpython 25.2 MB conda-forge\n", + " python-dateutil-2.8.2 | pyhd8ed1ab_0 240 KB conda-forge\n", + " python-fastjsonschema-2.16.2| pyhd8ed1ab_0 242 KB conda-forge\n", + " python_abi-3.8 | 2_cp38 4 KB conda-forge\n", + " pytz-2022.5 | pyhd8ed1ab_0 238 KB conda-forge\n", + " pyzmq-24.0.1 | py38hfc09fa9_0 508 KB conda-forge\n", + " readline-8.1.2 | h0f457ee_0 291 KB conda-forge\n", + " requests-2.28.1 | pyhd8ed1ab_1 53 KB conda-forge\n", + " send2trash-1.8.0 | pyhd8ed1ab_0 17 KB conda-forge\n", + " setuptools-59.8.0 | py38h578d9bd_1 1017 KB conda-forge\n", + " six-1.16.0 | pyh6c4a22f_0 14 KB conda-forge\n", + " sniffio-1.3.0 | pyhd8ed1ab_0 14 KB conda-forge\n", + " soupsieve-2.3.2.post1 | pyhd8ed1ab_0 34 KB conda-forge\n", + " sqlite-3.39.4 | h4ff8645_0 789 KB conda-forge\n", + " stack_data-0.5.1 | pyhd8ed1ab_0 24 KB conda-forge\n", + " terminado-0.16.0 | pyh41d4057_0 18 KB conda-forge\n", + " tinycss2-1.2.1 | pyhd8ed1ab_0 23 KB conda-forge\n", + " tk-8.6.12 | h27826a3_0 3.3 MB conda-forge\n", + " tomli-2.0.1 | pyhd8ed1ab_0 16 KB conda-forge\n", + " tornado-6.2 | py38h0a891b7_0 653 KB conda-forge\n", + " traitlets-5.5.0 | pyhd8ed1ab_0 85 KB conda-forge\n", + " typing_extensions-4.4.0 | pyha770c72_0 29 KB conda-forge\n", + " urllib3-1.26.11 | pyhd8ed1ab_0 102 KB conda-forge\n", + " wcwidth-0.2.5 | pyh9f0ad1d_2 33 KB conda-forge\n", + " webencodings-0.5.1 | py_1 12 KB conda-forge\n", + " websocket-client-1.4.1 | pyhd8ed1ab_0 42 KB conda-forge\n", + " wheel-0.37.1 | pyhd8ed1ab_0 31 KB conda-forge\n", + " widgetsnbextension-4.0.3 | pyhd8ed1ab_0 1.6 MB conda-forge\n", + " xz-5.2.6 | h166bdaf_0 409 KB conda-forge\n", + " zeromq-4.3.4 | h9c3ff4c_1 351 KB conda-forge\n", + " zipp-3.9.0 | pyhd8ed1ab_0 13 KB conda-forge\n", + " ------------------------------------------------------------\n", + " Total: 173.3 MB\n", + "\n", + "The following NEW packages will be INSTALLED:\n", + "\n", + " _libgcc_mutex conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge\n", + " _openmp_mutex conda-forge/linux-64::_openmp_mutex-4.5-2_gnu\n", + " anyio conda-forge/noarch::anyio-3.6.2-pyhd8ed1ab_0\n", + " argon2-cffi conda-forge/noarch::argon2-cffi-21.3.0-pyhd8ed1ab_0\n", + " argon2-cffi-bindi~ conda-forge/linux-64::argon2-cffi-bindings-21.2.0-py38h0a891b7_2\n", + " asttokens conda-forge/noarch::asttokens-2.0.8-pyhd8ed1ab_0\n", + " attrs conda-forge/noarch::attrs-22.1.0-pyh71513ae_1\n", + " babel conda-forge/noarch::babel-2.10.3-pyhd8ed1ab_0\n", + " backcall conda-forge/noarch::backcall-0.2.0-pyh9f0ad1d_0\n", + " backports conda-forge/noarch::backports-1.0-py_2\n", + " backports.functoo~ conda-forge/noarch::backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0\n", + " beautifulsoup4 conda-forge/noarch::beautifulsoup4-4.11.1-pyha770c72_0\n", + " bleach conda-forge/noarch::bleach-5.0.1-pyhd8ed1ab_0\n", + " brotlipy conda-forge/linux-64::brotlipy-0.7.0-py38h0a891b7_1004\n", + " bzip2 conda-forge/linux-64::bzip2-1.0.8-h7f98852_4\n", + " ca-certificates conda-forge/linux-64::ca-certificates-2022.9.24-ha878542_0\n", + " certifi conda-forge/noarch::certifi-2022.9.24-pyhd8ed1ab_0\n", + " cffi conda-forge/linux-64::cffi-1.15.1-py38h4a40e3a_1\n", + " charset-normalizer conda-forge/noarch::charset-normalizer-2.1.1-pyhd8ed1ab_0\n", + " cryptography conda-forge/linux-64::cryptography-38.0.2-py38h80a4ca7_1\n", + " cycler conda-forge/noarch::cycler-0.11.0-pyhd8ed1ab_0\n", + " debugpy conda-forge/linux-64::debugpy-1.6.3-py38hfa26641_0\n", + " decorator conda-forge/noarch::decorator-5.1.1-pyhd8ed1ab_0\n", + " defusedxml conda-forge/noarch::defusedxml-0.7.1-pyhd8ed1ab_0\n", + " entrypoints conda-forge/noarch::entrypoints-0.4-pyhd8ed1ab_0\n", + " executing conda-forge/noarch::executing-1.1.1-pyhd8ed1ab_0\n", + " flit-core conda-forge/noarch::flit-core-3.7.1-pyhd8ed1ab_0\n", + " freetype conda-forge/linux-64::freetype-2.12.1-hca18f0e_0\n", + " icu conda-forge/linux-64::icu-67.1-he1b5a44_0\n", + " idna conda-forge/noarch::idna-3.4-pyhd8ed1ab_0\n", + " importlib-metadata conda-forge/linux-64::importlib-metadata-4.11.4-py38h578d9bd_0\n", + " importlib_resourc~ conda-forge/noarch::importlib_resources-5.10.0-pyhd8ed1ab_0\n", + " ipykernel conda-forge/noarch::ipykernel-6.16.1-pyh210e3f2_0\n", + " ipython conda-forge/noarch::ipython-8.5.0-pyh41d4057_1\n", + " ipython_genutils conda-forge/noarch::ipython_genutils-0.2.0-py_1\n", + " ipywidgets conda-forge/noarch::ipywidgets-8.0.2-pyhd8ed1ab_1\n", + " jedi conda-forge/noarch::jedi-0.18.1-pyhd8ed1ab_2\n", + " jinja2 conda-forge/noarch::jinja2-3.1.2-pyhd8ed1ab_1\n", + " json5 conda-forge/noarch::json5-0.9.5-pyh9f0ad1d_0\n", + " jsonschema conda-forge/noarch::jsonschema-4.16.0-pyhd8ed1ab_0\n", + " jupyter_client conda-forge/noarch::jupyter_client-7.4.3-pyhd8ed1ab_0\n", + " jupyter_core conda-forge/linux-64::jupyter_core-4.11.1-py38h578d9bd_0\n", + " jupyter_server conda-forge/noarch::jupyter_server-1.21.0-pyhd8ed1ab_0\n", + " jupyterlab conda-forge/noarch::jupyterlab-3.5.0-pyhd8ed1ab_0\n", + " jupyterlab_pygmen~ conda-forge/noarch::jupyterlab_pygments-0.2.2-pyhd8ed1ab_0\n", + " jupyterlab_server conda-forge/noarch::jupyterlab_server-2.16.1-pyhd8ed1ab_0\n", + " jupyterlab_widgets conda-forge/noarch::jupyterlab_widgets-3.0.3-pyhd8ed1ab_0\n", + " kiwisolver conda-forge/linux-64::kiwisolver-1.4.4-py38h43d8883_0\n", + " ld_impl_linux-64 conda-forge/linux-64::ld_impl_linux-64-2.39-hc81fddc_0\n", + " libblas conda-forge/linux-64::libblas-3.9.0-16_linux64_openblas\n", + " libcblas conda-forge/linux-64::libcblas-3.9.0-16_linux64_openblas\n", + " libffi conda-forge/linux-64::libffi-3.4.2-h7f98852_5\n", + " libgcc conda-forge/linux-64::libgcc-7.2.0-h69d50b8_2\n", + " libgcc-ng conda-forge/linux-64::libgcc-ng-12.2.0-h65d4601_19\n", + " libgfortran-ng conda-forge/linux-64::libgfortran-ng-12.2.0-h69a702a_19\n", + " libgfortran5 conda-forge/linux-64::libgfortran5-12.2.0-h337968e_19\n", + " libgomp conda-forge/linux-64::libgomp-12.2.0-h65d4601_19\n", + " liblapack conda-forge/linux-64::liblapack-3.9.0-16_linux64_openblas\n", + " libnsl conda-forge/linux-64::libnsl-2.0.0-h7f98852_0\n", + " libopenblas conda-forge/linux-64::libopenblas-0.3.21-pthreads_h78a6416_3\n", + " libpng conda-forge/linux-64::libpng-1.6.38-h753d276_0\n", + " libsodium conda-forge/linux-64::libsodium-1.0.18-h36c2ea0_1\n", + " libsqlite conda-forge/linux-64::libsqlite-3.39.4-h753d276_0\n", + " libstdcxx-ng conda-forge/linux-64::libstdcxx-ng-12.2.0-h46fd767_19\n", + " libuuid conda-forge/linux-64::libuuid-2.32.1-h7f98852_1000\n", + " libzlib conda-forge/linux-64::libzlib-1.2.13-h166bdaf_4\n", + " markupsafe conda-forge/linux-64::markupsafe-2.1.1-py38h0a891b7_1\n", + " matplotlib conda-forge/linux-64::matplotlib-3.2.2-1\n", + " matplotlib-base conda-forge/linux-64::matplotlib-base-3.2.2-py38h5d868c9_1\n", + " matplotlib-inline conda-forge/noarch::matplotlib-inline-0.1.6-pyhd8ed1ab_0\n", + " mistune conda-forge/noarch::mistune-2.0.4-pyhd8ed1ab_0\n", + " nbclassic conda-forge/noarch::nbclassic-0.4.5-pyhd8ed1ab_0\n", + " nbclient conda-forge/noarch::nbclient-0.7.0-pyhd8ed1ab_0\n", + " nbconvert conda-forge/noarch::nbconvert-7.2.2-pyhd8ed1ab_0\n", + " nbconvert-core conda-forge/noarch::nbconvert-core-7.2.2-pyhd8ed1ab_0\n", + " nbconvert-pandoc conda-forge/noarch::nbconvert-pandoc-7.2.2-pyhd8ed1ab_0\n", + " nbformat conda-forge/noarch::nbformat-5.7.0-pyhd8ed1ab_0\n", + " ncurses conda-forge/linux-64::ncurses-6.3-h27087fc_1\n", + " nest-asyncio conda-forge/noarch::nest-asyncio-1.5.6-pyhd8ed1ab_0\n", + " nodejs conda-forge/linux-64::nodejs-6.13.1-0\n", + " notebook conda-forge/noarch::notebook-6.5.1-pyha770c72_0\n", + " notebook-shim conda-forge/noarch::notebook-shim-0.2.0-pyhd8ed1ab_0\n", + " numpy conda-forge/linux-64::numpy-1.23.4-py38h7042d01_0\n", + " openssl conda-forge/linux-64::openssl-3.0.5-h166bdaf_2\n", + " packaging conda-forge/noarch::packaging-21.3-pyhd8ed1ab_0\n", + " pandas conda-forge/linux-64::pandas-0.24.2-py38hb3f55d8_1\n", + " pandoc conda-forge/linux-64::pandoc-2.19.2-h32600fe_1\n", + " pandocfilters conda-forge/noarch::pandocfilters-1.5.0-pyhd8ed1ab_0\n", + " parso conda-forge/noarch::parso-0.8.3-pyhd8ed1ab_0\n", + " pexpect conda-forge/noarch::pexpect-4.8.0-pyh9f0ad1d_2\n", + " pickleshare conda-forge/noarch::pickleshare-0.7.5-py_1003\n", + " pip conda-forge/noarch::pip-22.3-pyhd8ed1ab_0\n", + " pkgutil-resolve-n~ conda-forge/noarch::pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0\n", + " prometheus_client conda-forge/noarch::prometheus_client-0.15.0-pyhd8ed1ab_0\n", + " prompt-toolkit conda-forge/noarch::prompt-toolkit-3.0.31-pyha770c72_0\n", + " psutil conda-forge/linux-64::psutil-5.9.3-py38h0a891b7_0\n", + " ptyprocess conda-forge/noarch::ptyprocess-0.7.0-pyhd3deb0d_0\n", + " pure_eval conda-forge/noarch::pure_eval-0.2.2-pyhd8ed1ab_0\n", + " pycparser conda-forge/noarch::pycparser-2.21-pyhd8ed1ab_0\n", + " pygments conda-forge/noarch::pygments-2.13.0-pyhd8ed1ab_0\n", + " pyopenssl conda-forge/noarch::pyopenssl-22.1.0-pyhd8ed1ab_0\n", + " pyparsing conda-forge/noarch::pyparsing-3.0.9-pyhd8ed1ab_0\n", + " pyrsistent conda-forge/linux-64::pyrsistent-0.18.1-py38h0a891b7_1\n", + " pysocks conda-forge/noarch::pysocks-1.7.1-pyha2e5f31_6\n", + " python conda-forge/linux-64::python-3.8.13-ha86cf86_0_cpython\n", + " python-dateutil conda-forge/noarch::python-dateutil-2.8.2-pyhd8ed1ab_0\n", + " python-fastjsonsc~ conda-forge/noarch::python-fastjsonschema-2.16.2-pyhd8ed1ab_0\n", + " python_abi conda-forge/linux-64::python_abi-3.8-2_cp38\n", + " pytz conda-forge/noarch::pytz-2022.5-pyhd8ed1ab_0\n", + " pyzmq conda-forge/linux-64::pyzmq-24.0.1-py38hfc09fa9_0\n", + " readline conda-forge/linux-64::readline-8.1.2-h0f457ee_0\n", + " requests conda-forge/noarch::requests-2.28.1-pyhd8ed1ab_1\n", + " send2trash conda-forge/noarch::send2trash-1.8.0-pyhd8ed1ab_0\n", + " setuptools conda-forge/linux-64::setuptools-59.8.0-py38h578d9bd_1\n", + " six conda-forge/noarch::six-1.16.0-pyh6c4a22f_0\n", + " sniffio conda-forge/noarch::sniffio-1.3.0-pyhd8ed1ab_0\n", + " soupsieve conda-forge/noarch::soupsieve-2.3.2.post1-pyhd8ed1ab_0\n", + " sqlite conda-forge/linux-64::sqlite-3.39.4-h4ff8645_0\n", + " stack_data conda-forge/noarch::stack_data-0.5.1-pyhd8ed1ab_0\n", + " terminado conda-forge/noarch::terminado-0.16.0-pyh41d4057_0\n", + " tinycss2 conda-forge/noarch::tinycss2-1.2.1-pyhd8ed1ab_0\n", + " tk conda-forge/linux-64::tk-8.6.12-h27826a3_0\n", + " tomli conda-forge/noarch::tomli-2.0.1-pyhd8ed1ab_0\n", + " tornado conda-forge/linux-64::tornado-6.2-py38h0a891b7_0\n", + " traitlets conda-forge/noarch::traitlets-5.5.0-pyhd8ed1ab_0\n", + " typing_extensions conda-forge/noarch::typing_extensions-4.4.0-pyha770c72_0\n", + " urllib3 conda-forge/noarch::urllib3-1.26.11-pyhd8ed1ab_0\n", + " wcwidth conda-forge/noarch::wcwidth-0.2.5-pyh9f0ad1d_2\n", + " webencodings conda-forge/noarch::webencodings-0.5.1-py_1\n", + " websocket-client conda-forge/noarch::websocket-client-1.4.1-pyhd8ed1ab_0\n", + " wheel conda-forge/noarch::wheel-0.37.1-pyhd8ed1ab_0\n", + " widgetsnbextension conda-forge/noarch::widgetsnbextension-4.0.3-pyhd8ed1ab_0\n", + " xz conda-forge/linux-64::xz-5.2.6-h166bdaf_0\n", + " zeromq conda-forge/linux-64::zeromq-4.3.4-h9c3ff4c_1\n", + " zipp conda-forge/noarch::zipp-3.9.0-pyhd8ed1ab_0\n", + "\n", + "\n", + "\n", + "Downloading and Extracting Packages\n", + "_openmp_mutex-4.5 | 23 KB | ##################################### | 100% \n", + "pkgutil-resolve-name | 9 KB | ##################################### | 100% \n", + "traitlets-5.5.0 | 85 KB | ##################################### | 100% \n", + "ptyprocess-0.7.0 | 16 KB | ##################################### | 100% \n", + "libgomp-12.2.0 | 455 KB | ##################################### | 100% \n", + "cffi-1.15.1 | 229 KB | ##################################### | 100% \n", + "argon2-cffi-bindings | 34 KB | ##################################### | 100% \n", + "bzip2-1.0.8 | 484 KB | ##################################### | 100% \n", + "jupyter_core-4.11.1 | 81 KB | ##################################### | 100% \n", + "nbclassic-0.4.5 | 7.7 MB | ##################################### | 100% \n", + "backcall-0.2.0 | 13 KB | ##################################### | 100% \n", + "sqlite-3.39.4 | 789 KB | ##################################### | 100% \n", + "urllib3-1.26.11 | 102 KB | ##################################### | 100% \n", + "ipython-8.5.0 | 552 KB | ##################################### | 100% \n", + "jedi-0.18.1 | 799 KB | ##################################### | 100% \n", + "_libgcc_mutex-0.1 | 3 KB | ##################################### | 100% \n", + "matplotlib-inline-0. | 12 KB | ##################################### | 100% \n", + "icu-67.1 | 12.9 MB | ##################################### | 100% \n", + "python-fastjsonschem | 242 KB | ##################################### | 100% \n", + "tomli-2.0.1 | 16 KB | ##################################### | 100% \n", + "pyparsing-3.0.9 | 79 KB | ##################################### | 100% \n", + "libgfortran-ng-12.2. | 22 KB | ##################################### | 100% \n", + "executing-1.1.1 | 23 KB | ##################################### | 100% \n", + "liblapack-3.9.0 | 13 KB | ##################################### | 100% \n", + "pytz-2022.5 | 238 KB | ##################################### | 100% \n", + "libnsl-2.0.0 | 31 KB | ##################################### | 100% \n", + "pandoc-2.19.2 | 30.0 MB | ##################################### | 100% \n", + "wheel-0.37.1 | 31 KB | ##################################### | 100% \n", + "jsonschema-4.16.0 | 65 KB | ##################################### | 100% \n", + "importlib-metadata-4 | 33 KB | ##################################### | 100% \n", + "python_abi-3.8 | 4 KB | ##################################### | 100% \n", + "python-3.8.13 | 25.2 MB | ##################################### | 100% \n", + "ncurses-6.3 | 1002 KB | ##################################### | 100% \n", + "ipython_genutils-0.2 | 21 KB | ##################################### | 100% \n", + "zipp-3.9.0 | 13 KB | ##################################### | 100% \n", + "asttokens-2.0.8 | 24 KB | ##################################### | 100% \n", + "libsodium-1.0.18 | 366 KB | ##################################### | 100% \n", + "jinja2-3.1.2 | 99 KB | ##################################### | 100% \n", + "prometheus_client-0. | 50 KB | ##################################### | 100% \n", + "send2trash-1.8.0 | 17 KB | ##################################### | 100% \n", + "freetype-2.12.1 | 884 KB | ##################################### | 100% \n", + "readline-8.1.2 | 291 KB | ##################################### | 100% \n", + "terminado-0.16.0 | 18 KB | ##################################### | 100% \n", + "jupyterlab_pygments- | 17 KB | ##################################### | 100% \n", + "libsqlite-3.39.4 | 803 KB | ##################################### | 100% \n", + "libgfortran5-12.2.0 | 1.8 MB | ##################################### | 100% \n", + "defusedxml-0.7.1 | 23 KB | ##################################### | 100% \n", + "pyrsistent-0.18.1 | 92 KB | ##################################### | 100% \n", + "pandocfilters-1.5.0 | 11 KB | ##################################### | 100% \n", + "libzlib-1.2.13 | 64 KB | ##################################### | 100% \n", + "libblas-3.9.0 | 13 KB | ##################################### | 100% \n", + "anyio-3.6.2 | 83 KB | ##################################### | 100% \n", + "nbformat-5.7.0 | 106 KB | ##################################### | 100% \n", + "nbconvert-7.2.2 | 6 KB | ##################################### | 100% \n", + "libffi-3.4.2 | 57 KB | ##################################### | 100% \n", + "jupyterlab-3.5.0 | 6.0 MB | ##################################### | 100% \n", + "psutil-5.9.3 | 348 KB | ##################################### | 100% \n", + "pexpect-4.8.0 | 47 KB | ##################################### | 100% \n", + "nest-asyncio-1.5.6 | 10 KB | ##################################### | 100% \n", + "nbconvert-core-7.2.2 | 189 KB | ##################################### | 100% \n", + "typing_extensions-4. | 29 KB | ##################################### | 100% \n", + "json5-0.9.5 | 20 KB | ##################################### | 100% \n", + "brotlipy-0.7.0 | 342 KB | ##################################### | 100% \n", + "mistune-2.0.4 | 67 KB | ##################################### | 100% \n", + "tk-8.6.12 | 3.3 MB | ##################################### | 100% \n", + "cryptography-38.0.2 | 1.6 MB | ##################################### | 100% \n", + "pickleshare-0.7.5 | 9 KB | ##################################### | 100% \n", + "widgetsnbextension-4 | 1.6 MB | ##################################### | 100% \n", + "beautifulsoup4-4.11. | 96 KB | ##################################### | 100% \n", + "libpng-1.6.38 | 371 KB | ##################################### | 100% \n", + "websocket-client-1.4 | 42 KB | ##################################### | 100% \n", + "matplotlib-3.2.2 | 6 KB | ##################################### | 100% \n", + "tinycss2-1.2.1 | 23 KB | ##################################### | 100% \n", + "ipykernel-6.16.1 | 100 KB | ##################################### | 100% \n", + "setuptools-59.8.0 | 1017 KB | ##################################### | 100% \n", + "libcblas-3.9.0 | 13 KB | ##################################### | 100% \n", + "pandas-0.24.2 | 11.5 MB | ##################################### | 100% \n", + "charset-normalizer-2 | 36 KB | ##################################### | 100% \n", + "libstdcxx-ng-12.2.0 | 4.3 MB | ##################################### | 100% \n", + "flit-core-3.7.1 | 44 KB | ##################################### | 100% \n", + "importlib_resources- | 29 KB | ##################################### | 100% \n", + "openssl-3.0.5 | 2.8 MB | ##################################### | 100% \n", + "jupyter_server-1.21. | 239 KB | ##################################### | 100% \n", + "libgcc-ng-12.2.0 | 931 KB | ##################################### | 100% \n", + "backports.functools_ | 9 KB | ##################################### | 100% \n", + "libopenblas-0.3.21 | 10.1 MB | ##################################### | 100% \n", + "attrs-22.1.0 | 48 KB | ##################################### | 100% \n", + "nbconvert-pandoc-7.2 | 5 KB | ##################################### | 100% \n", + "zeromq-4.3.4 | 351 KB | ##################################### | 100% \n", + "cycler-0.11.0 | 10 KB | ##################################### | 100% \n", + "pyzmq-24.0.1 | 508 KB | ##################################### | 100% \n", + "jupyterlab_server-2. | 49 KB | ##################################### | 100% \n", + "pycparser-2.21 | 100 KB | ##################################### | 100% \n", + "tornado-6.2 | 653 KB | ##################################### | 100% \n", + "python-dateutil-2.8. | 240 KB | ##################################### | 100% \n", + "packaging-21.3 | 36 KB | ##################################### | 100% \n", + "backports-1.0 | 4 KB | ##################################### | 100% \n", + "ipywidgets-8.0.2 | 109 KB | ##################################### | 100% \n", + "parso-0.8.3 | 69 KB | ##################################### | 100% \n", + "markupsafe-2.1.1 | 22 KB | ##################################### | 100% \n", + "bleach-5.0.1 | 124 KB | ##################################### | 100% \n", + "six-1.16.0 | 14 KB | ##################################### | 100% \n", + "notebook-shim-0.2.0 | 15 KB | ##################################### | 100% \n", + "wcwidth-0.2.5 | 33 KB | ##################################### | 100% \n", + "stack_data-0.5.1 | 24 KB | ##################################### | 100% \n", + "decorator-5.1.1 | 12 KB | ##################################### | 100% \n", + "libgcc-7.2.0 | 304 KB | ##################################### | 100% \n", + "matplotlib-base-3.2. | 7.1 MB | ##################################### | 100% \n", + "certifi-2022.9.24 | 155 KB | ##################################### | 100% \n", + "entrypoints-0.4 | 9 KB | ##################################### | 100% \n", + "notebook-6.5.1 | 266 KB | ##################################### | 100% \n", + "pure_eval-0.2.2 | 14 KB | ##################################### | 100% \n", + "numpy-1.23.4 | 7.1 MB | ##################################### | 100% \n", + "requests-2.28.1 | 53 KB | ##################################### | 100% \n", + "argon2-cffi-21.3.0 | 15 KB | ##################################### | 100% \n", + "jupyterlab_widgets-3 | 222 KB | ##################################### | 100% \n", + "nbclient-0.7.0 | 65 KB | ##################################### | 100% \n", + "nodejs-6.13.1 | 11.9 MB | ##################################### | 100% \n", + "pip-22.3 | 1.5 MB | ##################################### | 100% \n", + "xz-5.2.6 | 409 KB | ##################################### | 100% \n", + "pygments-2.13.0 | 821 KB | ##################################### | 100% \n", + "idna-3.4 | 55 KB | ##################################### | 100% \n", + "debugpy-1.6.3 | 2.0 MB | ##################################### | 100% \n", + "kiwisolver-1.4.4 | 76 KB | ##################################### | 100% \n", + "soupsieve-2.3.2.post | 34 KB | ##################################### | 100% \n", + "pysocks-1.7.1 | 19 KB | ##################################### | 100% \n", + "webencodings-0.5.1 | 12 KB | ##################################### | 100% \n", + "pyopenssl-22.1.0 | 122 KB | ##################################### | 100% \n", + "ld_impl_linux-64-2.3 | 759 KB | ##################################### | 100% \n", + "jupyter_client-7.4.3 | 91 KB | ##################################### | 100% \n", + "ca-certificates-2022 | 150 KB | ##################################### | 100% \n", + "sniffio-1.3.0 | 14 KB | ##################################### | 100% \n", + "babel-2.10.3 | 6.7 MB | ##################################### | 100% \n", + "libuuid-2.32.1 | 28 KB | ##################################### | 100% \n", + "prompt-toolkit-3.0.3 | 254 KB | ##################################### | 100% \n", + "Preparing transaction: done\n", + "Verifying transaction: done\n", + "Executing transaction: done\n", + "#\n", + "# To activate this environment, use\n", + "#\n", + "# $ conda activate my_jupyterlab3\n", + "#\n", + "# To deactivate an active environment, use\n", + "#\n", + "# $ conda deactivate\n", + "\n" + ] + } + ], + "source": [ + "${CONDA_TARGET_DIR}/bin/conda create -n ${CONDA_ENV} --override-channels --strict-channel-priority -c conda-forge -c anaconda --yes jupyterlab=3 ipywidgets nodejs pip pandas=0.24 matplotlib" + ] + }, + { + "cell_type": "markdown", + "id": "measured-finance", + "metadata": {}, + "source": [ + "----------------------------------------------------\n", + "## 3. Activate Conda Environment" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "regional-haiti", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/p/project/coecschool22/goebbert1/miniconda3\n", + "my_jupyterlab3\n", + "(my_jupyterlab3) (my_jupyterlab3) (my_jupyterlab3) (my_jupyterlab3) (my_jupyterlab3) \n", + "(my_jupyterlab3) " + ] + }, + { + "ename": "", + "evalue": "1", + "output_type": "error", + "traceback": [] + } + ], + "source": [ + "# verify that PYTHONPATH only points to directories of packages\n", + "# that are compatible with the Python interpreter in Miniconda3\n", + "unset PYTHONPATH\n", + "\n", + "# just to show that jupyterlab starts\n", + "# we have to ensure that the bash-kernel shell\n", + "# does not have JUPYTER*- environment variables set from the running JupyterLab (which serves this notebook)\n", + "unset JUPYTER_PATH\n", + "unset JUPYTERLAB_DIR\n", + "unset JUPYTER_DATA_DIR\n", + "unset JUPYTER_CONFIG_PATH\n", + "\n", + "# Activate your Python virtual environment\n", + "echo ${CONDA_TARGET_DIR}\n", + "echo ${CONDA_ENV}\n", + "source \"${CONDA_TARGET_DIR}\"/bin/activate \"${CONDA_ENV}\"\n", + " \n", + "# Ensure python packages installed in conda are always prefered, not necessary if module purge is used\n", + "#export PYTHONPATH=${CONDA_PREFIX}/lib/python3.6/site-packages:${PYTHONPATH}\n", + "\n", + "echo $PYTHONPATH" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "sticky-intensity", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3/bin/jupyter\n", + "(my_jupyterlab3) " + ] + }, + { + "ename": "", + "evalue": "1", + "output_type": "error", + "traceback": [] + } + ], + "source": [ + "which jupyter" + ] + }, + { + "cell_type": "markdown", + "id": "instrumental-virtue", + "metadata": {}, + "source": [ + "---------\n", + "## 4. Start the fresh installed JupyterLab from the Conda Environment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "proved-samoa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(my_jupyterlab3) [I 2022-10-24 23:49:58.128 ServerApp] jupyterlab | extension was successfully linked.\n", + "[I 2022-10-24 23:49:58.137 ServerApp] nbclassic | extension was successfully linked.\n", + "[I 2022-10-24 23:49:58.261 LabApp] JupyterLab extension loaded from /p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3/lib/python3.8/site-packages/jupyterlab\n", + "[I 2022-10-24 23:49:58.261 LabApp] JupyterLab application directory is /p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3/share/jupyter/lab\n", + "[I 2022-10-24 23:49:58.264 ServerApp] jupyterlab | extension was successfully loaded.\n", + "[I 2022-10-24 23:49:58.268 ServerApp] nbclassic | extension was successfully loaded.\n", + "[I 2022-10-24 23:49:58.268 ServerApp] Serving notebooks from local directory: /p/project/coecschool22/goebbert1/prace-2022.04-jupyter4hpc/day_2/5_my_own_jupyterlab\n", + "[I 2022-10-24 23:49:58.268 ServerApp] Jupyter Server 1.21.0 is running at:\n", + "[I 2022-10-24 23:49:58.268 ServerApp] http://localhost:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n", + "[I 2022-10-24 23:49:58.268 ServerApp] or http://127.0.0.1:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n", + "[I 2022-10-24 23:49:58.268 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).\n", + "[C 2022-10-24 23:49:58.802 ServerApp] \n", + " \n", + " To access the server, open this file in a browser:\n", + " file:///p/project/ccstvs/goebbert1/home_juwels/.local/share/jupyter/runtime/jpserver-31337-open.html\n", + " Or copy and paste one of these URLs:\n", + " http://localhost:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n", + " or http://127.0.0.1:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n" + ] + } + ], + "source": [ + "## JUST FOR TESTING !!!\n", + "jupyter lab --no-browser" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "colored-nickel", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/day5_extras/2_my_own_jupyterlab/2-manually-connect-to-JupyterLab.ipynb b/day5_extras/2_my_own_jupyterlab/2-manually-connect-to-JupyterLab.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..bd51029de01710ad80803ed558cef5e93541d82f --- /dev/null +++ b/day5_extras/2_my_own_jupyterlab/2-manually-connect-to-JupyterLab.ipynb @@ -0,0 +1,248 @@ +{ + "cells": [ + { + "attachments": { + "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": { + "image/jpeg": "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" + } + }, + "cell_type": "markdown", + "id": "2ea39561-7031-4e43-922c-439caa7957c6", + "metadata": { + "tags": [], + "toc-hr-collapsed": false + }, + "source": [ + "\n", + "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n", + "------------------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "ce6bf220-69b3-47db-92c4-87eeb22395d9", + "metadata": {}, + "source": [ + "# Supercomputing with JupyterLab - Tips & Tricks\n", + "\n", + "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n", + "\n", + "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.\n", + "\n", + "-------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "contained-explanation", + "metadata": {}, + "source": [ + "### How to manually start and connect to JupyterLab" + ] + }, + { + "cell_type": "markdown", + "id": "small-panic", + "metadata": {}, + "source": [ + "#### Exercise 1:\n" + ] + }, + { + "cell_type": "markdown", + "id": "simple-syndrome", + "metadata": {}, + "source": [ + "1. Open a Terminal\n", + " - if you use the terminal from within a running JupyterLab, you need to clean up a bit\n", + "```\n", + "unset JUPYTER_PATH\n", + "unset JUPYTERLAB_DIR\n", + "unset JUPYTER_DATA_DIR\n", + "unset JUPYTER_CONFIG_PATH\n", + "```\n", + "2. Decide what JupyterLab you want to start\n", + " - a) preinstalled JupyterLab from a module\n", + " - b) JupyterLab from your own conda-environment" + ] + }, + { + "cell_type": "markdown", + "id": "breeding-probe", + "metadata": {}, + "source": [ + "#### A) Using a preinstalled JupyterLab from a module\n", + "\n", + "Run the following commands to prepare your shell\n", + "```bash\n", + "module purge\n", + "module use $OTHERSTAGES\n", + "module load Stages/2022\n", + "module load GCCcore/.11.2.0\n", + "module load JupyterCollection\n", + "```\n", + "\n", + "Start JupyterLab\n", + "```bash\n", + "jupyter lab --no-browser\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "round-flush", + "metadata": {}, + "source": [ + "#### B) JupyterLab from your own conda-environment\n", + "\n", + "Prepare preinstalled conda environment:\n", + "```bash\n", + "export CONDA_TARGET_DIR=/p/project/coecschool22/goebbert1/miniconda3\n", + "CONDA_ENV=my_jupyterlab3\n", + "\n", + "# >>> conda initialize >>>\n", + "__conda_setup=\"$('/p/project/coecschool22/goebbert1/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)\"\n", + "if [ $? -eq 0 ]; then\n", + " eval \"$__conda_setup\"\n", + "else\n", + " if [ -f \"/p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.sh\" ]; then\n", + " . \"/p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.sh\"\n", + " else\n", + " export PATH=\"/p/project/coecschool22/goebbert1/miniconda3/bin:$PATH\"\n", + " fi\n", + "fi\n", + "unset __conda_setup\n", + "# <<< conda initialize <<<\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "spiritual-mustang", + "metadata": {}, + "source": [ + "Load conda environment\n", + "```bash\n", + "# verify that PYTHONPATH only points to directories of packages\n", + "# that are compatible with the Python interpreter in Miniconda3\n", + "unset PYTHONPATH\n", + "\n", + "# just to show that jupyterlab starts\n", + "# we have to ensure that the bash-kernel shell\n", + "# does not have JUPYTER*- environment variables set from the running JupyterLab (which serves this notebook)\n", + "unset JUPYTER_PATH\n", + "unset JUPYTERLAB_DIR\n", + "unset JUPYTER_DATA_DIR\n", + "unset JUPYTER_CONFIG_PATH\n", + "\n", + "# Activate your Python virtual environment\n", + "echo ${CONDA_TARGET_DIR}\n", + "echo ${CONDA_ENV}\n", + "source \"${CONDA_TARGET_DIR}\"/bin/activate \"${CONDA_ENV}\"\n", + " \n", + "# Ensure python packages installed in conda are always prefered, not necessary if module purge is used\n", + "#export PYTHONPATH=${CONDA_PREFIX}/lib/python3.6/site-packages:${PYTHONPATH}\n", + "\n", + "echo $PYTHONPATH\n", + "```\n", + "\n", + "Start JupyterLab\n", + "```bash\n", + "jupyter lab --no-browser\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "boolean-tamil", + "metadata": {}, + "source": [ + "---------\n", + "### Tunnel the new JupyterLab to your local machine\n", + "\n", + "**Linux or Mac:** \n", + "If your operating system is Linux or Mac use: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "olive-madonna", + "metadata": {}, + "outputs": [], + "source": [ + "ssh -N -L <LOCAL_PORT>:<JLAB_NODE>:<JLAB_PORT> <USERID>@<LOGIN_NODE>.fz-juelich.de\n", + "# example: ssh -N -L 8888:juwels04:8888 goebbert1@juwels01.fz-juelich.de\n", + "\n", + "# if you want to tunnel directly to <LOGIN_NODE> only, then you must set JLAB_NODE to \"localhost\"" + ] + }, + { + "cell_type": "markdown", + "id": "scientific-commission", + "metadata": {}, + "source": [ + "**Attention:**\n", + "- LOGIN_NODE - Hostname of login node from the view of your local machine\n", + "- JLAB_NODE - Hostname of the node running JupyterLab from the view of LOGIN_NODE\n", + "- LOCAL_PORT - port on your local machine\n", + "- JLAB_PORT - port on the node running JupyterLab" + ] + }, + { + "cell_type": "markdown", + "id": "under-willow", + "metadata": {}, + "source": [ + "**Windows:**\n", + "In case your operating system is Windows, the setup of the tunnel depends on your ssh client.\n", + "Here a short overview on how-to setup a tunnel with **PuTTY** is given.\n", + "\n", + "It is assumed that PuTTY is already configured in a way that a general ssh connection to JUWELS is possible.\n", + "That means that host name, user name and the private ssh key (using PuTTY's Pageant) are correctly set.\n", + "You already made a first connection to JUWELS using PUTTY.\n", + "\n", + "To establish the ssh tunnel start PUTTY and enter the \"SSH-->tunnels\" tab in the PuTTY configuration window before connecting to JUWELS.\n", + "You have to enter the source port (eg. <LOCAL_PORT> = 8888) and the destination (eg. juwels01.fz-juelich.de:8888) and than press add.\n", + "After pressing add, the tunnel should appear in the list of forwarded ports and you can establish the tunnel by pressing the open button." + ] + }, + { + "cell_type": "markdown", + "id": "ordered-tract", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "unexpected-sharing", + "metadata": {}, + "source": [ + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/day5_extras/2_my_own_jupyterlab/3-switch-default-Jupyterlab.ipynb b/day5_extras/2_my_own_jupyterlab/3-switch-default-Jupyterlab.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..8d888dd68351b467562a9ff28632d0c623e9247e --- /dev/null +++ b/day5_extras/2_my_own_jupyterlab/3-switch-default-Jupyterlab.ipynb @@ -0,0 +1,120 @@ +{ + "cells": [ + { + "attachments": { + "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": { + "image/jpeg": "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" + } + }, + "cell_type": "markdown", + "id": "ece9406a-a238-4c26-8a8e-f3f582d3a5e6", + "metadata": { + "tags": [], + "toc-hr-collapsed": false + }, + "source": [ + "\n", + "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n", + "------------------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "d36452be-8e07-4876-ab0d-ba4d58c4c0cf", + "metadata": {}, + "source": [ + "# Supercomputing with JupyterLab - Tips & Tricks\n", + "\n", + "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n", + "\n", + "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.\n", + "\n", + "-------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "stuffed-collapse", + "metadata": {}, + "source": [ + "### Switch the default JupyterLab installation" + ] + }, + { + "cell_type": "markdown", + "id": "spectacular-placement", + "metadata": {}, + "source": [ + "#### Exercise 1:\n", + "1. Open `$JUPYTER_LOG_DIR/.start`\n", + "2. Check for call of optional start-script\n", + "3. Create own start-script\n", + " - `$HOME/.jupyter/start_jupyter-jsc.sh`" + ] + }, + { + "cell_type": "markdown", + "id": "successful-intranet", + "metadata": {}, + "source": [ + "```bash\n", + "module purge\n", + "module load Stages/2022\n", + "module load GCCcore/.11.2.0\n", + "\n", + "module use /p/usersoftware/swmanage/goebbert1/stage2022/jupyter33/easybuild/$SYSTEMNAME/modules/all/Compiler/GCCcore/11.2.0/\n", + "\n", + "module load Python\n", + "module load JupyterCollection/2022.3.3\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "civil-stupid", + "metadata": {}, + "source": [ + "Starting a JupyterLab through Jupyter-JSC now on the cluster using this $HOME \n", + "- will now source `$HOME/.jupyter/start_jupyter-jsc.sh` before it starts JupyterLab\n", + "- and therefore will now use `JupyterCollection/2022.3.3` from `Stage/2022`." + ] + }, + { + "cell_type": "markdown", + "id": "extra-tooth", + "metadata": {}, + "source": [ + "#### Exercise 2:\n", + "What is this `JupyterCollection` ? \n", + "\n", + "1. Check `which jupyter`\n", + "2. Check the jupyter installation\n", + " - `cd $EBROOTJUPYTERCOLLECTION/easybuild/`\n", + " - `vim JupyterCollection-2021.3.2-gcccoremkl-10.3.0-2021.2.0.eb`\n", + "3. Check the easybuild files of our Jupyter module on Github:\n", + " - https://github.com/easybuilders/JSC/" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/day5_extras/2_my_own_jupyterlab/PuTTY-add-tunnel.png b/day5_extras/2_my_own_jupyterlab/PuTTY-add-tunnel.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ffca13393f998810a179c657c82a743bf7d480 Binary files /dev/null and b/day5_extras/2_my_own_jupyterlab/PuTTY-add-tunnel.png differ diff --git a/day5_extras/2_my_own_jupyterlab/PuTTY-tunnel-added.png b/day5_extras/2_my_own_jupyterlab/PuTTY-tunnel-added.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2d0e3a01e94c6bf3daf6d1845ceab56ce948a2 Binary files /dev/null and b/day5_extras/2_my_own_jupyterlab/PuTTY-tunnel-added.png differ diff --git a/day5_extras/6_cloud-hpc_challenges/1-hdf-cloud_mount-hpc-storage.ipynb b/day5_extras/6_cloud-hpc_challenges/1-hdf-cloud_mount-hpc-storage.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..8560ec542c23b4fba779749fdff37327bbac47ef --- /dev/null +++ b/day5_extras/6_cloud-hpc_challenges/1-hdf-cloud_mount-hpc-storage.ipynb @@ -0,0 +1,256 @@ +{ + "cells": [ + { + "attachments": { + "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": { + "image/jpeg": "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" + } + }, + "cell_type": "markdown", + "id": "exclusive-nursery", + "metadata": { + "toc-hr-collapsed": false + }, + "source": [ + "\n", + "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n", + "------------------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "worldwide-presence", + "metadata": {}, + "source": [ + "# Supercomputing with JupyterLab - Tips & Tricks\n", + "\n", + "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n", + "\n", + "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.# JupyterLab Tour\n", + "\n", + "-------------------------" + ] + }, + { + "cell_type": "markdown", + "id": "retired-crest", + "metadata": {}, + "source": [ + "#### Exercise 1:\n", + "**ONLY FOR HDF-CLOUD** \n", + "**!!DANGEROUS!! YOU ARE MOUNTING WRITEABLE** \n", + "Mount the $HOMEs from GPFS on the HDF Cloud" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "abd7420b-36b8-4f8b-91fc-cc10f6d45013", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "from contextlib import closing\n", + "\n", + "import pyunicore.client as unicore_client\n", + "import requests" + ] + }, + { + "cell_type": "markdown", + "id": "2da2cb6f-d6c6-4bbe-a7bb-8dd488615181", + "metadata": {}, + "source": [ + "During the login process in Jupyter-JSC, you have authenticated yourself against the identity management system [*Unity-IdM*](https://www.unity-idm.eu) . \n", + "This IdM issues temporary tokens (comparable to user+password) on request, which can be use for authentication to other services that are also connected to the same IdM. \n", + "Here we use the JupyterHub-API (+your JUPYTERHUB_API_TOKEN) to get a new temporary token for the next steps." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "643d4c6b-927e-4d25-a3b0-1e6755a6cae3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def get_access_token():\n", + " remote_node = os.getenv(\"REMOTE_NODE\")\n", + " remote_hub_port = os.getenv(\"REMOTE_PORT\")\n", + " hub_api_url = f\"http://{remote_node}:{remote_hub_port}/hub/api/user\"\n", + " headers = {\"Authorization\": \"token {}\".format(os.getenv(\"JUPYTERHUB_API_TOKEN\"))}\n", + " with closing(requests.get(hub_api_url, headers=headers)) as r:\n", + " if r.status_code == 200:\n", + " resp = json.loads(r.content.decode(\"utf-8\"))\n", + " else:\n", + " raise Exception(\n", + " \"Could not receive access token: {} {}\".format(\n", + " r.status_code, r.content.decode(\"utf-8\")\n", + " )\n", + " )\n", + " # No HPC accounts -> no access token in this script\n", + " if (\n", + " \"auth_state\" in resp.keys()\n", + " and \"oauth_user\" in resp[\"auth_state\"].keys()\n", + " and \"hpc_infos_attribute\" in resp[\"auth_state\"][\"oauth_user\"]\n", + " and len(resp[\"auth_state\"][\"oauth_user\"][\"hpc_infos_attribute\"]) > 0\n", + " ):\n", + " return resp[\"auth_state\"][\"access_token\"]\n", + " else:\n", + " return None" + ] + }, + { + "cell_type": "markdown", + "id": "540563d1-59ca-4d28-86f7-171c98310a68", + "metadata": {}, + "source": [ + "Having that `access_token` we can now ask unicore for information about the HPC account of the user the token belongs to. \n", + "We will receive the `uid` and the base of all its home directories as `remote_base_dir`. \n", + "\n", + "That information is required to ask the service [*UFTP*](https://apps.fz-juelich.de/jsc/hps/judac/uftp.html) all details needed for the mound command." + ] + }, + { + "cell_type": "markdown", + "id": "aa5c5156-9afd-4b7b-a78f-7bb40aef2222", + "metadata": {}, + "source": [ + "**ATTENTION:** Set `ro` or `rw` for mounting readonly or writable" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "78c3f65d-1039-482f-900b-c9b0173b490d", + "metadata": {}, + "outputs": [], + "source": [ + "def get_mount_command(access_token):\n", + " _auth = \"https://uftp.fz-juelich.de:9112/UFTP_Auth/rest/auth/\"\n", + " _tr = unicore_client.Transport(access_token)\n", + " _info = _tr.get(url=_auth)\n", + " _uid = _info[\"JUDAC\"][\"uid\"]\n", + " remote_base_dir = \"/p/home/jusers/%s\" % _uid\n", + "\n", + " # authenticate\n", + " _req = {\n", + " \"persistent\": \"true\",\n", + " \"serverPath\": \"%s/___UFTP___MULTI___FILE___SESSION___MODE___\" % remote_base_dir,\n", + " }\n", + " _reply = _tr.post(url=_auth + \"/JUDAC\", json=_req).json()\n", + " uftp_pwd = _reply[\"secret\"]\n", + " uftp_host = _reply[\"serverHost\"]\n", + " uftp_port = _reply[\"serverPort\"]\n", + " return f\"curlftpfs -s -o rw,uid=1094,gid=100,ftp_method=singlecwd,enable_epsv,user=anonymous:{uftp_pwd} {uftp_host}:{uftp_port}\"" + ] + }, + { + "cell_type": "markdown", + "id": "e7f6af90-bd33-4a55-9659-973bcaa3da67", + "metadata": {}, + "source": [ + "------------------------------------\n", + "Let's bring all pieces together:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b0fa1183-2983-4702-94b1-b4567fea4df3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "curlftpfs -s -o rw,uid=1094,gid=100,ftp_method=singlecwd,enable_epsv,user= <...>\n" + ] + } + ], + "source": [ + "access_token = get_access_token()\n", + "if not access_token:\n", + " print(\"Error: No access token\")\n", + "mount_cmd = get_mount_command(access_token)\n", + "# e.g. curlftpfs -s -o ro,uid=1094,gid=100,ftp_method=singlecwd,enable_epsv,user=anonymous:fwngibbflwngfllaycpc judacsrv.fz-juelich.de:64333\n", + "print(mount_cmd.partition(\"anonymous:\")[0], \"<...>\") # do not print the token" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "45c2ff24-a735-459a-8b53-ceeb74752635", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash -s \"$mount_cmd\"\n", + "mkdir -p $HOME/uftp-mount-rw\n", + "$1 $HOME/uftp-mount-rw" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "30a5b1e5-4f11-465a-a27d-e0b2c5973ec0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total 68\n", + "drwx------ 3 jovyan users 4096 Mar 14 23:53 deep\n", + "drwx------ 3 jovyan users 4096 Mar 31 21:42 hdfml\n", + "drwx------ 3 jovyan users 4096 Mar 25 11:11 judac\n", + "drwx------ 3 jovyan users 16384 Apr 5 2022 jureca\n", + "drwx------ 3 jovyan users 4096 Aug 14 2021 juropa3exp\n", + "drwx------ 3 jovyan users 16384 Mar 31 23:15 jusuf\n", + "drwx------ 3 jovyan users 16384 Apr 1 10:45 juwels\n", + "drwx------ 3 jovyan users 4096 Mar 9 21:50 shared\n" + ] + } + ], + "source": [ + "# ...\n", + "!ls -l $HOME/uftp-mount-rw" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a4ff2ac-8731-4ce2-ab79-e89b6d3887a6", + "metadata": {}, + "outputs": [], + "source": [ + "# unmount\n", + "!fusermount -u $HOME/uftp-mount-rw" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}