.. _installation: Installation ============ All commands below use ``pip``. For editable (development) installs from a local clone, pass the ``-e`` flag (e.g. ``pip install -e .``). .. tip:: We recommend `uv `_ as a fast, modern package manager. To use it, substitute ``uv pip`` for ``pip`` in all commands below. Note that ``uv pip install`` defaults to editable mode, so the ``-e`` flag is not needed. PyPI ---- Install the stable version of |slmsuite|_ from `PyPI `_ using: .. code-block:: console pip install slmsuite GitHub ------ Install the latest version of |slmsuite|_ from `GitHub `_ using: .. code-block:: console pip install git+https://github.com/holodyne/slmsuite One can also clone |slmsuite|_ directly and add its directory to the Python path. *Remember to install the dependencies (next sections)*. .. code-block:: console git clone https://github.com/holodyne/slmsuite Required Dependencies --------------------- The following python packages are necessary to run |slmsuite|_. These are listed as PyPI dependencies and thus are installed automatically if PyPI is used to install. - `python `_ - `numpy `_ - `scipy `_ - `opencv-python `_ - `matplotlib `_ - `h5py `_ - `tqdm `_ One can also install these dependencies directly by calling the following inside the package directory. .. code-block:: console pip install -e . Hardware Dependencies --------------------- The following python packages are *optional* acceleration or hardware requirements, which the user can install selectively. - GPU ``pip install -e ".[gpu]"`` - `cupy `_, highly recommended for GPU-accelerated holography. Sometimes, installation is made complicated by a pre-installed version of CUDA. You can find the CUDA version with ``nvcc --version`` in a terminal, and then install an installation of :mod:`cupy` specific to CUDA version ``YY`` with ``pip install cupy-cudaYYx``. - Gradients ``pip install -e ".[torch]"`` - `pytorch `_, required for conjugate gradient hologram optimization, either in GPU or CPU mode. Uses :mod:`cupy` - :mod:`torch` `interoperability `_ to pass data between modules without copying overhead, even on the GPU. - Cameras ``pip install -e ".[cameras]"`` - `instrumental-lib `_ - `pylablib `_ - `pymmcore `_ - `pypylon `_ - `mvsdk `_ (non-PyPI) - `PySpin `_ (non-PyPI) - `tisgrabber `_ (non-PyPI) - `thorlabs_tsi_sdk `_ (non-PyPI) - `VmbPy `_ (non-PyPI) - Other cameras are loaded directly via .dll. - SLMs ``pip install -e ".[slms]"`` - `pyglet `_ - Other SLMs are loaded directly via .dll. - Image saving ``pip install -e ".[images]"`` - For most images and videos, `imageio `_ - Many video formats additionally require `pyav `_ - For .gif optimization, `pygifsicle `_ Jupyter ------- We highly recommended using `Jupyter `_ notebooks for interactive computing. Consider also using `IPython `_ `magic `_, features like |autoreload|_ or |matplotlibs|_. - `jupyter `_ If Jupyter is not used, the default :mod:`matplotlib` plots will block further execution, so the user should avoid plotting by using ``plot=False`` flags on functions. Use the following to install recommended jupyter-related packages. .. code-block:: console pip install -e ".[jupyter]" All Dependencies ---------------- To install all optional dependencies at once (including GPU, SLMs, cameras, images, Jupyter, docs, and testing), use the ``dev`` extra: .. code-block:: console pip install -e ".[dev]" .. |slmsuite| replace:: :mod:`slmsuite` .. _slmsuite: https://github.com/holodyne/slmsuite .. |autoreload| replace:: ``%autoreload 2`` .. _autoreload: https://ipython.readthedocs.io/en/stable/config/extensions/autoreload.html .. |matplotlibs| replace:: ``%matplotlib inline`` .. _matplotlibs: https://ipython.readthedocs.io/en/stable/interactive/plotting.html