diff --git a/docker/cpu-full/Dockerfile b/docker/cpu-full/Dockerfile index 7442121..baa1973 100644 --- a/docker/cpu-full/Dockerfile +++ b/docker/cpu-full/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 +FROM nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 MAINTAINER Peter Chang # --- Copy files @@ -6,12 +6,15 @@ COPY environment.yml .tmux.conf .zshrc vim/.vimrc /root/ COPY wheels /root/wheels COPY vim/colors /root/.vim/colors +ENV DEBIAN_FRONTEND=noninteractive + # --- System packages -RUN apt-get update && apt-get install -y wget curl bzip2 vim silversearcher-ag tmux zsh git zip unzip build-essential && \ - apt-get install -y net-tools iputils-ping netcat && \ +RUN apt-get update && apt-get install -y wget curl bzip2 vim silversearcher-ag tmux zsh git zip unzip build-essential sudo && \ + apt-get install -y net-tools iputils-ping netcat openssh-server rsync && \ apt-get install -y default-jre && \ - apt-get install -y ranger caca-utils highlight atool w3m poppler-utils mediainfo && \ + apt-get install -y ranger caca-utils highlight atool w3m poppler-utils lm-sensors && \ apt-get install -y python3-openslide && \ + curl https://rclone.org/install.sh | bash && \ # --- dcm4che wget -O dcm4che.zip https://www.dropbox.com/s/zl7adkprqeebvnh/dcm4che.zip?dl=1 && \ @@ -53,6 +56,7 @@ ENV TERM=xterm-256color ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -ENV XDG_RUNTIME_DIR=/tmp/runtime-root +ENV XDG_RUNTIME_DIR=/tmp ENV QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb ENV DCM4CHE_HOME=/usr/local/dcm4che +ENV DEBIAN_FRONTEND= diff --git a/docker/cpu-full/environment.yml b/docker/cpu-full/environment.yml index 9aff581..bafa413 100644 --- a/docker/cpu-full/environment.yml +++ b/docker/cpu-full/environment.yml @@ -1,229 +1,393 @@ name: jarvis channels: - - simpleitk + - pytorch - anaconda - conda-forge - defaults dependencies: - - _libgcc_mutex=0.1=main - - alembic=1.4.3=pyh9f0ad1d_0 - - argon2-cffi=20.1.0=py36h8c4c3a4_1 - - async_generator=1.10=py_0 - - attrs=20.2.0=pyh9f0ad1d_0 - - backcall=0.2.0=py_0 - - blas=1.0=openblas - - bleach=3.2.1=pyh9f0ad1d_0 - - blinker=1.4=py_1 - - brotlipy=0.7.0=py36h8c4c3a4_1000 - - c-ares=1.16.1=h516909a_3 - - ca-certificates=2020.7.22=0 - - certifi=2020.6.20=py36_0 - - certipy=0.1.3=py_0 - - chardet=3.0.4=py36h9f0ad1d_1007 - - click=7.1.2=py_0 - - cloudpickle=1.6.0=py_0 - - configurable-http-proxy=4.0.1=node6_0 - - cycler=0.10.0=py36_0 - - cython=0.29.21=py36he6710b0_0 - - cytoolz=0.10.1=py36h7b6447c_0 - - dask-core=2.27.0=py_0 - - dbus=1.13.16=hb2f20db_0 - - decorator=4.4.2=py_0 - - defusedxml=0.6.0=py_0 - - dill=0.3.2=py_0 - - entrypoints=0.3=py36h9f0ad1d_1001 - - expat=2.2.9=he1b5a44_2 - - flask=1.1.2=py_0 - - flask-socketio=4.3.1=pyh9f0ad1d_0 - - fontconfig=2.13.0=h9420a91_0 - - freetype=2.10.2=h5ab3b9f_0 - - gdcm=2.8.9=py36h71b2a6d_0 - - glib=2.65.0=h3eb4bd4_0 - - gst-plugins-base=1.14.0=hbbd80ab_1 - - gstreamer=1.14.0=hb31296c_0 - - h5py=2.10.0=py36hd6299e0_1 - - hdf5=1.10.6=nompi_h3c11f04_101 - - icu=58.2=he6710b0_3 - - idna=2.10=pyh9f0ad1d_0 - - imageio=2.9.0=py_0 - - importlib_metadata=1.7.0=0 - - ipdb=0.13.3=pyh9f0ad1d_0 - - ipykernel=5.3.4=py36h95af2a2_0 - - ipython=7.16.1=py36h5ca1d4c_0 - - ipython_genutils=0.2.0=py36_0 - - itsdangerous=1.1.0=py36_0 - - jedi=0.17.2=py36_0 - - jinja2=2.11.2=pyh9f0ad1d_0 - - joblib=0.16.0=py_0 - - jpeg=9d=h516909a_0 - - json-c=0.13.1=hbfbb72e_1002 - - json5=0.9.5=pyh9f0ad1d_0 - - jsonschema=3.2.0=py36h9f0ad1d_1 - - jupyter_client=6.1.7=py_0 - - jupyter_core=4.6.3=py36h9f0ad1d_1 - - jupyter_telemetry=0.0.5=py_0 - - jupyterhub=1.0.0=py36_0 - - jupyterhub-base=1.1.0=py36h9f0ad1d_4 - - jupyterlab=2.2.8=py_0 - - jupyterlab_pygments=0.1.1=pyh9f0ad1d_0 - - jupyterlab_server=1.2.0=py_0 - - kiwisolver=1.2.0=py36hfd86e86_0 - - krb5=1.17.1=hfafb76e_3 - - lcms2=2.11=h396b838_0 - - ld_impl_linux-64=2.33.1=h53a641e_7 - - libblas=3.8.0=17_openblas - - libcblas=3.8.0=17_openblas - - libcurl=7.71.1=hcdd3856_6 - - libedit=3.1.20191231=h14c3975_1 - - libev=4.33=h516909a_1 - - libffi=3.3=he6710b0_2 - - libgcc=7.2.0=h69d50b8_2 - - libgcc-ng=9.1.0=hdf63c60_0 - - libgfortran-ng=7.5.0=hdf63c60_16 - - libjpeg-turbo=2.0.3=h516909a_1 - - liblapack=3.8.0=17_openblas - - libnghttp2=1.41.0=h8cfc5f6_2 - - libopenblas=0.3.10=pthreads_hb3c22a3_4 - - libpng=1.6.37=hed695b0_2 - - libsodium=1.0.18=h516909a_0 - - libssh2=1.9.0=hab1572f_5 - - libstdcxx-ng=9.1.0=hdf63c60_0 - - libtiff=4.1.0=hc7e4089_6 - - libuuid=1.0.3=h1bed415_2 - - libuv=1.39.0=h516909a_0 - - libwebp-base=1.1.0=h516909a_3 - - libxcb=1.14=h7b6447c_0 - - libxml2=2.9.10=he19cac6_1 - - lz4-c=1.9.2=he1b5a44_3 - - mako=1.1.3=pyh9f0ad1d_0 - - markupsafe=1.1.1=py36h8c4c3a4_1 - - matplotlib=3.3.1=0 - - matplotlib-base=3.3.1=py36h817c723_0 - - mistune=0.8.4=py36h8c4c3a4_1001 - - nbclient=0.5.0=py_0 - - nbconvert=6.0.6=py36h9f0ad1d_0 - - nbformat=5.0.7=py_0 - - ncurses=6.2=he6710b0_1 - - nest-asyncio=1.4.0=py_1 - - networkx=2.5=py_0 - - nibabel=3.1.1=py_0 - - nodejs=6.11.2=h3db8ef7_0 - - notebook=6.1.4=py36h9f0ad1d_0 - - oauthlib=3.0.1=py_0 - - olefile=0.46=py36_0 - - openjpeg=2.3.1=h981e76c_3 - - openssl=1.1.1g=h7b6447c_0 - - packaging=20.4=pyh9f0ad1d_0 - - pamela=1.0.0=py_0 - - pandas=1.1.1=py36he6710b0_0 - - pandoc=2.10.1=h516909a_0 - - pandocfilters=1.4.2=py_1 - - parso=0.7.0=py_0 - - pcre=8.44=he6710b0_0 - - pexpect=4.8.0=py36_0 - - pickleshare=0.7.5=py36_0 - - pillow=7.2.0=py36hb39fc2d_0 - - prometheus_client=0.8.0=pyh9f0ad1d_0 - - prompt-toolkit=3.0.7=py_0 - - ptyprocess=0.6.0=py36_0 - - pycparser=2.20=pyh9f0ad1d_2 - - pycurl=7.43.0.5=py36h2e6c563_2 - - pydicom=2.0.0=pyh9f0ad1d_0 - - pygments=2.7.1=py_0 - - pyjwt=1.7.1=py_0 - - pymongo=3.11.0=py36he6710b0_0 - - pyopenssl=19.1.0=py_1 - - pyparsing=2.4.7=pyh9f0ad1d_0 - - pyqt=5.9.2=py36h22d08a2_1 - - pyrsistent=0.17.3=py36h8c4c3a4_0 - - pysocks=1.7.1=py36h9f0ad1d_1 - - python=3.6.12=hcff3b4d_2 - - python-dateutil=2.8.1=py_0 - - python-editor=1.0.4=py_0 - - python-engineio=3.11.2=py_0 - - python-json-logger=0.1.11=py_0 - - python-socketio=4.5.1=pyh9f0ad1d_0 - - python_abi=3.6=1_cp36m - - pytz=2020.1=py_0 - - pywavelets=1.1.1=py36h7b6447c_0 - - pyyaml=5.3.1=py36h7b6447c_1 - - pyzmq=19.0.2=py36h9947dbf_0 - - qt=5.9.7=h5867ecd_1 - - readline=8.0=h7b6447c_0 - - requests=2.24.0=py_0 - - ruamel.yaml=0.16.12=py36h8c4c3a4_0 - - ruamel.yaml.clib=0.2.2=py36h8c4c3a4_0 - - scikit-image=0.16.2=py36h0573a6f_0 - - scikit-learn=0.23.2=py36h0573a6f_0 - - seaborn=0.11.0=py_0 - - send2trash=1.5.0=py_0 - - setuptools=45.0.0=py36_1 - - simpleitk=2.0.0=py36hf484d3e_0 - - sip=4.19.24=py36he6710b0_0 - - six=1.15.0=py_0 - - sqlalchemy=1.3.19=py36h8c4c3a4_0 - - sqlite=3.33.0=h62c20be_0 - - terminado=0.9.1=py36h9f0ad1d_0 - - testpath=0.4.4=py_0 - - threadpoolctl=2.1.0=pyh5ca1d4c_0 - - tk=8.6.10=hbc83047_0 - - toolz=0.10.0=py_0 - - tornado=6.0.4=py36h8c4c3a4_1 - - traitlets=4.3.3=py36_0 - - urllib3=1.25.10=py_0 - - wcwidth=0.2.5=py_0 - - werkzeug=1.0.1=py_0 - - wheel=0.35.1=py_0 - - xlrd=1.2.0=py36_0 - - xz=5.2.5=h7b6447c_0 + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - aiofiles=22.1.0=py310h06a4308_0 + - aiosqlite=0.18.0=py310h06a4308_0 + - alembic=1.8.1=py310h06a4308_0 + - anyio=3.5.0=py310h06a4308_0 + - argon2-cffi=21.3.0=pyhd3eb1b0_0 + - argon2-cffi-bindings=21.2.0=py310h7f8727e_0 + - asttokens=2.0.5=pyhd3eb1b0_0 + - async_generator=1.10=pyhd3eb1b0_0 + - attrs=23.1.0=py310h06a4308_0 + - babel=2.11.0=py310h06a4308_0 + - backcall=0.2.0=pyhd3eb1b0_0 + - beautifulsoup4=4.12.2=py310h06a4308_0 + - bidict=0.21.2=pyhd3eb1b0_0 + - blas=1.0=mkl + - bleach=4.1.0=pyhd3eb1b0_0 + - blinker=1.6.2=py310h06a4308_0 + - blosc=1.21.3=h6a678d5_0 + - bottleneck=1.3.5=py310ha9d4c09_0 + - brotli=1.0.9=h5eee18b_7 + - brotli-bin=1.0.9=h5eee18b_7 + - brotli-python=1.0.9=py310h6a678d5_7 + - brunsli=0.1=h2531618_0 + - bzip2=1.0.8=h7b6447c_0 + - c-ares=1.19.1=h5eee18b_0 + - ca-certificates=2023.12.12=h06a4308_0 + - cairo=1.16.0=h19f5f5c_2 + - certifi=2023.11.17=py310h06a4308_0 + - certipy=0.1.3=pyhd3eb1b0_0 + - cffi=1.16.0=py310h5eee18b_0 + - cfitsio=3.470=h5893167_7 + - charls=2.2.0=h2531618_0 + - charset-normalizer=2.0.4=pyhd3eb1b0_0 + - click=8.1.7=py310h06a4308_0 + - cloudpickle=2.2.1=py310h06a4308_0 + - cmarkgfm=2022.10.27=py310h5eee18b_0 + - comm=0.1.2=py310h06a4308_0 + - configurable-http-proxy=4.6.0=h06a4308_0 + - contourpy=1.0.5=py310hdb19cb5_0 + - cpuonly=2.0=0 + - cryptography=41.0.3=py310h130f0dd_0 + - cycler=0.11.0=pyhd3eb1b0_0 + - cython=3.0.0=py310h5eee18b_0 + - cytoolz=0.12.0=py310h5eee18b_0 + - czifile=2019.7.2=pyh9f0ad1d_0 + - dask-core=2023.6.0=py310h06a4308_0 + - dbus=1.13.18=hb2f20db_0 + - debugpy=1.6.7=py310h6a678d5_0 + - decorator=5.1.1=pyhd3eb1b0_0 + - defusedxml=0.7.1=pyhd3eb1b0_0 + - dill=0.3.7=py310h06a4308_0 + - docutils=0.18.1=py310h06a4308_3 + - eigen=3.3.7=hd09550d_1 + - entrypoints=0.4=py310h06a4308_0 + - exceptiongroup=1.0.4=py310h06a4308_0 + - executing=0.8.3=pyhd3eb1b0_0 + - expat=2.5.0=h6a678d5_0 + - ffmpeg=4.3.2=h37c90e5_3 + - fftw=3.3.10=nompi_hc118613_108 + - filelock=3.13.1=py310h06a4308_0 + - flask=2.2.2=py310h06a4308_0 + - flask-socketio=5.3.1=py310h06a4308_0 + - fontconfig=2.13.1=h6c09931_0 + - fonttools=4.25.0=pyhd3eb1b0_0 + - freeglut=3.2.2=hac7e632_2 + - freetype=2.12.1=h4a9f257_0 + - fsspec=2023.9.2=py310h06a4308_0 + - gdcm=2.8.9=py310hdfb500c_7 + - gdk-pixbuf=2.42.10=h5eee18b_0 + - gettext=0.21.0=hf68c758_0 + - giflib=5.2.1=h5eee18b_3 + - glib=2.72.1=h6239696_0 + - glib-tools=2.72.1=h6239696_0 + - gmp=6.2.1=h295c915_3 + - gmpy2=2.1.2=py310heeb90bb_0 + - gnutls=3.6.15=he1e5248_0 + - graphite2=1.3.14=h295c915_1 + - greenlet=2.0.1=py310h6a678d5_0 + - gst-plugins-base=1.18.5=hc549b11_0 + - gstreamer=1.18.5=ha1a6a79_0 + - h5py=3.9.0=py310he06866b_0 + - harfbuzz=3.1.1=h83ec7ef_0 + - hdf5=1.12.1=h70be1eb_2 + - icu=68.2=h9c3ff4c_0 + - idna=3.4=py310h06a4308_0 + - imagecodecs=2021.8.26=py310hecf7e94_1 + - imagecodecs-lite=2019.12.3=py310h1f7b6fc_7 + - imageio=2.31.4=py310h06a4308_0 + - importlib-metadata=6.0.0=py310h06a4308_0 + - importlib_metadata=6.0.0=hd3eb1b0_0 + - importlib_resources=6.1.0=py310h06a4308_0 + - intel-openmp=2023.1.0=hdb19cb5_46306 + - ipdb=0.13.13=pyhd8ed1ab_0 + - ipykernel=6.25.0=py310h2f386ee_0 + - ipython=8.15.0=py310h06a4308_0 + - ipython_genutils=0.2.0=pyhd3eb1b0_1 + - itsdangerous=2.0.1=pyhd3eb1b0_0 + - jaraco.classes=3.2.1=pyhd3eb1b0_0 + - jasper=2.0.33=h0ff4b12_1 + - jeepney=0.7.1=pyhd3eb1b0_0 + - jinja2=3.1.2=py310h06a4308_0 + - joblib=1.2.0=py310h06a4308_0 + - jpeg=9e=h5eee18b_1 + - json-c=0.16=h5eee18b_0 + - json5=0.9.6=pyhd3eb1b0_0 + - jsonschema=4.19.2=py310h06a4308_0 + - jsonschema-specifications=2023.7.1=py310h06a4308_0 + - jupyter_client=7.4.9=py310h06a4308_0 + - jupyter_core=5.5.0=py310h06a4308_0 + - jupyter_events=0.8.0=py310h06a4308_0 + - jupyter_server=2.10.0=py310h06a4308_0 + - jupyter_server_fileid=0.9.0=py310h06a4308_0 + - jupyter_server_terminals=0.4.4=py310h06a4308_1 + - jupyter_server_ydoc=0.8.0=py310h06a4308_1 + - jupyter_telemetry=0.1.0=py_0 + - jupyter_ydoc=0.2.4=py310h06a4308_0 + - jupyterhub=4.0.2=py310h06a4308_0 + - jupyterhub-base=4.0.2=py310h06a4308_0 + - jupyterlab=3.6.3=py310h06a4308_0 + - jupyterlab_pygments=0.2.2=py310h06a4308_0 + - jupyterlab_server=2.25.1=py310h06a4308_0 + - jxrlib=1.1=h7b6447c_2 + - keyring=23.13.1=py310h06a4308_0 + - kiwisolver=1.4.4=py310h6a678d5_0 + - krb5=1.19.4=h568e23c_0 + - lame=3.100=h7b6447c_0 + - lazy_loader=0.3=py310h06a4308_0 + - lcms2=2.12=h3be6417_0 + - ld_impl_linux-64=2.38=h1181459_1 + - lerc=3.0=h295c915_0 + - libaec=1.0.4=he6710b0_1 + - libblas=3.9.0=1_h86c2bf4_netlib + - libbrotlicommon=1.0.9=h5eee18b_7 + - libbrotlidec=1.0.9=h5eee18b_7 + - libbrotlienc=1.0.9=h5eee18b_7 + - libcblas=3.9.0=5_h92ddd45_netlib + - libcurl=7.88.1=h91b91d3_0 + - libdeflate=1.8=h7f8727e_5 + - libedit=3.1.20221030=h5eee18b_0 + - libev=4.33=h7f8727e_1 + - libevent=2.1.10=h9b69904_4 + - libffi=3.4.4=h6a678d5_0 + - libgcc-ng=13.2.0=h807b86a_3 + - libgfortran-ng=13.2.0=h69a702a_3 + - libgfortran5=13.2.0=ha4646dd_3 + - libglib=2.72.1=h2d90d5f_0 + - libglu=9.0.0=hf484d3e_1 + - libgomp=13.2.0=h807b86a_3 + - libiconv=1.16=h7f8727e_2 + - libidn2=2.3.4=h5eee18b_0 + - libitk=5.2.1=h6d27e4b_1 + - libitk-devel=5.2.1=h6eb4826_1 + - libjpeg-turbo=2.1.4=h166bdaf_0 + - liblapack=3.9.0=5_h92ddd45_netlib + - liblapacke=3.9.0=5_h92ddd45_netlib + - libllvm11=11.1.0=h9e868ea_6 + - libnghttp2=1.52.0=ha637b67_1 + - libogg=1.3.5=h27cfd23_1 + - libopencv=4.5.5=py31he7a5e20_0 + - libopus=1.3.1=h7b6447c_0 + - libpng=1.6.39=h5eee18b_0 + - libpq=13.8=hd77ab85_0 + - libprotobuf=3.19.6=he621ea3_0 + - libsodium=1.0.18=h7b6447c_0 + - libssh2=1.10.0=h37d81fd_2 + - libstdcxx-ng=13.2.0=h7e041cc_3 + - libtasn1=4.19.0=h5eee18b_0 + - libtiff=4.4.0=hecacb30_2 + - libunistring=0.9.10=h27cfd23_0 + - libuuid=1.41.5=h5eee18b_0 + - libuv=1.40.0=h7b6447c_0 + - libvorbis=1.3.7=h7b6447c_0 + - libwebp=1.2.4=h11a3e52_1 + - libwebp-base=1.2.4=h5eee18b_1 + - libxcb=1.15=h7f8727e_0 + - libxkbcommon=1.0.3=he3ba5ed_0 + - libxml2=2.9.12=h72842e0_0 + - libzlib=1.2.13=hd590300_5 + - libzopfli=1.0.3=he6710b0_0 + - llvm-openmp=14.0.6=h9e868ea_0 + - locket=1.0.0=py310h06a4308_0 + - lz4-c=1.9.4=h6a678d5_0 + - mako=1.2.3=py310h06a4308_0 + - markdown-it-py=2.2.0=py310h06a4308_1 + - markupsafe=2.1.1=py310h7f8727e_0 + - matplotlib-base=3.8.0=py310h1128e8f_0 + - matplotlib-inline=0.1.6=py310h06a4308_0 + - mdurl=0.1.0=py310h06a4308_0 + - mistune=2.0.4=py310h06a4308_0 + - mkl=2023.1.0=h213fc3f_46344 + - mkl-service=2.4.0=py310h5eee18b_1 + - mkl_fft=1.3.8=py310h5eee18b_0 + - mkl_random=1.2.4=py310hdb19cb5_0 + - more-itertools=8.12.0=pyhd3eb1b0_0 + - mpc=1.1.0=h10f8cd9_1 + - mpfr=4.0.2=hb69a4c5_1 + - mpmath=1.3.0=py310h06a4308_0 + - munkres=1.1.4=py_0 + - mysql-common=8.0.32=h14678bc_0 + - mysql-libs=8.0.32=h54cf53e_0 + - nbclassic=1.0.0=py310h06a4308_0 + - nbclient=0.8.0=py310h06a4308_0 + - nbconvert=7.10.0=py310h06a4308_0 + - nbformat=5.9.2=py310h06a4308_0 + - ncurses=6.4=h6a678d5_0 + - nest-asyncio=1.5.6=py310h06a4308_0 + - nettle=3.7.3=hbbd107a_1 + - networkx=3.1=py310h06a4308_0 + - nibabel=5.2.0=pyha770c72_0 + - nodejs=16.13.1=hb931c9a_0 + - notebook=6.5.4=py310h06a4308_1 + - notebook-shim=0.2.3=py310h06a4308_0 + - nspr=4.35=h6a678d5_0 + - nss=3.89.1=h6a678d5_0 + - numexpr=2.8.7=py310h85018f9_0 + - numpy=1.26.2=py310h5f9d8c6_0 + - numpy-base=1.26.2=py310hb5e798b_0 + - oauthlib=3.2.2=py310h06a4308_0 + - opencv=4.5.5=py31hff52083_0 + - openh264=2.1.1=h4ff587b_0 + - openjpeg=2.5.0=h7d73246_1 + - openslide=3.4.1=h978ee9a_4 + - openssl=1.1.1w=h7f8727e_0 + - overrides=7.4.0=py310h06a4308_0 + - packaging=23.1=py310h06a4308_0 + - pamela=1.0.0=pyhd3eb1b0_0 + - pandas=2.1.1=py310h1128e8f_0 + - pandocfilters=1.5.0=pyhd3eb1b0_0 + - partd=1.4.1=py310h06a4308_0 + - pcre=8.45=h295c915_0 + - pexpect=4.8.0=pyhd3eb1b0_3 + - pickleshare=0.7.5=pyhd3eb1b0_1003 + - pillow=9.4.0=py310h6a678d5_0 + - pixman=0.40.0=h7f8727e_1 + - pkginfo=1.9.6=py310h06a4308_0 + - platformdirs=3.10.0=py310h06a4308_0 + - prometheus_client=0.14.1=py310h06a4308_0 + - prompt-toolkit=3.0.36=py310h06a4308_0 + - psutil=5.9.0=py310h5eee18b_0 + - ptyprocess=0.7.0=pyhd3eb1b0_2 + - pure_eval=0.2.2=pyhd3eb1b0_0 + - py-opencv=4.5.5=py31hfdc917e_0 + - pycparser=2.21=pyhd3eb1b0_0 + - pycurl=7.45.2=py310h37d81fd_0 + - pydicom=2.4.4=pyhd8ed1ab_0 + - pygments=2.15.1=py310h06a4308_1 + - pyjwt=2.4.0=py310h06a4308_0 + - pymongo=3.12.0=py310h295c915_0 + - pyopenssl=23.2.0=py310h06a4308_0 + - pyparsing=3.0.9=py310h06a4308_0 + - pysocks=1.7.1=py310h06a4308_0 + - python=3.10.13=h7a1cb2a_0 + - python-dateutil=2.8.2=pyhd3eb1b0_0 + - python-engineio=4.1.0=pyhd3eb1b0_0 + - python-fastjsonschema=2.16.2=py310h06a4308_0 + - python-json-logger=2.0.7=py310h06a4308_0 + - python-socketio=5.3.0=pyhd3eb1b0_0 + - python-tzdata=2023.3=pyhd3eb1b0_0 + - python_abi=3.10=2_cp310 + - pytorch=2.1.2=py3.10_cpu_0 + - pytorch-mutex=1.0=cpu + - pytz=2023.3.post1=py310h06a4308_0 + - pywavelets=1.4.1=py310h5eee18b_0 + - pyyaml=6.0.1=py310h5eee18b_0 + - pyzmq=24.0.1=py310h330234f_1 + - qt=5.12.9=hda022c4_4 + - readline=8.2=h5eee18b_0 + - readme_renderer=40.0=py310h06a4308_0 + - redis=5.0.3=h7b6447c_0 + - referencing=0.30.2=py310h06a4308_0 + - requests=2.31.0=py310h06a4308_0 + - requests-toolbelt=1.0.0=py310h06a4308_0 + - rfc3339-validator=0.1.4=py310h06a4308_0 + - rfc3986=1.4.0=pyhd3eb1b0_0 + - rfc3986-validator=0.1.1=py310h06a4308_0 + - rich=13.3.5=py310h06a4308_0 + - rpds-py=0.10.6=py310hb02cf49_0 + - ruamel.yaml=0.17.21=py310h5eee18b_0 + - ruamel.yaml.clib=0.2.6=py310h5eee18b_1 + - scikit-image=0.20.0=py310h6a678d5_0 + - scikit-learn=1.3.0=py310h1128e8f_0 + - scipy=1.11.3=py310h5f9d8c6_0 + - seaborn=0.12.2=py310h06a4308_0 + - secretstorage=3.3.1=py310h06a4308_1 + - send2trash=1.8.2=py310h06a4308_0 + - setuptools=68.2.2=py310h06a4308_0 + - simpleitk=2.1.1=py310h2b9ea3a_0 + - six=1.16.0=pyhd3eb1b0_1 + - snappy=1.1.9=h295c915_0 + - sniffio=1.2.0=py310h06a4308_1 + - soupsieve=2.5=py310h06a4308_0 + - sqlalchemy=2.0.21=py310h5eee18b_0 + - sqlite=3.41.2=h5eee18b_0 + - stack_data=0.2.0=pyhd3eb1b0_0 + - sympy=1.12=py310h06a4308_0 + - tbb=2021.8.0=hdb19cb5_0 + - tbb-devel=2021.8.0=hdb19cb5_0 + - terminado=0.17.1=py310h06a4308_0 + - threadpoolctl=2.2.0=pyh0d69192_0 + - tifffile=2021.7.2=pyhd3eb1b0_2 + - tinycss2=1.2.1=py310h06a4308_0 + - tk=8.6.12=h1ccaba5_0 + - toml=0.10.2=pyhd3eb1b0_0 + - tomli=2.0.1=py310h06a4308_0 + - toolz=0.12.0=py310h06a4308_0 + - torchaudio=2.1.2=py310_cpu + - torchvision=0.16.2=py310_cpu + - tornado=6.3.3=py310h5eee18b_0 + - traitlets=5.7.1=py310h06a4308_0 + - twine=4.0.2=py310h06a4308_0 + - typing-extensions=4.7.1=py310h06a4308_0 + - typing_extensions=4.7.1=py310h06a4308_0 + - tzdata=2023c=h04d1e81_0 + - urllib3=1.26.18=py310h06a4308_0 + - wcwidth=0.2.5=pyhd3eb1b0_0 + - webencodings=0.5.1=py310h06a4308_1 + - websocket-client=0.58.0=py310h06a4308_4 + - werkzeug=2.2.3=py310h06a4308_0 + - wheel=0.41.2=py310h06a4308_0 + - x264=1!161.3030=h7f98852_1 + - xlrd=2.0.1=pyhd3eb1b0_1 + - xmltodict=0.13.0=py310h06a4308_0 + - xorg-fixesproto=5.0=h7f98852_1002 + - xorg-inputproto=2.3.2=h7f98852_1002 + - xorg-kbproto=1.0.7=h7f98852_1002 + - xorg-libx11=1.8.7=h8ee46fc_0 + - xorg-libxau=1.0.11=hd590300_0 + - xorg-libxext=1.3.4=h0b41bf4_2 + - xorg-libxfixes=5.0.3=h7f98852_1004 + - xorg-libxi=1.7.10=h7f98852_0 + - xorg-xextproto=7.3.0=h0b41bf4_1003 + - xorg-xproto=7.0.31=h27cfd23_1007 + - xz=5.4.5=h5eee18b_0 + - y-py=0.5.9=py310h52d8a92_0 - yaml=0.2.5=h7b6447c_0 - - zeromq=4.3.2=he1b5a44_3 - - zlib=1.2.11=h7b6447c_3 - - zstd=1.4.5=h6597ccf_2 + - ypy-websocket=0.8.2=py310h06a4308_0 + - zeromq=4.3.4=h2531618_0 + - zfp=0.5.5=h295c915_6 + - zipp=3.11.0=py310h06a4308_0 + - zlib=1.2.13=hd590300_5 + - zstd=1.5.5=hc292b87_0 - pip: - - absl-py==0.10.0 - - astor==0.8.1 - - cachetools==4.1.1 - - cffi==1.14.3 - - colorama==0.4.3 - - cryptography==3.1.1 - - docutils==0.16 - - gast==0.2.2 - - google-auth==1.21.2 - - google-auth-oauthlib==0.4.1 - - google-pasta==0.2.0 - - grpcio==1.32.0 - - importlib-metadata==2.0.0 - - jeepney==0.4.3 - - keras-applications==1.0.8 - - keras-preprocessing==1.1.2 - - keyring==21.4.0 - - markdown==3.2.2 - - mudicom==0.1.2 - - numpy==1.19.2 - - opencv-python==4.4.0.44 - - openslide-python==1.1.2 - - opt-einsum==3.3.0 - - pip==20.2.3 - - pkginfo==1.5.0.1 - - protobuf==3.13.0 - - pyasn1==0.4.8 - - pyasn1-modules==0.2.8 - - readme-renderer==26.0 - - redis==3.5.3 - - requests-oauthlib==1.3.0 - - requests-toolbelt==0.9.1 - - rfc3986==1.4.0 - - rsa==4.6 - - scipy==1.4.1 - - secretstorage==3.1.2 - - tensorboard==2.1.1 - - tensorflow==2.1.0 - - tensorflow-estimator==2.1.0 - - termcolor==1.1.0 - - tqdm==4.49.0 - - twine==3.2.0 - - webencodings==0.5.1 - - wrapt==1.12.1 - - zipp==3.2.0 -prefix: /miniconda/envs/jarvis + - absl-py==2.0.0 + - astunparse==1.6.3 + - cachetools==5.3.2 + - flatbuffers==23.5.26 + - gast==0.5.4 + - google-auth==2.25.2 + - google-auth-oauthlib==1.2.0 + - google-pasta==0.2.0 + - grpcio==1.60.0 + - jedi==0.17.2 + - keras==2.15.0 + - libclang==16.0.6 + - markdown==3.5.1 + - ml-dtypes==0.2.0 + - mudicom==0.1.2 + - nvidia-cublas-cu12==12.2.5.6 + - nvidia-cuda-cupti-cu12==12.2.142 + - nvidia-cuda-nvcc-cu12==12.2.140 + - nvidia-cuda-nvrtc-cu12==12.2.140 + - nvidia-cuda-runtime-cu12==12.2.140 + - nvidia-cudnn-cu12==8.9.4.25 + - nvidia-cufft-cu12==11.0.8.103 + - nvidia-curand-cu12==10.3.3.141 + - nvidia-cusolver-cu12==11.5.2.141 + - nvidia-cusparse-cu12==12.1.2.141 + - nvidia-nccl-cu12==2.16.5 + - nvidia-nvjitlink-cu12==12.2.140 + - opt-einsum==3.3.0 + - parso==0.7.1 + - pip==23.3.2 + - protobuf==4.23.4 + - pyasn1==0.5.1 + - pyasn1-modules==0.3.0 + - requests-oauthlib==1.3.1 + - rsa==4.9 + - tensorboard==2.15.1 + - tensorboard-data-server==0.7.2 + - tensorflow==2.15.0.post1 + - tensorflow-estimator==2.15.0 + - tensorflow-io-gcs-filesystem==0.35.0 + - termcolor==2.4.0 + - wrapt==1.14.1 +prefix: /home/ubuntu/miniconda3/envs/jarvis diff --git a/docker/cpu-full/wheels/jarvis_md-0.0.1a17-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md-0.0.1a17-py3-none-any.whl new file mode 100644 index 0000000..88095db Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md-0.0.1a17-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 93185b5..0000000 Binary files a/docker/cpu-full/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-full/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..1c443c5 Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..c685ee7 Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..2dfd730 Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl new file mode 100644 index 0000000..e7c25c1 Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 154fb35..0000000 Binary files a/docker/cpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..05335cd Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 2206d2a..0000000 Binary files a/docker/cpu-full/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-full/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..a422965 Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-full/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl deleted file mode 100644 index bb1be7e..0000000 Binary files a/docker/cpu-full/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-full/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..da28fd4 Binary files /dev/null and b/docker/cpu-full/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl b/docker/cpu-full/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl similarity index 65% rename from docker/gpu-full/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl rename to docker/cpu-full/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl index 5541adb..fcebb55 100644 Binary files a/docker/gpu-full/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl and b/docker/cpu-full/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/.bashrc b/docker/cpu-lite/.bashrc index 80f84cf..45e38f7 100644 --- a/docker/cpu-lite/.bashrc +++ b/docker/cpu-lite/.bashrc @@ -1,131 +1,7 @@ -# ~/.bashrc: executed by bash(1) for non-login shells. -# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) -# for examples - -# If not running interactively, don't do anything -case $- in - *i*) ;; - *) return;; -esac - -# don't put duplicate lines or lines starting with space in the history. -# See bash(1) for more options -HISTCONTROL=ignoreboth - -# append to the history file, don't overwrite it -shopt -s histappend - -# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) -HISTSIZE=1000 -HISTFILESIZE=2000 - -# check the window size after each command and, if necessary, -# update the values of LINES and COLUMNS. -shopt -s checkwinsize - -# If set, the pattern "**" used in a pathname expansion context will -# match all files and zero or more directories and subdirectories. -#shopt -s globstar - -# make less more friendly for non-text input files, see lesspipe(1) -[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" - -# set variable identifying the chroot you work in (used in the prompt below) -if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then - debian_chroot=$(cat /etc/debian_chroot) -fi - -# set a fancy prompt (non-color, unless we know we "want" color) -case "$TERM" in - xterm-color|*-256color) color_prompt=yes;; -esac - -# uncomment for a colored prompt, if the terminal has the capability; turned -# off by default to not distract the user: the focus in a terminal window -# should be on the output of commands, not on the prompt -#force_color_prompt=yes - -if [ -n "$force_color_prompt" ]; then - if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then - # We have color support; assume it's compliant with Ecma-48 - # (ISO/IEC-6429). (Lack of such support is extremely rare, and such - # a case would tend to support setf rather than setaf.) - color_prompt=yes - else - color_prompt= - fi -fi - -if [ "$color_prompt" = yes ]; then - PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' -else - PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' -fi -unset color_prompt force_color_prompt - -# If this is an xterm set the title to user@host:dir -case "$TERM" in -xterm*|rxvt*) - PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" - ;; -*) - ;; -esac - -# enable color support of ls and also add handy aliases -if [ -x /usr/bin/dircolors ]; then - test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" - alias ls='ls --color=auto' - #alias dir='dir --color=auto' - #alias vdir='vdir --color=auto' - - alias grep='grep --color=auto' - alias fgrep='fgrep --color=auto' - alias egrep='egrep --color=auto' -fi - -# colored GCC warnings and errors -#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' - -# some more ls aliases -alias ll='ls -alF' -alias la='ls -A' -alias l='ls -CF' - -# Add an "alert" alias for long running commands. Use like so: -# sleep 10; alert -alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' - -# Alias definitions. -# You may want to put all your additions into a separate file like -# ~/.bash_aliases, instead of adding them here directly. -# See /usr/share/doc/bash-doc/examples in the bash-doc package. - -if [ -f ~/.bash_aliases ]; then - . ~/.bash_aliases -fi - -# enable programmable completion features (you don't need to enable -# this, if it's already enabled in /etc/bash.bashrc and /etc/profile -# sources /etc/bash.bashrc). -if ! shopt -oq posix; then - if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion - elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion - fi -fi - # ====================================================================== -# CUSTOM SETTINGS +# JARVIS | ENTRY SCRIPT # ====================================================================== -# --- Set users (only on initial launch) -~/setusers.sh - -# --- Activate conda env -source activate jarvis - # --- Run startup script if set if [ ! -z $JARVIS_ENTRY_SCRIPT ]; then if [ -f $JARVIS_ENTRY_SCRIPT ]; then diff --git a/docker/cpu-lite/Dockerfile b/docker/cpu-lite/Dockerfile index ee376ce..4395a41 100644 --- a/docker/cpu-lite/Dockerfile +++ b/docker/cpu-lite/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 +FROM nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 MAINTAINER Peter Chang # --- Copy files @@ -32,12 +32,12 @@ RUN apt-get update && apt-get install -y wget curl bzip2 vim silversearcher-ag t # --- Clean up apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/wheels -COPY setusers.sh /root/ COPY .bashrc /root/ +COPY ./jarvis-bash.sh ./jarvis-env.sh /etc/profile.d/ ENV PATH=/miniconda/bin:$PATH ENV TERM=xterm-256color ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -ENV XDG_RUNTIME_DIR=/tmp/runtime-root +ENV XDG_RUNTIME_DIR=/tmp diff --git a/docker/cpu-lite/copyusers.py b/docker/cpu-lite/copyusers.py new file mode 100644 index 0000000..8d3090d --- /dev/null +++ b/docker/cpu-lite/copyusers.py @@ -0,0 +1,82 @@ +import os, re, argparse + +USAGE = """ +USAGE: python copyeusers.py [-src ... , -dst ...] + +Run COVID-19 predictive analytics + +OPTIONS: + + -src SRC directory containing users data (default is ~/etc) + -dst DST directory containing users data (default is /etc) + +""" + +def copy_users(src=None, dst=None): + + SRC_DIR = src or '{}/etc'.format(os.environ['HOME']) + DST_DIR = dst or '/etc' + + passwd = '{}/passwd'.format(SRC_DIR) + if not os.path.exists(passwd): + return + + users = find_users(passwd) + + # --- Update passwd + copy_lines('{}/passwd'.format(DST_DIR), users) + + # --- Update remainder + for key in ['shadow', 'group', 'gshadow']: + src = '{}/{}'.format(SRC_DIR, key) + dst = '{}/{}'.format(DST_DIR, key) + if os.path.exists(src): + lines = find_lines(src, users) + copy_lines(dst, lines) + +def find_users(passwd): + + users = {} + + with open(passwd, 'r') as f: + for line in f.readlines(): + matches = re.findall('^[a-zA-Z].*:x:1[0-9][0-9][0-9]:1[0-9][0-9][0-9]:', line) + if len(matches) > 0: + users[matches[0].split(':')[0]] = line + + return users + +def find_lines(fname, users): + + lines = {} + + with open(fname, 'r') as f: + for line in f.readlines(): + if line.split(':')[0] in users: + lines[line.split(':')[0]] = line + + return lines + +def copy_lines(fname, lines): + + # --- Find existing users + if os.path.exists(fname): + users = {line.split(':')[0]: line for line in open(fname, 'r').readlines()} + else: + users = {} + os.makedirs(os.path.dirname(fname), exist_ok=True) + + # --- Update + with open(fname, 'a+') as f: + for user, line in lines.items(): + if user not in users: + f.write(line) + +if __name__ == '__main__': + + parser = argparse.ArgumentParser(usage=USAGE) + parser.add_argument('-src', metavar='src', type=str, default=None) + parser.add_argument('-dst', metavar='dst', type=str, default=None) + + args = parser.parse_args() + copy_users(**vars(args)) diff --git a/docker/cpu-lite/environment.yml b/docker/cpu-lite/environment.yml index 7434090..9b00f2e 100644 --- a/docker/cpu-lite/environment.yml +++ b/docker/cpu-lite/environment.yml @@ -1,147 +1,215 @@ name: jarvis channels: - - conda-forge - anaconda + - conda-forge - defaults dependencies: - - _libgcc_mutex=0.1=main - - backcall=0.2.0=py_0 - - blas=1.0=mkl - - brotlipy=0.7.0=py36h7b6447c_1000 - - ca-certificates=2020.7.22=0 - - certifi=2020.6.20=py36_0 - - cffi=1.14.3=py36he30daa8_0 - - chardet=3.0.4=py36_1003 - - cloudpickle=1.6.0=py_0 - - cryptography=3.1=py36h1ba5d50_0 - - cycler=0.10.0=py36_0 - - cython=0.29.21=py36he6710b0_0 - - cytoolz=0.10.1=py36h7b6447c_0 - - dask-core=2.27.0=py_0 - - dbus=1.13.16=hb2f20db_0 - - decorator=4.4.2=py_0 - - dill=0.3.2=py_0 - - expat=2.2.9=he1b5a44_2 - - fontconfig=2.13.0=h9420a91_0 - - freetype=2.10.2=h5ab3b9f_0 - - gdcm=2.8.9=py36h71b2a6d_0 - - glib=2.65.0=h3eb4bd4_0 - - gst-plugins-base=1.14.0=hbbd80ab_1 - - gstreamer=1.14.0=hb31296c_0 - - h5py=2.10.0=py36hd6299e0_1 - - hdf5=1.10.6=hb1b8bf9_0 - - icu=58.2=he6710b0_3 - - idna=2.10=py_0 - - imageio=2.9.0=py_0 - - intel-openmp=2020.2=254 - - ipdb=0.13.3=pyh9f0ad1d_0 - - ipython=7.16.1=py36h5ca1d4c_0 - - ipython_genutils=0.2.0=py36_0 - - jedi=0.17.2=py36_0 - - joblib=0.16.0=py_0 - - jpeg=9d=h516909a_0 - - json-c=0.13.1=hbfbb72e_1002 - - kiwisolver=1.2.0=py36hfd86e86_0 - - lcms2=2.11=h396b838_0 - - ld_impl_linux-64=2.33.1=h53a641e_7 - - libedit=3.1.20191231=h14c3975_1 - - libffi=3.3=he6710b0_2 - - libgcc-ng=9.1.0=hdf63c60_0 - - libgfortran-ng=7.3.0=hdf63c60_0 - - libjpeg-turbo=2.0.3=h516909a_1 - - libpng=1.6.37=hed695b0_2 - - libstdcxx-ng=9.1.0=hdf63c60_0 - - libtiff=4.1.0=hc7e4089_6 - - libuuid=1.0.3=h1bed415_2 - - libwebp-base=1.1.0=h516909a_3 - - libxcb=1.14=h7b6447c_0 - - libxml2=2.9.10=he19cac6_1 - - lz4-c=1.9.2=he1b5a44_3 - - matplotlib=3.3.1=0 - - matplotlib-base=3.3.1=py36h817c723_0 - - mkl=2020.2=256 - - mkl-service=2.3.0=py36he904b0f_0 - - mkl_fft=1.2.0=py36h23d657b_0 - - mkl_random=1.1.1=py36h0573a6f_0 - - ncurses=6.2=he6710b0_1 - - networkx=2.5=py_0 - - numpy-base=1.19.1=py36hfa32c7d_0 - - olefile=0.46=py36_0 - - openjpeg=2.3.1=h981e76c_3 - - openssl=1.1.1g=h7b6447c_0 - - pandas=1.1.1=py36he6710b0_0 - - parso=0.7.0=py_0 - - pcre=8.44=he6710b0_0 - - pexpect=4.8.0=py36_0 - - pickleshare=0.7.5=py36_0 - - pillow=7.2.0=py36hb39fc2d_0 - - prompt-toolkit=3.0.7=py_0 - - ptyprocess=0.6.0=py36_0 - - pycparser=2.20=py_2 - - pydicom=2.0.0=pyh9f0ad1d_0 - - pygments=2.7.1=py_0 - - pymongo=3.11.0=py36he6710b0_0 - - pyopenssl=19.1.0=py_1 - - pyparsing=2.4.7=py_0 - - pyqt=5.9.2=py36h22d08a2_1 - - pysocks=1.7.1=py36_0 - - python=3.6.12=hcff3b4d_2 - - python-dateutil=2.8.1=py_0 - - python_abi=3.6=1_cp36m - - pytz=2020.1=py_0 - - pywavelets=1.1.1=py36h7b6447c_0 - - pyyaml=5.3.1=py36h7b6447c_1 - - qt=5.9.7=h5867ecd_1 - - readline=8.0=h7b6447c_0 - - requests=2.24.0=py_0 - - scikit-image=0.16.2=py36h0573a6f_0 - - scikit-learn=0.23.2=py36h0573a6f_0 - - setuptools=45.0.0=py36_1 - - sip=4.19.24=py36he6710b0_0 - - six=1.15.0=py_0 - - sqlite=3.33.0=h62c20be_0 - - threadpoolctl=2.1.0=pyh5ca1d4c_0 - - tk=8.6.10=hbc83047_0 - - toolz=0.10.0=py_0 - - tornado=6.0.4=py36h7b6447c_1 - - traitlets=4.3.3=py36_0 - - urllib3=1.25.10=py_0 - - wcwidth=0.2.5=py_0 - - wheel=0.35.1=py_0 - - xz=5.2.5=h7b6447c_0 + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - aom=3.7.1=h59595ed_0 + - asttokens=2.0.5=pyhd3eb1b0_0 + - backcall=0.2.0=pyhd3eb1b0_0 + - blas=1.0=openblas + - bleach=4.1.0=pyhd3eb1b0_0 + - blosc=1.21.5=h0f2a231_0 + - bottleneck=1.3.5=py310ha9d4c09_0 + - brotli=1.0.9=he6710b0_2 + - brotli-python=1.0.9=py310h6a678d5_7 + - brunsli=0.1=h2531618_0 + - bzip2=1.0.8=h7b6447c_0 + - c-ares=1.19.1=h5eee18b_0 + - c-blosc2=2.10.5=h80c7b02_0 + - ca-certificates=2023.12.12=h06a4308_0 + - certifi=2023.11.17=py310h06a4308_0 + - cffi=1.16.0=py310h5eee18b_0 + - charls=2.4.2=h59595ed_0 + - charset-normalizer=2.0.4=pyhd3eb1b0_0 + - click=8.1.7=py310h06a4308_0 + - cloudpickle=2.2.1=py310h06a4308_0 + - cmarkgfm=2022.10.27=py310h5eee18b_0 + - cryptography=41.0.3=py310hdda0065_0 + - cython=3.0.0=py310h5eee18b_0 + - cytoolz=0.12.0=py310h5eee18b_0 + - dask-core=2023.6.0=py310h06a4308_0 + - dav1d=1.2.1=h5eee18b_0 + - dbus=1.13.18=hb2f20db_0 + - decorator=5.1.1=pyhd3eb1b0_0 + - dill=0.3.7=py310h06a4308_0 + - docutils=0.18.1=py310h06a4308_3 + - exceptiongroup=1.0.4=py310h06a4308_0 + - executing=0.8.3=pyhd3eb1b0_0 + - expat=2.5.0=h6a678d5_0 + - freetype=2.12.1=h4a9f257_0 + - fsspec=2023.9.2=py310h06a4308_0 + - gdcm=2.8.9=py310h59700c5_10 + - giflib=5.2.1=h5eee18b_3 + - glib=2.69.1=he621ea3_2 + - h5py=3.9.0=py310he06866b_0 + - hdf5=1.12.1=h2b7332f_3 + - idna=3.4=py310h06a4308_0 + - imagecodecs=2023.9.18=py310h496a806_2 + - imageio=2.31.4=py310h06a4308_0 + - importlib-metadata=6.0.0=py310h06a4308_0 + - importlib_metadata=6.0.0=hd3eb1b0_0 + - ipdb=0.13.13=pyhd8ed1ab_0 + - ipython=8.15.0=py310h06a4308_0 + - jaraco.classes=3.2.1=pyhd3eb1b0_0 + - jeepney=0.7.1=pyhd3eb1b0_0 + - joblib=1.2.0=py310h06a4308_0 + - json-c=0.17=h7ab15ed_0 + - jxrlib=1.1=h7b6447c_2 + - keyring=23.13.1=py310h06a4308_0 + - krb5=1.20.1=h143b758_1 + - lazy_loader=0.3=py310h06a4308_0 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.38=h1181459_1 + - lerc=4.0.0=h27087fc_0 + - libaec=1.1.2=h59595ed_1 + - libavif16=1.0.3=hef5bec9_1 + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcurl=7.88.1=h251f7ec_2 + - libdeflate=1.19=hd590300_0 + - libedit=3.1.20221030=h5eee18b_0 + - libev=4.33=h7f8727e_1 + - libexpat=2.5.0=hcb278e6_1 + - libffi=3.4.4=h6a678d5_0 + - libgcc-ng=13.2.0=h807b86a_3 + - libgfortran-ng=11.2.0=h00389a5_1 + - libgfortran5=11.2.0=h1234567_1 + - libgomp=13.2.0=h807b86a_3 + - libjpeg-turbo=3.0.0=hd590300_1 + - libnghttp2=1.57.0=h2d74bed_0 + - libopenblas=0.3.21=h043d6bf_0 + - libpng=1.6.39=h5eee18b_0 + - libssh2=1.10.0=hdbd6064_2 + - libstdcxx-ng=13.2.0=h7e041cc_3 + - libtiff=4.6.0=ha9c0a0a_2 + - libuuid=1.41.5=h5eee18b_0 + - libwebp-base=1.3.2=h5eee18b_0 + - libxcb=1.15=h7f8727e_0 + - libzlib=1.2.13=hd590300_5 + - libzopfli=1.0.3=he6710b0_0 + - locket=1.0.0=py310h06a4308_0 + - lz4-c=1.9.4=h6a678d5_0 + - markdown-it-py=2.2.0=py310h06a4308_1 + - matplotlib-inline=0.1.6=py310h06a4308_0 + - mdurl=0.1.0=py310h06a4308_0 + - more-itertools=8.12.0=pyhd3eb1b0_0 + - ncurses=6.4=h6a678d5_0 + - networkx=3.1=py310h06a4308_0 + - numexpr=2.8.7=py310h286c3b5_0 + - numpy=1.26.0=py310heeff2f4_0 + - numpy-base=1.26.0=py310h8a23956_0 + - openjpeg=2.5.0=h488ebb8_3 + - openssl=3.0.12=h7f8727e_0 + - packaging=23.1=py310h06a4308_0 + - pandas=2.1.1=py310h1128e8f_0 + - partd=1.4.1=py310h06a4308_0 + - pcre=8.45=h295c915_0 + - pexpect=4.8.0=pyhd3eb1b0_3 + - pickleshare=0.7.5=pyhd3eb1b0_1003 + - pillow=10.1.0=py310h01dd4db_0 + - pkginfo=1.9.6=py310h06a4308_0 + - prompt-toolkit=3.0.36=py310h06a4308_0 + - ptyprocess=0.7.0=pyhd3eb1b0_2 + - pure_eval=0.2.2=pyhd3eb1b0_0 + - pycparser=2.21=pyhd3eb1b0_0 + - pydicom=2.4.4=pyhd8ed1ab_0 + - pygments=2.15.1=py310h06a4308_1 + - pymongo=3.12.0=py310h295c915_0 + - pyopenssl=23.2.0=py310h06a4308_0 + - pysocks=1.7.1=py310h06a4308_0 + - python=3.10.13=h955ad1f_0 + - python-dateutil=2.8.2=pyhd3eb1b0_0 + - python-tzdata=2023.3=pyhd3eb1b0_0 + - python_abi=3.10=2_cp310 + - pytz=2023.3.post1=py310h06a4308_0 + - pywavelets=1.4.1=py310h5eee18b_0 + - pyyaml=6.0.1=py310h5eee18b_0 + - rav1e=0.6.6=he8a937b_2 + - readline=8.2=h5eee18b_0 + - readme_renderer=40.0=py310h06a4308_0 + - redis=5.0.3=h7b6447c_0 + - requests=2.31.0=py310h06a4308_0 + - requests-toolbelt=1.0.0=py310h06a4308_0 + - rfc3986=1.4.0=pyhd3eb1b0_0 + - rich=13.3.5=py310h06a4308_0 + - scikit-image=0.20.0=py310h6a678d5_0 + - scikit-learn=1.3.0=py310h1128e8f_0 + - scipy=1.11.3=py310heeff2f4_0 + - secretstorage=3.3.1=py310h06a4308_1 + - setuptools=68.2.2=py310h06a4308_0 + - six=1.16.0=pyhd3eb1b0_1 + - snappy=1.1.10=h9fff704_0 + - sqlite=3.41.2=h5eee18b_0 + - stack_data=0.2.0=pyhd3eb1b0_0 + - svt-av1=1.8.0=h59595ed_0 + - threadpoolctl=2.2.0=pyh0d69192_0 + - tifffile=2023.4.12=py310h06a4308_0 + - tk=8.6.13=noxft_h4845f30_101 + - toml=0.10.2=pyhd3eb1b0_0 + - toolz=0.12.0=py310h06a4308_0 + - traitlets=5.7.1=py310h06a4308_0 + - twine=4.0.2=py310h06a4308_0 + - tzdata=2023c=h04d1e81_0 + - urllib3=1.26.18=py310h06a4308_0 + - wcwidth=0.2.5=pyhd3eb1b0_0 + - webencodings=0.5.1=py310h06a4308_1 + - wheel=0.41.2=py310h06a4308_0 + - xz=5.4.5=h5eee18b_0 - yaml=0.2.5=h7b6447c_0 - - zlib=1.2.11=h7b6447c_3 - - zstd=1.4.5=h6597ccf_2 + - zfp=1.0.0=h6a678d5_0 + - zipp=3.11.0=py310h06a4308_0 + - zlib=1.2.13=hd590300_5 + - zlib-ng=2.0.7=h5eee18b_0 + - zstd=1.5.5=hc292b87_0 - pip: - - absl-py==0.10.0 - - astor==0.8.1 - - cachetools==4.1.1 - - gast==0.2.2 - - google-auth==1.21.2 - - google-auth-oauthlib==0.4.1 - - google-pasta==0.2.0 - - grpcio==1.32.0 - - importlib-metadata==2.0.0 - - keras-applications==1.0.8 - - keras-preprocessing==1.1.2 - - markdown==3.2.2 - - mudicom==0.1.2 - - numpy==1.19.2 - - oauthlib==3.1.0 - - opt-einsum==3.3.0 - - pip==20.2.3 - - protobuf==3.13.0 - - pyasn1==0.4.8 - - pyasn1-modules==0.2.8 - - redis==3.5.3 - - requests-oauthlib==1.3.0 - - rsa==4.6 - - scipy==1.4.1 - - tensorboard==2.1.1 - - tensorflow==2.1.0 - - tensorflow-estimator==2.1.0 - - termcolor==1.1.0 - - werkzeug==1.0.1 - - wrapt==1.12.1 - - zipp==3.2.0 -prefix: /miniconda/envs/jarvis + - absl-py==2.0.0 + - astunparse==1.6.3 + - cachetools==5.3.2 + - flatbuffers==23.5.26 + - gast==0.5.4 + - google-auth==2.25.2 + - google-auth-oauthlib==1.2.0 + - google-pasta==0.2.0 + - grpcio==1.60.0 + - jedi==0.17.2 + - keras==2.15.0 + - libclang==16.0.6 + - markdown==3.5.1 + - markupsafe==2.1.3 + - ml-dtypes==0.2.0 + - mudicom==0.1.2 + - nvidia-cublas-cu12==12.2.5.6 + - nvidia-cuda-cupti-cu12==12.2.142 + - nvidia-cuda-nvcc-cu12==12.2.140 + - nvidia-cuda-nvrtc-cu12==12.2.140 + - nvidia-cuda-runtime-cu12==12.2.140 + - nvidia-cudnn-cu12==8.9.4.25 + - nvidia-cufft-cu12==11.0.8.103 + - nvidia-curand-cu12==10.3.3.141 + - nvidia-cusolver-cu12==11.5.2.141 + - nvidia-cusparse-cu12==12.1.2.141 + - nvidia-nccl-cu12==2.16.5 + - nvidia-nvjitlink-cu12==12.2.140 + - oauthlib==3.2.2 + - opt-einsum==3.3.0 + - parso==0.7.1 + - pip==23.3.2 + - protobuf==4.23.4 + - pyasn1==0.5.1 + - pyasn1-modules==0.3.0 + - requests-oauthlib==1.3.1 + - rsa==4.9 + - tensorboard==2.15.1 + - tensorboard-data-server==0.7.2 + - tensorflow==2.15.0.post1 + - tensorflow-estimator==2.15.0 + - tensorflow-io-gcs-filesystem==0.35.0 + - termcolor==2.4.0 + - typing-extensions==4.9.0 + - werkzeug==3.0.1 + - wrapt==1.14.1 +prefix: /home/ubuntu/miniconda3/envs/jarvis diff --git a/docker/cpu-lite/jarvis-bash.sh b/docker/cpu-lite/jarvis-bash.sh new file mode 100755 index 0000000..6164964 --- /dev/null +++ b/docker/cpu-lite/jarvis-bash.sh @@ -0,0 +1,113 @@ +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + alias dir='dir --color=auto' + alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/docker/cpu-lite/jarvis-env.sh b/docker/cpu-lite/jarvis-env.sh new file mode 100755 index 0000000..9eb3b0a --- /dev/null +++ b/docker/cpu-lite/jarvis-env.sh @@ -0,0 +1,17 @@ +# ====================================================================== +# JARVIS | ENV SETUP +# ====================================================================== + +# --- Set conda env +if [ "${JARVIS_SOURCE_ENV:-true}" = true ]; then + if [ -d /miniconda/envs/jarvis ]; then + source /miniconda/bin/activate jarvis + fi +fi + +# --- Set users +if [ "${JARVIS_COPY_USERS:-true}" = true ]; then + if [ -f ~/copyusers.py ]; then + python ~/copyusers.py -src "${JARVIS_COPY_USERS_SRC:-$HOME/etc}" -dst "${JARVIS_COPY_USERS_DST:-/etc}" + fi +fi diff --git a/docker/cpu-lite/wheels/jarvis_md-0.0.1a17-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md-0.0.1a17-py3-none-any.whl new file mode 100644 index 0000000..88095db Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md-0.0.1a17-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 93185b5..0000000 Binary files a/docker/cpu-lite/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-lite/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..1c443c5 Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..c685ee7 Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..2dfd730 Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl new file mode 100644 index 0000000..e7c25c1 Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 154fb35..0000000 Binary files a/docker/cpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..05335cd Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 2206d2a..0000000 Binary files a/docker/cpu-lite/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-lite/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..a422965 Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl deleted file mode 100644 index bb1be7e..0000000 Binary files a/docker/cpu-lite/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-lite/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..da28fd4 Binary files /dev/null and b/docker/cpu-lite/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl differ diff --git a/docker/cpu-lite/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 5541adb..0000000 Binary files a/docker/cpu-lite/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/cpu-full/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl b/docker/cpu-lite/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl similarity index 65% rename from docker/cpu-full/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl rename to docker/cpu-lite/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl index 5541adb..fcebb55 100644 Binary files a/docker/cpu-full/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl and b/docker/cpu-lite/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-full/Dockerfile b/docker/gpu-full/Dockerfile index 7442121..57a3e72 100644 --- a/docker/gpu-full/Dockerfile +++ b/docker/gpu-full/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 +FROM nvidia/cuda:12.2.2-cudnn8-runtime-ubuntu22.04 MAINTAINER Peter Chang # --- Copy files @@ -6,44 +6,44 @@ COPY environment.yml .tmux.conf .zshrc vim/.vimrc /root/ COPY wheels /root/wheels COPY vim/colors /root/.vim/colors +ENV DEBIAN_FRONTEND=noninteractive + # --- System packages -RUN apt-get update && apt-get install -y wget curl bzip2 vim silversearcher-ag tmux zsh git zip unzip build-essential && \ - apt-get install -y net-tools iputils-ping netcat && \ +RUN apt-get update && apt-get install -y wget curl bzip2 vim silversearcher-ag tmux zsh git zip unzip build-essential sudo && \ + apt-get install -y net-tools iputils-ping netcat openssh-server rsync && \ apt-get install -y default-jre && \ - apt-get install -y ranger caca-utils highlight atool w3m poppler-utils mediainfo && \ + apt-get install -y ranger caca-utils highlight atool w3m poppler-utils lm-sensors && \ apt-get install -y python3-openslide && \ + curl https://rclone.org/install.sh | bash # --- dcm4che - wget -O dcm4che.zip https://www.dropbox.com/s/zl7adkprqeebvnh/dcm4che.zip?dl=1 && \ +RUN wget -O dcm4che.zip https://www.dropbox.com/s/zl7adkprqeebvnh/dcm4che.zip?dl=1 && \ unzip dcm4che.zip -d /usr/local/dcm4che && \ ln -sf /usr/local/dcm4che/bin/storescp /usr/local/bin && \ - rm dcm4che.zip && \ + rm dcm4che.zip # --- X11 - apt-get install -y libxi6 libsm6 libxext6 libxrender-dev && \ +RUN apt-get install -y libxi6 libsm6 libxext6 libxrender-dev # --- zsh / vim - git clone https://github.com/robbyrussell/oh-my-zsh.git /root/.oh-my-zsh && \ +RUN git clone https://github.com/robbyrussell/oh-my-zsh.git /root/.oh-my-zsh && \ git clone https://github.com/VundleVim/Vundle.vim.git /root/.vim/bundle/Vundle.vim && \ - vim +PluginInstall +qall || true && \ + vim +PluginInstall +qall || true # --- Locale - apt-get install -y locales && \ +RUN apt-get install -y locales && \ sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ - locale-gen && \ + locale-gen # --- Miniconda, environment creation - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ bash Miniconda3-latest-Linux-x86_64.sh -p /miniconda -b && \ rm Miniconda3-latest-Linux-x86_64.sh && \ /miniconda/bin/conda env create -f /root/environment.yml && \ - for whl in $(find /root/wheels/*.whl); do /miniconda/envs/jarvis/bin/pip install $whl; done && \ - -# --- Clear NVIDIA cache (otherwise must run as root) - rm -rf ~/.nv/ && \ + for whl in $(find /root/wheels/*.whl); do /miniconda/envs/jarvis/bin/pip install $whl; done -# --- Clean up - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/wheels +# --- Clear NVIDIA cache (otherwise must run as root) and clean up +RUN rm -rf ~/.nv/ && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/wheels COPY copyusers.py .bashrc /root/ COPY ./jarvis-bash.sh ./jarvis-env.sh /etc/profile.d/ @@ -53,6 +53,7 @@ ENV TERM=xterm-256color ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -ENV XDG_RUNTIME_DIR=/tmp/runtime-root +ENV XDG_RUNTIME_DIR=/tmp ENV QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb ENV DCM4CHE_HOME=/usr/local/dcm4che +ENV DEBIAN_FRONTEND= diff --git a/docker/gpu-full/environment.yml b/docker/gpu-full/environment.yml index a372f10..d24d2f5 100644 --- a/docker/gpu-full/environment.yml +++ b/docker/gpu-full/environment.yml @@ -1,229 +1,411 @@ name: jarvis channels: - - simpleitk + - pytorch + - nvidia - anaconda - conda-forge - defaults dependencies: - - _libgcc_mutex=0.1=main - - alembic=1.4.3=pyh9f0ad1d_0 - - argon2-cffi=20.1.0=py36h8c4c3a4_1 - - async_generator=1.10=py_0 - - attrs=20.2.0=pyh9f0ad1d_0 - - backcall=0.2.0=py_0 - - blas=1.0=openblas - - bleach=3.2.1=pyh9f0ad1d_0 - - blinker=1.4=py_1 - - brotlipy=0.7.0=py36h8c4c3a4_1000 - - c-ares=1.16.1=h516909a_3 - - ca-certificates=2020.7.22=0 - - certifi=2020.6.20=py36_0 - - certipy=0.1.3=py_0 - - chardet=3.0.4=py36h9f0ad1d_1007 - - click=7.1.2=py_0 - - cloudpickle=1.6.0=py_0 - - configurable-http-proxy=4.0.1=node6_0 - - cycler=0.10.0=py36_0 - - cython=0.29.21=py36he6710b0_0 - - cytoolz=0.10.1=py36h7b6447c_0 - - dask-core=2.27.0=py_0 - - dbus=1.13.16=hb2f20db_0 - - decorator=4.4.2=py_0 - - defusedxml=0.6.0=py_0 - - dill=0.3.2=py_0 - - entrypoints=0.3=py36h9f0ad1d_1001 - - expat=2.2.9=he1b5a44_2 - - flask=1.1.2=py_0 - - flask-socketio=4.3.1=pyh9f0ad1d_0 - - fontconfig=2.13.0=h9420a91_0 - - freetype=2.10.2=h5ab3b9f_0 - - gdcm=2.8.9=py36h71b2a6d_0 - - glib=2.65.0=h3eb4bd4_0 - - gst-plugins-base=1.14.0=hbbd80ab_1 - - gstreamer=1.14.0=hb31296c_0 - - h5py=2.10.0=py36hd6299e0_1 - - hdf5=1.10.6=nompi_h3c11f04_101 - - icu=58.2=he6710b0_3 - - idna=2.10=pyh9f0ad1d_0 - - imageio=2.9.0=py_0 - - importlib_metadata=1.7.0=0 - - ipdb=0.13.3=pyh9f0ad1d_0 - - ipykernel=5.3.4=py36h95af2a2_0 - - ipython=7.16.1=py36h5ca1d4c_0 - - ipython_genutils=0.2.0=py36_0 - - itsdangerous=1.1.0=py36_0 - - jedi=0.17.2=py36_0 - - jinja2=2.11.2=pyh9f0ad1d_0 - - joblib=0.16.0=py_0 - - jpeg=9d=h516909a_0 - - json-c=0.13.1=hbfbb72e_1002 - - json5=0.9.5=pyh9f0ad1d_0 - - jsonschema=3.2.0=py36h9f0ad1d_1 - - jupyter_client=6.1.7=py_0 - - jupyter_core=4.6.3=py36h9f0ad1d_1 - - jupyter_telemetry=0.0.5=py_0 - - jupyterhub=1.0.0=py36_0 - - jupyterhub-base=1.1.0=py36h9f0ad1d_4 - - jupyterlab=2.2.8=py_0 - - jupyterlab_pygments=0.1.1=pyh9f0ad1d_0 - - jupyterlab_server=1.2.0=py_0 - - kiwisolver=1.2.0=py36hfd86e86_0 - - krb5=1.17.1=hfafb76e_3 - - lcms2=2.11=h396b838_0 - - ld_impl_linux-64=2.33.1=h53a641e_7 - - libblas=3.8.0=17_openblas - - libcblas=3.8.0=17_openblas - - libcurl=7.71.1=hcdd3856_6 - - libedit=3.1.20191231=h14c3975_1 - - libev=4.33=h516909a_1 - - libffi=3.3=he6710b0_2 - - libgcc=7.2.0=h69d50b8_2 - - libgcc-ng=9.1.0=hdf63c60_0 - - libgfortran-ng=7.5.0=hdf63c60_16 - - libjpeg-turbo=2.0.3=h516909a_1 - - liblapack=3.8.0=17_openblas - - libnghttp2=1.41.0=h8cfc5f6_2 - - libopenblas=0.3.10=pthreads_hb3c22a3_4 - - libpng=1.6.37=hed695b0_2 - - libsodium=1.0.18=h516909a_0 - - libssh2=1.9.0=hab1572f_5 - - libstdcxx-ng=9.1.0=hdf63c60_0 - - libtiff=4.1.0=hc7e4089_6 - - libuuid=1.0.3=h1bed415_2 - - libuv=1.39.0=h516909a_0 - - libwebp-base=1.1.0=h516909a_3 - - libxcb=1.14=h7b6447c_0 - - libxml2=2.9.10=he19cac6_1 - - lz4-c=1.9.2=he1b5a44_3 - - mako=1.1.3=pyh9f0ad1d_0 - - markupsafe=1.1.1=py36h8c4c3a4_1 - - matplotlib=3.3.1=0 - - matplotlib-base=3.3.1=py36h817c723_0 - - mistune=0.8.4=py36h8c4c3a4_1001 - - nbclient=0.5.0=py_0 - - nbconvert=6.0.6=py36h9f0ad1d_0 - - nbformat=5.0.7=py_0 - - ncurses=6.2=he6710b0_1 - - nest-asyncio=1.4.0=py_1 - - networkx=2.5=py_0 - - nibabel=3.1.1=py_0 - - nodejs=6.11.2=h3db8ef7_0 - - notebook=6.1.4=py36h9f0ad1d_0 - - oauthlib=3.0.1=py_0 - - olefile=0.46=py36_0 - - openjpeg=2.3.1=h981e76c_3 - - openssl=1.1.1g=h7b6447c_0 - - packaging=20.4=pyh9f0ad1d_0 - - pamela=1.0.0=py_0 - - pandas=1.1.1=py36he6710b0_0 - - pandoc=2.10.1=h516909a_0 - - pandocfilters=1.4.2=py_1 - - parso=0.7.0=py_0 - - pcre=8.44=he6710b0_0 - - pexpect=4.8.0=py36_0 - - pickleshare=0.7.5=py36_0 - - pillow=7.2.0=py36hb39fc2d_0 - - prometheus_client=0.8.0=pyh9f0ad1d_0 - - prompt-toolkit=3.0.7=py_0 - - ptyprocess=0.6.0=py36_0 - - pycparser=2.20=pyh9f0ad1d_2 - - pycurl=7.43.0.5=py36h2e6c563_2 - - pydicom=2.0.0=pyh9f0ad1d_0 - - pygments=2.7.1=py_0 - - pyjwt=1.7.1=py_0 - - pymongo=3.11.0=py36he6710b0_0 - - pyopenssl=19.1.0=py_1 - - pyparsing=2.4.7=pyh9f0ad1d_0 - - pyqt=5.9.2=py36h22d08a2_1 - - pyrsistent=0.17.3=py36h8c4c3a4_0 - - pysocks=1.7.1=py36h9f0ad1d_1 - - python=3.6.12=hcff3b4d_2 - - python-dateutil=2.8.1=py_0 - - python-editor=1.0.4=py_0 - - python-engineio=3.11.2=py_0 - - python-json-logger=0.1.11=py_0 - - python-socketio=4.5.1=pyh9f0ad1d_0 - - python_abi=3.6=1_cp36m - - pytz=2020.1=py_0 - - pywavelets=1.1.1=py36h7b6447c_0 - - pyyaml=5.3.1=py36h7b6447c_1 - - pyzmq=19.0.2=py36h9947dbf_0 - - qt=5.9.7=h5867ecd_1 - - readline=8.0=h7b6447c_0 - - requests=2.24.0=py_0 - - ruamel.yaml=0.16.12=py36h8c4c3a4_0 - - ruamel.yaml.clib=0.2.2=py36h8c4c3a4_0 - - scikit-image=0.16.2=py36h0573a6f_0 - - scikit-learn=0.23.2=py36h0573a6f_0 - - seaborn=0.11.0=py_0 - - send2trash=1.5.0=py_0 - - setuptools=45.0.0=py36_1 - - simpleitk=2.0.0=py36hf484d3e_0 - - sip=4.19.24=py36he6710b0_0 - - six=1.15.0=py_0 - - sqlalchemy=1.3.19=py36h8c4c3a4_0 - - sqlite=3.33.0=h62c20be_0 - - terminado=0.9.1=py36h9f0ad1d_0 - - testpath=0.4.4=py_0 - - threadpoolctl=2.1.0=pyh5ca1d4c_0 - - tk=8.6.10=hbc83047_0 - - toolz=0.10.0=py_0 - - tornado=6.0.4=py36h8c4c3a4_1 - - traitlets=4.3.3=py36_0 - - urllib3=1.25.10=py_0 - - wcwidth=0.2.5=py_0 - - werkzeug=1.0.1=py_0 - - wheel=0.35.1=py_0 - - xlrd=1.2.0=py36_0 - - xz=5.2.5=h7b6447c_0 + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - aiofiles=22.1.0=py310h06a4308_0 + - aiosqlite=0.18.0=py310h06a4308_0 + - alembic=1.8.1=py310h06a4308_0 + - anyio=3.5.0=py310h06a4308_0 + - argon2-cffi=21.3.0=pyhd3eb1b0_0 + - argon2-cffi-bindings=21.2.0=py310h7f8727e_0 + - asttokens=2.0.5=pyhd3eb1b0_0 + - async_generator=1.10=pyhd3eb1b0_0 + - attrs=23.1.0=py310h06a4308_0 + - babel=2.11.0=py310h06a4308_0 + - backcall=0.2.0=pyhd3eb1b0_0 + - beautifulsoup4=4.12.2=py310h06a4308_0 + - bidict=0.21.2=pyhd3eb1b0_0 + - blas=1.0=mkl + - bleach=4.1.0=pyhd3eb1b0_0 + - blinker=1.6.2=py310h06a4308_0 + - blosc=1.21.3=h6a678d5_0 + - bottleneck=1.3.5=py310ha9d4c09_0 + - brotli=1.0.9=h5eee18b_7 + - brotli-bin=1.0.9=h5eee18b_7 + - brotli-python=1.0.9=py310h6a678d5_7 + - brunsli=0.1=h2531618_0 + - bzip2=1.0.8=h7b6447c_0 + - c-ares=1.19.1=h5eee18b_0 + - ca-certificates=2023.12.12=h06a4308_0 + - cairo=1.16.0=h19f5f5c_2 + - certifi=2023.11.17=py310h06a4308_0 + - certipy=0.1.3=pyhd3eb1b0_0 + - cffi=1.16.0=py310h5eee18b_0 + - cfitsio=3.470=h5893167_7 + - charls=2.2.0=h2531618_0 + - charset-normalizer=2.0.4=pyhd3eb1b0_0 + - click=8.1.7=py310h06a4308_0 + - cloudpickle=2.2.1=py310h06a4308_0 + - cmarkgfm=2022.10.27=py310h5eee18b_0 + - comm=0.1.2=py310h06a4308_0 + - configurable-http-proxy=4.6.0=h06a4308_0 + - contourpy=1.0.5=py310hdb19cb5_0 + - cryptography=41.0.3=py310h130f0dd_0 + - cuda-cudart=12.1.105=0 + - cuda-cupti=12.1.105=0 + - cuda-libraries=12.1.0=0 + - cuda-nvrtc=12.1.105=0 + - cuda-nvtx=12.1.105=0 + - cuda-opencl=12.3.101=0 + - cuda-runtime=12.1.0=0 + - cycler=0.11.0=pyhd3eb1b0_0 + - cython=3.0.0=py310h5eee18b_0 + - cytoolz=0.12.0=py310h5eee18b_0 + - czifile=2019.7.2=pyh9f0ad1d_0 + - dask-core=2023.6.0=py310h06a4308_0 + - dbus=1.13.18=hb2f20db_0 + - debugpy=1.6.7=py310h6a678d5_0 + - decorator=5.1.1=pyhd3eb1b0_0 + - defusedxml=0.7.1=pyhd3eb1b0_0 + - dill=0.3.7=py310h06a4308_0 + - docutils=0.18.1=py310h06a4308_3 + - eigen=3.3.7=hd09550d_1 + - entrypoints=0.4=py310h06a4308_0 + - exceptiongroup=1.0.4=py310h06a4308_0 + - executing=0.8.3=pyhd3eb1b0_0 + - expat=2.5.0=h6a678d5_0 + - ffmpeg=4.3.2=h37c90e5_3 + - fftw=3.3.10=nompi_hc118613_108 + - filelock=3.13.1=py310h06a4308_0 + - flask=2.2.2=py310h06a4308_0 + - flask-socketio=5.3.1=py310h06a4308_0 + - fontconfig=2.13.1=h6c09931_0 + - fonttools=4.25.0=pyhd3eb1b0_0 + - freeglut=3.2.2=hac7e632_2 + - freetype=2.12.1=h4a9f257_0 + - fsspec=2023.9.2=py310h06a4308_0 + - gdcm=2.8.9=py310hdfb500c_7 + - gdk-pixbuf=2.42.10=h5eee18b_0 + - gettext=0.21.0=hf68c758_0 + - giflib=5.2.1=h5eee18b_3 + - glib=2.72.1=h6239696_0 + - glib-tools=2.72.1=h6239696_0 + - gmp=6.2.1=h295c915_3 + - gmpy2=2.1.2=py310heeb90bb_0 + - gnutls=3.6.15=he1e5248_0 + - graphite2=1.3.14=h295c915_1 + - greenlet=2.0.1=py310h6a678d5_0 + - gst-plugins-base=1.18.5=hc549b11_0 + - gstreamer=1.18.5=ha1a6a79_0 + - h5py=3.9.0=py310he06866b_0 + - harfbuzz=3.1.1=h83ec7ef_0 + - hdf5=1.12.1=h70be1eb_2 + - icu=68.2=h9c3ff4c_0 + - idna=3.4=py310h06a4308_0 + - imagecodecs=2021.8.26=py310hecf7e94_1 + - imagecodecs-lite=2019.12.3=py310h1f7b6fc_7 + - imageio=2.31.4=py310h06a4308_0 + - importlib-metadata=6.0.0=py310h06a4308_0 + - importlib_metadata=6.0.0=hd3eb1b0_0 + - importlib_resources=6.1.0=py310h06a4308_0 + - intel-openmp=2023.1.0=hdb19cb5_46306 + - ipdb=0.13.13=pyhd8ed1ab_0 + - ipykernel=6.25.0=py310h2f386ee_0 + - ipython=8.15.0=py310h06a4308_0 + - ipython_genutils=0.2.0=pyhd3eb1b0_1 + - itsdangerous=2.0.1=pyhd3eb1b0_0 + - jaraco.classes=3.2.1=pyhd3eb1b0_0 + - jasper=2.0.33=h0ff4b12_1 + - jeepney=0.7.1=pyhd3eb1b0_0 + - jinja2=3.1.2=py310h06a4308_0 + - joblib=1.2.0=py310h06a4308_0 + - jpeg=9e=h5eee18b_1 + - json-c=0.16=h5eee18b_0 + - json5=0.9.6=pyhd3eb1b0_0 + - jsonschema=4.19.2=py310h06a4308_0 + - jsonschema-specifications=2023.7.1=py310h06a4308_0 + - jupyter_client=7.4.9=py310h06a4308_0 + - jupyter_core=5.5.0=py310h06a4308_0 + - jupyter_events=0.8.0=py310h06a4308_0 + - jupyter_server=2.10.0=py310h06a4308_0 + - jupyter_server_fileid=0.9.0=py310h06a4308_0 + - jupyter_server_terminals=0.4.4=py310h06a4308_1 + - jupyter_server_ydoc=0.8.0=py310h06a4308_1 + - jupyter_telemetry=0.1.0=py_0 + - jupyter_ydoc=0.2.4=py310h06a4308_0 + - jupyterhub=4.0.2=py310h06a4308_0 + - jupyterhub-base=4.0.2=py310h06a4308_0 + - jupyterlab=3.6.3=py310h06a4308_0 + - jupyterlab_pygments=0.2.2=py310h06a4308_0 + - jupyterlab_server=2.25.1=py310h06a4308_0 + - jxrlib=1.1=h7b6447c_2 + - keyring=23.13.1=py310h06a4308_0 + - kiwisolver=1.4.4=py310h6a678d5_0 + - krb5=1.19.4=h568e23c_0 + - lame=3.100=h7b6447c_0 + - lazy_loader=0.3=py310h06a4308_0 + - lcms2=2.12=h3be6417_0 + - ld_impl_linux-64=2.38=h1181459_1 + - lerc=3.0=h295c915_0 + - libaec=1.0.4=he6710b0_1 + - libblas=3.9.0=1_h86c2bf4_netlib + - libbrotlicommon=1.0.9=h5eee18b_7 + - libbrotlidec=1.0.9=h5eee18b_7 + - libbrotlienc=1.0.9=h5eee18b_7 + - libcblas=3.9.0=5_h92ddd45_netlib + - libcublas=12.1.0.26=0 + - libcufft=11.0.2.4=0 + - libcufile=1.8.1.2=0 + - libcurand=10.3.4.101=0 + - libcurl=7.88.1=h91b91d3_0 + - libcusolver=11.4.4.55=0 + - libcusparse=12.0.2.55=0 + - libdeflate=1.8=h7f8727e_5 + - libedit=3.1.20221030=h5eee18b_0 + - libev=4.33=h7f8727e_1 + - libevent=2.1.10=h9b69904_4 + - libffi=3.4.4=h6a678d5_0 + - libgcc-ng=13.2.0=h807b86a_3 + - libgfortran-ng=13.2.0=h69a702a_3 + - libgfortran5=13.2.0=ha4646dd_3 + - libglib=2.72.1=h2d90d5f_0 + - libglu=9.0.0=hf484d3e_1 + - libgomp=13.2.0=h807b86a_3 + - libiconv=1.16=h7f8727e_2 + - libidn2=2.3.4=h5eee18b_0 + - libitk=5.2.1=h6d27e4b_1 + - libitk-devel=5.2.1=h6eb4826_1 + - libjpeg-turbo=2.1.4=h166bdaf_0 + - liblapack=3.9.0=5_h92ddd45_netlib + - liblapacke=3.9.0=5_h92ddd45_netlib + - libllvm11=11.1.0=h9e868ea_6 + - libnghttp2=1.52.0=ha637b67_1 + - libnpp=12.0.2.50=0 + - libnvjitlink=12.1.105=0 + - libnvjpeg=12.1.1.14=0 + - libogg=1.3.5=h27cfd23_1 + - libopencv=4.5.5=py31he7a5e20_0 + - libopus=1.3.1=h7b6447c_0 + - libpng=1.6.39=h5eee18b_0 + - libpq=13.8=hd77ab85_0 + - libprotobuf=3.19.6=he621ea3_0 + - libsodium=1.0.18=h7b6447c_0 + - libssh2=1.10.0=h37d81fd_2 + - libstdcxx-ng=13.2.0=h7e041cc_3 + - libtasn1=4.19.0=h5eee18b_0 + - libtiff=4.4.0=hecacb30_2 + - libunistring=0.9.10=h27cfd23_0 + - libuuid=1.41.5=h5eee18b_0 + - libuv=1.40.0=h7b6447c_0 + - libvorbis=1.3.7=h7b6447c_0 + - libwebp=1.2.4=h11a3e52_1 + - libwebp-base=1.2.4=h5eee18b_1 + - libxcb=1.15=h7f8727e_0 + - libxkbcommon=1.0.3=he3ba5ed_0 + - libxml2=2.9.12=h72842e0_0 + - libzlib=1.2.13=hd590300_5 + - libzopfli=1.0.3=he6710b0_0 + - llvm-openmp=14.0.6=h9e868ea_0 + - locket=1.0.0=py310h06a4308_0 + - lz4-c=1.9.4=h6a678d5_0 + - mako=1.2.3=py310h06a4308_0 + - markdown-it-py=2.2.0=py310h06a4308_1 + - markupsafe=2.1.1=py310h7f8727e_0 + - matplotlib-base=3.8.0=py310h1128e8f_0 + - matplotlib-inline=0.1.6=py310h06a4308_0 + - mdurl=0.1.0=py310h06a4308_0 + - mistune=2.0.4=py310h06a4308_0 + - mkl=2023.1.0=h213fc3f_46344 + - mkl-service=2.4.0=py310h5eee18b_1 + - mkl_fft=1.3.8=py310h5eee18b_0 + - mkl_random=1.2.4=py310hdb19cb5_0 + - more-itertools=8.12.0=pyhd3eb1b0_0 + - mpc=1.1.0=h10f8cd9_1 + - mpfr=4.0.2=hb69a4c5_1 + - mpmath=1.3.0=py310h06a4308_0 + - munkres=1.1.4=py_0 + - mysql-common=8.0.32=h14678bc_0 + - mysql-libs=8.0.32=h54cf53e_0 + - nbclassic=1.0.0=py310h06a4308_0 + - nbclient=0.8.0=py310h06a4308_0 + - nbconvert=7.10.0=py310h06a4308_0 + - nbformat=5.9.2=py310h06a4308_0 + - ncurses=6.4=h6a678d5_0 + - nest-asyncio=1.5.6=py310h06a4308_0 + - nettle=3.7.3=hbbd107a_1 + - networkx=3.1=py310h06a4308_0 + - nibabel=5.2.0=pyha770c72_0 + - nodejs=16.13.1=hb931c9a_0 + - notebook=6.5.4=py310h06a4308_1 + - notebook-shim=0.2.3=py310h06a4308_0 + - nspr=4.35=h6a678d5_0 + - nss=3.89.1=h6a678d5_0 + - numexpr=2.8.7=py310h85018f9_0 + - numpy=1.26.2=py310h5f9d8c6_0 + - numpy-base=1.26.2=py310hb5e798b_0 + - oauthlib=3.2.2=py310h06a4308_0 + - opencv=4.5.5=py31hff52083_0 + - openh264=2.1.1=h4ff587b_0 + - openjpeg=2.5.0=h7d73246_1 + - openslide=3.4.1=h978ee9a_4 + - openssl=1.1.1w=h7f8727e_0 + - overrides=7.4.0=py310h06a4308_0 + - packaging=23.1=py310h06a4308_0 + - pamela=1.0.0=pyhd3eb1b0_0 + - pandas=2.1.1=py310h1128e8f_0 + - pandocfilters=1.5.0=pyhd3eb1b0_0 + - partd=1.4.1=py310h06a4308_0 + - pcre=8.45=h295c915_0 + - pexpect=4.8.0=pyhd3eb1b0_3 + - pickleshare=0.7.5=pyhd3eb1b0_1003 + - pillow=9.4.0=py310h6a678d5_0 + - pixman=0.40.0=h7f8727e_1 + - pkginfo=1.9.6=py310h06a4308_0 + - platformdirs=3.10.0=py310h06a4308_0 + - prometheus_client=0.14.1=py310h06a4308_0 + - prompt-toolkit=3.0.36=py310h06a4308_0 + - psutil=5.9.0=py310h5eee18b_0 + - ptyprocess=0.7.0=pyhd3eb1b0_2 + - pure_eval=0.2.2=pyhd3eb1b0_0 + - py-opencv=4.5.5=py31hfdc917e_0 + - pycparser=2.21=pyhd3eb1b0_0 + - pycurl=7.45.2=py310h37d81fd_0 + - pydicom=2.4.4=pyhd8ed1ab_0 + - pygments=2.15.1=py310h06a4308_1 + - pyjwt=2.4.0=py310h06a4308_0 + - pymongo=3.12.0=py310h295c915_0 + - pyopenssl=23.2.0=py310h06a4308_0 + - pyparsing=3.0.9=py310h06a4308_0 + - pysocks=1.7.1=py310h06a4308_0 + - python=3.10.13=h7a1cb2a_0 + - python-dateutil=2.8.2=pyhd3eb1b0_0 + - python-engineio=4.1.0=pyhd3eb1b0_0 + - python-fastjsonschema=2.16.2=py310h06a4308_0 + - python-json-logger=2.0.7=py310h06a4308_0 + - python-socketio=5.3.0=pyhd3eb1b0_0 + - python-tzdata=2023.3=pyhd3eb1b0_0 + - python_abi=3.10=2_cp310 + - pytorch=2.1.2=py3.10_cuda12.1_cudnn8.9.2_0 + - pytorch-cuda=12.1=ha16c6d3_5 + - pytorch-mutex=1.0=cuda + - pytz=2023.3.post1=py310h06a4308_0 + - pywavelets=1.4.1=py310h5eee18b_0 + - pyyaml=6.0.1=py310h5eee18b_0 + - pyzmq=24.0.1=py310h330234f_1 + - qt=5.12.9=hda022c4_4 + - readline=8.2=h5eee18b_0 + - readme_renderer=40.0=py310h06a4308_0 + - redis=5.0.3=h7b6447c_0 + - referencing=0.30.2=py310h06a4308_0 + - requests=2.31.0=py310h06a4308_0 + - requests-toolbelt=1.0.0=py310h06a4308_0 + - rfc3339-validator=0.1.4=py310h06a4308_0 + - rfc3986=1.4.0=pyhd3eb1b0_0 + - rfc3986-validator=0.1.1=py310h06a4308_0 + - rich=13.3.5=py310h06a4308_0 + - rpds-py=0.10.6=py310hb02cf49_0 + - ruamel.yaml=0.17.21=py310h5eee18b_0 + - ruamel.yaml.clib=0.2.6=py310h5eee18b_1 + - scikit-image=0.20.0=py310h6a678d5_0 + - scikit-learn=1.3.0=py310h1128e8f_0 + - scipy=1.11.3=py310h5f9d8c6_0 + - seaborn=0.12.2=py310h06a4308_0 + - secretstorage=3.3.1=py310h06a4308_1 + - send2trash=1.8.2=py310h06a4308_0 + - setuptools=68.2.2=py310h06a4308_0 + - simpleitk=2.1.1=py310h2b9ea3a_0 + - six=1.16.0=pyhd3eb1b0_1 + - snappy=1.1.9=h295c915_0 + - sniffio=1.2.0=py310h06a4308_1 + - soupsieve=2.5=py310h06a4308_0 + - sqlalchemy=2.0.21=py310h5eee18b_0 + - sqlite=3.41.2=h5eee18b_0 + - stack_data=0.2.0=pyhd3eb1b0_0 + - sympy=1.12=py310h06a4308_0 + - tbb=2021.8.0=hdb19cb5_0 + - tbb-devel=2021.8.0=hdb19cb5_0 + - terminado=0.17.1=py310h06a4308_0 + - threadpoolctl=2.2.0=pyh0d69192_0 + - tifffile=2021.7.2=pyhd3eb1b0_2 + - tinycss2=1.2.1=py310h06a4308_0 + - tk=8.6.12=h1ccaba5_0 + - toml=0.10.2=pyhd3eb1b0_0 + - tomli=2.0.1=py310h06a4308_0 + - toolz=0.12.0=py310h06a4308_0 + - torchaudio=2.1.2=py310_cu121 + - torchtriton=2.1.0=py310 + - torchvision=0.16.2=py310_cu121 + - tornado=6.3.3=py310h5eee18b_0 + - traitlets=5.7.1=py310h06a4308_0 + - twine=4.0.2=py310h06a4308_0 + - typing-extensions=4.7.1=py310h06a4308_0 + - typing_extensions=4.7.1=py310h06a4308_0 + - tzdata=2023c=h04d1e81_0 + - urllib3=1.26.18=py310h06a4308_0 + - wcwidth=0.2.5=pyhd3eb1b0_0 + - webencodings=0.5.1=py310h06a4308_1 + - websocket-client=0.58.0=py310h06a4308_4 + - werkzeug=2.2.3=py310h06a4308_0 + - wheel=0.41.2=py310h06a4308_0 + - x264=1!161.3030=h7f98852_1 + - xlrd=2.0.1=pyhd3eb1b0_1 + - xmltodict=0.13.0=py310h06a4308_0 + - xorg-fixesproto=5.0=h7f98852_1002 + - xorg-inputproto=2.3.2=h7f98852_1002 + - xorg-kbproto=1.0.7=h7f98852_1002 + - xorg-libx11=1.8.7=h8ee46fc_0 + - xorg-libxau=1.0.11=hd590300_0 + - xorg-libxext=1.3.4=h0b41bf4_2 + - xorg-libxfixes=5.0.3=h7f98852_1004 + - xorg-libxi=1.7.10=h7f98852_0 + - xorg-xextproto=7.3.0=h0b41bf4_1003 + - xorg-xproto=7.0.31=h27cfd23_1007 + - xz=5.4.5=h5eee18b_0 + - y-py=0.5.9=py310h52d8a92_0 - yaml=0.2.5=h7b6447c_0 - - zeromq=4.3.2=he1b5a44_3 - - zlib=1.2.11=h7b6447c_3 - - zstd=1.4.5=h6597ccf_2 + - ypy-websocket=0.8.2=py310h06a4308_0 + - zeromq=4.3.4=h2531618_0 + - zfp=0.5.5=h295c915_6 + - zipp=3.11.0=py310h06a4308_0 + - zlib=1.2.13=hd590300_5 + - zstd=1.5.5=hc292b87_0 - pip: - - absl-py==0.10.0 - - astor==0.8.1 - - cachetools==4.1.1 - - cffi==1.14.3 - - colorama==0.4.3 - - cryptography==3.1.1 - - docutils==0.16 - - gast==0.2.2 - - google-auth==1.21.2 - - google-auth-oauthlib==0.4.1 - - google-pasta==0.2.0 - - grpcio==1.32.0 - - importlib-metadata==2.0.0 - - jeepney==0.4.3 - - keras-applications==1.0.8 - - keras-preprocessing==1.1.2 - - keyring==21.4.0 - - markdown==3.2.2 - - mudicom==0.1.2 - - numpy==1.19.2 - - opencv-python==4.4.0.44 - - openslide-python==1.1.2 - - opt-einsum==3.3.0 - - pip==20.2.3 - - pkginfo==1.5.0.1 - - protobuf==3.13.0 - - pyasn1==0.4.8 - - pyasn1-modules==0.2.8 - - readme-renderer==26.0 - - redis==3.5.3 - - requests-oauthlib==1.3.0 - - requests-toolbelt==0.9.1 - - rfc3986==1.4.0 - - rsa==4.6 - - scipy==1.4.1 - - secretstorage==3.1.2 - - tensorboard==2.1.1 - - tensorflow-estimator==2.1.0 - - tensorflow-gpu==2.1.0 - - termcolor==1.1.0 - - tqdm==4.49.0 - - twine==3.2.0 - - webencodings==0.5.1 - - wrapt==1.12.1 - - zipp==3.2.0 -prefix: /miniconda/envs/jarvis + - absl-py==2.0.0 + - astunparse==1.6.3 + - cachetools==5.3.2 + - flatbuffers==23.5.26 + - gast==0.5.4 + - google-auth==2.25.2 + - google-auth-oauthlib==1.2.0 + - google-pasta==0.2.0 + - grpcio==1.60.0 + - jedi==0.17.2 + - keras==2.15.0 + - libclang==16.0.6 + - markdown==3.5.1 + - ml-dtypes==0.2.0 + - mudicom==0.1.2 + - nvidia-cublas-cu12==12.2.5.6 + - nvidia-cuda-cupti-cu12==12.2.142 + - nvidia-cuda-nvcc-cu12==12.2.140 + - nvidia-cuda-nvrtc-cu12==12.2.140 + - nvidia-cuda-runtime-cu12==12.2.140 + - nvidia-cudnn-cu12==8.9.4.25 + - nvidia-cufft-cu12==11.0.8.103 + - nvidia-curand-cu12==10.3.3.141 + - nvidia-cusolver-cu12==11.5.2.141 + - nvidia-cusparse-cu12==12.1.2.141 + - nvidia-nccl-cu12==2.16.5 + - nvidia-nvjitlink-cu12==12.2.140 + - opt-einsum==3.3.0 + - parso==0.7.1 + - pip==23.3.2 + - protobuf==4.23.4 + - pyasn1==0.5.1 + - pyasn1-modules==0.3.0 + - requests-oauthlib==1.3.1 + - rsa==4.9 + - tensorboard==2.15.1 + - tensorboard-data-server==0.7.2 + - tensorflow==2.15.0.post1 + - tensorflow-estimator==2.15.0 + - tensorflow-io-gcs-filesystem==0.35.0 + - termcolor==2.4.0 + - wrapt==1.14.1 +prefix: /home/ubuntu/miniconda3/envs/jarvis diff --git a/docker/gpu-full/wheels/jarvis_md-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..4ef90de Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 93185b5..0000000 Binary files a/docker/gpu-full/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-full/wheels/jarvis_md_dicom-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_dicom-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..c9fdd6d Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_dicom-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_hub-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_hub-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..ba64294 Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_hub-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_io-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_io-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..8e85476 Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_io-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_mongo-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_mongo-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..956482f Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_mongo-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 154fb35..0000000 Binary files a/docker/gpu-full/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-full/wheels/jarvis_md_mvk_mzl-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_mvk_mzl-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..a6eb7f9 Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_mvk_mzl-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 2206d2a..0000000 Binary files a/docker/gpu-full/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-full/wheels/jarvis_md_nifti-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_nifti-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..2be2736 Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_nifti-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl deleted file mode 100644 index bb1be7e..0000000 Binary files a/docker/gpu-full/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-full/wheels/jarvis_md_pacs-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_pacs-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..c84f4dc Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_pacs-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-full/wheels/jarvis_md_webtools-0.0.2a1-py3-none-any.whl b/docker/gpu-full/wheels/jarvis_md_webtools-0.0.2a1-py3-none-any.whl new file mode 100644 index 0000000..a3ad389 Binary files /dev/null and b/docker/gpu-full/wheels/jarvis_md_webtools-0.0.2a1-py3-none-any.whl differ diff --git a/docker/gpu-lite/.bashrc b/docker/gpu-lite/.bashrc index 80f84cf..45e38f7 100644 --- a/docker/gpu-lite/.bashrc +++ b/docker/gpu-lite/.bashrc @@ -1,131 +1,7 @@ -# ~/.bashrc: executed by bash(1) for non-login shells. -# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) -# for examples - -# If not running interactively, don't do anything -case $- in - *i*) ;; - *) return;; -esac - -# don't put duplicate lines or lines starting with space in the history. -# See bash(1) for more options -HISTCONTROL=ignoreboth - -# append to the history file, don't overwrite it -shopt -s histappend - -# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) -HISTSIZE=1000 -HISTFILESIZE=2000 - -# check the window size after each command and, if necessary, -# update the values of LINES and COLUMNS. -shopt -s checkwinsize - -# If set, the pattern "**" used in a pathname expansion context will -# match all files and zero or more directories and subdirectories. -#shopt -s globstar - -# make less more friendly for non-text input files, see lesspipe(1) -[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" - -# set variable identifying the chroot you work in (used in the prompt below) -if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then - debian_chroot=$(cat /etc/debian_chroot) -fi - -# set a fancy prompt (non-color, unless we know we "want" color) -case "$TERM" in - xterm-color|*-256color) color_prompt=yes;; -esac - -# uncomment for a colored prompt, if the terminal has the capability; turned -# off by default to not distract the user: the focus in a terminal window -# should be on the output of commands, not on the prompt -#force_color_prompt=yes - -if [ -n "$force_color_prompt" ]; then - if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then - # We have color support; assume it's compliant with Ecma-48 - # (ISO/IEC-6429). (Lack of such support is extremely rare, and such - # a case would tend to support setf rather than setaf.) - color_prompt=yes - else - color_prompt= - fi -fi - -if [ "$color_prompt" = yes ]; then - PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' -else - PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' -fi -unset color_prompt force_color_prompt - -# If this is an xterm set the title to user@host:dir -case "$TERM" in -xterm*|rxvt*) - PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" - ;; -*) - ;; -esac - -# enable color support of ls and also add handy aliases -if [ -x /usr/bin/dircolors ]; then - test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" - alias ls='ls --color=auto' - #alias dir='dir --color=auto' - #alias vdir='vdir --color=auto' - - alias grep='grep --color=auto' - alias fgrep='fgrep --color=auto' - alias egrep='egrep --color=auto' -fi - -# colored GCC warnings and errors -#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' - -# some more ls aliases -alias ll='ls -alF' -alias la='ls -A' -alias l='ls -CF' - -# Add an "alert" alias for long running commands. Use like so: -# sleep 10; alert -alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' - -# Alias definitions. -# You may want to put all your additions into a separate file like -# ~/.bash_aliases, instead of adding them here directly. -# See /usr/share/doc/bash-doc/examples in the bash-doc package. - -if [ -f ~/.bash_aliases ]; then - . ~/.bash_aliases -fi - -# enable programmable completion features (you don't need to enable -# this, if it's already enabled in /etc/bash.bashrc and /etc/profile -# sources /etc/bash.bashrc). -if ! shopt -oq posix; then - if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion - elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion - fi -fi - # ====================================================================== -# CUSTOM SETTINGS +# JARVIS | ENTRY SCRIPT # ====================================================================== -# --- Set users (only on initial launch) -~/setusers.sh - -# --- Activate conda env -source activate jarvis - # --- Run startup script if set if [ ! -z $JARVIS_ENTRY_SCRIPT ]; then if [ -f $JARVIS_ENTRY_SCRIPT ]; then diff --git a/docker/gpu-lite/Dockerfile b/docker/gpu-lite/Dockerfile index ee376ce..4395a41 100644 --- a/docker/gpu-lite/Dockerfile +++ b/docker/gpu-lite/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04 +FROM nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 MAINTAINER Peter Chang # --- Copy files @@ -32,12 +32,12 @@ RUN apt-get update && apt-get install -y wget curl bzip2 vim silversearcher-ag t # --- Clean up apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/wheels -COPY setusers.sh /root/ COPY .bashrc /root/ +COPY ./jarvis-bash.sh ./jarvis-env.sh /etc/profile.d/ ENV PATH=/miniconda/bin:$PATH ENV TERM=xterm-256color ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -ENV XDG_RUNTIME_DIR=/tmp/runtime-root +ENV XDG_RUNTIME_DIR=/tmp diff --git a/docker/gpu-lite/copyusers.py b/docker/gpu-lite/copyusers.py new file mode 100644 index 0000000..8d3090d --- /dev/null +++ b/docker/gpu-lite/copyusers.py @@ -0,0 +1,82 @@ +import os, re, argparse + +USAGE = """ +USAGE: python copyeusers.py [-src ... , -dst ...] + +Run COVID-19 predictive analytics + +OPTIONS: + + -src SRC directory containing users data (default is ~/etc) + -dst DST directory containing users data (default is /etc) + +""" + +def copy_users(src=None, dst=None): + + SRC_DIR = src or '{}/etc'.format(os.environ['HOME']) + DST_DIR = dst or '/etc' + + passwd = '{}/passwd'.format(SRC_DIR) + if not os.path.exists(passwd): + return + + users = find_users(passwd) + + # --- Update passwd + copy_lines('{}/passwd'.format(DST_DIR), users) + + # --- Update remainder + for key in ['shadow', 'group', 'gshadow']: + src = '{}/{}'.format(SRC_DIR, key) + dst = '{}/{}'.format(DST_DIR, key) + if os.path.exists(src): + lines = find_lines(src, users) + copy_lines(dst, lines) + +def find_users(passwd): + + users = {} + + with open(passwd, 'r') as f: + for line in f.readlines(): + matches = re.findall('^[a-zA-Z].*:x:1[0-9][0-9][0-9]:1[0-9][0-9][0-9]:', line) + if len(matches) > 0: + users[matches[0].split(':')[0]] = line + + return users + +def find_lines(fname, users): + + lines = {} + + with open(fname, 'r') as f: + for line in f.readlines(): + if line.split(':')[0] in users: + lines[line.split(':')[0]] = line + + return lines + +def copy_lines(fname, lines): + + # --- Find existing users + if os.path.exists(fname): + users = {line.split(':')[0]: line for line in open(fname, 'r').readlines()} + else: + users = {} + os.makedirs(os.path.dirname(fname), exist_ok=True) + + # --- Update + with open(fname, 'a+') as f: + for user, line in lines.items(): + if user not in users: + f.write(line) + +if __name__ == '__main__': + + parser = argparse.ArgumentParser(usage=USAGE) + parser.add_argument('-src', metavar='src', type=str, default=None) + parser.add_argument('-dst', metavar='dst', type=str, default=None) + + args = parser.parse_args() + copy_users(**vars(args)) diff --git a/docker/gpu-lite/environment.yml b/docker/gpu-lite/environment.yml index a761828..9b00f2e 100644 --- a/docker/gpu-lite/environment.yml +++ b/docker/gpu-lite/environment.yml @@ -1,147 +1,215 @@ name: jarvis channels: - - conda-forge - anaconda + - conda-forge - defaults dependencies: - - _libgcc_mutex=0.1=main - - backcall=0.2.0=py_0 - - blas=1.0=mkl - - brotlipy=0.7.0=py36h7b6447c_1000 - - ca-certificates=2020.7.22=0 - - certifi=2020.6.20=py36_0 - - cffi=1.14.3=py36he30daa8_0 - - chardet=3.0.4=py36_1003 - - cloudpickle=1.6.0=py_0 - - cryptography=3.1=py36h1ba5d50_0 - - cycler=0.10.0=py36_0 - - cython=0.29.21=py36he6710b0_0 - - cytoolz=0.10.1=py36h7b6447c_0 - - dask-core=2.27.0=py_0 - - dbus=1.13.16=hb2f20db_0 - - decorator=4.4.2=py_0 - - dill=0.3.2=py_0 - - expat=2.2.9=he1b5a44_2 - - fontconfig=2.13.0=h9420a91_0 - - freetype=2.10.2=h5ab3b9f_0 - - gdcm=2.8.9=py36h71b2a6d_0 - - glib=2.65.0=h3eb4bd4_0 - - gst-plugins-base=1.14.0=hbbd80ab_1 - - gstreamer=1.14.0=hb31296c_0 - - h5py=2.10.0=py36hd6299e0_1 - - hdf5=1.10.6=hb1b8bf9_0 - - icu=58.2=he6710b0_3 - - idna=2.10=py_0 - - imageio=2.9.0=py_0 - - intel-openmp=2020.2=254 - - ipdb=0.13.3=pyh9f0ad1d_0 - - ipython=7.16.1=py36h5ca1d4c_0 - - ipython_genutils=0.2.0=py36_0 - - jedi=0.17.2=py36_0 - - joblib=0.16.0=py_0 - - jpeg=9d=h516909a_0 - - json-c=0.13.1=hbfbb72e_1002 - - kiwisolver=1.2.0=py36hfd86e86_0 - - lcms2=2.11=h396b838_0 - - ld_impl_linux-64=2.33.1=h53a641e_7 - - libedit=3.1.20191231=h14c3975_1 - - libffi=3.3=he6710b0_2 - - libgcc-ng=9.1.0=hdf63c60_0 - - libgfortran-ng=7.3.0=hdf63c60_0 - - libjpeg-turbo=2.0.3=h516909a_1 - - libpng=1.6.37=hed695b0_2 - - libstdcxx-ng=9.1.0=hdf63c60_0 - - libtiff=4.1.0=hc7e4089_6 - - libuuid=1.0.3=h1bed415_2 - - libwebp-base=1.1.0=h516909a_3 - - libxcb=1.14=h7b6447c_0 - - libxml2=2.9.10=he19cac6_1 - - lz4-c=1.9.2=he1b5a44_3 - - matplotlib=3.3.1=0 - - matplotlib-base=3.3.1=py36h817c723_0 - - mkl=2020.2=256 - - mkl-service=2.3.0=py36he904b0f_0 - - mkl_fft=1.2.0=py36h23d657b_0 - - mkl_random=1.1.1=py36h0573a6f_0 - - ncurses=6.2=he6710b0_1 - - networkx=2.5=py_0 - - numpy-base=1.19.1=py36hfa32c7d_0 - - olefile=0.46=py36_0 - - openjpeg=2.3.1=h981e76c_3 - - openssl=1.1.1g=h7b6447c_0 - - pandas=1.1.1=py36he6710b0_0 - - parso=0.7.0=py_0 - - pcre=8.44=he6710b0_0 - - pexpect=4.8.0=py36_0 - - pickleshare=0.7.5=py36_0 - - pillow=7.2.0=py36hb39fc2d_0 - - prompt-toolkit=3.0.7=py_0 - - ptyprocess=0.6.0=py36_0 - - pycparser=2.20=py_2 - - pydicom=2.0.0=pyh9f0ad1d_0 - - pygments=2.7.1=py_0 - - pymongo=3.11.0=py36he6710b0_0 - - pyopenssl=19.1.0=py_1 - - pyparsing=2.4.7=py_0 - - pyqt=5.9.2=py36h22d08a2_1 - - pysocks=1.7.1=py36_0 - - python=3.6.12=hcff3b4d_2 - - python-dateutil=2.8.1=py_0 - - python_abi=3.6=1_cp36m - - pytz=2020.1=py_0 - - pywavelets=1.1.1=py36h7b6447c_0 - - pyyaml=5.3.1=py36h7b6447c_1 - - qt=5.9.7=h5867ecd_1 - - readline=8.0=h7b6447c_0 - - requests=2.24.0=py_0 - - scikit-image=0.16.2=py36h0573a6f_0 - - scikit-learn=0.23.2=py36h0573a6f_0 - - setuptools=45.0.0=py36_1 - - sip=4.19.24=py36he6710b0_0 - - six=1.15.0=py_0 - - sqlite=3.33.0=h62c20be_0 - - threadpoolctl=2.1.0=pyh5ca1d4c_0 - - tk=8.6.10=hbc83047_0 - - toolz=0.10.0=py_0 - - tornado=6.0.4=py36h7b6447c_1 - - traitlets=4.3.3=py36_0 - - urllib3=1.25.10=py_0 - - wcwidth=0.2.5=py_0 - - wheel=0.35.1=py_0 - - xz=5.2.5=h7b6447c_0 + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - aom=3.7.1=h59595ed_0 + - asttokens=2.0.5=pyhd3eb1b0_0 + - backcall=0.2.0=pyhd3eb1b0_0 + - blas=1.0=openblas + - bleach=4.1.0=pyhd3eb1b0_0 + - blosc=1.21.5=h0f2a231_0 + - bottleneck=1.3.5=py310ha9d4c09_0 + - brotli=1.0.9=he6710b0_2 + - brotli-python=1.0.9=py310h6a678d5_7 + - brunsli=0.1=h2531618_0 + - bzip2=1.0.8=h7b6447c_0 + - c-ares=1.19.1=h5eee18b_0 + - c-blosc2=2.10.5=h80c7b02_0 + - ca-certificates=2023.12.12=h06a4308_0 + - certifi=2023.11.17=py310h06a4308_0 + - cffi=1.16.0=py310h5eee18b_0 + - charls=2.4.2=h59595ed_0 + - charset-normalizer=2.0.4=pyhd3eb1b0_0 + - click=8.1.7=py310h06a4308_0 + - cloudpickle=2.2.1=py310h06a4308_0 + - cmarkgfm=2022.10.27=py310h5eee18b_0 + - cryptography=41.0.3=py310hdda0065_0 + - cython=3.0.0=py310h5eee18b_0 + - cytoolz=0.12.0=py310h5eee18b_0 + - dask-core=2023.6.0=py310h06a4308_0 + - dav1d=1.2.1=h5eee18b_0 + - dbus=1.13.18=hb2f20db_0 + - decorator=5.1.1=pyhd3eb1b0_0 + - dill=0.3.7=py310h06a4308_0 + - docutils=0.18.1=py310h06a4308_3 + - exceptiongroup=1.0.4=py310h06a4308_0 + - executing=0.8.3=pyhd3eb1b0_0 + - expat=2.5.0=h6a678d5_0 + - freetype=2.12.1=h4a9f257_0 + - fsspec=2023.9.2=py310h06a4308_0 + - gdcm=2.8.9=py310h59700c5_10 + - giflib=5.2.1=h5eee18b_3 + - glib=2.69.1=he621ea3_2 + - h5py=3.9.0=py310he06866b_0 + - hdf5=1.12.1=h2b7332f_3 + - idna=3.4=py310h06a4308_0 + - imagecodecs=2023.9.18=py310h496a806_2 + - imageio=2.31.4=py310h06a4308_0 + - importlib-metadata=6.0.0=py310h06a4308_0 + - importlib_metadata=6.0.0=hd3eb1b0_0 + - ipdb=0.13.13=pyhd8ed1ab_0 + - ipython=8.15.0=py310h06a4308_0 + - jaraco.classes=3.2.1=pyhd3eb1b0_0 + - jeepney=0.7.1=pyhd3eb1b0_0 + - joblib=1.2.0=py310h06a4308_0 + - json-c=0.17=h7ab15ed_0 + - jxrlib=1.1=h7b6447c_2 + - keyring=23.13.1=py310h06a4308_0 + - krb5=1.20.1=h143b758_1 + - lazy_loader=0.3=py310h06a4308_0 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.38=h1181459_1 + - lerc=4.0.0=h27087fc_0 + - libaec=1.1.2=h59595ed_1 + - libavif16=1.0.3=hef5bec9_1 + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcurl=7.88.1=h251f7ec_2 + - libdeflate=1.19=hd590300_0 + - libedit=3.1.20221030=h5eee18b_0 + - libev=4.33=h7f8727e_1 + - libexpat=2.5.0=hcb278e6_1 + - libffi=3.4.4=h6a678d5_0 + - libgcc-ng=13.2.0=h807b86a_3 + - libgfortran-ng=11.2.0=h00389a5_1 + - libgfortran5=11.2.0=h1234567_1 + - libgomp=13.2.0=h807b86a_3 + - libjpeg-turbo=3.0.0=hd590300_1 + - libnghttp2=1.57.0=h2d74bed_0 + - libopenblas=0.3.21=h043d6bf_0 + - libpng=1.6.39=h5eee18b_0 + - libssh2=1.10.0=hdbd6064_2 + - libstdcxx-ng=13.2.0=h7e041cc_3 + - libtiff=4.6.0=ha9c0a0a_2 + - libuuid=1.41.5=h5eee18b_0 + - libwebp-base=1.3.2=h5eee18b_0 + - libxcb=1.15=h7f8727e_0 + - libzlib=1.2.13=hd590300_5 + - libzopfli=1.0.3=he6710b0_0 + - locket=1.0.0=py310h06a4308_0 + - lz4-c=1.9.4=h6a678d5_0 + - markdown-it-py=2.2.0=py310h06a4308_1 + - matplotlib-inline=0.1.6=py310h06a4308_0 + - mdurl=0.1.0=py310h06a4308_0 + - more-itertools=8.12.0=pyhd3eb1b0_0 + - ncurses=6.4=h6a678d5_0 + - networkx=3.1=py310h06a4308_0 + - numexpr=2.8.7=py310h286c3b5_0 + - numpy=1.26.0=py310heeff2f4_0 + - numpy-base=1.26.0=py310h8a23956_0 + - openjpeg=2.5.0=h488ebb8_3 + - openssl=3.0.12=h7f8727e_0 + - packaging=23.1=py310h06a4308_0 + - pandas=2.1.1=py310h1128e8f_0 + - partd=1.4.1=py310h06a4308_0 + - pcre=8.45=h295c915_0 + - pexpect=4.8.0=pyhd3eb1b0_3 + - pickleshare=0.7.5=pyhd3eb1b0_1003 + - pillow=10.1.0=py310h01dd4db_0 + - pkginfo=1.9.6=py310h06a4308_0 + - prompt-toolkit=3.0.36=py310h06a4308_0 + - ptyprocess=0.7.0=pyhd3eb1b0_2 + - pure_eval=0.2.2=pyhd3eb1b0_0 + - pycparser=2.21=pyhd3eb1b0_0 + - pydicom=2.4.4=pyhd8ed1ab_0 + - pygments=2.15.1=py310h06a4308_1 + - pymongo=3.12.0=py310h295c915_0 + - pyopenssl=23.2.0=py310h06a4308_0 + - pysocks=1.7.1=py310h06a4308_0 + - python=3.10.13=h955ad1f_0 + - python-dateutil=2.8.2=pyhd3eb1b0_0 + - python-tzdata=2023.3=pyhd3eb1b0_0 + - python_abi=3.10=2_cp310 + - pytz=2023.3.post1=py310h06a4308_0 + - pywavelets=1.4.1=py310h5eee18b_0 + - pyyaml=6.0.1=py310h5eee18b_0 + - rav1e=0.6.6=he8a937b_2 + - readline=8.2=h5eee18b_0 + - readme_renderer=40.0=py310h06a4308_0 + - redis=5.0.3=h7b6447c_0 + - requests=2.31.0=py310h06a4308_0 + - requests-toolbelt=1.0.0=py310h06a4308_0 + - rfc3986=1.4.0=pyhd3eb1b0_0 + - rich=13.3.5=py310h06a4308_0 + - scikit-image=0.20.0=py310h6a678d5_0 + - scikit-learn=1.3.0=py310h1128e8f_0 + - scipy=1.11.3=py310heeff2f4_0 + - secretstorage=3.3.1=py310h06a4308_1 + - setuptools=68.2.2=py310h06a4308_0 + - six=1.16.0=pyhd3eb1b0_1 + - snappy=1.1.10=h9fff704_0 + - sqlite=3.41.2=h5eee18b_0 + - stack_data=0.2.0=pyhd3eb1b0_0 + - svt-av1=1.8.0=h59595ed_0 + - threadpoolctl=2.2.0=pyh0d69192_0 + - tifffile=2023.4.12=py310h06a4308_0 + - tk=8.6.13=noxft_h4845f30_101 + - toml=0.10.2=pyhd3eb1b0_0 + - toolz=0.12.0=py310h06a4308_0 + - traitlets=5.7.1=py310h06a4308_0 + - twine=4.0.2=py310h06a4308_0 + - tzdata=2023c=h04d1e81_0 + - urllib3=1.26.18=py310h06a4308_0 + - wcwidth=0.2.5=pyhd3eb1b0_0 + - webencodings=0.5.1=py310h06a4308_1 + - wheel=0.41.2=py310h06a4308_0 + - xz=5.4.5=h5eee18b_0 - yaml=0.2.5=h7b6447c_0 - - zlib=1.2.11=h7b6447c_3 - - zstd=1.4.5=h6597ccf_2 + - zfp=1.0.0=h6a678d5_0 + - zipp=3.11.0=py310h06a4308_0 + - zlib=1.2.13=hd590300_5 + - zlib-ng=2.0.7=h5eee18b_0 + - zstd=1.5.5=hc292b87_0 - pip: - - absl-py==0.10.0 - - astor==0.8.1 - - cachetools==4.1.1 - - gast==0.2.2 - - google-auth==1.21.2 - - google-auth-oauthlib==0.4.1 - - google-pasta==0.2.0 - - grpcio==1.32.0 - - importlib-metadata==2.0.0 - - keras-applications==1.0.8 - - keras-preprocessing==1.1.2 - - markdown==3.2.2 - - mudicom==0.1.2 - - numpy==1.19.2 - - oauthlib==3.1.0 - - opt-einsum==3.3.0 - - pip==20.2.3 - - protobuf==3.13.0 - - pyasn1==0.4.8 - - pyasn1-modules==0.2.8 - - redis==3.5.3 - - requests-oauthlib==1.3.0 - - rsa==4.6 - - scipy==1.4.1 - - tensorboard==2.1.1 - - tensorflow-estimator==2.1.0 - - tensorflow-gpu==2.1.0 - - termcolor==1.1.0 - - werkzeug==1.0.1 - - wrapt==1.12.1 - - zipp==3.2.0 -prefix: /miniconda/envs/jarvis + - absl-py==2.0.0 + - astunparse==1.6.3 + - cachetools==5.3.2 + - flatbuffers==23.5.26 + - gast==0.5.4 + - google-auth==2.25.2 + - google-auth-oauthlib==1.2.0 + - google-pasta==0.2.0 + - grpcio==1.60.0 + - jedi==0.17.2 + - keras==2.15.0 + - libclang==16.0.6 + - markdown==3.5.1 + - markupsafe==2.1.3 + - ml-dtypes==0.2.0 + - mudicom==0.1.2 + - nvidia-cublas-cu12==12.2.5.6 + - nvidia-cuda-cupti-cu12==12.2.142 + - nvidia-cuda-nvcc-cu12==12.2.140 + - nvidia-cuda-nvrtc-cu12==12.2.140 + - nvidia-cuda-runtime-cu12==12.2.140 + - nvidia-cudnn-cu12==8.9.4.25 + - nvidia-cufft-cu12==11.0.8.103 + - nvidia-curand-cu12==10.3.3.141 + - nvidia-cusolver-cu12==11.5.2.141 + - nvidia-cusparse-cu12==12.1.2.141 + - nvidia-nccl-cu12==2.16.5 + - nvidia-nvjitlink-cu12==12.2.140 + - oauthlib==3.2.2 + - opt-einsum==3.3.0 + - parso==0.7.1 + - pip==23.3.2 + - protobuf==4.23.4 + - pyasn1==0.5.1 + - pyasn1-modules==0.3.0 + - requests-oauthlib==1.3.1 + - rsa==4.9 + - tensorboard==2.15.1 + - tensorboard-data-server==0.7.2 + - tensorflow==2.15.0.post1 + - tensorflow-estimator==2.15.0 + - tensorflow-io-gcs-filesystem==0.35.0 + - termcolor==2.4.0 + - typing-extensions==4.9.0 + - werkzeug==3.0.1 + - wrapt==1.14.1 +prefix: /home/ubuntu/miniconda3/envs/jarvis diff --git a/docker/gpu-lite/jarvis-bash.sh b/docker/gpu-lite/jarvis-bash.sh new file mode 100755 index 0000000..6164964 --- /dev/null +++ b/docker/gpu-lite/jarvis-bash.sh @@ -0,0 +1,113 @@ +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + alias dir='dir --color=auto' + alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/docker/gpu-lite/jarvis-env.sh b/docker/gpu-lite/jarvis-env.sh new file mode 100755 index 0000000..9eb3b0a --- /dev/null +++ b/docker/gpu-lite/jarvis-env.sh @@ -0,0 +1,17 @@ +# ====================================================================== +# JARVIS | ENV SETUP +# ====================================================================== + +# --- Set conda env +if [ "${JARVIS_SOURCE_ENV:-true}" = true ]; then + if [ -d /miniconda/envs/jarvis ]; then + source /miniconda/bin/activate jarvis + fi +fi + +# --- Set users +if [ "${JARVIS_COPY_USERS:-true}" = true ]; then + if [ -f ~/copyusers.py ]; then + python ~/copyusers.py -src "${JARVIS_COPY_USERS_SRC:-$HOME/etc}" -dst "${JARVIS_COPY_USERS_DST:-/etc}" + fi +fi diff --git a/docker/gpu-lite/wheels/jarvis_md-0.0.1a17-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md-0.0.1a17-py3-none-any.whl new file mode 100644 index 0000000..88095db Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md-0.0.1a17-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 93185b5..0000000 Binary files a/docker/gpu-lite/wheels/jarvis_md_dicom-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-lite/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..1c443c5 Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_dicom-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..c685ee7 Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_hub-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..2dfd730 Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_io-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl new file mode 100644 index 0000000..e7c25c1 Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_mongo-0.0.1a22-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 154fb35..0000000 Binary files a/docker/gpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..05335cd Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_mvk_mzl-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl deleted file mode 100644 index 2206d2a..0000000 Binary files a/docker/gpu-lite/wheels/jarvis_md_nifti-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-lite/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..a422965 Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_nifti-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl deleted file mode 100644 index bb1be7e..0000000 Binary files a/docker/gpu-lite/wheels/jarvis_md_pacs-0.0.1a1-py3-none-any.whl and /dev/null differ diff --git a/docker/gpu-lite/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl new file mode 100644 index 0000000..da28fd4 Binary files /dev/null and b/docker/gpu-lite/wheels/jarvis_md_pacs-0.0.1a2-py3-none-any.whl differ diff --git a/docker/gpu-lite/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl b/docker/gpu-lite/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl similarity index 65% rename from docker/gpu-lite/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl rename to docker/gpu-lite/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl index 5541adb..fcebb55 100644 Binary files a/docker/gpu-lite/wheels/jarvis_md_webtools-0.0.1a1-py3-none-any.whl and b/docker/gpu-lite/wheels/jarvis_md_webtools-0.0.1a2-py3-none-any.whl differ