Welcome to plenoptic tutorial, CSHL Computational Vision Course 2026

Welcome to plenoptic tutorial, CSHL Computational Vision Course 2026#

This site hosts an introductory notebook and several exercises that serve as follow-ups for the plenoptic presentation at the CSHL Computational Vision Course, 2026. Their goal is to introduce the basics of using plenoptic in order to better understand computational visual models with simple examples. We hope to explain not just plenoptic’s syntax but also the type of reasoning that it facilitates.

The introductory presentation can be found here.

You are encouraged to follow the setup instructions found on this page, in order to install everything on your laptop and create local copies of the notebooks in the notebooks/ folder. You can then walk through the tutorial notebook; I recommend opening up notebooks/introduction-users.ipynb on your laptop and typing the code into the cells as you read through that notebook, to practice using plenoptic’s syntax (you will also have a local copy of the notebook with all the code and text explaining what’s happening in notebooks/introduction.ipynb if you’re impatient). After going through the tutorial notebook, I recommend trying to work through the exercises, which are linked in the sidebar and are the other ipynb files in the notebooks/ directory.

You may also find the Glossary useful.

Setup#

Note

If you would just like to install plenoptic to use it locally, follow our installation instructions. This tutorial contains some extra packages for this specific build.

  1. Make sure you have git installed. It is installed by default on most Mac and Linux machines, but you may need to install it if you are on Windows. These instructions should help.

  2. Clone the github repo for this workshop:

    git clone https://github.com/plenoptic-org/plenoptic-cshl-vision-2026.git
    

There are many ways to set up a python virtual environment. You can use your favorite way of doing so, installing all dependencies for these notebooks with pip install . (note the .!) from the root directory of this package, and then run jupyter lab to open up jupyter.

If you don’t have a preference or don’t know what to do, we recommend using uv:

  1. Install uv by running:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Restart your terminal to make sure uv is available.

  3. Install python 3.12:

    uv python install 3.12
    
  4. Navigate to your cloned repo and run uv sync, which creates the virtual environment and installs all dependencies:

    cd plenoptic-cshl-vision-2026
    uv sync -p 3.12
    

Open up powershell, then:

  1. Install uv:

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  2. Restart powershell and make sure uv is available.

  3. Install python 3.12:

    uv python install 3.12
    
  4. Navigate to your cloned repo and run uv sync, which creates the virtual environment and installs all dependencies:

    cd plenoptic-cshl-vision-2026
    uv sync -p 3.12
    

    Warning

    You may receive an error saying “running scripts is disabled on this system”. If so, run Set-ExecutionPolicy -Scope CurrentUser and enter Unrestricted, then press Y.

    You may have to do this every time you open powershell.

  1. Run our setup script to prepare the notebooks:

    uv run python scripts/setup.py
    
  2. Confirm the installation and setup completed correctly by running:

    uv run python scripts/check_setup.py
    

If check_setup.py tells you setup was successful, then you’re good to go.

After doing the above, the notebooks/ directories within your local copy of the plenoptic-cshl-vision-2026 repository will contain jupyter notebooks for you to work through. To open them, start jupyter lab from the root directory of this repo:

cd path/to/plenoptic-cshl-vision-2026
uv run jupyter lab
cd path\to\plenoptic-cshl-vision-2026
uv run jupyter lab

Important

You will also need ffmpeg installed in order to view the videos in the notebook. This is likely installed on your system already if you are on Linux or Mac (run ffmpeg in your command line to check). If not, see their install instructions.

Troubleshooting#

  • If you are on Mac and get an error related to ruamel.yaml (or clang) when running pip install -e ., we think this can be fixed by updating your Xcode Command Line Tools.

  • On Windows, you may receive an error saying “running scripts is disabled on this system” when trying to activate the virtual environment. If so, run Set-ExecutionPolicy -Scope CurrentUser and enter Unrestricted, then press Y. (You may have to do this every time you open powershell.)

  • If you have multiple jupyter installs on your path (because e.g., because you have an existing jupyter installation in a conda environment and you then used uv to setup the virtual environment for this workshop), jupyter can get confused. (You can check if this is the case by running which -a jupyter on Mac / Linux.) To avoid this problem, either make sure you only have one virtual environment active (e.g., by running conda deactivate) or prepend JUPYTER_DATA_DIR=$(realpath ..)/.venv/share/jupyter/ to your jupyter command above:

    JUPYTER_DATA_DIR=$(realpath .)/.venv/share/jupyter/ uv run jupyter lab
    

    (On Windows, replace $(realpath .) with the path to the ccn-software-jan-2025 directory.)

  • We have noticed jupyter notebooks behaving a bit odd in Safari — if you are running/editing jupyter in Safari and the behavior seems off (scrolling not smooth, lag between creation and display of cells), try a different browser. We’ve had better luck with Firefox or using the arrow keys to navigate between cells.

  • If you see sys:1: DeprecationWarning: Call to deprecated function (or staticmethod) _destroy. when running python scripts/setup.py, we don’t think this is actually a problem. As long as check_setup.py says everything looks good, you’re fine!

Contents#

See description above for an explanation of the difference between these two notebooks.

Tutorial