MDAnalysis / MDAnalysisMolSSIWorkshop-Intermediate2Day

Other
10 stars 14 forks source link

USB installer for workshop #24

Closed orbeckst closed 1 week ago

orbeckst commented 2 weeks ago

We wanted to put an all-in-one installer on USB flash drives. I have 10 x 16 GB USB3 flash drives.

@mikemhenry do you have an image for me that I can put on these drives? Which operating systems do we need it for?

orbeckst commented 2 weeks ago

Sorry @sjayellis , @mikemhenry was the person I should have pinged!

Editing the top post...

mikemhenry commented 2 weeks ago

Working on this right now! I was going to do linux, windows (if it works?), osx-arm64, osx-x86

orbeckst commented 2 weeks ago

That should cover all bases!

mikemhenry commented 2 weeks ago

Is it okay if I make a "release" on this repo as a spot to put them? I just made the linux one for you to test but github won't let me upload it as an attachment image

mikemhenry commented 2 weeks ago

Sorry! My internet kept dying when I tried to upload the installer, so I just yolo'ed and merged in #25 and will iterate on #26 to fix bugs, sorry!

mikemhenry commented 2 weeks ago

Installers uploading here: https://github.com/MDAnalysis/MDAnalysisMolSSIWorkshop-Intermediate2Day/releases/tag/1

@IAlibay @orbeckst if you could test these that would be great! Especially if you can track down someone with a x86 mac, an arm64 mac, and a windows machine

mikemhenry commented 2 weeks ago

If you run into any issues with them, ping me on discord :smile:

orbeckst commented 2 weeks ago

I can try macOS x86. @ianmkenney can you try macOS arm64 – if not I could try on the lab laptop (but I already have a ton of other things to get through)

ianmkenney commented 2 weeks ago

Looks like it worked to me! See the base env below. Opened a notebook, tested some plotting, and tested a structure alignment.

name: base
channels:
  - conda-forge
  - nodefaults
dependencies:
  - alabaster=0.7.16=pyhd8ed1ab_0
  - anyio=4.4.0=pyhd8ed1ab_0
  - appnope=0.1.4=pyhd8ed1ab_0
  - archspec=0.2.3=pyhd8ed1ab_0
  - argon2-cffi=23.1.0=pyhd8ed1ab_0
  - argon2-cffi-bindings=21.2.0=py310h2aa6e3c_4
  - arrow=1.3.0=pyhd8ed1ab_0
  - asttokens=2.4.1=pyhd8ed1ab_0
  - attrs=23.2.0=pyh71513ae_0
  - babel=2.14.0=pyhd8ed1ab_0
  - backports.zoneinfo=0.2.1=py310hbe9552e_8
  - beautifulsoup4=4.12.3=pyha770c72_0
  - binaryornot=0.4.4=py_1
  - biopython=1.83=py310hd125d64_0
  - bleach=6.1.0=pyhd8ed1ab_0
  - blosc=1.21.5=h9c252e8_1
  - boltons=24.0.0=pyhd8ed1ab_0
  - brotli=1.1.0=hb547adb_1
  - brotli-bin=1.1.0=hb547adb_1
  - brotli-python=1.1.0=py310h1253130_1
  - bzip2=1.0.8=h93a5062_5
  - c-ares=1.28.1=h93a5062_0
  - ca-certificates=2024.6.2=hf0a4a13_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cairo=1.18.0=hc6c324b_2
  - certifi=2024.6.2=pyhd8ed1ab_0
  - cffi=1.16.0=py310hdcd7c05_0
  - cftime=1.6.4=py310hb3e58dc_0
  - chardet=5.2.0=py310hbe9552e_1
  - charset-normalizer=3.3.2=pyhd8ed1ab_0
  - click=8.1.7=unix_pyh707e725_0
  - colorama=0.4.6=pyhd8ed1ab_0
  - comm=0.2.2=pyhd8ed1ab_0
  - conda=24.3.0=py310hbe9552e_0
  - conda-libmamba-solver=24.1.0=pyhd8ed1ab_0
  - conda-package-handling=2.3.0=pyh7900ff3_0
  - conda-package-streaming=0.10.0=pyhd8ed1ab_0
  - contourpy=1.2.1=py310h21239e6_0
  - cookiecutter=2.6.0=pyhca7485f_0
  - coverage=7.5.3=py310ha6dd24b_0
  - css-html-js-minify=2.5.5=py310hbe9552e_8
  - cycler=0.12.1=pyhd8ed1ab_0
  - debugpy=1.8.1=py310h692a8b6_0
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - distro=1.9.0=pyhd8ed1ab_0
  - docutils=0.20.1=py310hbe9552e_3
  - entrypoints=0.4=pyhd8ed1ab_0
  - exceptiongroup=1.2.0=pyhd8ed1ab_2
  - executing=2.0.1=pyhd8ed1ab_0
  - expat=2.6.2=hebf3989_0
  - fasteners=0.17.3=pyhd8ed1ab_0
  - fmt=10.2.1=h2ffa867_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=h77eed37_2
  - fontconfig=2.14.2=h82840c6_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - fonttools=4.53.0=py310ha6dd24b_0
  - fqdn=1.5.1=pyhd8ed1ab_0
  - freetype=2.12.1=hadb7bae_2
  - freetype-py=2.3.0=pyhd8ed1ab_0
  - greenlet=3.0.3=py310h692a8b6_0
  - griddataformats=1.0.2=pyhd8ed1ab_0
  - gsd=3.3.0=py310hb3e58dc_0
  - h5py=3.11.0=nompi_py310h92897fd_102
  - hdf4=4.2.15=h2ee6834_7
  - hdf5=1.14.3=nompi_hec07895_105
  - hypothesis=6.103.2=pyha770c72_0
  - icu=73.2=hc8870d7_0
  - idna=3.7=pyhd8ed1ab_0
  - imagesize=1.4.1=pyhd8ed1ab_0
  - importlib-metadata=7.2.0=pyha770c72_0
  - importlib_resources=6.4.0=pyhd8ed1ab_0
  - iniconfig=2.0.0=pyhd8ed1ab_0
  - ipykernel=6.29.4=pyh57ce528_0
  - ipython=8.25.0=pyh707e725_0
  - ipython_genutils=0.2.0=pyhd8ed1ab_1
  - ipywidgets=7.6.0=pyhd3deb0d_0
  - isoduration=20.11.0=pyhd8ed1ab_0
  - jedi=0.19.1=pyhd8ed1ab_0
  - jinja2=3.1.4=pyhd8ed1ab_0
  - joblib=1.4.2=pyhd8ed1ab_0
  - jsonpatch=1.33=pyhd8ed1ab_0
  - jsonpointer=3.0.0=py310hbe9552e_0
  - jsonschema=4.22.0=pyhd8ed1ab_0
  - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0
  - jsonschema-with-format-nongpl=4.22.0=pyhd8ed1ab_0
  - jupyter_client=7.4.9=pyhd8ed1ab_0
  - jupyter_contrib_core=0.4.0=pyhd8ed1ab_0
  - jupyter_contrib_nbextensions=0.7.0=pyhd8ed1ab_0
  - jupyter_core=5.7.2=py310hbe9552e_0
  - jupyter_events=0.10.0=pyhd8ed1ab_0
  - jupyter_highlight_selected_word=0.2.0=pyhd8ed1ab_1006
  - jupyter_latex_envs=1.4.6=pyhd8ed1ab_1002
  - jupyter_nbextensions_configurator=0.6.1=pyhd8ed1ab_0
  - jupyter_server=2.14.1=pyhd8ed1ab_0
  - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0
  - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1
  - jupyterlab_widgets=3.0.11=pyhd8ed1ab_0
  - kiwisolver=1.4.5=py310h38f39d4_1
  - krb5=1.21.2=h92f50d5_0
  - lcms2=2.16=ha0e7c42_0
  - lerc=4.0.0=h9a09cb3_0
  - libaec=1.1.3=hebf3989_0
  - libarchive=3.7.4=h83d404f_0
  - libblas=3.9.0=22_osxarm64_openblas
  - libboost=1.84.0=h17eb2be_3
  - libboost-python=1.84.0=py310h2fb3287_3
  - libbrotlicommon=1.1.0=hb547adb_1
  - libbrotlidec=1.1.0=hb547adb_1
  - libbrotlienc=1.1.0=hb547adb_1
  - libcblas=3.9.0=22_osxarm64_openblas
  - libcurl=8.8.0=h7b6f9a7_0
  - libcxx=17.0.6=h5f092b4_0
  - libdeflate=1.20=h93a5062_0
  - libedit=3.1.20191231=hc8eb9b7_2
  - libev=4.33=h93a5062_2
  - libexpat=2.6.2=hebf3989_0
  - libffi=3.4.2=h3422bc3_5
  - libgfortran=5.0.0=13_2_0_hd922786_3
  - libgfortran5=13.2.0=hf226fd6_3
  - libglib=2.80.2=h59d46d9_1
  - libiconv=1.17=h0d3ecfb_2
  - libintl=0.22.5=h8fbad5d_2
  - libjpeg-turbo=3.0.0=hb547adb_1
  - liblapack=3.9.0=22_osxarm64_openblas
  - libmamba=1.5.8=h90c426b_0
  - libmambapy=1.5.8=py310h5e0a2f6_0
  - libnetcdf=4.9.2=nompi_he469be0_114
  - libnghttp2=1.58.0=ha4dd798_1
  - libopenblas=0.3.27=openmp_h6c19121_0
  - libpng=1.6.43=h091b4b1_0
  - libsass=0.22.0=py310h1253130_1
  - libsodium=1.0.18=h27ca646_1
  - libsolv=0.7.29=h1efcc80_0
  - libsqlite=3.46.0=hfb93653_0
  - libssh2=1.11.0=h7a5bd25_0
  - libtiff=4.6.0=h07db509_3
  - libwebp-base=1.4.0=h93a5062_0
  - libxcb=1.16=hf2054a2_0
  - libxml2=2.12.7=ha661575_1
  - libxslt=1.1.39=h223e5b9_0
  - libzip=1.10.1=ha0bc3c6_3
  - libzlib=1.3.1=hfb2fe0b_1
  - llvm-openmp=18.1.8=hde57baf_0
  - lxml=5.2.2=py310h9905115_0
  - lz4-c=1.9.4=hb7217d7_0
  - lzo=2.10=h93a5062_1001
  - mamba=1.5.8=py310ha5d4528_0
  - markdown-it-py=3.0.0=pyhd8ed1ab_0
  - markupsafe=2.1.5=py310hd125d64_0
  - matplotlib-base=3.8.4=py310hedb7998_2
  - matplotlib-inline=0.1.7=pyhd8ed1ab_0
  - mda-xdrlib=0.2.0=pyhd8ed1ab_0
  - mdanalysis=2.7.0=py310h5924a0a_1
  - mdanalysis-sphinx-theme=1.3.1=pyhd8ed1ab_1
  - mdanalysisdata=0.9.0=pyhd8ed1ab_0
  - mdanalysistests=2.7.0=pyhd8ed1ab_0
  - mdurl=0.1.2=pyhd8ed1ab_0
  - menuinst=2.1.1=py310hbe9552e_0
  - mistune=3.0.2=pyhd8ed1ab_0
  - mmtf-python=1.1.3=pyhd8ed1ab_0
  - mrcfile=1.5.0=pyhd8ed1ab_0
  - msgpack-python=1.0.8=py310he1a186f_0
  - munkres=1.1.4=pyh9f0ad1d_0
  - nbclassic=1.1.0=pyhd8ed1ab_0
  - nbclient=0.10.0=pyhd8ed1ab_0
  - nbconvert=7.16.4=hd8ed1ab_1
  - nbconvert-core=7.16.4=pyhd8ed1ab_1
  - nbconvert-pandoc=7.16.4=hd8ed1ab_1
  - nbformat=5.10.4=pyhd8ed1ab_0
  - nbval=0.11.0=pyhd8ed1ab_0
  - ncurses=6.5=hb89a1cb_0
  - nest-asyncio=1.6.0=pyhd8ed1ab_0
  - netcdf4=1.7.1=nompi_py310hae0c4a6_101
  - networkx=3.3=pyhd8ed1ab_1
  - nglview=3.0.3=pyh8a188c0_0
  - notebook=6.5.7=pyha770c72_0
  - notebook-shim=0.2.4=pyhd8ed1ab_0
  - numpy=1.26.4=py310hd45542a_0
  - openjpeg=2.5.2=h9f1df11_0
  - openssl=3.3.1=hfb2fe0b_0
  - overrides=7.7.0=pyhd8ed1ab_0
  - packaging=24.1=pyhd8ed1ab_0
  - pandas=2.2.2=py310h2216879_1
  - pandoc=3.2=hce30654_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.8.4=pyhd8ed1ab_0
  - patsy=0.5.6=pyhd8ed1ab_0
  - pcre2=10.44=h297a79d_0
  - pexpect=4.9.0=pyhd8ed1ab_0
  - pickleshare=0.7.5=py_1003
  - pillow=10.3.0=py310h01af8b1_1
  - pip=24.0=pyhd8ed1ab_0
  - pixman=0.43.4=hebf3989_0
  - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
  - platformdirs=4.2.2=pyhd8ed1ab_0
  - pluggy=1.5.0=pyhd8ed1ab_0
  - prometheus_client=0.20.0=pyhd8ed1ab_0
  - prompt-toolkit=3.0.47=pyha770c72_0
  - psutil=5.9.8=py310hd125d64_0
  - pthread-stubs=0.4=h27ca646_1001
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - pure_eval=0.2.2=pyhd8ed1ab_0
  - pybind11-abi=4=hd8ed1ab_3
  - pycairo=1.26.0=py310hea34faf_0
  - pycosat=0.6.6=py310h2aa6e3c_0
  - pycparser=2.22=pyhd8ed1ab_0
  - pyedr=0.8.0=pyhd8ed1ab_0
  - pygments=2.18.0=pyhd8ed1ab_0
  - pyobjc-core=10.3.1=py310h4b7648a_0
  - pyobjc-framework-cocoa=10.3.1=py310h4b7648a_0
  - pyparsing=3.1.2=pyhd8ed1ab_0
  - pysocks=1.7.1=pyha2e5f31_6
  - pytest=8.2.2=pyhd8ed1ab_0
  - python=3.10.14=h2469fbe_0_cpython
  - python-dateutil=2.9.0=pyhd8ed1ab_0
  - python-fastjsonschema=2.20.0=pyhd8ed1ab_0
  - python-json-logger=2.0.7=pyhd8ed1ab_0
  - python-slugify=8.0.4=pyhd8ed1ab_0
  - python-tzdata=2024.1=pyhd8ed1ab_0
  - python_abi=3.10=4_cp310
  - pytng=0.3.3=py310ha43e1b0_0
  - pytz=2024.1=pyhd8ed1ab_0
  - pyyaml=6.0.1=py310h2aa6e3c_1
  - pyzmq=26.0.3=py310h16e08c9_0
  - rdkit=2024.03.3=py310h7557208_0
  - readline=8.2=h92ec313_1
  - referencing=0.35.1=pyhd8ed1ab_0
  - reportlab=4.1.0=py310hd125d64_0
  - reproc=14.2.4.post0=h93a5062_1
  - reproc-cpp=14.2.4.post0=h965bd2d_1
  - requests=2.32.3=pyhd8ed1ab_0
  - rfc3339-validator=0.1.4=pyhd8ed1ab_0
  - rfc3986-validator=0.1.1=pyh9f0ad1d_0
  - rich=13.7.1=pyhd8ed1ab_0
  - rise=5.7.1=py310hbe9552e_2
  - rlpycairo=0.2.0=pyhd8ed1ab_0
  - rpds-py=0.18.1=py310h947b723_0
  - ruamel.yaml=0.18.6=py310hd125d64_0
  - ruamel.yaml.clib=0.2.8=py310hd125d64_0
  - scikit-learn=1.5.0=py310h64e73be_1
  - scipy=1.13.1=py310h7057308_0
  - seaborn=0.13.2=hd8ed1ab_2
  - seaborn-base=0.13.2=pyhd8ed1ab_2
  - send2trash=1.8.3=pyh31c8845_0
  - setuptools=70.1.0=pyhd8ed1ab_0
  - six=1.16.0=pyh6c4a22f_0
  - snappy=1.2.0=hd04f947_1
  - sniffio=1.3.1=pyhd8ed1ab_0
  - snowballstemmer=2.2.0=pyhd8ed1ab_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.5=pyhd8ed1ab_1
  - sphinx=7.3.7=pyhd8ed1ab_0
  - sphinx_rtd_theme=2.0.0=pyha770c72_0
  - sphinxcontrib-applehelp=1.0.8=pyhd8ed1ab_0
  - sphinxcontrib-devhelp=1.0.6=pyhd8ed1ab_0
  - sphinxcontrib-htmlhelp=2.0.5=pyhd8ed1ab_0
  - sphinxcontrib-jquery=4.1=pyhd8ed1ab_0
  - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_0
  - sphinxcontrib-qthelp=1.0.7=pyhd8ed1ab_0
  - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_0
  - sqlalchemy=2.0.31=py310ha6dd24b_0
  - stack_data=0.6.2=pyhd8ed1ab_0
  - statsmodels=0.14.2=py310hb3e58dc_0
  - terminado=0.18.1=pyh31c8845_0
  - text-unidecode=1.3=pyhd8ed1ab_1
  - threadpoolctl=3.5.0=pyhc1e730c_0
  - tidynamics=1.1.2=pyhd8ed1ab_0
  - tinycss2=1.3.0=pyhd8ed1ab_0
  - tk=8.6.13=h5083fa2_1
  - tomli=2.0.1=pyhd8ed1ab_0
  - tornado=6.4.1=py310ha6dd24b_0
  - tqdm=4.66.4=pyhd8ed1ab_0
  - traitlets=5.14.3=pyhd8ed1ab_0
  - truststore=0.8.0=pyhd8ed1ab_0
  - types-python-dateutil=2.9.0.20240316=pyhd8ed1ab_0
  - typing-extensions=4.12.2=hd8ed1ab_0
  - typing_extensions=4.12.2=pyha770c72_0
  - typing_utils=0.1.0=pyhd8ed1ab_0
  - tzdata=2024a=h0c530f3_0
  - unicodedata2=15.1.0=py310h2aa6e3c_0
  - uri-template=1.3.0=pyhd8ed1ab_0
  - urllib3=2.2.2=pyhd8ed1ab_0
  - wcwidth=0.2.13=pyhd8ed1ab_0
  - webcolors=24.6.0=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_2
  - websocket-client=1.8.0=pyhd8ed1ab_0
  - wheel=0.43.0=pyhd8ed1ab_1
  - widgetsnbextension=3.5.2=py310hbe9552e_1
  - xorg-libxau=1.0.11=hb547adb_0
  - xorg-libxdmcp=1.1.3=h27ca646_0
  - xz=5.2.6=h57fd34a_0
  - yaml=0.2.5=h3422bc3_2
  - yaml-cpp=0.8.0=h13dd4ca_0
  - zeromq=4.3.5=hcc0f68c_4
  - zipp=3.19.2=pyhd8ed1ab_0
  - zlib=1.3.1=hfb2fe0b_1
  - zstandard=0.22.0=py310hd9c37c8_1
  - zstd=1.5.6=hb46c0d2_0
IAlibay commented 1 week ago

Thanks for doing this @mikemhenry !

For the sake time let's not bother with testing windows - I don't have sufficient time / internet to do a pure windows build. Plus the recommendation is to do wsl2 in those cases.

@orbeckst do you have everything you need to create the USB install?

orbeckst commented 1 week ago

If all I have to do is to copy the files on usb drives then I should be good.

orbeckst commented 1 week ago

@mikemhenry the macos_x86_64 installer works, including nglview – thank you!

(Just had to remember to still do the extra steps to enable the notebook extension.)

mikemhenry commented 1 week ago

Awesome! That is great to hear! And +1 for WLS2, it is so much easier to install these days!

orbeckst commented 1 week ago

Copied installers to 10 usb sticks (USB 3.0, standard USB port but I have a few USB-C adaptors) with their default formatting (MSDOS FAT32).

I also added a README file.

README.md

Installers for the workshop environment are available from https://github.com/MDAnalysis/MDAnalysisMolSSIWorkshop-Intermediate2Day/releases/tag/1

  1. Download or Copy the installer for your operating system and architecture.

  2. In the terminal, execute the installer with the shell (Linux, macOS)

    bash ./mda_workshop-jun24-ws-*.sh

    or double-click the exe file (Windows).

  3. Accept the license.

  4. The installation process should start and not require any internet connectivity.

    The installer will create a whole conda/mamba installation in a mda_workshop directory inside your home directory.

    You can delete this installation after the workshop.

  5. Recommended: Allow the installer to update your shell start up file.

  6. Open a new terminal so that the changes to your start up file takes effect.

    You will use the base environment and you will not need to activate a different environment.

  7. Continue with the installation instructions at https://github.com/MDAnalysis/MDAnalysisMolSSIWorkshop-Intermediate2Day/blob/1/INSTALL.md#2-activating-the-jupyter-extensions and activate jupyter notebook extensions.