From 835651a01c98fa1d8241771a32d05c6723e6f96c Mon Sep 17 00:00:00 2001 From: "Rutherford, Cameron" Date: Sun, 5 Nov 2023 11:44:28 -0500 Subject: [PATCH 1/7] Add working devcontainer and empty jupyter notebook. --- .devcontainer/Dockerfile | 39 +- .../create_dockerfile_devcontainer.sh | 125 ++ .devcontainer/devcontainer.json | 4 +- .gitignore | 2 +- docs/devcontainer/mpi4py-tutorial.ipynb | 1549 +++++++++++++++++ docs/devcontainer/tutorial.ipynb | 502 +++--- docs/devcontainer/viz-tutorial.ipynb | 521 ++++++ viz/backend/requirements.txt | Bin 2715 -> 2703 bytes viz/package.json | 102 +- 9 files changed, 2564 insertions(+), 280 deletions(-) create mode 100755 .devcontainer/create_dockerfile_devcontainer.sh create mode 100644 docs/devcontainer/mpi4py-tutorial.ipynb create mode 100644 docs/devcontainer/viz-tutorial.ipynb diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index aa641cd9..484d07b8 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -16,6 +16,7 @@ RUN mkdir /opt/spack-environment \ && echo ' - ipopt@3.12.10+coinhsl~mumps+metis' \ && echo ' - coinhsl@2019.05.21+blas' \ && echo ' - py-jupyterlab' \ +&& echo ' - py-ipyparallel' \ && echo ' concretizer:' \ && echo ' unify: true' \ && echo ' reuse: true' \ @@ -28,6 +29,8 @@ RUN mkdir /opt/spack-environment \ && echo ' - openmpi' \ && echo ' zlib-api:' \ && echo ' - zlib' \ +&& echo ' zlib-ng:' \ +&& echo ' buildable: false' \ && echo ' config:' \ && echo ' install_tree: /opt/software' \ && echo ' view: /opt/views/view') > /opt/spack-environment/spack.yaml @@ -35,8 +38,23 @@ RUN mkdir /opt/spack-environment \ # This is manual, and required to build Ipopt COPY coinhsl-archive-2019.05.21.tar.gz /opt/spack-environment/coinhsl-archive-2019.05.21.tar.gz +# Find external packages +RUN cd /opt/spack-environment && spack env activate . && spack external find --all + # Do this separate of install to cache keys... -RUN spack mirror add develop https://binaries.spack.io/develop && spack buildcache keys --install --trust +RUN cd /opt/spack-environment && spack env activate . && spack mirror add develop https://binaries.spack.io/develop && spack buildcache keys --install --trust && spack concretize -f && spack mirror create -a + +# Install Ipopt w/ CoinHSL (and other deps) in stages to cache builds +RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast ipopt + +# Install PETSc +RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast petsc + +# Install py-jupyterlab +RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast py-jupyterlab + +# Install py-ipyparallel +RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast py-ipyparallel # Install the software, remove unnecessary deps RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast && spack gc -y @@ -72,7 +90,7 @@ RUN { \ RUN apt-get -yqq update && apt-get -yqq upgrade \ - && apt-get -yqq install gfortran \ + && apt-get -yqq install gfortran nodejs npm \ && rm -rf /var/lib/apt/lists/* ENTRYPOINT [ "/entrypoint.sh" ] CMD [ "/bin/bash" ] @@ -83,6 +101,19 @@ RUN echo "source /entrypoint.sh" >> /home/vscode/.bashrc # Install the Jupyter kernel RUN . /entrypoint.sh && \ python3 -m ipykernel install \ - --name py311-exago\ - --display-name ExaGO \ + --name py311-exago \ + --display-name "ExaGO" \ --prefix= + +# Install the mpi4py Jupyter kernel +RUN . /entrypoint.sh && \ + python3 -m ipykernel install \ + --name py311-mpi4py-exago \ + --display-name "ExaGO w/ MPI" \ + --prefix= + +# Make modifications that are necessary to run mpi4py in kernelspec +RUN sed -i 's/\"\/opt\/views\/view\/bin\/python3\"/\"mpiexec\", \"-n\", \"1\", \"\/opt\/views\/view\/bin\/python3\"/g' /usr/local/share/jupyter/kernels/py311-mpi4py-exago/kernel.json + +# Configure user for container +USER vscode diff --git a/.devcontainer/create_dockerfile_devcontainer.sh b/.devcontainer/create_dockerfile_devcontainer.sh new file mode 100755 index 00000000..2f2e285e --- /dev/null +++ b/.devcontainer/create_dockerfile_devcontainer.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# Generates Dockerfile for use as Devcontainer... + +# Only necessary for HTTPS operations on PNNL VPN +# export HTTPS_PROXY=http://proxy01.pnl.gov:3128 && +# export https_proxy=http://proxy01.pnl.gov:3128 && + +# Get CoinHSL tarball if not present +if [ ! -f "./coinhsl-archive-2019.05.21.tar.gz" ]; then + echo "No coinhsl-archive-2019.05.21.tar.gz found - make sure to get your own license and copy it to this directory" + echo "Note that the tarball must be named coinhsl-archive-2019.05.21.tar.gz" + exit 1 +fi + +# Add read/execute permissions to CoinHSL tarball +chmod +rx ./coinhsl-archive-2019.05.21.tar.gz && + +# If "-f" flag passed, force rebuild +if [ "$1" == "-f" ]; then + echo "Forcing rebuild" && + rm -rf ~/.spack && + rm -rf ./spack && + rm -rf ./spack-env +fi + +# or no ./spack dir, force a rebuild +if [ ! -d "./tpl/spack/share" ]; then + echo "No spack submodule directory found, downloading spack" + git submodule update --init --recursive +fi + +export SPACK_PYTHON=$(which python3) && +# Setup spack +source ./tpl/spack/share/spack/setup-env.sh && + +# Create heredoc for spack.yaml with environment +cat > $(pwd)/spack.yaml < ./.devcontainer/Dockerfile + +# THIS ONLY WORKS ON MAC!!! - maybe get gsed wit brew working... +# Add Docker command before "# Install" that copies CoinHSL into image +sed -i "" "s|# Install the software|# This is manual, and required to build Ipopt\nCOPY coinhsl-archive-2019.05.21.tar.gz /opt/spack-environment/coinhsl-archive-2019.05.21.tar.gz\n\n# Install the software|" ./.devcontainer/Dockerfile + +# Find external packages +sed -i "" "s|# Install the software|# Find external packages\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack external find --all\n\n# Install the software|" ./.devcontainer/Dockerfile + +# Also trusts the build cache and create source mirror +sed -i "" "s|# Install the software|# Do this separate of install to cache keys...\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack mirror add develop https://binaries.spack.io/develop \&\& spack buildcache keys --install --trust \&\& spack concretize -f \&\& spack mirror create -a\n\n# Install the software|" ./.devcontainer/Dockerfile + +# Install Ipopt and packages in separate stages to cache builds +sed -i "" "s|# Install the software|# Install Ipopt w/ CoinHSL (and other deps) in stages to cache builds\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack install --fail-fast ipopt\n\n# Install the software|" ./.devcontainer/Dockerfile +sed -i "" "s|# Install the software|# Install PETSc \nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack install --fail-fast petsc\n\n# Install the software|" ./.devcontainer/Dockerfile +sed -i "" "s|# Install the software|# Install py-jupyterlab\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack install --fail-fast py-jupyterlab\n\n# Install the software|" ./.devcontainer/Dockerfile +sed -i "" "s|# Install the software|# Install py-ipyparallel\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack install --fail-fast py-ipyparallel\n\n# Install the software|" ./.devcontainer/Dockerfile + +# Configure environment for VSCode User in devcontainer +echo "# Make sure devcontainer user gets spack packages" >> ./.devcontainer/Dockerfile +echo "RUN echo \"source /entrypoint.sh\" >> /home/vscode/.bashrc" >> ./.devcontainer/Dockerfile + +# Finally install the Jupyter kernel +echo "" >> ./.devcontainer/Dockerfile +echo "# Install the Jupyter kernel" >> ./.devcontainer/Dockerfile +echo "RUN . /entrypoint.sh && \\" >> ./.devcontainer/Dockerfile +echo " python3 -m ipykernel install \\" >> ./.devcontainer/Dockerfile +echo " --name py311-exago \\" >> ./.devcontainer/Dockerfile +echo " --display-name \"ExaGO\" \\" >> ./.devcontainer/Dockerfile +echo " --prefix=$(which jupyter)" >> ./.devcontainer/Dockerfile + +# Install the mpi4py Jupyter kernel +echo "" >> ./.devcontainer/Dockerfile +echo "# Install the mpi4py Jupyter kernel" >> ./.devcontainer/Dockerfile +echo "RUN . /entrypoint.sh && \\" >> ./.devcontainer/Dockerfile +echo " python3 -m ipykernel install \\" >> ./.devcontainer/Dockerfile +echo " --name py311-mpi4py-exago \\" >> ./.devcontainer/Dockerfile +echo " --display-name \"ExaGO w/ MPI\" \\" >> ./.devcontainer/Dockerfile +echo " --prefix=$(which jupyter)" >> ./.devcontainer/Dockerfile + +# Modify mpi4py kernel to actually launch process with mpiexec +echo "" >> ./.devcontainer/Dockerfile +echo "# Make modifications that are necessary to run mpi4py in kernelspec" >> ./.devcontainer/Dockerfile +echo "RUN sed -i 's/\\\"\/opt\/views\/view\/bin\/python3\\\"/\\\"mpiexec\\\", \\\"-n\\\", \\\"1\\\", \\\"\/opt\/views\/view\/bin\/python3\\\"/g' /usr/local/share/jupyter/kernels/py311-mpi4py-exago/kernel.json" >> ./.devcontainer/Dockerfile + +# Make sure vscode user is correct +echo "" >> ./.devcontainer/Dockerfile +echo "# Configure user for container" >> ./.devcontainer/Dockerfile +echo "USER vscode" >> ./.devcontainer/Dockerfile diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index facd9a6e..34dcfff4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,10 +9,12 @@ "ms-azuretools.vscode-docker", "github.vscode-github-actions", "ms-toolsai.jupyter", - "GitHub.copilot" + "GitHub.copilot", + "ms-vsliveshare.vsliveshare" ] } }, "workspaceFolder": "/home/app/", + "postCreateCommand": "cd /home/app/viz && export CXX=$(which gcc) && npm install", "workspaceMount": "source=${localWorkspaceFolder},target=/home/app/,type=bind,consistency=cached" } diff --git a/.gitignore b/.gitignore index d5f79fce..d572d225 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ install/* .ubuild.json *__pycache__* *nvblas.conf -spack-* +spack* .vscode/ coinhsl-* node_modules diff --git a/docs/devcontainer/mpi4py-tutorial.ipynb b/docs/devcontainer/mpi4py-tutorial.ipynb new file mode 100644 index 00000000..344c0946 --- /dev/null +++ b/docs/devcontainer/mpi4py-tutorial.ipynb @@ -0,0 +1,1549 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ExaGO mpi4py Jupyter Tutorial\n", + "\n", + "We have a Python wrapper for ExaGO installed in this container through sapck. You can view the Dockerfile in `.devcontainer/Dockerfile`. See the Appendix for more details.\n", + "\n", + "This is different to the base tutorial in that we include some additional information about MPI configuration." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ExaGO 1.6.0 built on Nov 9 2023\n", + "ExaGO 1.6.0 built on Nov 9 2023\n", + "ExaGO 1.6.0 built on Nov 9 2023\n", + "ExaGO 1.6.0 built on Nov 9 2023\n", + "ExaGO 1.6.0 built on Nov 9 2023\n" + ] + } + ], + "source": [ + "!mpirun -n 5 opflow --version" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello\n", + " from rank 0 out of 1 total ranks\n" + ] + } + ], + "source": [ + "# Unique to MPI configuration\n", + "print(f'Hello')\n", + "import mpi4py\n", + "mpi4py.rc.threads = False\n", + "from mpi4py import MPI\n", + "comm = MPI.COMM_WORLD\n", + "rank = comm.Get_rank()\n", + "size = comm.Get_size()\n", + "print(f'{comm} from rank {rank} out of {size} total ranks')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/app/docs/devcontainer\n", + "/home/app\n" + ] + } + ], + "source": [ + "# Get pwd and change directory to where datafiles are\n", + "import os\n", + "print(f'{os.getcwd()}')\n", + "os.chdir('../..')\n", + "print(f'{os.getcwd()}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need to run in a parallel cluster, save file to disk (or return in place), and then do something with the solution..." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting 6 engines with \n", + "100%|██████████| 6/6 [00:05<00:00, 1.03engine/s]\n", + "Hello World from rank 0. total ranks=6. host=dfdb9932ea09 out of /home/app\n", + "Hello World from rank 1. total ranks=6. host=dfdb9932ea09 out of /home/app\n", + "Hello World from rank 2. total ranks=6. host=dfdb9932ea09 out of /home/app\n", + "Hello World from rank 3. total ranks=6. host=dfdb9932ea09 out of /home/app\n", + "Hello World from rank 4. total ranks=6. host=dfdb9932ea09 out of /home/app\n", + "Hello World from rank 5. total ranks=6. host=dfdb9932ea09 out of /home/app\n", + "Stopping engine(s): 1699501339\n", + "engine set stopped 1699501339: {'exit_code': 0, 'pid': 35617, 'identifier': 'ipengine-1699501338-ciod-1699501339-35554'}\n", + "Stopping controller\n", + "Controller stopped: {'exit_code': 0, 'pid': 35587, 'identifier': 'ipcontroller-1699501338-ciod-35554'}\n" + ] + } + ], + "source": [ + "# Hello world first:\n", + "import ipyparallel as ipp\n", + "\n", + "def mpi_example():\n", + " import os\n", + " from mpi4py import MPI\n", + " comm = MPI.COMM_WORLD\n", + " return f\"Hello World from rank {comm.Get_rank()}. total ranks={comm.Get_size()}. host={MPI.Get_processor_name()} out of {os.getcwd()}\"\n", + "\n", + "# request an MPI cluster with 24 engines\n", + "with ipp.Cluster(controller_ip=\"*\", engines=\"mpi\", n=6) as rc:\n", + " # get a broadcast_view on the cluster which is best\n", + " # suited for MPI style computation\n", + " view = rc.broadcast_view()\n", + " # run the mpi_example function on all engines in parallel\n", + " r = view.apply_sync(mpi_example)\n", + " # Retrieve and print the result from the engines\n", + " print(\"\\n\".join(r))\n", + "# at this point, the cluster processes have been shutdown" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/app\n", + "/home/app\n", + "Starting 4 engines with \n", + "100%|██████████| 4/4 [00:05<00:00, 1.48s/engine]\n", + "Stopping engine(s): 1699501347\n", + "engine set stopped 1699501347: {'exit_code': 59, 'pid': 35775, 'identifier': 'ipengine-1699501346-0x7o-1699501347-35554'}\n", + "Stopping controller\n", + "Controller stopped: {'exit_code': 0, 'pid': 35742, 'identifier': 'ipcontroller-1699501346-0x7o-35554'}\n" + ] + } + ], + "source": [ + "import ipyparallel as ipp\n", + "import os\n", + "print(f'{os.getcwd()}')\n", + "os.chdir('/home/app')\n", + "print(f'{os.getcwd()}')\n", + "\n", + "def run_exago():\n", + " from mpi4py import MPI\n", + " import exago\n", + " comm = MPI.COMM_WORLD\n", + " rank = comm.Get_rank()\n", + " exago.initialize(\"app\", comm)\n", + " opf = exago.OPFLOW()\n", + " opf.read_mat_power_data('./datafiles/case9/case9mod.m')\n", + " opf.solve()\n", + "\n", + " comm.barrier()\n", + "\n", + " if rank == 0:\n", + " # opf.print_solution()\n", + " opf.save_solution(exago.OutputFormat.JSON, 'solution')\n", + "\n", + " # exago.finalize()\n", + " comm.barrier()\n", + "\n", + "# request an MPI cluster with 24 engines\n", + "with ipp.Cluster(controller_ip=\"*\", engines=\"mpi\", n=4) as rc:\n", + " # get a broadcast_view on the cluster which is best\n", + " # suited for MPI style computation\n", + " view = rc.broadcast_view()\n", + " # run the mpi_example function on all engines in parallel\n", + " r = view.apply_sync(run_exago)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + "\t\"casefile\": \"./datafiles/case9/case9mod.m\",\n", + "\t\"gicfile\": \"not given\",\n", + "\t\"nbranch\": 9,\n", + "\t\"ngen\": 3,\n", + "\t\"nbus\": 9,\n", + "\t\"KVlevels\": [\n", + "\t\t345.000000\n", + "\t],\n", + "\t\"casejsonfile\": \"solution.json\",\n", + "\t\"geojsondata\": {\n", + "\t\t\"type\": \"FeatureCollection\",\n", + "\t\t\"features\": [\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.508469,\n", + "\t\t\t\t\t\t35.981918\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"1\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 1,\n", + "\t\t\t\t\t\t\t\"VA\": 0.000000,\n", + "\t\t\t\t\t\t\t\"VM\": 1.099983,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2102.907811,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": 0.000000,\n", + "\t\t\t\t\t\t\t\"ngen\": 1,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\t\t\"GEN_BUS\": 1,\n", + "\t\t\t\t\t\t\t\t\t\"GEN_FUEL\": \"UNDEFINED\",\n", + "\t\t\t\t\t\t\t\t\t\"PG\": 72.859446,\n", + "\t\t\t\t\t\t\t\t\t\"QG\": 6.790092,\n", + "\t\t\t\t\t\t\t\t\t\"GEN_STATUS\": 1,\n", + "\t\t\t\t\t\t\t\t\t\"PMAX\": 350.000000,\n", + "\t\t\t\t\t\t\t\t\t\"PMIN\": 10.000000,\n", + "\t\t\t\t\t\t\t\t\t\"QMAX\": 300.000000,\n", + "\t\t\t\t\t\t\t\t\t\"QMIN\": -300.000000\n", + "\t\t\t\t\t\t\t\t}\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.099983\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.187075,\n", + "\t\t\t\t\t\t35.864940\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"2\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 2,\n", + "\t\t\t\t\t\t\t\"VA\": 3.927539,\n", + "\t\t\t\t\t\t\t\"VM\": 1.095254,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2059.179811,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": -0.000000,\n", + "\t\t\t\t\t\t\t\"ngen\": 1,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\t\t\"GEN_BUS\": 2,\n", + "\t\t\t\t\t\t\t\t\t\"GEN_FUEL\": \"UNDEFINED\",\n", + "\t\t\t\t\t\t\t\t\t\"PG\": 114.069401,\n", + "\t\t\t\t\t\t\t\t\t\"QG\": -5.128376,\n", + "\t\t\t\t\t\t\t\t\t\"GEN_STATUS\": 1,\n", + "\t\t\t\t\t\t\t\t\t\"PMAX\": 300.000000,\n", + "\t\t\t\t\t\t\t\t\t\"PMIN\": 10.000000,\n", + "\t\t\t\t\t\t\t\t\t\"QMAX\": 300.000000,\n", + "\t\t\t\t\t\t\t\t\t\"QMIN\": -300.000000\n", + "\t\t\t\t\t\t\t\t}\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.095254\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.016065,\n", + "\t\t\t\t\t\t35.568742\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"3\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 3,\n", + "\t\t\t\t\t\t\t\"VA\": 2.120068,\n", + "\t\t\t\t\t\t\t\"VM\": 1.086566,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2065.154806,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": -0.000000,\n", + "\t\t\t\t\t\t\t\"ngen\": 1,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\t\t\"GEN_BUS\": 3,\n", + "\t\t\t\t\t\t\t\t\t\"GEN_FUEL\": \"UNDEFINED\",\n", + "\t\t\t\t\t\t\t\t\t\"PG\": 80.210400,\n", + "\t\t\t\t\t\t\t\t\t\"QG\": -23.474118,\n", + "\t\t\t\t\t\t\t\t\t\"GEN_STATUS\": 1,\n", + "\t\t\t\t\t\t\t\t\t\"PMAX\": 270.000000,\n", + "\t\t\t\t\t\t\t\t\t\"PMIN\": 10.000000,\n", + "\t\t\t\t\t\t\t\t\t\"QMAX\": 300.000000,\n", + "\t\t\t\t\t\t\t\t\t\"QMIN\": -300.000000\n", + "\t\t\t\t\t\t\t\t}\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.086566\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.075456,\n", + "\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"4\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 4,\n", + "\t\t\t\t\t\t\t\"VA\": -1.992724,\n", + "\t\t\t\t\t\t\t\"VM\": 1.097021,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2103.164667,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": 0.076862,\n", + "\t\t\t\t\t\t\t\"ngen\": 0,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.097021\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.337459,\n", + "\t\t\t\t\t\t35.012072\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"5\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 5,\n", + "\t\t\t\t\t\t\t\"VA\": -3.059611,\n", + "\t\t\t\t\t\t\t\"VM\": 1.079374,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 75.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 50.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2113.454996,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": 7.292915,\n", + "\t\t\t\t\t\t\t\"ngen\": 0,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.079374\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.679479,\n", + "\t\t\t\t\t\t35.012072\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"6\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 6,\n", + "\t\t\t\t\t\t\t\"VA\": -3.926879,\n", + "\t\t\t\t\t\t\t\"VM\": 1.086823,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 90.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 30.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2129.849392,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": 1.619742,\n", + "\t\t\t\t\t\t\t\"ngen\": 0,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.086823\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.941482,\n", + "\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"7\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 7,\n", + "\t\t\t\t\t\t\t\"VA\": 0.534813,\n", + "\t\t\t\t\t\t\t\"VM\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2059.568013,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": -0.040507,\n", + "\t\t\t\t\t\t\t\"ngen\": 0,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.100000\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-98.000873,\n", + "\t\t\t\t\t\t35.568742\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"8\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 8,\n", + "\t\t\t\t\t\t\t\"VA\": -1.720022,\n", + "\t\t\t\t\t\t\t\"VM\": 1.089476,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 100.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 35.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2079.336928,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": 2.993805,\n", + "\t\t\t\t\t\t\t\"ngen\": 0,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.089476\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"Point\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t-97.829863,\n", + "\t\t\t\t\t\t35.864940\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"SUBSTATION\",\n", + "\t\t\t\t\t\"NAME\": \"9\",\n", + "\t\t\t\t\t\"nbus\": 1,\n", + "\t\t\t\t\t\"KVlevels\": [\n", + "\t\t\t\t\t\t345.000000\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"bus\": [\n", + "\t\t\t\t\t\t{\n", + "\t\t\t\t\t\t\t\"elementtype\": \"bus\",\n", + "\t\t\t\t\t\t\t\"BUS_I\": 9,\n", + "\t\t\t\t\t\t\t\"VA\": -0.134848,\n", + "\t\t\t\t\t\t\t\"VM\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BUS_NAME\": \" 1\",\n", + "\t\t\t\t\t\t\t\"VMIN\": 0.900000,\n", + "\t\t\t\t\t\t\t\"VMAX\": 1.100000,\n", + "\t\t\t\t\t\t\t\"BASE_KV\": 345.000000,\n", + "\t\t\t\t\t\t\t\"PD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QD\": 0.000000,\n", + "\t\t\t\t\t\t\t\"PDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"QDloss\": 0.000000,\n", + "\t\t\t\t\t\t\t\"LAM_P\": 2065.428566,\n", + "\t\t\t\t\t\t\t\"LAM_Q\": -0.091922,\n", + "\t\t\t\t\t\t\t\"ngen\": 0,\n", + "\t\t\t\t\t\t\t\"gen\": [\n", + "\t\t\t\t\t\t\t]\n", + "\t\t\t\t\t\t}\n", + "\t\t\t\t\t],\n", + "\t\t\t\t\t\"Vm\": 1.100000\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.508469,\n", + "\t\t\t\t\t\t\t35.981918\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.075456,\n", + "\t\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"1 -- 4\",\n", + "\t\t\t\t\t\"F_BUS\": 1,\n", + "\t\t\t\t\t\"T_BUS\": 4,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 380.000000,\n", + "\t\t\t\t\t\"PF\": 72.859445,\n", + "\t\t\t\t\t\"QF\": 6.790095,\n", + "\t\t\t\t\t\"PT\": -72.855020,\n", + "\t\t\t\t\t\"QT\": -4.253076\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.187075,\n", + "\t\t\t\t\t\t\t35.864940\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.941482,\n", + "\t\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"2 -- 7\",\n", + "\t\t\t\t\t\"F_BUS\": 2,\n", + "\t\t\t\t\t\"T_BUS\": 7,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 250.000000,\n", + "\t\t\t\t\t\"PF\": 114.069299,\n", + "\t\t\t\t\t\"QF\": -5.126619,\n", + "\t\t\t\t\t\"PT\": -114.058431,\n", + "\t\t\t\t\t\"QT\": 11.907578\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.016065,\n", + "\t\t\t\t\t\t\t35.568742\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.829863,\n", + "\t\t\t\t\t\t\t35.864940\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"3 -- 9\",\n", + "\t\t\t\t\t\"F_BUS\": 3,\n", + "\t\t\t\t\t\"T_BUS\": 9,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 300.000000,\n", + "\t\t\t\t\t\"PF\": 80.210330,\n", + "\t\t\t\t\t\"QF\": -23.472244,\n", + "\t\t\t\t\t\"PT\": -80.204414,\n", + "\t\t\t\t\t\"QT\": 26.926958\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.075456,\n", + "\t\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.337459,\n", + "\t\t\t\t\t\t\t35.012072\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"4 -- 5\",\n", + "\t\t\t\t\t\"F_BUS\": 4,\n", + "\t\t\t\t\t\"T_BUS\": 5,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 250.000000,\n", + "\t\t\t\t\t\"PF\": 28.254972,\n", + "\t\t\t\t\t\"QF\": 9.102475,\n", + "\t\t\t\t\t\"PT\": -28.156409,\n", + "\t\t\t\t\t\"QT\": -29.107542\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.075456,\n", + "\t\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.679479,\n", + "\t\t\t\t\t\t\t35.012072\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"4 -- 6\",\n", + "\t\t\t\t\t\"F_BUS\": 4,\n", + "\t\t\t\t\t\"T_BUS\": 6,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 250.000000,\n", + "\t\t\t\t\t\"PF\": 44.600049,\n", + "\t\t\t\t\t\"QF\": -4.849399,\n", + "\t\t\t\t\t\"PT\": -44.315995,\n", + "\t\t\t\t\t\"QT\": -12.452026\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.337459,\n", + "\t\t\t\t\t\t\t35.012072\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.941482,\n", + "\t\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"5 -- 7\",\n", + "\t\t\t\t\t\"F_BUS\": 5,\n", + "\t\t\t\t\t\"T_BUS\": 7,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 250.000000,\n", + "\t\t\t\t\t\"PF\": -46.843421,\n", + "\t\t\t\t\t\"QF\": -20.891819,\n", + "\t\t\t\t\t\"PT\": 47.448707,\n", + "\t\t\t\t\t\"QT\": -12.401091\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.679479,\n", + "\t\t\t\t\t\t\t35.012072\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.829863,\n", + "\t\t\t\t\t\t\t35.864940\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"6 -- 9\",\n", + "\t\t\t\t\t\"F_BUS\": 6,\n", + "\t\t\t\t\t\"T_BUS\": 9,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 150.000000,\n", + "\t\t\t\t\t\"PF\": -45.683824,\n", + "\t\t\t\t\t\"QF\": -17.547371,\n", + "\t\t\t\t\t\"PT\": 46.377176,\n", + "\t\t\t\t\t\"QT\": -22.232518\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.941482,\n", + "\t\t\t\t\t\t\t35.231918\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-98.000873,\n", + "\t\t\t\t\t\t\t35.568742\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"7 -- 8\",\n", + "\t\t\t\t\t\"F_BUS\": 7,\n", + "\t\t\t\t\t\"T_BUS\": 8,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 250.000000,\n", + "\t\t\t\t\t\"PF\": 66.609412,\n", + "\t\t\t\t\t\"QF\": 0.489599,\n", + "\t\t\t\t\t\"PT\": -66.291389,\n", + "\t\t\t\t\t\"QT\": -15.653093\n", + "\t\t\t\t}\n", + "\t\t\t},\n", + "\t\t\t{\n", + "\t\t\t\t\"type\": \"Feature\",\n", + "\t\t\t\t\"geometry\": {\n", + "\t\t\t\t\t\"type\": \"LineString\",\n", + "\t\t\t\t\t\"coordinates\": [\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-98.000873,\n", + "\t\t\t\t\t\t\t35.568742\n", + "\t\t\t\t\t\t],\n", + "\t\t\t\t\t\t[\n", + "\t\t\t\t\t\t\t-97.829863,\n", + "\t\t\t\t\t\t\t35.864940\n", + "\t\t\t\t\t\t]\n", + "\t\t\t\t\t]\n", + "\t\t\t\t},\n", + "\t\t\t\t\"properties\": {\n", + "\t\t\t\t\t\"elementtype\": \"Branch\",\n", + "\t\t\t\t\t\"NAME\": \"8 -- 9\",\n", + "\t\t\t\t\t\"F_BUS\": 8,\n", + "\t\t\t\t\t\"T_BUS\": 9,\n", + "\t\t\t\t\t\"BR_STATUS\": 1,\n", + "\t\t\t\t\t\"KV\": 345.000000,\n", + "\t\t\t\t\t\"RATE_A\": 150.000000,\n", + "\t\t\t\t\t\"PF\": -33.708218,\n", + "\t\t\t\t\t\"QF\": -19.344343,\n", + "\t\t\t\t\t\"PT\": 33.826963,\n", + "\t\t\t\t\t\"QT\": -4.698016\n", + "\t\t\t\t}\n", + "\t\t\t}\n", + "\t\t]\n", + "\t},\n", + "\t\"summary\": {\n", + "\t\t\"NBUS\": 9,\n", + "\t\t\"NGEN\": 3,\n", + "\t\t\"NGENON\": 3,\n", + "\t\t\"NLINE\": 9,\n", + "\t\t\"NLINEON\": 9,\n", + "\t\t\"NLOAD\": 3,\n", + "\t\t\"GENCAP\": 920.000000,\n", + "\t\t\"GENON\": [\n", + "\t\t\t267.139247,\n", + "\t\t\t-21.812401\n", + "\t\t],\n", + "\t\t\"GENCAPON\": 920.000000,\n", + "\t\t\"LOAD\": [\n", + "\t\t\t265.000000,\n", + "\t\t\t115.000000\n", + "\t\t],\n", + "\t\t\"LOADSHED\": [\n", + "\t\t\t0.000000,\n", + "\t\t\t0.000000\n", + "\t\t],\n", + "\t\t\"SolveRealTime\": 0.013155,\n", + "\t\t\"SolveCPUTime\": 0.000001,\n", + "\t}\n", + "}\n" + ] + } + ], + "source": [ + "!cat solution.json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The output to stdout isn't quite right, and we noteably don't call `exago.finalize()` which is a little concerning, but this seems to work. Should be fine to run SCOPFLOW and more complex applications, and then you can loop over ExaGO runs like this all natively to Python!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MPI Execution Options\n", + "\n", + "There are quite a few ways to run MPI backed code, and here are some notes on how I arrived at the above implementation." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"argv\": [\n", + " \"mpiexec\", \"-n\", \"1\", \"/opt/views/view/bin/python3\",\n", + " \"-m\",\n", + " \"ipykernel_launcher\",\n", + " \"-f\",\n", + " \"{connection_file}\"\n", + " ],\n", + " \"display_name\": \"ExaGO w/ MPI\",\n", + " \"language\": \"python\",\n", + " \"metadata\": {\n", + " \"debugger\": true\n", + " }\n", + "}" + ] + } + ], + "source": [ + "!cat /usr/local/share/jupyter/kernels/py311-mpi4py-exago/kernel.json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Firstly we execute the ipykernel backend using MPI. This means all kernels are launched within a single rank MPI context, and MPI basics work.\n", + "\n", + "To run with more processes, we can either:\n", + "1. Use `!` in a Python block and just run with `mpiexec -n N` for the number of ranks\n", + " - This works, but I/O is clunky\n", + " - It becomes cumbersome to code dynamic high-level applications that re-run different sims based on returned output\n", + "1. Spawn an ipyparallel cluster\n", + " - https://ipyparallel.readthedocs.io/en/latest/reference/mpi.html \n", + " - you can start the cluster and connect to it, but these docs are a little confusing, as you start many processes\n", + " - Would be better to have it all be jupyter native\n", + " - https://kb.oakland.edu/uts/HPCJupyterMPI\n", + " - Inlcudes a much better Jupyter focused bit of docs around this\n", + "1. Use a different workflow engine, and find a tool\n", + "\n", + "While a workflow tool is a strong consideration for most high level applications, we are going to stick with 2. 1 and 3 would likely be custom to your use-case" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Appendix\n", + "\n", + "From https://github.com/mpi4py/mpi4py/issues/15#issuecomment-765658147, had to modify mpi4py init routines by hand - this was all due to a red-herring, but is interesting discussion." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.00s - Debugger warning: It seems that frozen modules are being used, which may\n", + "0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off\n", + "0.00s - to python to disable frozen modules.\n", + "0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.\n", + "Available kernels:\n", + " python3 /opt/views/view/share/jupyter/kernels/python3\n", + " py311-exago /usr/local/share/jupyter/kernels/py311-exago\n", + " py311-mpi4py-exago /usr/local/share/jupyter/kernels/py311-mpi4py-exago\n" + ] + } + ], + "source": [ + "!jupyter kernelspec list" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"argv\": [\n", + " \"/opt/views/view/bin/python3\",\n", + " \"-m\",\n", + " \"ipykernel_launcher\",\n", + " \"-f\",\n", + " \"{connection_file}\"\n", + " ],\n", + " \"display_name\": \"ExaGO\",\n", + " \"language\": \"python\",\n", + " \"metadata\": {\n", + " \"debugger\": true\n", + " }\n", + "}" + ] + } + ], + "source": [ + "!cat /usr/local/share/jupyter/kernels/py311-exago/kernel.json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, we have some extra script in our dockerfile that slightly modifies the installed Jupyter kernel to use mpiexec when launching!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Package Version\n", + "----------------------- ---------\n", + "aiohttp 3.8.4\n", + "aiosignal 1.3.1\n", + "anyio 3.6.2\n", + "argon2-cffi 21.3.0\n", + "argon2-cffi-bindings 21.2.0\n", + "asttokens 2.4.0\n", + "async-timeout 4.0.2\n", + "attrs 23.1.0\n", + "Babel 2.12.1\n", + "backcall 0.2.0\n", + "beautifulsoup4 4.12.2\n", + "bleach 6.0.0\n", + "blinker 1.6.2\n", + "certifi 2023.7.22\n", + "cffi 1.15.1\n", + "charset-normalizer 3.3.0\n", + "click 8.1.5\n", + "colorama 0.4.6\n", + "comm 0.1.4\n", + "config 0.5.1\n", + "dataclasses-json 0.5.9\n", + "debugpy 1.6.7\n", + "decorator 5.1.1\n", + "defusedxml 0.7.1\n", + "entrypoints 0.4\n", + "executing 1.2.0\n", + "fastjsonschema 2.16.3\n", + "Flask 2.3.2\n", + "Flask-Cors 4.0.0\n", + "frozenlist 1.4.0\n", + "gevent 23.7.0\n", + "greenlet 2.0.2\n", + "idna 3.4\n", + "iniconfig 2.0.0\n", + "ipykernel 6.23.1\n", + "ipyparallel 8.4.1\n", + "ipython 8.14.0\n", + "ipython-genutils 0.2.0\n", + "itsdangerous 2.1.2\n", + "jedi 0.18.2\n", + "jellyfish 0.11.2\n", + "Jinja2 3.1.2\n", + "json5 0.9.14\n", + "jsonschema 4.17.3\n", + "jupyter_client 8.2.0\n", + "jupyter_core 5.3.0\n", + "jupyter-server 1.21.0\n", + "jupyterlab 3.4.8\n", + "jupyterlab-pygments 0.2.2\n", + "jupyterlab_server 2.22.1\n", + "langchain 0.0.233\n", + "langsmith 0.0.5\n", + "MarkupSafe 2.1.3\n", + "marshmallow 3.19.0\n", + "marshmallow-enum 1.5.1\n", + "matplotlib-inline 0.1.6\n", + "mistune 2.0.5\n", + "mpi4py 3.1.4\n", + "multidict 6.0.4\n", + "mypy-extensions 1.0.0\n", + "nbclassic 1.0.0\n", + "nbclient 0.8.0\n", + "nbconvert 7.4.0\n", + "nbformat 5.8.0\n", + "nest-asyncio 1.5.6\n", + "notebook 6.5.4\n", + "notebook_shim 0.2.3\n", + "numexpr 2.8.4\n", + "numpy 1.25.0\n", + "openai 0.27.8\n", + "openapi-schema-pydantic 1.2.4\n", + "packaging 23.1\n", + "pandas 2.0.2\n", + "pandocfilters 1.5.0\n", + "parso 0.8.3\n", + "pexpect 4.8.0\n", + "pickleshare 0.7.5\n", + "pip 23.3.1\n", + "platformdirs 3.10.0\n", + "pluggy 1.0.0\n", + "prometheus-client 0.17.0\n", + "prompt-toolkit 3.0.38\n", + "psutil 5.9.5\n", + "psycopg2 2.9.6\n", + "ptyprocess 0.7.0\n", + "pure-eval 0.2.2\n", + "pycparser 2.21\n", + "pydantic 1.10.11\n", + "Pygments 2.16.1\n", + "pyrsistent 0.19.3\n", + "pytest 7.3.2\n", + "python-dateutil 2.8.2\n", + "pytz 2023.3\n", + "PyYAML 6.0\n", + "pyzmq 25.0.2\n", + "requests 2.31.0\n", + "Send2Trash 1.8.0\n", + "setuptools 68.0.0\n", + "shapely 2.0.1\n", + "six 1.16.0\n", + "sniffio 1.3.0\n", + "soupsieve 2.4.1\n", + "SQLAlchemy 2.0.18\n", + "stack-data 0.6.2\n", + "tenacity 8.2.2\n", + "terminado 0.17.1\n", + "tinycss2 1.2.1\n", + "tornado 6.3.3\n", + "tqdm 4.66.1\n", + "traitlets 5.9.0\n", + "typing_extensions 4.7.1\n", + "typing-inspect 0.9.0\n", + "tzdata 2023.3\n", + "urllib3 2.0.6\n", + "us 3.1.1\n", + "wcwidth 0.2.7\n", + "webencodings 0.5.1\n", + "websocket-client 1.6.3\n", + "Werkzeug 2.3.6\n", + "wheel 0.41.3\n", + "yarl 1.9.2\n", + "zope.event 4.6\n", + "zope.interface 5.4.0\n" + ] + } + ], + "source": [ + "!pip3 list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's odd - ExaGO can import and run, but doesn't show up in pip. That's because we installed using Spack, and ExaGO is available directly through the `PYTHONPATH` environment variable.\n", + "\n", + "This is configured through `entrypoint.sh`, which is the last thing that happens in the configured `~/.bashrc`:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " fi; \\\n", + " fi`'\n", + " local lightblue='\\[\\033[1;34m\\]'\n", + " local removecolor='\\[\\033[0m\\]'\n", + " PS1=\"${userpart} ${lightblue}\\w ${gitbranch}${removecolor}\\$ \"\n", + " unset -f __bash_prompt\n", + "}\n", + "__bash_prompt\n", + "export PROMPT_DIRTRIM=4\n", + "source /entrypoint.sh\n" + ] + } + ], + "source": [ + "!cat ~/.bashrc | tail -n 10" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#!/bin/sh\n", + ". /opt/spack-environment/activate.sh\n", + "exec \"$@\"\n" + ] + } + ], + "source": [ + "!cat /entrypoint.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "export SPACK_ENV=/opt/spack-environment;\n", + "export SPACK_ENV_VIEW=default;\n", + "alias despacktivate='spack env deactivate';\n", + "export ACLOCAL_PATH=/opt/views/view/share/aclocal;\n", + "export CMAKE_PREFIX_PATH=/opt/views/view;\n", + "export C_INCLUDE_PATH=/opt/views/view/include;\n", + "export JUPYTERLAB_DIR=/opt/views/view/share/jupyter/lab;\n", + "export JUPYTER_PATH=/opt/views/view/share/jupyter;\n", + "export LD_LIBRARY_PATH=/opt/views/view/lib64:/opt/views/view/lib;\n", + "export LIBRARY_PATH=/opt/views/view/lib;\n", + "export MANPATH=/opt/views/view/share/man:/opt/views/view/man:;\n", + "export MPICC=/opt/views/view/bin/mpicc;\n", + "export MPICXX=/opt/views/view/bin/mpic++;\n", + "export MPIF77=/opt/views/view/bin/mpif77;\n", + "export MPIF90=/opt/views/view/bin/mpif90;\n", + "export PATH=/opt/views/view/bin:/opt/spack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;\n", + "export PETSC_ARCH=\"\";\n", + "export PETSC_DIR=/opt/views/view;\n", + "export PKG_CONFIG_PATH=/opt/views/view/lib64/pkgconfig:/opt/views/view/lib/pkgconfig:/opt/views/view/share/pkgconfig;\n", + "export PYTHONPATH=/opt/views/view/lib/python3.11/site-packages;\n" + ] + } + ], + "source": [ + "!cat /opt/spack-environment/activate.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/opt/views/view/lib/python3.11/site-packages\n" + ] + } + ], + "source": [ + "!echo $PYTHONPATH" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total 748\n", + "drwxr-xr-x 168 root root 12288 Nov 9 01:24 .\n", + "drwxr-xr-x 39 root root 4096 Nov 9 01:24 ..\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 Babel-2.12.1.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 9 01:24 IPython\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 Jinja2-3.1.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 MarkupSafe-2.1.3.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 Pygments-2.16.1.dist-info\n", + "lrwxrwxrwx 1 root root 139 Nov 9 01:24 README.txt -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/python-3.11.6-ybsi7tlnssr3m4h3eqrzq6tyxdcsr2n7/lib/python3.11/site-packages/README.txt\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 Send2Trash-1.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 __pycache__\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 _argon2_cffi_bindings\n", + "lrwxrwxrwx 1 root root 175 Nov 9 01:24 _cffi_backend.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-cffi-1.15.1-ns7kiujztzymljhmkwceej66qntnjlcr/lib/python3.11/site-packages/_cffi_backend.cpython-311-x86_64-linux-gnu.so\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 _distutils_hack\n", + "lrwxrwxrwx 1 root root 158 Nov 9 01:24 _pyrsistent_version.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/_pyrsistent_version.py\n", + "drwxr-xr-x 9 root root 4096 Nov 9 01:24 _pytest\n", + "drwxr-xr-x 7 root root 4096 Nov 9 01:24 anyio\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 anyio-3.6.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 argon2\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 argon2_cffi-21.3.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 argon2_cffi_bindings-21.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 asttokens\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 asttokens-2.4.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 attr\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 attrs\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 attrs-23.1.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 9 01:24 babel\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 backcall\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 backcall-0.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 beautifulsoup4-4.12.2.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 bleach\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 bleach-6.0.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 bs4\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 certifi\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 certifi-2023.7.22.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 cffi\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 cffi-1.15.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 charset_normalizer\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 charset_normalizer-3.3.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 comm\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 comm-0.1.4.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 9 01:24 dateutil\n", + "drwxr-xr-x 8 root root 4096 Nov 9 01:24 debugpy\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 debugpy-1.6.7.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 decorator-5.1.1.dist-info\n", + "lrwxrwxrwx 1 root root 146 Nov 9 01:24 decorator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-decorator-5.1.1-y6omagu7er3rjtyisfdajw5upayicgxe/lib/python3.11/site-packages/decorator.py\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 defusedxml\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 defusedxml-0.7.1.dist-info\n", + "lrwxrwxrwx 1 root root 160 Nov 9 01:24 distutils-precedence.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-setuptools-68.0.0-ceuwjz4g6i5jxk4babjsbh6oxmqggbba/lib/python3.11/site-packages/distutils-precedence.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 entrypoints-0.4.dist-info\n", + "lrwxrwxrwx 1 root root 148 Nov 9 01:24 entrypoints.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-entrypoints-0.4-d7yae57isrvmfonytpxzfwt2zqj3dz3r/lib/python3.11/site-packages/entrypoints.py\n", + "lrwxrwxrwx 1 root root 164 Nov 9 01:24 exago.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/exago-1.6.0-odeio72qx5b7od5yh44oxq52q4otbuz7/lib/python3.11/site-packages/exago.cpython-311-x86_64-linux-gnu.so\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 executing\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 executing-1.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 fastjsonschema\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 fastjsonschema-2.16.3.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 9 01:24 gevent\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 gevent-23.7.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 greenlet\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 greenlet-2.0.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 idna\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 idna-3.4.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 iniconfig\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 iniconfig-2.0.0.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 9 01:24 ipykernel\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 ipykernel-6.23.1.dist-info\n", + "lrwxrwxrwx 1 root root 156 Nov 9 01:24 ipykernel_launcher.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-ipykernel-6.23.1-lkt3rawpdvlxrgc6gzcb7ikhvnfe6mq2/lib/python3.11/site-packages/ipykernel_launcher.py\n", + "drwxr-xr-x 12 root root 4096 Nov 9 01:24 ipyparallel\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 ipyparallel-8.4.1.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 ipython-8.14.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 ipython_genutils\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 ipython_genutils-0.2.0.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 9 01:24 jedi\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 jedi-0.18.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 jinja2\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 json5\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 json5-0.9.14.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 9 01:24 jsonschema\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 jsonschema-4.17.3.dist-info\n", + "lrwxrwxrwx 1 root root 147 Nov 9 01:24 jupyter.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jupyter-core-5.3.0-if7k3k3yqs5n2xy3ojop3fpnefqktfwy/lib/python3.11/site-packages/jupyter.py\n", + "drwxr-xr-x 8 root root 4096 Nov 9 01:24 jupyter_client\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 jupyter_client-8.2.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 jupyter_core\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 jupyter_core-5.3.0.dist-info\n", + "drwxr-xr-x 17 root root 4096 Nov 9 01:24 jupyter_server\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 jupyter_server-1.21.0.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 9 01:24 jupyterlab\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 jupyterlab-3.4.8.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 jupyterlab_pygments\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 jupyterlab_pygments-0.2.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 jupyterlab_server\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 jupyterlab_server-2.22.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 markupsafe\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 matplotlib_inline\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 matplotlib_inline-0.1.6.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 mistune\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 mistune-2.0.5.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 9 01:24 mpi4py\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 mpi4py-3.1.4.dist-info\n", + "drwxr-xr-x 12 root root 4096 Nov 9 01:24 nbclassic\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 nbclassic-1.0.0.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 nbclient\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 nbclient-0.8.0.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 9 01:24 nbconvert\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 nbconvert-7.4.0.dist-info\n", + "drwxr-xr-x 8 root root 4096 Nov 9 01:24 nbformat\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 nbformat-5.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 nest_asyncio-1.5.6.dist-info\n", + "lrwxrwxrwx 1 root root 152 Nov 9 01:24 nest_asyncio.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-nest-asyncio-1.5.6-uphpwzfjvy2o4gjf7zyscvvb3sjujtuh/lib/python3.11/site-packages/nest_asyncio.py\n", + "drwxr-xr-x 20 root root 4096 Nov 9 01:24 notebook\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 notebook-6.5.4.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 notebook_shim\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 notebook_shim-0.2.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 packaging\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 packaging-23.1.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pandocfilters-1.5.0.dist-info\n", + "lrwxrwxrwx 1 root root 154 Nov 9 01:24 pandocfilters.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pandocfilters-1.5.0-wseldytxe3leiottrhb5ogloooxslfd5/lib/python3.11/site-packages/pandocfilters.py\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 parso\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 parso-0.8.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 pexpect\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pexpect-4.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pickleshare-0.7.5.dist-info\n", + "lrwxrwxrwx 1 root root 150 Nov 9 01:24 pickleshare.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pickleshare-0.7.5-wty2ecbqmknacpwe6nwpiyxbq5oqhcza/lib/python3.11/site-packages/pickleshare.py\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 pkg_resources\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 platformdirs\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 platformdirs-3.10.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 pluggy\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pluggy-1.0.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 9 01:24 prometheus_client\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 prometheus_client-0.17.0.dist-info\n", + "drwxr-xr-x 18 root root 4096 Nov 9 01:24 prompt_toolkit\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 prompt_toolkit-3.0.38.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 psutil\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 psutil-5.9.5.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 ptyprocess\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 ptyprocess-0.7.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 pure_eval\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pure_eval-0.2.2.dist-info\n", + "lrwxrwxrwx 1 root root 176 Nov 9 01:24 pvectorc.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/pvectorc.cpython-311-x86_64-linux-gnu.so\n", + "lrwxrwxrwx 1 root root 136 Nov 9 01:24 py.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pytest-7.3.2-arsygg5grgdxn2ydomwdcv6qg66wbgff/lib/python3.11/site-packages/py.py\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 pycparser\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pycparser-2.21.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 9 01:24 pygments\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 pyrsistent\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pyrsistent-0.19.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 pytest\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pytest-7.3.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 python_dateutil-2.8.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 pyzmq-25.0.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 requests\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 requests-2.31.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 send2trash\n", + "drwxr-xr-x 8 root root 4096 Nov 9 01:24 setuptools\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 setuptools-68.0.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 six-1.16.0.dist-info\n", + "lrwxrwxrwx 1 root root 135 Nov 9 01:24 six.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-six-1.16.0-nbnfdrflk6rrh3fu3pengfnlmslekoqs/lib/python3.11/site-packages/six.py\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 sniffio\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 sniffio-1.3.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 soupsieve\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 soupsieve-2.4.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 stack_data\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 stack_data-0.6.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 terminado\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 terminado-0.17.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 tinycss2\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 tinycss2-1.2.1.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 tornado\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 tornado-6.3.3.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 tqdm\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 tqdm-4.66.1.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 9 01:24 traitlets\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 traitlets-5.9.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 9 01:24 urllib3\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 urllib3-2.0.6.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 wcwidth\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 wcwidth-0.2.7.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 9 01:24 webencodings\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 webencodings-0.5.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 websocket\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 websocket_client-1.6.3.dist-info\n", + "drwxr-xr-x 13 root root 4096 Nov 9 01:24 zmq\n", + "drwxr-xr-x 4 root root 4096 Nov 9 01:24 zope\n", + "lrwxrwxrwx 1 root root 164 Nov 9 01:24 zope.event-4.6-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-event-4.6-mlah5dql76d33hl34zeysun66ik2nmjk/lib/python3.11/site-packages/zope.event-4.6-py3.11-nspkg.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 zope.event-4.6.dist-info\n", + "lrwxrwxrwx 1 root root 176 Nov 9 01:24 zope.interface-5.4.0-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-interface-5.4.0-6jsmi36ohggmpihuchqcd3r3s2eiqaan/lib/python3.11/site-packages/zope.interface-5.4.0-py3.11-nspkg.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 9 01:24 zope.interface-5.4.0.dist-info\n" + ] + } + ], + "source": [ + "!ls -al /opt/views/view/lib/python3.11/site-packages" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here you can see the full list of spack configured python packages, including exago." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Some info about this container" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PRETTY_NAME=\"Debian GNU/Linux 12 (bookworm)\"\n", + "NAME=\"Debian GNU/Linux\"\n", + "VERSION_ID=\"12\"\n", + "VERSION=\"12 (bookworm)\"\n", + "VERSION_CODENAME=bookworm\n", + "ID=debian\n", + "HOME_URL=\"https://www.debian.org/\"\n", + "SUPPORT_URL=\"https://www.debian.org/support\"\n", + "BUG_REPORT_URL=\"https://bugs.debian.org/\"\n" + ] + } + ], + "source": [ + "!cat /etc/os-release" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ExaGO w/ MPI", + "language": "python", + "name": "py311-mpi4py-exago" + }, + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/devcontainer/tutorial.ipynb b/docs/devcontainer/tutorial.ipynb index 7dce4b46..ecc54b11 100644 --- a/docs/devcontainer/tutorial.ipynb +++ b/docs/devcontainer/tutorial.ipynb @@ -112,8 +112,8 @@ "Number of equality constraint Jacobian evaluations = 19\n", "Number of inequality constraint Jacobian evaluations = 19\n", "Number of Lagrangian Hessian evaluations = 18\n", - "Total CPU secs in IPOPT (w/o function evaluations) = 0.003\n", - "Total CPU secs in NLP function evaluations = 0.001\n", + "Total CPU secs in IPOPT (w/o function evaluations) = 0.014\n", + "Total CPU secs in NLP function evaluations = 0.002\n", "\n", "EXIT: Optimal Solution Found.\n", "=============================================================\n", @@ -195,13 +195,69 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Appendix\n" + "# Appendix\n", + "\n", + "Information about the Jupyter/Python/Container config is listed here." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.00s - Debugger warning: It seems that frozen modules are being used, which may\n", + "0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off\n", + "0.00s - to python to disable frozen modules.\n", + "0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.\n", + "Available kernels:\n", + " python3 /opt/views/view/share/jupyter/kernels/python3\n", + " py311-exago /usr/local/share/jupyter/kernels/py311-exago\n", + " py311-mpi4py-exago /usr/local/share/jupyter/kernels/py311-mpi4py-exago\n" + ] + } + ], + "source": [ + "!jupyter kernelspec list" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"argv\": [\n", + " \"/opt/views/view/bin/python3\",\n", + " \"-m\",\n", + " \"ipykernel_launcher\",\n", + " \"-f\",\n", + " \"{connection_file}\"\n", + " ],\n", + " \"display_name\": \"ExaGO\",\n", + " \"language\": \"python\",\n", + " \"metadata\": {\n", + " \"debugger\": true\n", + " }\n", + "}" + ] + } + ], + "source": [ + "!cat /usr/local/share/jupyter/kernels/py311-exago/kernel.json" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -330,7 +386,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -356,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -375,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -411,7 +467,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -428,7 +484,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -436,220 +492,220 @@ "output_type": "stream", "text": [ "total 864\n", - "drwxr-xr-x 193 root root 12288 Nov 5 17:14 .\n", - "drwxr-xr-x 39 root root 4096 Nov 5 17:14 ..\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 Babel-2.12.1.dist-info\n", - "drwxr-xr-x 11 root root 4096 Nov 5 17:14 IPython\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 Jinja2-3.0.3.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 MarkupSafe-2.1.3.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 PyYAML-6.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 Pygments-2.16.1.dist-info\n", - "lrwxrwxrwx 1 root root 139 Nov 5 17:14 README.txt -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/python-3.11.6-ybsi7tlnssr3m4h3eqrzq6tyxdcsr2n7/lib/python3.11/site-packages/README.txt\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 Send2Trash-1.8.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 __pycache__\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 _argon2_cffi_bindings\n", - "lrwxrwxrwx 1 root root 175 Nov 5 17:14 _cffi_backend.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-cffi-1.15.1-ns7kiujztzymljhmkwceej66qntnjlcr/lib/python3.11/site-packages/_cffi_backend.cpython-311-x86_64-linux-gnu.so\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 _distutils_hack\n", - "lrwxrwxrwx 1 root root 158 Nov 5 17:14 _pyrsistent_version.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/_pyrsistent_version.py\n", - "drwxr-xr-x 9 root root 4096 Nov 5 17:14 _pytest\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 _yaml\n", - "drwxr-xr-x 7 root root 4096 Nov 5 17:14 anyio\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 anyio-4.0.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 argon2\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 argon2_cffi-21.3.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 argon2_cffi_bindings-21.2.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 arrow\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 arrow-1.2.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 asttokens\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 asttokens-2.4.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 async_lru-1.0.3.dist-info\n", - "lrwxrwxrwx 1 root root 146 Nov 5 17:14 async_lru.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-async-lru-1.0.3-n4nwu7jegsgtzsmiplftm3ik7dsghnz7/lib/python3.11/site-packages/async_lru.py\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 attr\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 attrs\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 attrs-23.1.0.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 5 17:14 babel\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 backcall\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 backcall-0.2.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 beautifulsoup4-4.12.2.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 bleach\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 bleach-6.0.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 bs4\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 certifi\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 certifi-2023.7.22.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 cffi\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 cffi-1.15.1.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 charset_normalizer\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 charset_normalizer-3.3.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 comm\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 comm-0.1.4.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 5 17:14 dateutil\n", - "drwxr-xr-x 8 root root 4096 Nov 5 17:14 debugpy\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 debugpy-1.6.7.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 decorator-5.1.1.dist-info\n", - "lrwxrwxrwx 1 root root 146 Nov 5 17:14 decorator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-decorator-5.1.1-y6omagu7er3rjtyisfdajw5upayicgxe/lib/python3.11/site-packages/decorator.py\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 defusedxml\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 defusedxml-0.7.1.dist-info\n", - "lrwxrwxrwx 1 root root 160 Nov 5 17:14 distutils-precedence.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-setuptools-68.0.0-ceuwjz4g6i5jxk4babjsbh6oxmqggbba/lib/python3.11/site-packages/distutils-precedence.pth\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 editables\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 editables-0.3.dist-info\n", - "lrwxrwxrwx 1 root root 164 Nov 5 17:14 exago.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/exago-1.6.0-ssrhw6tbxmal4jmksthjndq2wu33csoe/lib/python3.11/site-packages/exago.cpython-311-x86_64-linux-gnu.so\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 executing\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 executing-1.2.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 fastjsonschema\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 fastjsonschema-2.16.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 fqdn\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 fqdn-1.5.1.dist-info\n", - "drwxr-xr-x 9 root root 4096 Nov 5 17:14 gevent\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 gevent-23.7.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 greenlet\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 greenlet-2.0.2.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 hatch_jupyter_builder\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 hatch_jupyter_builder-0.8.3.dist-info\n", - "drwxr-xr-x 12 root root 4096 Nov 5 17:14 hatchling\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 hatchling-1.18.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 idna\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 idna-3.4.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 iniconfig\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 iniconfig-2.0.0.dist-info\n", - "drwxr-xr-x 9 root root 4096 Nov 5 17:14 ipykernel\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 ipykernel-6.23.1.dist-info\n", - "lrwxrwxrwx 1 root root 156 Nov 5 17:14 ipykernel_launcher.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-ipykernel-6.23.1-raogvtxj7buw67byp3cbpliaqqc4bgkc/lib/python3.11/site-packages/ipykernel_launcher.py\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 ipython-8.14.0.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 5 17:14 isoduration\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 isoduration-20.11.0.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 5 17:14 jedi\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 jedi-0.18.2.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jinja2\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 json5\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 json5-0.9.14.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 jsonpointer-2.0.dist-info\n", - "lrwxrwxrwx 1 root root 148 Nov 5 17:14 jsonpointer.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jsonpointer-2.0-6f5qc5t5ix6e77lewi5pgup5cwgmbngu/lib/python3.11/site-packages/jsonpointer.py\n", - "drwxr-xr-x 6 root root 4096 Nov 5 17:14 jsonschema\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jsonschema-4.17.3.dist-info\n", - "lrwxrwxrwx 1 root root 147 Nov 5 17:14 jupyter.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jupyter-core-5.3.0-bupox3eooyhmccqjf75vgk34tys5l75z/lib/python3.11/site-packages/jupyter.py\n", - "drwxr-xr-x 8 root root 4096 Nov 5 17:14 jupyter_client\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyter_client-8.2.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 jupyter_core\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyter_core-5.3.0.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 jupyter_events\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyter_events-0.6.3.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 5 17:14 jupyter_lsp\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 jupyter_lsp-2.2.0.dist-info\n", - "drwxr-xr-x 18 root root 4096 Nov 5 17:14 jupyter_server\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyter_server-2.6.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyter_server_terminals\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyter_server_terminals-0.4.4.dist-info\n", - "drwxr-xr-x 11 root root 4096 Nov 5 17:14 jupyterlab\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyterlab-4.0.1.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 jupyterlab_pygments\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 jupyterlab_pygments-0.2.2.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 jupyterlab_server\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 jupyterlab_server-2.22.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 markupsafe\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 matplotlib_inline\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 matplotlib_inline-0.1.6.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 mistune\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 mistune-2.0.5.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 5 17:14 mpi4py\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 mpi4py-3.1.4.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 nbclient\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 nbclient-0.8.0.dist-info\n", - "drwxr-xr-x 11 root root 4096 Nov 5 17:14 nbconvert\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 nbconvert-7.4.0.dist-info\n", - "drwxr-xr-x 8 root root 4096 Nov 5 17:14 nbformat\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 nbformat-5.8.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 nest_asyncio-1.5.6.dist-info\n", - "lrwxrwxrwx 1 root root 152 Nov 5 17:14 nest_asyncio.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-nest-asyncio-1.5.6-hbtnt2uhwofptyytpmbxi2uqcbngvlox/lib/python3.11/site-packages/nest_asyncio.py\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 notebook_shim\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 notebook_shim-0.2.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 overrides\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 overrides-7.3.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 packaging\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 packaging-23.1.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pandocfilters-1.5.0.dist-info\n", - "lrwxrwxrwx 1 root root 154 Nov 5 17:14 pandocfilters.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pandocfilters-1.5.0-wseldytxe3leiottrhb5ogloooxslfd5/lib/python3.11/site-packages/pandocfilters.py\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 parso\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 parso-0.8.3.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 pathspec\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pathspec-0.11.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 pexpect\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pexpect-4.8.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pickleshare-0.7.5.dist-info\n", - "lrwxrwxrwx 1 root root 150 Nov 5 17:14 pickleshare.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pickleshare-0.7.5-wty2ecbqmknacpwe6nwpiyxbq5oqhcza/lib/python3.11/site-packages/pickleshare.py\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 pkg_resources\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 platformdirs\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 platformdirs-3.10.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 pluggy\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pluggy-1.0.0.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 5 17:14 prometheus_client\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 prometheus_client-0.17.0.dist-info\n", - "drwxr-xr-x 18 root root 4096 Nov 5 17:14 prompt_toolkit\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 prompt_toolkit-3.0.38.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 psutil\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 psutil-5.9.5.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 ptyprocess\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 ptyprocess-0.7.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 pure_eval\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pure_eval-0.2.2.dist-info\n", - "lrwxrwxrwx 1 root root 176 Nov 5 17:14 pvectorc.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/pvectorc.cpython-311-x86_64-linux-gnu.so\n", - "lrwxrwxrwx 1 root root 136 Nov 5 17:14 py.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pytest-7.3.2-wx6nsrjdt6ftqyuprphukh4m64lu3hk6/lib/python3.11/site-packages/py.py\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 pycparser\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pycparser-2.21.dist-info\n", - "drwxr-xr-x 7 root root 4096 Nov 5 17:14 pygments\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 pyrsistent\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pyrsistent-0.19.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 pytest\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pytest-7.3.2.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 python_dateutil-2.8.2.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 python_json_logger-2.0.7.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 pythonjsonlogger\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 pyzmq-25.0.2.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 requests\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 requests-2.31.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 rfc3339_validator-0.1.4.dist-info\n", - "lrwxrwxrwx 1 root root 162 Nov 5 17:14 rfc3339_validator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-rfc3339-validator-0.1.4-ifadhrcyquy632ftjvceaylpe4aqn7kt/lib/python3.11/site-packages/rfc3339_validator.py\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 rfc3986_validator-0.1.1.dist-info\n", - "lrwxrwxrwx 1 root root 162 Nov 5 17:14 rfc3986_validator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-rfc3986-validator-0.1.1-zkwpotfen5ywonax22utpdph5j4eczmr/lib/python3.11/site-packages/rfc3986_validator.py\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 send2trash\n", - "drwxr-xr-x 8 root root 4096 Nov 5 17:14 setuptools\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 setuptools-68.0.0.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 six-1.16.0.dist-info\n", - "lrwxrwxrwx 1 root root 135 Nov 5 17:14 six.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-six-1.16.0-nbnfdrflk6rrh3fu3pengfnlmslekoqs/lib/python3.11/site-packages/six.py\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 sniffio\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 sniffio-1.3.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 soupsieve\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 soupsieve-2.4.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 stack_data\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 stack_data-0.6.2.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 terminado\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 terminado-0.17.1.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 tinycss2\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 tinycss2-1.2.1.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 tornado\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 tornado-6.3.3.dist-info\n", - "drwxr-xr-x 6 root root 4096 Nov 5 17:14 traitlets\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 traitlets-5.9.0.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 trove_classifiers\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 trove_classifiers-2023.8.7.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 uri_template\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 uri_template-1.2.0.dist-info\n", - "drwxr-xr-x 5 root root 4096 Nov 5 17:14 urllib3\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 urllib3-2.0.6.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 wcwidth\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 wcwidth-0.2.7.dist-info\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 webcolors-1.11.1.dist-info\n", - "lrwxrwxrwx 1 root root 147 Nov 5 17:14 webcolors.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-webcolors-1.11.1-x6fsbcye464konn2u33psb3vrat7bmzj/lib/python3.11/site-packages/webcolors.py\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 webencodings\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 webencodings-0.5.1.dist-info\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 websocket\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 websocket_client-1.6.3.dist-info\n", - "drwxr-xr-x 3 root root 4096 Nov 5 17:14 yaml\n", - "drwxr-xr-x 13 root root 4096 Nov 5 17:14 zmq\n", - "drwxr-xr-x 4 root root 4096 Nov 5 17:14 zope\n", - "lrwxrwxrwx 1 root root 164 Nov 5 17:14 zope.event-4.6-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-event-4.6-mlah5dql76d33hl34zeysun66ik2nmjk/lib/python3.11/site-packages/zope.event-4.6-py3.11-nspkg.pth\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 zope.event-4.6.dist-info\n", - "lrwxrwxrwx 1 root root 176 Nov 5 17:14 zope.interface-5.4.0-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-interface-5.4.0-6jsmi36ohggmpihuchqcd3r3s2eiqaan/lib/python3.11/site-packages/zope.interface-5.4.0-py3.11-nspkg.pth\n", - "drwxr-xr-x 2 root root 4096 Nov 5 17:14 zope.interface-5.4.0.dist-info\n" + "drwxr-xr-x 193 root root 12288 Nov 6 20:19 .\n", + "drwxr-xr-x 39 root root 4096 Nov 6 20:19 ..\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Babel-2.12.1.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 6 20:19 IPython\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Jinja2-3.0.3.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 MarkupSafe-2.1.3.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 PyYAML-6.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Pygments-2.16.1.dist-info\n", + "lrwxrwxrwx 1 root root 139 Nov 6 20:19 README.txt -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/python-3.11.6-ybsi7tlnssr3m4h3eqrzq6tyxdcsr2n7/lib/python3.11/site-packages/README.txt\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 Send2Trash-1.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 __pycache__\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 _argon2_cffi_bindings\n", + "lrwxrwxrwx 1 root root 175 Nov 6 20:19 _cffi_backend.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-cffi-1.15.1-ns7kiujztzymljhmkwceej66qntnjlcr/lib/python3.11/site-packages/_cffi_backend.cpython-311-x86_64-linux-gnu.so\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 _distutils_hack\n", + "lrwxrwxrwx 1 root root 158 Nov 6 20:19 _pyrsistent_version.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/_pyrsistent_version.py\n", + "drwxr-xr-x 9 root root 4096 Nov 6 20:19 _pytest\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 _yaml\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:19 anyio\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 anyio-4.0.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 argon2\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 argon2_cffi-21.3.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 argon2_cffi_bindings-21.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 arrow\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 arrow-1.2.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 asttokens\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 asttokens-2.4.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 async_lru-1.0.3.dist-info\n", + "lrwxrwxrwx 1 root root 146 Nov 6 20:19 async_lru.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-async-lru-1.0.3-n4nwu7jegsgtzsmiplftm3ik7dsghnz7/lib/python3.11/site-packages/async_lru.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 attr\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 attrs\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 attrs-23.1.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:19 babel\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 backcall\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 backcall-0.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 beautifulsoup4-4.12.2.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 bleach\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 bleach-6.0.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 bs4\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 certifi\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 certifi-2023.7.22.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 cffi\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 cffi-1.15.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 charset_normalizer\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 charset_normalizer-3.3.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 comm\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 comm-0.1.4.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:19 dateutil\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:19 debugpy\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 debugpy-1.6.7.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 decorator-5.1.1.dist-info\n", + "lrwxrwxrwx 1 root root 146 Nov 6 20:19 decorator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-decorator-5.1.1-y6omagu7er3rjtyisfdajw5upayicgxe/lib/python3.11/site-packages/decorator.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 defusedxml\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 defusedxml-0.7.1.dist-info\n", + "lrwxrwxrwx 1 root root 160 Nov 6 20:19 distutils-precedence.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-setuptools-68.0.0-ceuwjz4g6i5jxk4babjsbh6oxmqggbba/lib/python3.11/site-packages/distutils-precedence.pth\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 editables\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 editables-0.3.dist-info\n", + "lrwxrwxrwx 1 root root 164 Nov 6 20:19 exago.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/exago-1.6.0-ssrhw6tbxmal4jmksthjndq2wu33csoe/lib/python3.11/site-packages/exago.cpython-311-x86_64-linux-gnu.so\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 executing\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 executing-1.2.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 fastjsonschema\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 fastjsonschema-2.16.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 fqdn\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 fqdn-1.5.1.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 6 20:19 gevent\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 gevent-23.7.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 greenlet\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 greenlet-2.0.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 hatch_jupyter_builder\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 hatch_jupyter_builder-0.8.3.dist-info\n", + "drwxr-xr-x 12 root root 4096 Nov 6 20:19 hatchling\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 hatchling-1.18.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 idna\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 idna-3.4.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 iniconfig\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 iniconfig-2.0.0.dist-info\n", + "drwxr-xr-x 9 root root 4096 Nov 6 20:19 ipykernel\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 ipykernel-6.23.1.dist-info\n", + "lrwxrwxrwx 1 root root 156 Nov 6 20:19 ipykernel_launcher.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-ipykernel-6.23.1-raogvtxj7buw67byp3cbpliaqqc4bgkc/lib/python3.11/site-packages/ipykernel_launcher.py\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 ipython-8.14.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:19 isoduration\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 isoduration-20.11.0.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:19 jedi\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jedi-0.18.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jinja2\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 json5\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 json5-0.9.14.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jsonpointer-2.0.dist-info\n", + "lrwxrwxrwx 1 root root 148 Nov 6 20:19 jsonpointer.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jsonpointer-2.0-6f5qc5t5ix6e77lewi5pgup5cwgmbngu/lib/python3.11/site-packages/jsonpointer.py\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:19 jsonschema\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jsonschema-4.17.3.dist-info\n", + "lrwxrwxrwx 1 root root 147 Nov 6 20:19 jupyter.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-jupyter-core-5.3.0-bupox3eooyhmccqjf75vgk34tys5l75z/lib/python3.11/site-packages/jupyter.py\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:19 jupyter_client\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_client-8.2.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 jupyter_core\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_core-5.3.0.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 jupyter_events\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_events-0.6.3.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:19 jupyter_lsp\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jupyter_lsp-2.2.0.dist-info\n", + "drwxr-xr-x 18 root root 4096 Nov 6 20:19 jupyter_server\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_server-2.6.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_server_terminals\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyter_server_terminals-0.4.4.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 6 20:19 jupyterlab\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyterlab-4.0.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 jupyterlab_pygments\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 jupyterlab_pygments-0.2.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 jupyterlab_server\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 jupyterlab_server-2.22.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 markupsafe\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 matplotlib_inline\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 matplotlib_inline-0.1.6.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 mistune\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 mistune-2.0.5.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:19 mpi4py\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 mpi4py-3.1.4.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 nbclient\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 nbclient-0.8.0.dist-info\n", + "drwxr-xr-x 11 root root 4096 Nov 6 20:19 nbconvert\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 nbconvert-7.4.0.dist-info\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:19 nbformat\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 nbformat-5.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 nest_asyncio-1.5.6.dist-info\n", + "lrwxrwxrwx 1 root root 152 Nov 6 20:19 nest_asyncio.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-nest-asyncio-1.5.6-hbtnt2uhwofptyytpmbxi2uqcbngvlox/lib/python3.11/site-packages/nest_asyncio.py\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 notebook_shim\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 notebook_shim-0.2.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 overrides\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 overrides-7.3.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 packaging\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 packaging-23.1.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pandocfilters-1.5.0.dist-info\n", + "lrwxrwxrwx 1 root root 154 Nov 6 20:19 pandocfilters.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pandocfilters-1.5.0-wseldytxe3leiottrhb5ogloooxslfd5/lib/python3.11/site-packages/pandocfilters.py\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 parso\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 parso-0.8.3.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 pathspec\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pathspec-0.11.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pexpect\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pexpect-4.8.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pickleshare-0.7.5.dist-info\n", + "lrwxrwxrwx 1 root root 150 Nov 6 20:19 pickleshare.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pickleshare-0.7.5-wty2ecbqmknacpwe6nwpiyxbq5oqhcza/lib/python3.11/site-packages/pickleshare.py\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 pkg_resources\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 platformdirs\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 platformdirs-3.10.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pluggy\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pluggy-1.0.0.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:19 prometheus_client\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 prometheus_client-0.17.0.dist-info\n", + "drwxr-xr-x 18 root root 4096 Nov 6 20:19 prompt_toolkit\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 prompt_toolkit-3.0.38.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 psutil\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 psutil-5.9.5.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 ptyprocess\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 ptyprocess-0.7.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pure_eval\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pure_eval-0.2.2.dist-info\n", + "lrwxrwxrwx 1 root root 176 Nov 6 20:19 pvectorc.cpython-311-x86_64-linux-gnu.so -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pyrsistent-0.19.3-ptruwnt5v52i3udbb6cbvhq5oeqn7dox/lib/python3.11/site-packages/pvectorc.cpython-311-x86_64-linux-gnu.so\n", + "lrwxrwxrwx 1 root root 136 Nov 6 20:19 py.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-pytest-7.3.2-wx6nsrjdt6ftqyuprphukh4m64lu3hk6/lib/python3.11/site-packages/py.py\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 pycparser\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pycparser-2.21.dist-info\n", + "drwxr-xr-x 7 root root 4096 Nov 6 20:19 pygments\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pyrsistent\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pyrsistent-0.19.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pytest\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pytest-7.3.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 python_dateutil-2.8.2.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 python_json_logger-2.0.7.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 pythonjsonlogger\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 pyzmq-25.0.2.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 requests\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 requests-2.31.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 rfc3339_validator-0.1.4.dist-info\n", + "lrwxrwxrwx 1 root root 162 Nov 6 20:19 rfc3339_validator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-rfc3339-validator-0.1.4-ifadhrcyquy632ftjvceaylpe4aqn7kt/lib/python3.11/site-packages/rfc3339_validator.py\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 rfc3986_validator-0.1.1.dist-info\n", + "lrwxrwxrwx 1 root root 162 Nov 6 20:19 rfc3986_validator.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-rfc3986-validator-0.1.1-zkwpotfen5ywonax22utpdph5j4eczmr/lib/python3.11/site-packages/rfc3986_validator.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 send2trash\n", + "drwxr-xr-x 8 root root 4096 Nov 6 20:19 setuptools\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 setuptools-68.0.0.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 six-1.16.0.dist-info\n", + "lrwxrwxrwx 1 root root 135 Nov 6 20:19 six.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-six-1.16.0-nbnfdrflk6rrh3fu3pengfnlmslekoqs/lib/python3.11/site-packages/six.py\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 sniffio\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 sniffio-1.3.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 soupsieve\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 soupsieve-2.4.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 stack_data\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 stack_data-0.6.2.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 terminado\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 terminado-0.17.1.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 tinycss2\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 tinycss2-1.2.1.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 tornado\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 tornado-6.3.3.dist-info\n", + "drwxr-xr-x 6 root root 4096 Nov 6 20:19 traitlets\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 traitlets-5.9.0.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 trove_classifiers\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 trove_classifiers-2023.8.7.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 uri_template\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 uri_template-1.2.0.dist-info\n", + "drwxr-xr-x 5 root root 4096 Nov 6 20:19 urllib3\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 urllib3-2.0.6.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 wcwidth\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 wcwidth-0.2.7.dist-info\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 webcolors-1.11.1.dist-info\n", + "lrwxrwxrwx 1 root root 147 Nov 6 20:19 webcolors.py -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-webcolors-1.11.1-x6fsbcye464konn2u33psb3vrat7bmzj/lib/python3.11/site-packages/webcolors.py\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 webencodings\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 webencodings-0.5.1.dist-info\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 websocket\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 websocket_client-1.6.3.dist-info\n", + "drwxr-xr-x 3 root root 4096 Nov 6 20:19 yaml\n", + "drwxr-xr-x 13 root root 4096 Nov 6 20:19 zmq\n", + "drwxr-xr-x 4 root root 4096 Nov 6 20:19 zope\n", + "lrwxrwxrwx 1 root root 164 Nov 6 20:19 zope.event-4.6-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-event-4.6-mlah5dql76d33hl34zeysun66ik2nmjk/lib/python3.11/site-packages/zope.event-4.6-py3.11-nspkg.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 zope.event-4.6.dist-info\n", + "lrwxrwxrwx 1 root root 176 Nov 6 20:19 zope.interface-5.4.0-py3.11-nspkg.pth -> /opt/software/linux-ubuntu22.04-x86_64_v3/gcc-11.4.0/py-zope-interface-5.4.0-6jsmi36ohggmpihuchqcd3r3s2eiqaan/lib/python3.11/site-packages/zope.interface-5.4.0-py3.11-nspkg.pth\n", + "drwxr-xr-x 2 root root 4096 Nov 6 20:19 zope.interface-5.4.0.dist-info\n" ] } ], @@ -673,7 +729,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { diff --git a/docs/devcontainer/viz-tutorial.ipynb b/docs/devcontainer/viz-tutorial.ipynb new file mode 100644 index 00000000..6c29446d --- /dev/null +++ b/docs/devcontainer/viz-tutorial.ipynb @@ -0,0 +1,521 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Intro\n", + "\n", + "This assumes you have gone through the intro/mpi4py intro, and that you are comfortable generating ExaGO output.\n", + "\n", + "Now we will go through specifics to the vizualisation frontend, how it is installed, and a typical workflow.\n", + "\n", + "# Open Issues:\n", + "\n", + "- npm dependencies were pinned and have security issues\n", + "- requirements.txt has pinned versions and we cannot upgrade / reproduce\n", + "- OpenAI keys and other missing steps...\n", + "\n", + "# Generating file to visualize\n", + "\n", + "I don't know how to do gic file option, so we are going to use OPFLOW C++ CLI to do this..." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ExaGO 1.6.0 built on Nov 9 2023\n" + ] + } + ], + "source": [ + "!opflow --version" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "TODO: Going to let Shri fill the details in here, as likely we don't want people churning large data sets in a small demo, and we can include pre-generated data I would hope..." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!./opflow -netfile -save_output -opflow_output_format JSON -gicfile " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Visualization\n", + "\n", + "Launch through shell commands or with the following shell command:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[K\u001b[?25hm##################\u001b[0m) ⠴ reify:fsevents: \u001b[7msill\u001b[0m \u001b[35mreify\u001b[0m mark deleted [ '/home/app/viz\u001b[0m\u001b[Ks\u001b[0m\u001b[K\n", + "> geojson@0.1.0 prepare\n", + "> cd .. && husky install\n", + "\n", + "husky - Git hooks installed\n", + "\n", + "up to date, audited 1131 packages in 4s\n", + "\n", + "222 packages are looking for funding\n", + " run `npm fund` for details\n", + "\n", + "2 \u001b[33m\u001b[1mmoderate\u001b[22m\u001b[39m severity vulnerabilities\n", + "\n", + "To address all issues, run:\n", + " npm audit fix\n", + "\n", + "Run `npm audit` for details.\n", + "\n", + "> geojson@0.1.0 start\n", + "> webpack-dev-server --progress --hot --open\n", + "\n", + "[webpack-cli] \u001b[31mError: Cannot find module '../../webpack.config.local'\n", + "Require stack:\n", + "- /home/app/viz/webpack.config.js\n", + "- /home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js\n", + "- /home/app/viz/node_modules/webpack-cli/lib/bootstrap.js\n", + "- /home/app/viz/node_modules/webpack-cli/bin/cli.js\n", + "- /home/app/viz/node_modules/webpack-dev-server/bin/webpack-dev-server.js\n", + " at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)\n", + " at Module._load (node:internal/modules/cjs/loader:885:27)\n", + " at Module.require (node:internal/modules/cjs/loader:1105:19)\n", + " at require (node:internal/modules/cjs/helpers:103:18)\n", + " at module.exports (/home/app/viz/webpack.config.js:40:32)\n", + " at loadConfigByPath (/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js:1445:37)\n", + " at async WebpackCLI.loadConfig (/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js:1515:38)\n", + " at async WebpackCLI.createCompiler (/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js:1781:22)\n", + " at async Command. (/home/app/viz/node_modules/@webpack-cli/serve/lib/index.js:81:30)\n", + " at async Command.parseAsync (/home/app/viz/node_modules/webpack-cli/node_modules/commander/lib/command.js:935:5) {\n", + " code: 'MODULE_NOT_FOUND',\n", + " requireStack: [\n", + " '/home/app/viz/webpack.config.js',\n", + " '/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js',\n", + " '/home/app/viz/node_modules/webpack-cli/lib/bootstrap.js',\n", + " '/home/app/viz/node_modules/webpack-cli/bin/cli.js',\n", + " '/home/app/viz/node_modules/webpack-dev-server/bin/webpack-dev-server.js'\n", + " ]\n", + "}\u001b[39m\n" + ] + } + ], + "source": [ + "!cd ../../viz && npm install && npm start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I seem to be stuck... Let's try and capture some more debugging information really quick." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pip in /usr/local/lib/python3.11/site-packages (23.2.1)\n", + "Collecting pip\n", + " Obtaining dependency information for pip from https://files.pythonhosted.org/packages/47/6a/453160888fab7c6a432a6e25f8afe6256d0d9f2cbd25971021da6491d899/pip-23.3.1-py3-none-any.whl.metadata\n", + " Downloading pip-23.3.1-py3-none-any.whl.metadata (3.5 kB)\n", + "Downloading pip-23.3.1-py3-none-any.whl (2.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hInstalling collected packages: pip\n", + " Attempting uninstall: pip\n", + " Found existing installation: pip 23.2.1\n", + " Uninstalling pip-23.2.1:\n", + " Successfully uninstalled pip-23.2.1\n", + "Successfully installed pip-23.3.1\n", + "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n", + "\u001b[0mRequirement already satisfied: aiohttp==3.8.4 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 1)) (3.8.4)\n", + "Requirement already satisfied: aiosignal==1.3.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 2)) (1.3.1)\n", + "Requirement already satisfied: asttokens==2.2.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 3)) (2.2.1)\n", + "Requirement already satisfied: async-timeout==4.0.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 4)) (4.0.2)\n", + "Requirement already satisfied: attrs==23.1.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 5)) (23.1.0)\n", + "Requirement already satisfied: backcall==0.2.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 6)) (0.2.0)\n", + "Requirement already satisfied: blinker==1.6.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 7)) (1.6.2)\n", + "Requirement already satisfied: certifi==2023.5.7 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 8)) (2023.5.7)\n", + "Requirement already satisfied: charset-normalizer==3.2.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 9)) (3.2.0)\n", + "Requirement already satisfied: click==8.1.5 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 10)) (8.1.5)\n", + "Requirement already satisfied: colorama==0.4.6 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 11)) (0.4.6)\n", + "Requirement already satisfied: comm==0.1.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 12)) (0.1.3)\n", + "Requirement already satisfied: config in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 13)) (0.5.1)\n", + "Requirement already satisfied: dataclasses-json==0.5.9 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 14)) (0.5.9)\n", + "Requirement already satisfied: debugpy==1.6.7 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 15)) (1.6.7)\n", + "Requirement already satisfied: decorator==5.1.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 16)) (5.1.1)\n", + "Requirement already satisfied: executing==1.2.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 17)) (1.2.0)\n", + "Requirement already satisfied: Flask==2.3.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 18)) (2.3.2)\n", + "Requirement already satisfied: Flask-Cors==4.0.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 19)) (4.0.0)\n", + "Requirement already satisfied: frozenlist==1.4.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 20)) (1.4.0)\n", + "Requirement already satisfied: greenlet==2.0.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 21)) (2.0.2)\n", + "Requirement already satisfied: idna==3.4 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 22)) (3.4)\n", + "Requirement already satisfied: ipykernel==6.23.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 23)) (6.23.3)\n", + "Requirement already satisfied: ipython==8.14.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 24)) (8.14.0)\n", + "Requirement already satisfied: itsdangerous==2.1.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 25)) (2.1.2)\n", + "Requirement already satisfied: jedi==0.18.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 26)) (0.18.2)\n", + "Requirement already satisfied: jellyfish==0.11.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 27)) (0.11.2)\n", + "Requirement already satisfied: Jinja2==3.1.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 28)) (3.1.2)\n", + "Requirement already satisfied: jupyter_client==8.3.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 29)) (8.3.0)\n", + "Requirement already satisfied: jupyter_core==5.3.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 30)) (5.3.1)\n", + "Requirement already satisfied: langchain==0.0.233 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 31)) (0.0.233)\n", + "Requirement already satisfied: langsmith==0.0.5 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 32)) (0.0.5)\n", + "Requirement already satisfied: MarkupSafe==2.1.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 33)) (2.1.3)\n", + "Requirement already satisfied: marshmallow==3.19.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 34)) (3.19.0)\n", + "Requirement already satisfied: marshmallow-enum==1.5.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 35)) (1.5.1)\n", + "Requirement already satisfied: matplotlib-inline==0.1.6 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 36)) (0.1.6)\n", + "Requirement already satisfied: multidict==6.0.4 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 37)) (6.0.4)\n", + "Requirement already satisfied: mypy-extensions==1.0.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 38)) (1.0.0)\n", + "Requirement already satisfied: nest-asyncio==1.5.6 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 39)) (1.5.6)\n", + "Requirement already satisfied: numexpr==2.8.4 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 40)) (2.8.4)\n", + "Requirement already satisfied: numpy==1.25.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 41)) (1.25.0)\n", + "Requirement already satisfied: openai==0.27.8 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 42)) (0.27.8)\n", + "Requirement already satisfied: openapi-schema-pydantic==1.2.4 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 43)) (1.2.4)\n", + "Requirement already satisfied: packaging==23.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 44)) (23.1)\n", + "Requirement already satisfied: pandas==2.0.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 45)) (2.0.2)\n", + "Requirement already satisfied: parso==0.8.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 46)) (0.8.3)\n", + "Requirement already satisfied: pickleshare==0.7.5 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 47)) (0.7.5)\n", + "Requirement already satisfied: platformdirs==3.8.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 48)) (3.8.0)\n", + "Requirement already satisfied: prompt-toolkit==3.0.38 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 49)) (3.0.38)\n", + "Requirement already satisfied: psutil==5.9.5 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 50)) (5.9.5)\n", + "Requirement already satisfied: psycopg2==2.9.6 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 51)) (2.9.6)\n", + "Requirement already satisfied: pure-eval==0.2.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 52)) (0.2.2)\n", + "Requirement already satisfied: pydantic==1.10.11 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 53)) (1.10.11)\n", + "Requirement already satisfied: Pygments==2.15.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 54)) (2.15.1)\n", + "Requirement already satisfied: python-dateutil==2.8.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 55)) (2.8.2)\n", + "Requirement already satisfied: pytz==2023.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 56)) (2023.3)\n", + "Requirement already satisfied: PyYAML==6.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 57)) (6.0)\n", + "Requirement already satisfied: pyzmq==25.1.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 58)) (25.1.0)\n", + "Requirement already satisfied: requests==2.31.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 59)) (2.31.0)\n", + "Requirement already satisfied: shapely==2.0.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 60)) (2.0.1)\n", + "Requirement already satisfied: six==1.16.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 61)) (1.16.0)\n", + "Requirement already satisfied: SQLAlchemy==2.0.18 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 62)) (2.0.18)\n", + "Requirement already satisfied: stack-data==0.6.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 63)) (0.6.2)\n", + "Requirement already satisfied: tenacity==8.2.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 64)) (8.2.2)\n", + "Requirement already satisfied: tornado==6.3.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 65)) (6.3.2)\n", + "Requirement already satisfied: tqdm==4.65.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 66)) (4.65.0)\n", + "Requirement already satisfied: traitlets==5.9.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 67)) (5.9.0)\n", + "Requirement already satisfied: typing-inspect==0.9.0 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 68)) (0.9.0)\n", + "Requirement already satisfied: typing_extensions==4.7.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 69)) (4.7.1)\n", + "Requirement already satisfied: tzdata==2023.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 70)) (2023.3)\n", + "Requirement already satisfied: urllib3==2.0.3 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 71)) (2.0.3)\n", + "Requirement already satisfied: us==3.1.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 72)) (3.1.1)\n", + "Requirement already satisfied: wcwidth==0.2.6 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 73)) (0.2.6)\n", + "Requirement already satisfied: Werkzeug==2.3.6 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 74)) (2.3.6)\n", + "Requirement already satisfied: yarl==1.9.2 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 75)) (1.9.2)\n", + "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.11/site-packages (from ipython==8.14.0->-r requirements.txt (line 24)) (4.8.0)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.11/site-packages (from pexpect>4.3->ipython==8.14.0->-r requirements.txt (line 24)) (0.7.0)\n", + "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n", + "\u001b[0m * Serving Flask app 'server'\n", + " * Debug mode: on\n", + "\u001b[31m\u001b[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.\u001b[0m\n", + " * Running on http://127.0.0.1:5000\n", + "\u001b[33mPress CTRL+C to quit\u001b[0m\n", + " * Restarting with stat\n", + " * Debugger is active!\n", + " * Debugger PIN: 110-927-162\n", + "127.0.0.1 - - [09/Nov/2023 02:55:53] \"\u001b[33mGET / HTTP/1.1\u001b[0m\" 404 -\n", + "127.0.0.1 - - [09/Nov/2023 02:56:04] \"\u001b[33mGET / HTTP/1.1\u001b[0m\" 404 -\n", + "127.0.0.1 - - [09/Nov/2023 02:56:06] \"\u001b[33mGET / HTTP/1.1\u001b[0m\" 404 -\n", + "^C\n" + ] + } + ], + "source": [ + "!cd ../../viz/backend && sudo python3 -m pip install --upgrade pip && sudo python3 -m pip install -r requirements.txt && PYTHONPATH=/usr/local/lib/python3.11/site-packages python3 server.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It seems like there were not only windows file endings here, but there were hard coded frozen requirements that were just for windows, and pinned for python < 3.11... Trying to run anyway just to see what happens.\n", + "\n", + "Stopping here, where a few dependencies where missing, and PYTHONPATH wasn't quite correct. I am missing quite a few steps, but hopefully this is close..." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Traceback (most recent call last):\n", + " File \"/home/app/viz/backend/server.py\", line 2, in \n", + " from flask import Flask\n", + "ModuleNotFoundError: No module named 'flask'\n" + ] + } + ], + "source": [ + "!cd ../../viz/backend && python3 server.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Installation\n", + "\n", + "This is done through the `postCreateCommand` that is configured in `.devcontainer/devcontainer.json` in theroy. Still debugging, so I did some stuff through Jupyter magic just to iterate quickly." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + "\t\"build\": {\n", + "\t\t\"dockerfile\": \"Dockerfile\",\n", + "\t\t\"context\": \"..\"\n", + "\t},\n", + "\t\"customizations\": {\n", + "\t\t\"vscode\": {\n", + "\t\t\t\"extensions\": [\n", + "\t\t\t\t\"ms-azuretools.vscode-docker\",\n", + "\t\t\t\t\"github.vscode-github-actions\",\n", + "\t\t\t\t\"ms-toolsai.jupyter\",\n", + "\t\t\t\t\"GitHub.copilot\",\n", + "\t\t\t\t\"ms-vsliveshare.vsliveshare\"\n", + "\t\t\t]\n", + "\t\t}\n", + "\t},\n", + "\t\"workspaceFolder\": \"/home/app/\",\n", + " \t\"postCreateCommand\": \"cd /home/app/viz && export CXX=$(which gcc) && npm install\",\n", + " \"workspaceMount\": \"source=${localWorkspaceFolder},target=/home/app/,type=bind,consistency=cached\"\n", + "}\n" + ] + } + ], + "source": [ + "!cat ../../.devcontainer/devcontainer.json" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9.2.0\n" + ] + } + ], + "source": [ + "!npm --version" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v18.13.0\n" + ] + } + ], + "source": [ + "!node --version" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# Build stage with Spack pre-installed and ready to be used\n", + "FROM spack/ubuntu-jammy as builder\n", + "\n", + "# Install OS packages needed to build the software\n", + "RUN apt-get -yqq update && apt-get -yqq upgrade \\\n", + " && apt-get -yqq install autoconf \\\n", + " && rm -rf /var/lib/apt/lists/*\n", + "\n", + "# What we want to install and how we want to install it\n", + "# is specified in a manifest file (spack.yaml)\n", + "RUN mkdir /opt/spack-environment \\\n", + "&& (echo spack: \\\n", + "&& echo ' specs:' \\\n", + "&& echo ' - exago@1.6.0+ipopt+python+mpi' \\\n", + "&& echo ' - petsc~fortran~hdf5~hypre+metis' \\\n", + "&& echo ' - ipopt@3.12.10+coinhsl~mumps+metis' \\\n", + "&& echo ' - coinhsl@2019.05.21+blas' \\\n", + "&& echo ' - py-jupyterlab' \\\n", + "&& echo ' - py-ipyparallel' \\\n", + "&& echo ' concretizer:' \\\n", + "&& echo ' unify: true' \\\n", + "&& echo ' reuse: true' \\\n", + "&& echo ' mirrors:' \\\n", + "&& echo ' spack: https://binaries.spack.io/develop' \\\n", + "&& echo ' packages:' \\\n", + "&& echo ' all:' \\\n", + "&& echo ' providers:' \\\n", + "&& echo ' mpi:' \\\n", + "&& echo ' - openmpi' \\\n", + "&& echo ' zlib-api:' \\\n", + "&& echo ' - zlib' \\\n", + "&& echo ' zlib-ng:' \\\n", + "&& echo ' buildable: false' \\\n", + "&& echo ' config:' \\\n", + "&& echo ' install_tree: /opt/software' \\\n", + "&& echo ' view: /opt/views/view') > /opt/spack-environment/spack.yaml\n", + "\n", + "# This is manual, and required to build Ipopt\n", + "COPY coinhsl-archive-2019.05.21.tar.gz /opt/spack-environment/coinhsl-archive-2019.05.21.tar.gz\n", + "\n", + "# Find external packages\n", + "RUN cd /opt/spack-environment && spack env activate . && spack external find --all\n", + "\n", + "# Do this separate of install to cache keys...\n", + "RUN cd /opt/spack-environment && spack env activate . && spack mirror add develop https://binaries.spack.io/develop && spack buildcache keys --install --trust && spack concretize -f && spack mirror create -a\n", + "\n", + "# Install Ipopt w/ CoinHSL (and other deps) in stages to cache builds\n", + "RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast ipopt\n", + "\n", + "# Install PETSc \n", + "RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast petsc\n", + "\n", + "# Install py-jupyterlab\n", + "RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast py-jupyterlab\n", + "\n", + "# Install py-ipyparallel\n", + "RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast py-ipyparallel\n", + "\n", + "# Install the software, remove unnecessary deps\n", + "RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast && spack gc -y\n", + "\n", + "# Strip all the binaries\n", + "RUN find -L /opt/views/view/* -type f -exec readlink -f '{}' \\; | \\\n", + " xargs file -i | \\\n", + " grep 'charset=binary' | \\\n", + " grep 'x-executable\\|x-archive\\|x-sharedlib' | \\\n", + " awk -F: '{print $1}' | xargs strip\n", + "\n", + "# Modifications to the environment that are necessary to run\n", + "RUN cd /opt/spack-environment && \\\n", + " spack env activate --sh -d . > activate.sh\n", + "\n", + "\n", + "# Bare OS image to run the installed executables\n", + "FROM mcr.microsoft.com/devcontainers/python:3.11-bookworm\n", + "\n", + "COPY --from=builder /opt/spack-environment /opt/spack-environment\n", + "COPY --from=builder /opt/software /opt/software\n", + "\n", + "# paths.view is a symlink, so copy the parent to avoid dereferencing and duplicating it\n", + "COPY --from=builder /opt/views /opt/views\n", + "\n", + "RUN { \\\n", + " echo '#!/bin/sh' \\\n", + " && echo '.' /opt/spack-environment/activate.sh \\\n", + " && echo 'exec \"$@\"'; \\\n", + " } > /entrypoint.sh \\\n", + "&& chmod a+x /entrypoint.sh \\\n", + "&& ln -s /opt/views/view /opt/view\n", + "\n", + "\n", + "RUN apt-get -yqq update && apt-get -yqq upgrade \\\n", + " && apt-get -yqq install gfortran nodejs npm \\\n", + " && rm -rf /var/lib/apt/lists/*\n", + "ENTRYPOINT [ \"/entrypoint.sh\" ]\n", + "CMD [ \"/bin/bash\" ]\n", + "\n", + "# Make sure devcontainer user gets spack packages\n", + "RUN echo \"source /entrypoint.sh\" >> /home/vscode/.bashrc\n", + "\n", + "# Install the Jupyter kernel\n", + "RUN . /entrypoint.sh && \\\n", + " python3 -m ipykernel install \\\n", + " --name py311-exago \\\n", + " --display-name \"ExaGO\" \\\n", + " --prefix=\n", + "\n", + "# Install the mpi4py Jupyter kernel\n", + "RUN . /entrypoint.sh && \\\n", + " python3 -m ipykernel install \\\n", + " --name py311-mpi4py-exago \\\n", + " --display-name \"ExaGO w/ MPI\" \\\n", + " --prefix=\n", + "\n", + "# Make modifications that are necessary to run mpi4py in kernelspec\n", + "RUN sed -i 's/\\\"\\/opt\\/views\\/view\\/bin\\/python3\\\"/\\\"mpiexec\\\", \\\"-n\\\", \\\"1\\\", \\\"\\/opt\\/views\\/view\\/bin\\/python3\\\"/g' /usr/local/share/jupyter/kernels/py311-mpi4py-exago/kernel.json\n", + "\n", + "# Configure user for container\n", + "USER vscode\n" + ] + } + ], + "source": [ + "!cat ../../.devcontainer/Dockerfile" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ExaGO", + "language": "python", + "name": "py311-exago" + }, + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/viz/backend/requirements.txt b/viz/backend/requirements.txt index dcfd4d3f370a35f1e8e213191686640c85dad99f..0072edda7d06a8a4abf689e682ed94bc8eea9843 100644 GIT binary patch delta 29 kcmbO&+Aq3c6(e^tLq01V78f`qk#zk@Nx-| diff --git a/viz/package.json b/viz/package.json index 9023e1d4..f789846f 100644 --- a/viz/package.json +++ b/viz/package.json @@ -1,62 +1,62 @@ { "name": "geojson", - "version": "0.0.0", - "livscode-file://vscode-app/c:/Users/jins176/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.htmlcense": "MIT", - + "version": "0.1.0", "scripts": { + "prepare": "cd .. && husky install", "start-local": "webpack-dev-server --env.local --progress --hot --open", "start": "webpack-dev-server --progress --hot --open " }, "dependencies": { - "@emotion/react": "^11.9.0", - "@emotion/styled": "^11.8.1", - "@flowmap.gl/data": "^8.0.0-alpha.25", - "@flowmap.gl/layers": "^8.0.0-alpha.25", - "@mui/icons-material": "^5.6.2", - "@mui/material": "^5.6.4", - "@turf/turf": "^5.1.6", - "babel-preset-env": "^1.7.0", - "babel-preset-es2015": "^6.24.1", - "bootstrap": "^5.3.0", - "buffer": "^6.0.3", - "chart.js": "^3.5.0", - "core-js": "^3.31.1", - "d3": "^7.8.5", - "d3-scale": "^2.0.0", - "deck.gl": "^8.9.19", - "dotenv": "^16.3.1", - "hnswlib-node": "^1.4.2", - "http": "^0.0.1-security", - "https": "^1.0.0", - "langchain": "^0.0.75", - "net": "^1.0.2", - "node-fetch": "^2.6.12", - "node-gyp": "^9.3.0", - "pg": "^8.11.1", - "react": "^18.1.0", - "react-bootstrap": "^2.8.0", - "react-chartjs-2": "^4.1.0", - "react-chat-widget": "^3.1.4", - "react-dom": "^18.1.0", - "react-map-gl": "^5.3.21", - "react-widgets": "^5.8.4", - "sass": "^1.63.6", - "stream": "^0.0.2", - "typeorm": "^0.3.17", - "url": "^0.11.1", - "us": "^2.0.0", - "util": "^0.12.5", - "webpack-node-externals": "^3.0.0", - "zlib": "^1.0.5" + "@emotion/react": "", + "@emotion/styled": "", + "@flowmap.gl/data": "", + "@flowmap.gl/layers": "", + "@mui/icons-material": "", + "@mui/material": "", + "@turf/turf": "", + "babel-preset-env": "", + "babel-preset-es2015": "", + "bootstrap": "", + "buffer": "", + "chart.js": "", + "core-js": "", + "d3": "", + "d3-scale": "", + "deck.gl": "", + "dotenv": "", + "hnswlib-node": "", + "http": "", + "https": "", + "husky": "", + "langchain": "", + "net": "", + "node-fetch": "", + "node-gyp": "", + "pg": "", + "react": "", + "react-bootstrap": "", + "react-chartjs-2": "", + "react-chat-widget": "", + "react-dom": "", + "react-map-gl": "", + "react-widgets": "", + "sass": "", + "stream": "", + "typeorm": "", + "url": "", + "us": "", + "util": "", + "webpack-node-externals": "", + "zlib": "" }, "devDependencies": { - "@babel/core": "^7.4.0", - "@babel/preset-react": "^7.0.0", - "babel-loader": "^8.0.5", - "cross-env": "^7.0.3", - "typescript": "^5.1.6", - "webpack": "^4.20.2", - "webpack-cli": "^3.1.2", - "webpack-dev-server": "^3.1.1" + "@babel/core": "", + "@babel/preset-react": "", + "babel-loader": "", + "cross-env": "", + "typescript": "", + "webpack": "", + "webpack-cli": "", + "webpack-dev-server": "" } } From c0a957b1659e577b6689192c23aed9c32e8a1e8e Mon Sep 17 00:00:00 2001 From: "Rutherford, Cameron" Date: Thu, 9 Nov 2023 19:24:53 -0500 Subject: [PATCH 2/7] Add building viz with static node version. --- .devcontainer/Dockerfile | 10 +- .../create_dockerfile_devcontainer.sh | 15 +- .devcontainer/devcontainer.json | 1 - docs/devcontainer/viz-tutorial.ipynb | 243 +++++++++++++++--- viz/package.json | 102 ++++---- 5 files changed, 272 insertions(+), 99 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 484d07b8..6b013195 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -39,7 +39,7 @@ RUN mkdir /opt/spack-environment \ COPY coinhsl-archive-2019.05.21.tar.gz /opt/spack-environment/coinhsl-archive-2019.05.21.tar.gz # Find external packages -RUN cd /opt/spack-environment && spack env activate . && spack external find --all +RUN cd /opt/spack-environment && spack env activate . && spack external find --all --exclude python # Do this separate of install to cache keys... RUN cd /opt/spack-environment && spack env activate . && spack mirror add develop https://binaries.spack.io/develop && spack buildcache keys --install --trust && spack concretize -f && spack mirror create -a @@ -90,7 +90,7 @@ RUN { \ RUN apt-get -yqq update && apt-get -yqq upgrade \ - && apt-get -yqq install gfortran nodejs npm \ + && apt-get -yqq install gfortran npm \ && rm -rf /var/lib/apt/lists/* ENTRYPOINT [ "/entrypoint.sh" ] CMD [ "/bin/bash" ] @@ -117,3 +117,9 @@ RUN sed -i 's/\"\/opt\/views\/view\/bin\/python3\"/\"mpiexec\", \"-n\", \"1\", \ # Configure user for container USER vscode + +# Install nvm +RUN mkdir -p /home/vscode/nvm && cd /home/vscode/nvm && curl -O https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh +RUN chown vscode /home/vscode/nvm/install.sh && chmod +x /home/vscode/nvm/install.sh + +# Install NodeJS version 16.13.0 with nvm diff --git a/.devcontainer/create_dockerfile_devcontainer.sh b/.devcontainer/create_dockerfile_devcontainer.sh index 2f2e285e..ac3e34b1 100755 --- a/.devcontainer/create_dockerfile_devcontainer.sh +++ b/.devcontainer/create_dockerfile_devcontainer.sh @@ -59,7 +59,6 @@ spack: - autoconf final: - gfortran - - nodejs - npm packages: all: @@ -81,7 +80,7 @@ spack containerize > ./.devcontainer/Dockerfile sed -i "" "s|# Install the software|# This is manual, and required to build Ipopt\nCOPY coinhsl-archive-2019.05.21.tar.gz /opt/spack-environment/coinhsl-archive-2019.05.21.tar.gz\n\n# Install the software|" ./.devcontainer/Dockerfile # Find external packages -sed -i "" "s|# Install the software|# Find external packages\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack external find --all\n\n# Install the software|" ./.devcontainer/Dockerfile +sed -i "" "s|# Install the software|# Find external packages\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack external find --all --exclude python\n\n# Install the software|" ./.devcontainer/Dockerfile # Also trusts the build cache and create source mirror sed -i "" "s|# Install the software|# Do this separate of install to cache keys...\nRUN cd /opt/spack-environment \&\& spack env activate . \&\& spack mirror add develop https://binaries.spack.io/develop \&\& spack buildcache keys --install --trust \&\& spack concretize -f \&\& spack mirror create -a\n\n# Install the software|" ./.devcontainer/Dockerfile @@ -123,3 +122,15 @@ echo "RUN sed -i 's/\\\"\/opt\/views\/view\/bin\/python3\\\"/\\\"mpiexec\\\", \\ echo "" >> ./.devcontainer/Dockerfile echo "# Configure user for container" >> ./.devcontainer/Dockerfile echo "USER vscode" >> ./.devcontainer/Dockerfile + +# Install nvm for VSCode user +echo "" >> ./.devcontainer/Dockerfile +echo "# Install nvm" >> ./.devcontainer/Dockerfile +echo "RUN mkdir -p /home/vscode/nvm && cd /home/vscode/nvm && curl -O https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh" >> ./.devcontainer/Dockerfile +echo "RUN chown vscode /home/vscode/nvm/install.sh && chmod +x /home/vscode/nvm/install.sh" >> ./.devcontainer/Dockerfile + +# Install NodeJS version 16.13.0 with nvm +echo "" >> ./.devcontainer/Dockerfile +echo "# Install NodeJS version 16.13.0 with nvm" >> ./.devcontainer/Dockerfile +#echo "RUN . /opt/nvm/nvm.sh && \\" >> ./.devcontainer/Dockerfile +#echo " nvm install v16.13.0" >> ./.devcontainer/Dockerfile diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 34dcfff4..134760f6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -15,6 +15,5 @@ } }, "workspaceFolder": "/home/app/", - "postCreateCommand": "cd /home/app/viz && export CXX=$(which gcc) && npm install", "workspaceMount": "source=${localWorkspaceFolder},target=/home/app/,type=bind,consistency=cached" } diff --git a/docs/devcontainer/viz-tutorial.ipynb b/docs/devcontainer/viz-tutorial.ipynb index 6c29446d..d02d562f 100644 --- a/docs/devcontainer/viz-tutorial.ipynb +++ b/docs/devcontainer/viz-tutorial.ipynb @@ -65,65 +65,224 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[K\u001b[?25hm##################\u001b[0m) ⠴ reify:fsevents: \u001b[7msill\u001b[0m \u001b[35mreify\u001b[0m mark deleted [ '/home/app/viz\u001b[0m\u001b[Ks\u001b[0m\u001b[K\n", - "> geojson@0.1.0 prepare\n", - "> cd .. && husky install\n", - "\n", - "husky - Git hooks installed\n", - "\n", - "up to date, audited 1131 packages in 4s\n", - "\n", - "222 packages are looking for funding\n", + "v18.13.0\n" + ] + } + ], + "source": [ + "!node --version" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading and installing node v16.13.0...\n", + "Downloading https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz...\n", + "######################################################################### 100.0% 43.7%\n", + "Computing checksum with sha256sum\n", + "Checksums matched!\n", + "Now using node v16.13.0 (npm v8.1.0)\n", + "Now using node v16.13.0 (npm v8.1.0)\n", + "v16.13.0\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency0m\u001b[Kin 1ms\u001b[0m\u001b[K[K\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m^17.0.2\u001b[22m\" from \u001b[1mreact-chat-widget\u001b[22m@\u001b[1m3.1.4\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-chat-widget\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-chat-widget\u001b[22m@\"\u001b[1m^3.1.4\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^17.0.2\u001b[22m\" from \u001b[1mreact-chat-widget\u001b[22m@\u001b[1m3.1.4\u001b[22m\u001b[2m\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-chat-widget\u001b[22m\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-chat-widget\u001b[22m@\"\u001b[1m^3.1.4\u001b[22m\" from the root project\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency0m ROOT quickselect@1.1.1 OK\u001b[0m\u001b[Km\u001b[K\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m Unsupported engine {midealTree:node_modules/micromat\u001b[0m\u001b[Km\u001b[Kenc\u001b[0m\u001b[K\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m package: 'langchain@0.0.75',\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m required: { node: '>=18' },\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m current: { node: 'v16.13.0', npm: '8.1.0' }\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m }\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m Unsupported engine {\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m package: '@fortaine/fetch-event-source@3.0.6',\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m required: { node: '>=16.15' },\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m current: { node: 'v16.13.0', npm: '8.1.0' }\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m }\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m urix@0.1.0: Please see https://github.com/lydell/urix#deprecated\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated[0m\u001b[K\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fsK\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies\n", + "\u001b[K\u001b[?25hm##################\u001b[0m⸩ ⠸ reify:chart.js: \u001b[32;40mhttp\u001b[0m \u001b[35mfetch\u001b[0m GET 200 https://registry.npmj\u001b[0m\u001b[Ky.npmj\u001b[0m\u001b[Kdar\u001b[0m\u001b[K\n", + "added 485 packages, removed 180 packages, changed 209 packages, and audited 1436 packages in 2m\n", + "\n", + "91 packages are looking for funding\n", " run `npm fund` for details\n", "\n", - "2 \u001b[33m\u001b[1mmoderate\u001b[22m\u001b[39m severity vulnerabilities\n", + "\u001b[31m\u001b[1m13\u001b[22m\u001b[39m vulnerabilities (1 \u001b[1mlow\u001b[22m, 3 \u001b[33m\u001b[1mmoderate\u001b[22m\u001b[39m, 9 \u001b[31m\u001b[1mhigh\u001b[22m\u001b[39m)\n", "\n", - "To address all issues, run:\n", + "To address issues that do not require attention, run:\n", " npm audit fix\n", "\n", + "To address all issues (including breaking changes), run:\n", + " npm audit fix --force\n", + "\n", "Run `npm audit` for details.\n", "\n", - "> geojson@0.1.0 start\n", + "> geojson@0.0.0 start\n", "> webpack-dev-server --progress --hot --open\n", "\n", - "[webpack-cli] \u001b[31mError: Cannot find module '../../webpack.config.local'\n", - "Require stack:\n", - "- /home/app/viz/webpack.config.js\n", - "- /home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js\n", - "- /home/app/viz/node_modules/webpack-cli/lib/bootstrap.js\n", - "- /home/app/viz/node_modules/webpack-cli/bin/cli.js\n", - "- /home/app/viz/node_modules/webpack-dev-server/bin/webpack-dev-server.js\n", - " at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)\n", - " at Module._load (node:internal/modules/cjs/loader:885:27)\n", - " at Module.require (node:internal/modules/cjs/loader:1105:19)\n", - " at require (node:internal/modules/cjs/helpers:103:18)\n", - " at module.exports (/home/app/viz/webpack.config.js:40:32)\n", - " at loadConfigByPath (/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js:1445:37)\n", - " at async WebpackCLI.loadConfig (/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js:1515:38)\n", - " at async WebpackCLI.createCompiler (/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js:1781:22)\n", - " at async Command. (/home/app/viz/node_modules/@webpack-cli/serve/lib/index.js:81:30)\n", - " at async Command.parseAsync (/home/app/viz/node_modules/webpack-cli/node_modules/commander/lib/command.js:935:5) {\n", - " code: 'MODULE_NOT_FOUND',\n", - " requireStack: [\n", - " '/home/app/viz/webpack.config.js',\n", - " '/home/app/viz/node_modules/webpack-cli/lib/webpack-cli.js',\n", - " '/home/app/viz/node_modules/webpack-cli/lib/bootstrap.js',\n", - " '/home/app/viz/node_modules/webpack-cli/bin/cli.js',\n", - " '/home/app/viz/node_modules/webpack-dev-server/bin/webpack-dev-server.js'\n", - " ]\n", - "}\u001b[39m\n" + "\u001b[1m10% building 1/1 modules 0 active\u001b[39m\u001b[22m\u001b[34mℹ\u001b[39m \u001b[90m「wds」\u001b[39m: Project is running at \u001b[1m\u001b[34mhttp://localhost:8080/\u001b[39m\u001b[22m\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wds」\u001b[39m: webpack output is served from \u001b[1m\u001b[34m/\u001b[39m\u001b[22m\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wds」\u001b[39m: Content not from webpack is served from \u001b[1m\u001b[34m/home/app/viz\u001b[39m\u001b[22m\n", + "\u001b[1m11% building 13/16 modules 3 active ...r/client/utils/getCurrentScriptSource.js\u001b[39m\u001b[22m\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: wait until bundle finished: /\n", + "\u001b[1m69% building 9250/9296 modules 46 active ...s/@mui/icons-material/esm/Drafts.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: wait until bundle finished: /\n", + "\u001b[31m✖\u001b[39m \u001b[90m「wdm」\u001b[39m: Hash: \u001b[1maa27445843665b9b345f\u001b[39m\u001b[22m2m39m\u001b[22mm.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2Ks 78 active ...ial/esm/ArrowCircleDownTwoTone.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\n", + "Version: webpack \u001b[1m4.47.0\u001b[39m\u001b[22m\n", + "Time: \u001b[1m111363\u001b[39m\u001b[22mms\n", + "Built at: 11/10/2023 \u001b[1m12:21:58 AM\u001b[39m\u001b[22m\n", + " \u001b[1mAsset\u001b[39m\u001b[22m \u001b[1mSize\u001b[39m\u001b[22m \u001b[1mChunks\u001b[39m\u001b[22m \u001b[1m\u001b[39m\u001b[22m \u001b[1m\u001b[39m\u001b[22m\u001b[1mChunk Names\u001b[39m\u001b[22m\n", + " \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m 45.7 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m app\n", + "\u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m 20.8 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [dev]\u001b[39m\u001b[22m app\n", + "Entrypoint \u001b[1mapp\u001b[39m\u001b[22m = \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m \u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m\n", + "[0] \u001b[1mmulti (webpack)-dev-server/client?http://localhost:8080 (webpack)/hot/dev-server.js ./app.js\u001b[39m\u001b[22m 52 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./app.js\u001b[39m\u001b[22m] 44.1 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./module_casedata.js\u001b[39m\u001b[22m] 354 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@deck.gl/core/dist/esm/index.js\u001b[39m\u001b[22m] 3.49 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@deck.gl/extensions/dist/esm/index.js\u001b[39m\u001b[22m] 795 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@deck.gl/layers/dist/esm/index.js\u001b[39m\u001b[22m] 1.14 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@deck.gl/react/dist/esm/index.js\u001b[39m\u001b[22m] 115 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@flowmap.gl/layers/dist/index.js\u001b[39m\u001b[22m] 1.56 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/icons-material/ArrowDropDown.js\u001b[39m\u001b[22m] 492 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/icons-material/HomeOutlined.js\u001b[39m\u001b[22m] 554 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/icons-material/ThreeSixtyOutlined.js\u001b[39m\u001b[22m] 670 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/icons-material/esm/index.js\u001b[39m\u001b[22m] 688 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/material/Accordion/index.js\u001b[39m\u001b[22m] 155 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] \u001b[1m(webpack)-dev-server/client?http://localhost:8080\u001b[39m\u001b[22m 4.29 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[./node_modules/webpack/hot/dev-server.js] \u001b[1m(webpack)/hot/dev-server.js\u001b[39m\u001b[22m 1.59 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + " + 12868 hidden modules\n", + "\n", + "\u001b[1m\u001b[31mERROR in ./node_modules/@flowmap.gl/layers/dist/FlowmapLayer.js 49:40\n", + "Module parse failed: Unexpected token (49:40)\n", + "You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n", + "| if (onHover) {\n", + "| this._getFlowmapLayerPickingInfo(info).then((info) => {\n", + "> if ((this.state?.lastHoverTime ?? 0) <= startTime) {\n", + "| this.setState({ pickingInfo: info });\n", + "| onHover(info, event);\n", + " @ ./node_modules/@flowmap.gl/layers/dist/index.js 9:0-57 9:0-57\n", + " @ ./app.js\u001b[39m\u001b[22m\n", + "\n", + "\u001b[1m\u001b[31mERROR in ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js 76:29\n", + "Module parse failed: Unexpected token (76:29)\n", + "You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n", + "| if (changeFlags.extensionsChanged) {\n", + "| const { gl } = this.context;\n", + "> this.state.model?.delete();\n", + "| this.state.model = this._getModel(gl);\n", + "| this.getAttributeManager().invalidateAll();\n", + " @ ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js 6:0-62 7:15-37\n", + " @ ./node_modules/@flowmap.gl/layers/dist/index.js\n", + " @ ./app.js\u001b[39m\u001b[22m\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Failed to compile.\n" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." ] } ], "source": [ - "!cd ../../viz && npm install && npm start" + "!cd /home/app/viz && . /usr/local/share/nvm/nvm.sh && nvm install 16.13.0 && nvm use 16.13.0 && node --version && npm install && npm start" ] }, { @@ -499,9 +658,9 @@ ], "metadata": { "kernelspec": { - "display_name": "ExaGO", + "display_name": "ExaGO w/ MPI", "language": "python", - "name": "py311-exago" + "name": "py311-mpi4py-exago" }, "language_info": { "codemirror_mode": { diff --git a/viz/package.json b/viz/package.json index f789846f..9859f96b 100644 --- a/viz/package.json +++ b/viz/package.json @@ -1,62 +1,60 @@ { "name": "geojson", - "version": "0.1.0", + "version": "0.0.0", "scripts": { - "prepare": "cd .. && husky install", "start-local": "webpack-dev-server --env.local --progress --hot --open", "start": "webpack-dev-server --progress --hot --open " }, "dependencies": { - "@emotion/react": "", - "@emotion/styled": "", - "@flowmap.gl/data": "", - "@flowmap.gl/layers": "", - "@mui/icons-material": "", - "@mui/material": "", - "@turf/turf": "", - "babel-preset-env": "", - "babel-preset-es2015": "", - "bootstrap": "", - "buffer": "", - "chart.js": "", - "core-js": "", - "d3": "", - "d3-scale": "", - "deck.gl": "", - "dotenv": "", - "hnswlib-node": "", - "http": "", - "https": "", - "husky": "", - "langchain": "", - "net": "", - "node-fetch": "", - "node-gyp": "", - "pg": "", - "react": "", - "react-bootstrap": "", - "react-chartjs-2": "", - "react-chat-widget": "", - "react-dom": "", - "react-map-gl": "", - "react-widgets": "", - "sass": "", - "stream": "", - "typeorm": "", - "url": "", - "us": "", - "util": "", - "webpack-node-externals": "", - "zlib": "" + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@flowmap.gl/data": "^8.0.0-alpha.25", + "@flowmap.gl/layers": "^8.0.0-alpha.25", + "@mui/icons-material": "^5.6.2", + "@mui/material": "^5.6.4", + "@turf/turf": "^5.1.6", + "babel-preset-env": "^1.7.0", + "babel-preset-es2015": "^6.24.1", + "bootstrap": "^5.3.0", + "buffer": "^6.0.3", + "chart.js": "^3.5.0", + "core-js": "^3.31.1", + "d3": "^7.8.5", + "d3-scale": "^2.0.0", + "deck.gl": "^8.9.19", + "dotenv": "^16.3.1", + "hnswlib-node": "^1.4.2", + "http": "^0.0.1-security", + "https": "^1.0.0", + "langchain": "^0.0.75", + "net": "^1.0.2", + "node-fetch": "^2.6.12", + "node-gyp": "^9.3.0", + "pg": "^8.11.1", + "react": "^18.1.0", + "react-bootstrap": "^2.8.0", + "react-chartjs-2": "^4.1.0", + "react-chat-widget": "^3.1.4", + "react-dom": "^18.1.0", + "react-map-gl": "^5.3.21", + "react-widgets": "^5.8.4", + "sass": "^1.63.6", + "stream": "^0.0.2", + "typeorm": "^0.3.17", + "url": "^0.11.1", + "us": "^2.0.0", + "util": "^0.12.5", + "webpack-node-externals": "^3.0.0", + "zlib": "^1.0.5" }, "devDependencies": { - "@babel/core": "", - "@babel/preset-react": "", - "babel-loader": "", - "cross-env": "", - "typescript": "", - "webpack": "", - "webpack-cli": "", - "webpack-dev-server": "" + "@babel/core": "^7.4.0", + "@babel/preset-react": "^7.0.0", + "babel-loader": "^8.0.5", + "cross-env": "^7.0.3", + "typescript": "^5.1.6", + "webpack": "^4.20.2", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.1" } -} +} \ No newline at end of file From e08fe58194645de924256257e526b64db2af9711 Mon Sep 17 00:00:00 2001 From: cameronrutherford Date: Fri, 10 Nov 2023 00:28:04 +0000 Subject: [PATCH 3/7] Apply pre-commmit fixes --- viz/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viz/package.json b/viz/package.json index 9859f96b..6c8d39cc 100644 --- a/viz/package.json +++ b/viz/package.json @@ -57,4 +57,4 @@ "webpack-cli": "^3.1.2", "webpack-dev-server": "^3.1.1" } -} \ No newline at end of file +} From 0da263896e0e6cf3456b407c591c247275758b78 Mon Sep 17 00:00:00 2001 From: Cameron Rutherford Date: Fri, 10 Nov 2023 08:46:27 -0500 Subject: [PATCH 4/7] Update README.md --- docs/devcontainer/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/devcontainer/README.md b/docs/devcontainer/README.md index ec90b952..ae503b71 100644 --- a/docs/devcontainer/README.md +++ b/docs/devcontainer/README.md @@ -7,6 +7,10 @@ 1. open your local clone of exago in VSCode 1. copy the CoinHSL 2019 tarball to the top level of your exago directory +## Generate the container + +Spack is used to generate the base image, with some sed/echo commands used to fine-tune Dockerfile for use case within a Dev Container. Run `.devcontainer/create_dockerfile.sh` in order to re-generate the Dockerfile. This should be done semi-frequently whenever a spack version or exago version needs updating. + ## Build Container The build info for this container is in `.devcontainer/`. There is a Dockerfile and json file associated with the configuration. From 94056ad9ae8f0f3dc09520fbdb5be46dbadfedde Mon Sep 17 00:00:00 2001 From: "Rutherford, Cameron" Date: Fri, 10 Nov 2023 13:08:11 -0500 Subject: [PATCH 5/7] Add working frontend without ChatGrid. --- .devcontainer/Dockerfile | 2 +- .../create_dockerfile_devcontainer.sh | 1 + .gitignore | 1 + docs/devcontainer/mpi4py-tutorial.ipynb | 35 ++- docs/devcontainer/viz-tutorial.ipynb | 252 ++++-------------- viz/app.js | 36 +-- 6 files changed, 99 insertions(+), 228 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 6b013195..1fbbd26e 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -90,7 +90,7 @@ RUN { \ RUN apt-get -yqq update && apt-get -yqq upgrade \ - && apt-get -yqq install gfortran npm \ + && apt-get -yqq install gfortran npm postgresql \ && rm -rf /var/lib/apt/lists/* ENTRYPOINT [ "/entrypoint.sh" ] CMD [ "/bin/bash" ] diff --git a/.devcontainer/create_dockerfile_devcontainer.sh b/.devcontainer/create_dockerfile_devcontainer.sh index ac3e34b1..2be7ddc9 100755 --- a/.devcontainer/create_dockerfile_devcontainer.sh +++ b/.devcontainer/create_dockerfile_devcontainer.sh @@ -60,6 +60,7 @@ spack: final: - gfortran - npm + - postgresql packages: all: providers: diff --git a/.gitignore b/.gitignore index d572d225..fad03d2d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ package-lock.json config.py spack_* hiop/ +solution diff --git a/docs/devcontainer/mpi4py-tutorial.ipynb b/docs/devcontainer/mpi4py-tutorial.ipynb index 344c0946..4d13039c 100644 --- a/docs/devcontainer/mpi4py-tutorial.ipynb +++ b/docs/devcontainer/mpi4py-tutorial.ipynb @@ -135,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -144,12 +144,12 @@ "text": [ "/home/app\n", "/home/app\n", - "Starting 4 engines with \n", - "100%|██████████| 4/4 [00:05<00:00, 1.48s/engine]\n", - "Stopping engine(s): 1699501347\n", - "engine set stopped 1699501347: {'exit_code': 59, 'pid': 35775, 'identifier': 'ipengine-1699501346-0x7o-1699501347-35554'}\n", + "Starting 1 engines with \n", + "100%|██████████| 1/1 [00:06<00:00, 6.02s/engine]\n", + "Stopping engine(s): 1699625249\n", + "engine set stopped 1699625249: {'exit_code': 15, 'pid': 4000, 'identifier': 'ipengine-1699625248-oea1-1699625249-2295'}\n", "Stopping controller\n", - "Controller stopped: {'exit_code': 0, 'pid': 35742, 'identifier': 'ipcontroller-1699501346-0x7o-35554'}\n" + "Controller stopped: {'exit_code': 0, 'pid': 3989, 'identifier': 'ipcontroller-1699625248-oea1-2295'}\n" ] } ], @@ -163,24 +163,33 @@ "def run_exago():\n", " from mpi4py import MPI\n", " import exago\n", + " import os\n", " comm = MPI.COMM_WORLD\n", " rank = comm.Get_rank()\n", " exago.initialize(\"app\", comm)\n", - " opf = exago.OPFLOW()\n", - " opf.read_mat_power_data('./datafiles/case9/case9mod.m')\n", - " opf.solve()\n", + " scopf = exago.SCOPFLOW()\n", + " path = exago.prefix()\n", + " scopf.set_network_data(\n", + " os.path.join(path, 'share', 'exago', 'datafiles', 'case9', 'case9mod.m'))\n", + " scopf.set_contingency_data(\n", + " os.path.join(path, 'share', 'exago', 'datafiles', 'case9', 'case9.cont'),\n", + " exago.ContingencyFileInputFormat.NATIVE)\n", + " scopf.set_num_contingencies(4)\n", + " # set solver HIOP\n", + " # subproblem solver IPOPT\n", + " scopf.set_solver(\"IPOPT\")\n", + " scopf.solve()\n", + "\n", "\n", " comm.barrier()\n", "\n", - " if rank == 0:\n", - " # opf.print_solution()\n", - " opf.save_solution(exago.OutputFormat.JSON, 'solution')\n", + " scopf.save_solution_all(exago.OutputFormat.JSON, 'solution')\n", "\n", " # exago.finalize()\n", " comm.barrier()\n", "\n", "# request an MPI cluster with 24 engines\n", - "with ipp.Cluster(controller_ip=\"*\", engines=\"mpi\", n=4) as rc:\n", + "with ipp.Cluster(controller_ip=\"*\", engines=\"mpi\", n=1) as rc:\n", " # get a broadcast_view on the cluster which is best\n", " # suited for MPI style computation\n", " view = rc.broadcast_view()\n", diff --git a/docs/devcontainer/viz-tutorial.ipynb b/docs/devcontainer/viz-tutorial.ipynb index d02d562f..1a32379d 100644 --- a/docs/devcontainer/viz-tutorial.ipynb +++ b/docs/devcontainer/viz-tutorial.ipynb @@ -65,146 +65,34 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "v18.13.0\n" - ] - } - ], - "source": [ - "!node --version" - ] - }, - { - "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Downloading and installing node v16.13.0...\n", - "Downloading https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz...\n", - "######################################################################### 100.0% 43.7%\n", - "Computing checksum with sha256sum\n", - "Checksums matched!\n", + "v16.13.0 is already installed.\n", "Now using node v16.13.0 (npm v8.1.0)\n", "Now using node v16.13.0 (npm v8.1.0)\n", "v16.13.0\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency0m\u001b[Kin 1ms\u001b[0m\u001b[K[K\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m^17.0.2\u001b[22m\" from \u001b[1mreact-chat-widget\u001b[22m@\u001b[1m3.1.4\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-chat-widget\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-chat-widget\u001b[22m@\"\u001b[1m^3.1.4\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 27 more (@deck.gl/react, @emotion/react, @emotion/styled, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact\u001b[22m@\"\u001b[1m17.0.2\u001b[22m\" from \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m While resolving: \u001b[1mgeojson\u001b[22m@\u001b[1m0.0.0\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Found: \u001b[1mreact-dom\u001b[22m@\u001b[1m17.0.2\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-dom\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^18.1.0\u001b[22m\" from the root project\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m 10 more (@deck.gl/react, @floating-ui/react-dom, @mui/base, ...)\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m Could not resolve dependency:\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[35mpeer\u001b[39m \u001b[1mreact-dom\u001b[22m@\"\u001b[1m^17.0.2\u001b[22m\" from \u001b[1mreact-chat-widget\u001b[22m@\u001b[1m3.1.4\u001b[22m\u001b[2m\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[2mnode_modules/react-chat-widget\u001b[22m\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m\u001b[35m\u001b[0m \u001b[1mreact-chat-widget\u001b[22m@\"\u001b[1m^3.1.4\u001b[22m\" from the root project\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mERESOLVE\u001b[0m overriding peer dependency0m ROOT quickselect@1.1.1 OK\u001b[0m\u001b[Km\u001b[K\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m Unsupported engine {midealTree:node_modules/micromat\u001b[0m\u001b[Km\u001b[Kenc\u001b[0m\u001b[K\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m package: 'langchain@0.0.75',\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m required: { node: '>=18' },\n", + "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m Unsupported engine {ompleted in 1ms\u001b[0m\u001b[K[K\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m package: '@fortaine/fetch-event-source@3.0.6',\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m required: { node: '>=16.15' },\n", "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m current: { node: 'v16.13.0', npm: '8.1.0' }\n", "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m }\n", "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m Unsupported engine {\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m package: '@fortaine/fetch-event-source@3.0.6',\n", - "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m required: { node: '>=16.15' },\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m package: 'langchain@0.0.75',\n", + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m required: { node: '>=18' },\n", "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m current: { node: 'v16.13.0', npm: '8.1.0' }\n", "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mEBADENGINE\u001b[0m }\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m urix@0.1.0: Please see https://github.com/lydell/urix#deprecated\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated[0m\u001b[K\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fsK\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies\n", - "\u001b[K\u001b[?25h\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mdeprecated\u001b[0m chokidar@2.1.8: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies\n", - "\u001b[K\u001b[?25hm##################\u001b[0m⸩ ⠸ reify:chart.js: \u001b[32;40mhttp\u001b[0m \u001b[35mfetch\u001b[0m GET 200 https://registry.npmj\u001b[0m\u001b[Ky.npmj\u001b[0m\u001b[Kdar\u001b[0m\u001b[K\n", - "added 485 packages, removed 180 packages, changed 209 packages, and audited 1436 packages in 2m\n", + "\u001b[K\u001b[?25hm##################\u001b[0m⸩ ⠴ reify:fsevents: \u001b[32;40mtiming\u001b[0m \u001b[35mreifyNode:node_modules/webpack-de\u001b[0m\u001b[Ks\u001b[0m\u001b[K0ms\u001b[0m\u001b[K\n", + "up to date, audited 1436 packages in 5s\n", "\n", "91 packages are looking for funding\n", " run `npm fund` for details\n", "\n", - "\u001b[31m\u001b[1m13\u001b[22m\u001b[39m vulnerabilities (1 \u001b[1mlow\u001b[22m, 3 \u001b[33m\u001b[1mmoderate\u001b[22m\u001b[39m, 9 \u001b[31m\u001b[1mhigh\u001b[22m\u001b[39m)\n", + "\u001b[31m\u001b[1m16\u001b[22m\u001b[39m vulnerabilities (1 \u001b[1mlow\u001b[22m, 6 \u001b[33m\u001b[1mmoderate\u001b[22m\u001b[39m, 9 \u001b[31m\u001b[1mhigh\u001b[22m\u001b[39m)\n", "\n", "To address issues that do not require attention, run:\n", " npm audit fix\n", @@ -220,64 +108,48 @@ "\u001b[1m10% building 1/1 modules 0 active\u001b[39m\u001b[22m\u001b[34mℹ\u001b[39m \u001b[90m「wds」\u001b[39m: Project is running at \u001b[1m\u001b[34mhttp://localhost:8080/\u001b[39m\u001b[22m\n", "\u001b[34mℹ\u001b[39m \u001b[90m「wds」\u001b[39m: webpack output is served from \u001b[1m\u001b[34m/\u001b[39m\u001b[22m\n", "\u001b[34mℹ\u001b[39m \u001b[90m「wds」\u001b[39m: Content not from webpack is served from \u001b[1m\u001b[34m/home/app/viz\u001b[39m\u001b[22m\n", - "\u001b[1m11% building 13/16 modules 3 active ...r/client/utils/getCurrentScriptSource.js\u001b[39m\u001b[22m\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: wait until bundle finished: /\n", - "\u001b[1m69% building 9250/9296 modules 46 active ...s/@mui/icons-material/esm/Drafts.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: wait until bundle finished: /\n", - "\u001b[31m✖\u001b[39m \u001b[90m「wdm」\u001b[39m: Hash: \u001b[1maa27445843665b9b345f\u001b[39m\u001b[22m2m39m\u001b[22mm.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2Ks 78 active ...ial/esm/ArrowCircleDownTwoTone.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\n", + "\u001b[1m10% building 1/4 modules 3 active .../lib/index.js??ref--4!/home/app/viz/app.js\u001b[39m\u001b[22m\u001b[2K\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: wait until bundle finished: /\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Hash: \u001b[1mb687832adda5702a5eee\u001b[39m\u001b[22m2m39m\u001b[22mn.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\n", "Version: webpack \u001b[1m4.47.0\u001b[39m\u001b[22m\n", - "Time: \u001b[1m111363\u001b[39m\u001b[22mms\n", - "Built at: 11/10/2023 \u001b[1m12:21:58 AM\u001b[39m\u001b[22m\n", + "Time: \u001b[1m142430\u001b[39m\u001b[22mms\n", + "Built at: 11/10/2023 \u001b[1m2:14:39 PM\u001b[39m\u001b[22m\n", " \u001b[1mAsset\u001b[39m\u001b[22m \u001b[1mSize\u001b[39m\u001b[22m \u001b[1mChunks\u001b[39m\u001b[22m \u001b[1m\u001b[39m\u001b[22m \u001b[1m\u001b[39m\u001b[22m\u001b[1mChunk Names\u001b[39m\u001b[22m\n", - " \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m 45.7 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m app\n", - "\u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m 20.8 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [dev]\u001b[39m\u001b[22m app\n", + " \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m 45.6 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m app\n", + "\u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m 20.7 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [dev]\u001b[39m\u001b[22m app\n", "Entrypoint \u001b[1mapp\u001b[39m\u001b[22m = \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m \u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m\n", "[0] \u001b[1mmulti (webpack)-dev-server/client?http://localhost:8080 (webpack)/hot/dev-server.js ./app.js\u001b[39m\u001b[22m 52 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./app.js\u001b[39m\u001b[22m] 44.1 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./module_casedata.js\u001b[39m\u001b[22m] 354 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@deck.gl/core/dist/esm/index.js\u001b[39m\u001b[22m] 3.49 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@deck.gl/extensions/dist/esm/index.js\u001b[39m\u001b[22m] 795 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", - "[\u001b[1m./node_modules/@deck.gl/layers/dist/esm/index.js\u001b[39m\u001b[22m] 1.14 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@deck.gl/react/dist/esm/index.js\u001b[39m\u001b[22m] 115 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", - "[\u001b[1m./node_modules/@flowmap.gl/layers/dist/index.js\u001b[39m\u001b[22m] 1.56 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@mui/icons-material/ArrowDropDown.js\u001b[39m\u001b[22m] 492 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@mui/icons-material/HomeOutlined.js\u001b[39m\u001b[22m] 554 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@mui/icons-material/ThreeSixtyOutlined.js\u001b[39m\u001b[22m] 670 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@mui/icons-material/esm/index.js\u001b[39m\u001b[22m] 688 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[\u001b[1m./node_modules/@mui/material/Accordion/index.js\u001b[39m\u001b[22m] 155 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/material/AccordionDetails/index.js\u001b[39m\u001b[22m] 183 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + "[\u001b[1m./node_modules/@mui/material/AccordionSummary/index.js\u001b[39m\u001b[22m] 183 bytes {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[./node_modules/webpack-dev-server/client/index.js?http://localhost:8080] \u001b[1m(webpack)-dev-server/client?http://localhost:8080\u001b[39m\u001b[22m 4.29 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", "[./node_modules/webpack/hot/dev-server.js] \u001b[1m(webpack)/hot/dev-server.js\u001b[39m\u001b[22m 1.59 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", + " + 12854 hidden modules\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Compiled successfully.\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Compiling...\n", + "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Hash: \u001b[1mf44406baf0346ed8ad10\u001b[39m\u001b[22m2m39m\u001b[22mp.js\u001b[39m\u001b[22m\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\u001b[2K\n", + "Version: webpack \u001b[1m4.47.0\u001b[39m\u001b[22m\n", + "Time: \u001b[1m14928\u001b[39m\u001b[22mms\n", + "Built at: 11/10/2023 \u001b[1m2:16:46 PM\u001b[39m\u001b[22m\n", + " \u001b[1mAsset\u001b[39m\u001b[22m \u001b[1mSize\u001b[39m\u001b[22m \u001b[1mChunks\u001b[39m\u001b[22m \u001b[1m\u001b[39m\u001b[22m \u001b[1m\u001b[39m\u001b[22m\u001b[1mChunk Names\u001b[39m\u001b[22m\n", + " \u001b[1m\u001b[32mapp.b687832adda5702a5eee.hot-update.js\u001b[39m\u001b[22m 58.3 KiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [immutable] [hmr]\u001b[39m\u001b[22m app\n", + "\u001b[1m\u001b[32mapp.b687832adda5702a5eee.hot-update.js.map\u001b[39m\u001b[22m 92.5 KiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [dev]\u001b[39m\u001b[22m app\n", + " \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m 45.6 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted]\u001b[39m\u001b[22m app\n", + " \u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m 20.7 MiB \u001b[1mapp\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [dev]\u001b[39m\u001b[22m app\n", + " \u001b[1m\u001b[32mb687832adda5702a5eee.hot-update.json\u001b[39m\u001b[22m 45 bytes \u001b[1m\u001b[39m\u001b[22m \u001b[1m\u001b[32m[emitted] [immutable] [hmr]\u001b[39m\u001b[22m \n", + "Entrypoint \u001b[1mapp\u001b[39m\u001b[22m = \u001b[1m\u001b[32mapp.js\u001b[39m\u001b[22m \u001b[1m\u001b[32mapp.b687832adda5702a5eee.hot-update.js\u001b[39m\u001b[22m \u001b[1m\u001b[32mapp.js.map\u001b[39m\u001b[22m \u001b[1m\u001b[32mapp.b687832adda5702a5eee.hot-update.js.map\u001b[39m\u001b[22m\n", + "[\u001b[1m./app.js\u001b[39m\u001b[22m] 44.1 KiB {\u001b[1m\u001b[33mapp\u001b[39m\u001b[22m}\u001b[1m\u001b[32m [built]\u001b[39m\u001b[22m\n", " + 12868 hidden modules\n", - "\n", - "\u001b[1m\u001b[31mERROR in ./node_modules/@flowmap.gl/layers/dist/FlowmapLayer.js 49:40\n", - "Module parse failed: Unexpected token (49:40)\n", - "You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n", - "| if (onHover) {\n", - "| this._getFlowmapLayerPickingInfo(info).then((info) => {\n", - "> if ((this.state?.lastHoverTime ?? 0) <= startTime) {\n", - "| this.setState({ pickingInfo: info });\n", - "| onHover(info, event);\n", - " @ ./node_modules/@flowmap.gl/layers/dist/index.js 9:0-57 9:0-57\n", - " @ ./app.js\u001b[39m\u001b[22m\n", - "\n", - "\u001b[1m\u001b[31mERROR in ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js 76:29\n", - "Module parse failed: Unexpected token (76:29)\n", - "You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n", - "| if (changeFlags.extensionsChanged) {\n", - "| const { gl } = this.context;\n", - "> this.state.model?.delete();\n", - "| this.state.model = this._getModel(gl);\n", - "| this.getAttributeManager().invalidateAll();\n", - " @ ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js 6:0-62 7:15-37\n", - " @ ./node_modules/@flowmap.gl/layers/dist/index.js\n", - " @ ./app.js\u001b[39m\u001b[22m\n", - "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Failed to compile.\n" - ] - }, - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." + "\u001b[34mℹ\u001b[39m \u001b[90m「wdm」\u001b[39m: Compiled successfully.\n", + "^C\n" ] } ], @@ -289,30 +161,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I seem to be stuck... Let's try and capture some more debugging information really quick." + "I seem to be stuck... Let's try and capture some more debugging information really quick.\n", + "\n", + "# ChatGrid" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: pip in /usr/local/lib/python3.11/site-packages (23.2.1)\n", - "Collecting pip\n", - " Obtaining dependency information for pip from https://files.pythonhosted.org/packages/47/6a/453160888fab7c6a432a6e25f8afe6256d0d9f2cbd25971021da6491d899/pip-23.3.1-py3-none-any.whl.metadata\n", - " Downloading pip-23.3.1-py3-none-any.whl.metadata (3.5 kB)\n", - "Downloading pip-23.3.1-py3-none-any.whl (2.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", - "\u001b[?25hInstalling collected packages: pip\n", - " Attempting uninstall: pip\n", - " Found existing installation: pip 23.2.1\n", - " Uninstalling pip-23.2.1:\n", - " Successfully uninstalled pip-23.2.1\n", - "Successfully installed pip-23.3.1\n", + "Requirement already satisfied: pip in /usr/local/lib/python3.11/site-packages (23.3.1)\n", "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n", "\u001b[0mRequirement already satisfied: aiohttp==3.8.4 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 1)) (3.8.4)\n", "Requirement already satisfied: aiosignal==1.3.1 in /usr/local/lib/python3.11/site-packages (from -r requirements.txt (line 2)) (1.3.1)\n", @@ -399,16 +262,24 @@ "\u001b[33mPress CTRL+C to quit\u001b[0m\n", " * Restarting with stat\n", " * Debugger is active!\n", - " * Debugger PIN: 110-927-162\n", - "127.0.0.1 - - [09/Nov/2023 02:55:53] \"\u001b[33mGET / HTTP/1.1\u001b[0m\" 404 -\n", - "127.0.0.1 - - [09/Nov/2023 02:56:04] \"\u001b[33mGET / HTTP/1.1\u001b[0m\" 404 -\n", - "127.0.0.1 - - [09/Nov/2023 02:56:06] \"\u001b[33mGET / HTTP/1.1\u001b[0m\" 404 -\n", - "^C\n" + " * Debugger PIN: 103-781-530\n", + "127.0.0.1 - - [10/Nov/2023 04:03:42] \"\u001b[33mGET /?vscodeBrowserReqId=1699589022090 HTTP/1.1\u001b[0m\" 404 -\n" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details." ] } ], "source": [ - "!cd ../../viz/backend && sudo python3 -m pip install --upgrade pip && sudo python3 -m pip install -r requirements.txt && PYTHONPATH=/usr/local/lib/python3.11/site-packages python3 server.py" + "!cd ../../viz/backend && \\\n", + " sudo python3 -m pip install --upgrade pip && \\\n", + " sudo python3 -m pip install -r requirements.txt && \\\n", + " PYTHONPATH=/usr/local/lib/python3.11/site-packages python3 server.py" ] }, { @@ -422,20 +293,9 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\n", - " File \"/home/app/viz/backend/server.py\", line 2, in \n", - " from flask import Flask\n", - "ModuleNotFoundError: No module named 'flask'\n" - ] - } - ], + "outputs": [], "source": [ "!cd ../../viz/backend && python3 server.py" ] diff --git a/viz/app.js b/viz/app.js index c4786dfd..dc5c8597 100644 --- a/viz/app.js +++ b/viz/app.js @@ -4,7 +4,7 @@ import { StaticMap, Popup, Marker, _MapContext as MapContext, FullscreenControl, import { WebMercatorViewport } from '@deck.gl/core'; import DeckGL from '@deck.gl/react'; // import FlowMapLayer from '@flowmap.gl/core' -import { FlowmapLayer } from '@flowmap.gl/layers' +// import { FlowmapLayer } from '@flowmap.gl/layers' import { GeoJsonLayer, ColumnLayer, PolygonLayer } from '@deck.gl/layers'; import { DataFilterExtension } from '@deck.gl/extensions'; import Checkbox from '@mui/material/Checkbox'; @@ -739,23 +739,23 @@ export default function App({ refdata = data, refflowdata = flowdata, ggdata = g const layers = [ - new FlowmapLayer({ - id: 'my-flowmap-layer', - data: flowdata, - visible: flowlayeractive, - animationEnabled: true, //control the animation effect of flow layer - colorScheme: ["rgb(0,0,255)","rgb(255,0,255)"], - // darkMode: true, - // clusteringEnabled: false, //control the aggregate effect of flow layer - // adaptiveScalesEnabled: false, - getFlowMagnitude: (flow) => flow.count, - getFlowOriginId: (flow) => flow.origin, - getFlowDestId: (flow) => flow.dest, - getLocationId: (loc) => loc.id, - getLocationLat: (loc) => loc.lat, - getLocationLon: (loc) => loc.lon, - - }), + // new FlowmapLayer({ + // id: 'my-flowmap-layer', + // data: flowdata, + // visible: flowlayeractive, + // animationEnabled: true, //control the animation effect of flow layer + // colorScheme: ["rgb(0,0,255)","rgb(255,0,255)"], + // // darkMode: true, + // // clusteringEnabled: false, //control the aggregate effect of flow layer + // // adaptiveScalesEnabled: false, + // getFlowMagnitude: (flow) => flow.count, + // getFlowOriginId: (flow) => flow.origin, + // getFlowDestId: (flow) => flow.dest, + // getLocationId: (loc) => loc.id, + // getLocationLat: (loc) => loc.lat, + // getLocationLon: (loc) => loc.lon, + // + // }), new GeoJsonLayer({ id: 'geojson', From d6644a4b0f5d6854500f0ef19cd9e9108f3e820c Mon Sep 17 00:00:00 2001 From: Jaelyn Litzinger <93339979+jaelynlitz@users.noreply.github.com> Date: Fri, 10 Nov 2023 15:25:58 -0800 Subject: [PATCH 6/7] typo [skip-ci] --- docs/devcontainer/mpi4py-tutorial.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/devcontainer/mpi4py-tutorial.ipynb b/docs/devcontainer/mpi4py-tutorial.ipynb index 4d13039c..4ceaec4b 100644 --- a/docs/devcontainer/mpi4py-tutorial.ipynb +++ b/docs/devcontainer/mpi4py-tutorial.ipynb @@ -6,7 +6,7 @@ "source": [ "# ExaGO mpi4py Jupyter Tutorial\n", "\n", - "We have a Python wrapper for ExaGO installed in this container through sapck. You can view the Dockerfile in `.devcontainer/Dockerfile`. See the Appendix for more details.\n", + "We have a Python wrapper for ExaGO installed in this container through spack. You can view the Dockerfile in `.devcontainer/Dockerfile`. See the Appendix for more details.\n", "\n", "This is different to the base tutorial in that we include some additional information about MPI configuration." ] From 340463bba573d097a5db4b325b4614f787476eba Mon Sep 17 00:00:00 2001 From: Jaelyn Litzinger Date: Fri, 10 Nov 2023 15:38:19 -0800 Subject: [PATCH 7/7] added some notes from code review --- docs/devcontainer/viz-tutorial.ipynb | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/devcontainer/viz-tutorial.ipynb b/docs/devcontainer/viz-tutorial.ipynb index 1a32379d..18c3afd8 100644 --- a/docs/devcontainer/viz-tutorial.ipynb +++ b/docs/devcontainer/viz-tutorial.ipynb @@ -39,10 +39,11 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "TODO: Going to let Shri fill the details in here, as likely we don't want people churning large data sets in a small demo, and we can include pre-generated data I would hope..." + "TODO: Going to let Shri fill the details in here, as likely we don't want people churning large data sets in a small demo, and we can include pre-generated data I would hope... include what gic is " ] }, { @@ -55,12 +56,13 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Visualization\n", "\n", - "Launch through shell commands or with the following shell command:" + "Launch the visualization webpage through shell commands or with the following shell command:" ] }, { @@ -518,9 +520,9 @@ ], "metadata": { "kernelspec": { - "display_name": "ExaGO w/ MPI", + "display_name": "Python 3", "language": "python", - "name": "py311-mpi4py-exago" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -532,7 +534,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.11.6 (main, Nov 1 2023, 10:08:51) [GCC 12.2.0]" + }, + "vscode": { + "interpreter": { + "hash": "949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1" + } } }, "nbformat": 4,