Set up Coding Environment#

This notebook will ensure that your coding environment is set up for the interactive activities in this textbook. You do not need to worry about these requirements if you are running code on the Dandihub, as recommended in “How to use this book”. You can simply ignore this page and get on with the data!

Exception: If you plan to complete Lessons 3 & 4 (Allen Cell Types Database) on DandiHub, see the special setup instructions at the bottom of this page.

Package Requirements#

If you’re not running the code on the Dandihub, then we have to ensure that your coding environment has all of the proper packages installed.

We provide separate requirements files for different lessons:

You can install requirements using:

pip install -r requirements_lessons_1-2.txt

Core packages required for Lessons 1-2:#

dandi>=0.45.1          # Includes: pynwb, h5py, hdmf
nwbwidgets>=0.8.0      # Includes: ipywidgets
seaborn>=0.11.0        # Visualization package
remfile                # Data streaming

Packages for Lessons 3-4 (Allen Cell Types):#

allensdk>=2.11.2       # Includes: numpy<1.24, pandas, scipy, matplotlib
                       # Requires Python 3.11!

Additional packages for Greatest Hits:#

pynapple                # Neural data analysis
plotly                  # Interactive plotting
fsspec                  # File system interface

The code cells below will check for and install these packages as needed.

Core Packages#

We’ll check for the essential packages that include all necessary dependencies.

# This will ensure that the correct version of dandi is installed
try:
    import dandi
    if dandi.__version__>='0.45.1':
        print('Updated DANDI installed.')
    else:
        response = input('Old version of DANDI installed. Would you like to install a newer version of DANDI? (Y/N)')
        if response.upper() == 'Y':
            !pip install --upgrade dandi
except ImportError as e:
    !pip install dandi
Updated DANDI installed.
# Check for nwbwidgets (includes pynwb, ipywidgets)
try:
    import nwbwidgets
    print('nwbwidgets installed.')
except ImportError as e:
    !pip install nwbwidgets
Requirement already satisfied: nwbwidgets in /opt/miniconda3/lib/python3.12/site-packages (0.11.3)
Requirement already satisfied: numpy in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (2.2.3)
Requirement already satisfied: matplotlib in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (3.10.0)
Requirement already satisfied: scikit-image in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.25.2)
Requirement already satisfied: pynwb in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (3.1.2)
Requirement already satisfied: ipympl in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.9.7)
Requirement already satisfied: ipydatagrid in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (1.4.0)
Requirement already satisfied: ipyvolume>=0.6.0a10 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.6.3)
Requirement already satisfied: ipywidgets>=8.0.0 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (8.1.5)
Requirement already satisfied: plotly==5.13.1 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (5.13.1)
Requirement already satisfied: tqdm>=4.36.0 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (4.67.1)
Requirement already satisfied: zarr in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (2.18.7)
Requirement already satisfied: tifffile in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (2025.9.30)
Requirement already satisfied: ndx-spectrum in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.2.2)
Requirement already satisfied: ndx-icephys-meta in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.1.0)
Requirement already satisfied: ndx-grayscalevolume in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.0.2)
Requirement already satisfied: trimesh in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (4.8.3)
Requirement already satisfied: dandi>=0.55.0 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.71.4)
Requirement already satisfied: importlib-metadata<5.0 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (4.13.0)
Requirement already satisfied: fsspec in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (2025.9.0)
Requirement already satisfied: requests in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (2.32.3)
Requirement already satisfied: aiohttp in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (3.12.15)
Requirement already satisfied: ipydatawidgets==4.3.2 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (4.3.2)
Requirement already satisfied: ipyfilechooser==0.6.0 in /opt/miniconda3/lib/python3.12/site-packages (from nwbwidgets) (0.6.0)
Requirement already satisfied: traittypes>=0.2.0 in /opt/miniconda3/lib/python3.12/site-packages (from ipydatawidgets==4.3.2->nwbwidgets) (0.2.1)
Requirement already satisfied: tenacity>=6.2.0 in /opt/miniconda3/lib/python3.12/site-packages (from plotly==5.13.1->nwbwidgets) (9.1.2)
Requirement already satisfied: bidsschematools~=1.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (1.1.0)
Requirement already satisfied: bids-validator-deno>=2.0.5 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (2.1.1)
Requirement already satisfied: click<8.2.0,>=7.1 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (8.1.8)
Requirement already satisfied: click-didyoumean in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.3.1)
Requirement already satisfied: dandischema<0.12.0,>=0.11.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.11.1)
Requirement already satisfied: etelemetry>=0.2.2 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.3.1)
Requirement already satisfied: fasteners in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.20)
Requirement already satisfied: fscacher>=0.3.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.4.4)
Requirement already satisfied: hdmf!=3.14.4,!=3.5.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (4.1.0)
Requirement already satisfied: humanize in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (4.13.0)
Requirement already satisfied: interleave~=0.3 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.3.0)
Requirement already satisfied: joblib in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (1.5.2)
Requirement already satisfied: keyring!=23.9.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (25.6.0)
Requirement already satisfied: keyrings.alt in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (5.0.2)
Requirement already satisfied: packaging in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (24.1)
Requirement already satisfied: platformdirs in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (4.4.0)
Requirement already satisfied: pycryptodomex in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (3.23.0)
Requirement already satisfied: pydantic~=2.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (2.11.10)
Requirement already satisfied: numcodecs<0.16 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.15.1)
Requirement already satisfied: nwbinspector!=0.4.32,>=0.4.28 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.6.5)
Requirement already satisfied: pyout!=0.6.0,>=0.5 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.8.1)
Requirement already satisfied: python-dateutil in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (2.9.0.post0)
Requirement already satisfied: ruamel.yaml<1,>=0.15 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.18.6)
Requirement already satisfied: semantic-version in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (2.10.0)
Requirement already satisfied: tensorstore in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.1.77)
Requirement already satisfied: urllib3>=2.0.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (2.2.3)
Requirement already satisfied: yarl~=1.9 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (1.21.0)
Requirement already satisfied: zarr_checksum~=0.4.0 in /opt/miniconda3/lib/python3.12/site-packages (from dandi>=0.55.0->nwbwidgets) (0.4.7)
Requirement already satisfied: zipp>=0.5 in /opt/miniconda3/lib/python3.12/site-packages (from importlib-metadata<5.0->nwbwidgets) (3.23.0)
Requirement already satisfied: bqplot in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (0.12.45)
Requirement already satisfied: traitlets in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (5.14.3)
Requirement already satisfied: Pillow in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (11.1.0)
Requirement already satisfied: ipywebrtc in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (0.6.0)
Requirement already satisfied: ipyvuetify in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (1.11.3)
Requirement already satisfied: ipyvue>=1.7.0 in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (1.11.3)
Requirement already satisfied: pythreejs>=2.4.0 in /opt/miniconda3/lib/python3.12/site-packages (from ipyvolume>=0.6.0a10->nwbwidgets) (2.4.2)
Requirement already satisfied: comm>=0.1.3 in /opt/miniconda3/lib/python3.12/site-packages (from ipywidgets>=8.0.0->nwbwidgets) (0.2.2)
Requirement already satisfied: ipython>=6.1.0 in /opt/miniconda3/lib/python3.12/site-packages (from ipywidgets>=8.0.0->nwbwidgets) (8.31.0)
Requirement already satisfied: widgetsnbextension~=4.0.12 in /opt/miniconda3/lib/python3.12/site-packages (from ipywidgets>=8.0.0->nwbwidgets) (4.0.13)
Requirement already satisfied: jupyterlab-widgets~=3.0.12 in /opt/miniconda3/lib/python3.12/site-packages (from ipywidgets>=8.0.0->nwbwidgets) (3.0.13)
Requirement already satisfied: h5py>=3.2.0 in /opt/miniconda3/lib/python3.12/site-packages (from pynwb->nwbwidgets) (3.14.0)
Requirement already satisfied: pandas>=1.2.0 in /opt/miniconda3/lib/python3.12/site-packages (from pynwb->nwbwidgets) (2.2.3)
Requirement already satisfied: charset-normalizer<4,>=2 in /opt/miniconda3/lib/python3.12/site-packages (from requests->nwbwidgets) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /opt/miniconda3/lib/python3.12/site-packages (from requests->nwbwidgets) (3.7)
Requirement already satisfied: certifi>=2017.4.17 in /opt/miniconda3/lib/python3.12/site-packages (from requests->nwbwidgets) (2024.12.14)
Requirement already satisfied: asciitree in /opt/miniconda3/lib/python3.12/site-packages (from zarr->nwbwidgets) (0.3.3)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /opt/miniconda3/lib/python3.12/site-packages (from aiohttp->nwbwidgets) (2.6.1)
Requirement already satisfied: aiosignal>=1.4.0 in /opt/miniconda3/lib/python3.12/site-packages (from aiohttp->nwbwidgets) (1.4.0)
Requirement already satisfied: attrs>=17.3.0 in /opt/miniconda3/lib/python3.12/site-packages (from aiohttp->nwbwidgets) (24.3.0)
Requirement already satisfied: frozenlist>=1.1.1 in /opt/miniconda3/lib/python3.12/site-packages (from aiohttp->nwbwidgets) (1.7.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /opt/miniconda3/lib/python3.12/site-packages (from aiohttp->nwbwidgets) (6.6.4)
Requirement already satisfied: propcache>=0.2.0 in /opt/miniconda3/lib/python3.12/site-packages (from aiohttp->nwbwidgets) (0.4.0)
Requirement already satisfied: py2vega>=0.5 in /opt/miniconda3/lib/python3.12/site-packages (from ipydatagrid->nwbwidgets) (0.6.1)
Requirement already satisfied: contourpy>=1.0.1 in /opt/miniconda3/lib/python3.12/site-packages (from matplotlib->nwbwidgets) (1.3.1)
Requirement already satisfied: cycler>=0.10 in /opt/miniconda3/lib/python3.12/site-packages (from matplotlib->nwbwidgets) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/miniconda3/lib/python3.12/site-packages (from matplotlib->nwbwidgets) (4.56.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/miniconda3/lib/python3.12/site-packages (from matplotlib->nwbwidgets) (1.4.8)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/miniconda3/lib/python3.12/site-packages (from matplotlib->nwbwidgets) (3.2.1)
Requirement already satisfied: scipy>=1.11.4 in /opt/miniconda3/lib/python3.12/site-packages (from scikit-image->nwbwidgets) (1.16.2)
Requirement already satisfied: networkx>=3.0 in /opt/miniconda3/lib/python3.12/site-packages (from scikit-image->nwbwidgets) (3.5)
Requirement already satisfied: imageio!=2.35.0,>=2.33 in /opt/miniconda3/lib/python3.12/site-packages (from scikit-image->nwbwidgets) (2.37.0)
Requirement already satisfied: lazy-loader>=0.4 in /opt/miniconda3/lib/python3.12/site-packages (from scikit-image->nwbwidgets) (0.4)
Requirement already satisfied: typing-extensions>=4.2 in /opt/miniconda3/lib/python3.12/site-packages (from aiosignal>=1.4.0->aiohttp->nwbwidgets) (4.12.2)
Requirement already satisfied: acres in /opt/miniconda3/lib/python3.12/site-packages (from bidsschematools~=1.0->dandi>=0.55.0->nwbwidgets) (0.5.0)
Requirement already satisfied: pyyaml in /opt/miniconda3/lib/python3.12/site-packages (from bidsschematools~=1.0->dandi>=0.55.0->nwbwidgets) (6.0.2)
Requirement already satisfied: jsonschema[format] in /opt/miniconda3/lib/python3.12/site-packages (from dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (4.23.0)
Requirement already satisfied: ci-info>=0.2 in /opt/miniconda3/lib/python3.12/site-packages (from etelemetry>=0.2.2->dandi>=0.55.0->nwbwidgets) (0.3.0)
Requirement already satisfied: decorator in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (5.1.1)
Requirement already satisfied: jedi>=0.16 in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.19.2)
Requirement already satisfied: matplotlib-inline in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.1.7)
Requirement already satisfied: pexpect>4.3 in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (4.9.0)
Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (3.0.48)
Requirement already satisfied: pygments>=2.4.0 in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (2.19.1)
Requirement already satisfied: stack_data in /opt/miniconda3/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.6.3)
Requirement already satisfied: jaraco.classes in /opt/miniconda3/lib/python3.12/site-packages (from keyring!=23.9.0->dandi>=0.55.0->nwbwidgets) (3.4.0)
Requirement already satisfied: jaraco.functools in /opt/miniconda3/lib/python3.12/site-packages (from keyring!=23.9.0->dandi>=0.55.0->nwbwidgets) (4.3.0)
Requirement already satisfied: jaraco.context in /opt/miniconda3/lib/python3.12/site-packages (from keyring!=23.9.0->dandi>=0.55.0->nwbwidgets) (6.0.1)
Requirement already satisfied: deprecated in /opt/miniconda3/lib/python3.12/site-packages (from numcodecs<0.16->dandi>=0.55.0->nwbwidgets) (1.2.18)
Requirement already satisfied: hdmf-zarr in /opt/miniconda3/lib/python3.12/site-packages (from nwbinspector!=0.4.32,>=0.4.28->dandi>=0.55.0->nwbwidgets) (0.11.3)
Requirement already satisfied: isodate in /opt/miniconda3/lib/python3.12/site-packages (from nwbinspector!=0.4.32,>=0.4.28->dandi>=0.55.0->nwbwidgets) (0.7.2)
Requirement already satisfied: natsort in /opt/miniconda3/lib/python3.12/site-packages (from nwbinspector!=0.4.32,>=0.4.28->dandi>=0.55.0->nwbwidgets) (8.4.0)
Requirement already satisfied: pytz>=2020.1 in /opt/miniconda3/lib/python3.12/site-packages (from pandas>=1.2.0->pynwb->nwbwidgets) (2025.1)
Requirement already satisfied: tzdata>=2022.7 in /opt/miniconda3/lib/python3.12/site-packages (from pandas>=1.2.0->pynwb->nwbwidgets) (2025.1)
Requirement already satisfied: gast<0.5,>=0.4.0 in /opt/miniconda3/lib/python3.12/site-packages (from py2vega>=0.5->ipydatagrid->nwbwidgets) (0.4.0)
Requirement already satisfied: annotated-types>=0.6.0 in /opt/miniconda3/lib/python3.12/site-packages (from pydantic~=2.0->dandi>=0.55.0->nwbwidgets) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in /opt/miniconda3/lib/python3.12/site-packages (from pydantic~=2.0->dandi>=0.55.0->nwbwidgets) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in /opt/miniconda3/lib/python3.12/site-packages (from pydantic~=2.0->dandi>=0.55.0->nwbwidgets) (0.4.2)
Requirement already satisfied: blessed in /opt/miniconda3/lib/python3.12/site-packages (from pyout!=0.6.0,>=0.5->dandi>=0.55.0->nwbwidgets) (1.22.0)
Requirement already satisfied: six>=1.5 in /opt/miniconda3/lib/python3.12/site-packages (from python-dateutil->dandi>=0.55.0->nwbwidgets) (1.17.0)
Requirement already satisfied: ruamel.yaml.clib>=0.2.7 in /opt/miniconda3/lib/python3.12/site-packages (from ruamel.yaml<1,>=0.15->dandi>=0.55.0->nwbwidgets) (0.2.8)
Requirement already satisfied: ml_dtypes>=0.5.0 in /opt/miniconda3/lib/python3.12/site-packages (from tensorstore->dandi>=0.55.0->nwbwidgets) (0.5.3)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /opt/miniconda3/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.8.4)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (2024.10.1)
Requirement already satisfied: referencing>=0.28.4 in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (0.35.1)
Requirement already satisfied: rpds-py>=0.7.1 in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (0.22.3)
Requirement already satisfied: ptyprocess>=0.5 in /opt/miniconda3/lib/python3.12/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.7.0)
Requirement already satisfied: wcwidth in /opt/miniconda3/lib/python3.12/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.2.13)
Requirement already satisfied: email-validator>=2.0.0 in /opt/miniconda3/lib/python3.12/site-packages (from pydantic[email]~=2.4->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (2.3.0)
Requirement already satisfied: wrapt<2,>=1.10 in /opt/miniconda3/lib/python3.12/site-packages (from deprecated->numcodecs<0.16->dandi>=0.55.0->nwbwidgets) (1.17.3)
Requirement already satisfied: threadpoolctl>=3.1.0 in /opt/miniconda3/lib/python3.12/site-packages (from hdmf-zarr->nwbinspector!=0.4.32,>=0.4.28->dandi>=0.55.0->nwbwidgets) (3.6.0)
Requirement already satisfied: more-itertools in /opt/miniconda3/lib/python3.12/site-packages (from jaraco.classes->keyring!=23.9.0->dandi>=0.55.0->nwbwidgets) (10.8.0)
Requirement already satisfied: fqdn in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (1.5.1)
Requirement already satisfied: isoduration in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (20.11.0)
Requirement already satisfied: jsonpointer>1.13 in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (2.1)
Requirement already satisfied: rfc3339-validator in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (0.1.4)
Requirement already satisfied: rfc3987 in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (1.3.8)
Requirement already satisfied: uri-template in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (1.3.0)
Requirement already satisfied: webcolors>=1.11 in /opt/miniconda3/lib/python3.12/site-packages (from jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (24.11.1)
Requirement already satisfied: executing>=1.2.0 in /opt/miniconda3/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (2.1.0)
Requirement already satisfied: asttokens>=2.1.0 in /opt/miniconda3/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (3.0.0)
Requirement already satisfied: pure-eval in /opt/miniconda3/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets>=8.0.0->nwbwidgets) (0.2.3)
Requirement already satisfied: dnspython>=2.0.0 in /opt/miniconda3/lib/python3.12/site-packages (from email-validator>=2.0.0->pydantic[email]~=2.4->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (2.8.0)
Requirement already satisfied: arrow>=0.15.0 in /opt/miniconda3/lib/python3.12/site-packages (from isoduration->jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (1.3.0)
Requirement already satisfied: types-python-dateutil>=2.8.10 in /opt/miniconda3/lib/python3.12/site-packages (from arrow>=0.15.0->isoduration->jsonschema[format]->dandischema<0.12.0,>=0.11.0->dandi>=0.55.0->nwbwidgets) (2.9.0.20241206)
# Check for seaborn (visualization package)
try:
    import seaborn
    print('seaborn installed.')
except ImportError as e:
    !pip install seaborn
seaborn installed.

AllenSDK (Lessons 3 & 4 only)#

Important: The AllenSDK requires numpy<1.24, which is incompatible with Python 3.12+. If you’re using Python 3.12 or later, you’ll need to create a Python 3.11 environment.

On DandiHub: See special setup instructions below.

On your local machine: Use conda to create a Python 3.11 environment:

conda create --name nwb4edu python=3.11
conda activate nwb4edu
pip install allensdk
# Check for allensdk (Lessons 3 & 4 only)
try:
    import allensdk
    print('allensdk installed.')
    print(f'Version: {allensdk.__version__}')
except ImportError as e:
    print('allensdk is not installed.')
    print('Note: allensdk requires Python 3.11 or earlier.')
    print('See instructions above for creating a compatible environment.')
allensdk is not installed.
Note: allensdk requires Python 3.11 or earlier.
See instructions above for creating a compatible environment.

Greatest Hits Packages#

For the Greatest Hits lessons, you’ll also need these additional packages:

# Check for pynapple
try:
    import pynapple
    print('pynapple installed.')
except ImportError as e:
    !pip install pynapple
pynapple installed.
# Check for plotly
try:
    import plotly
    print('plotly installed.')
except ImportError as e:
    !pip install plotly
plotly installed.
# Check for fsspec
try:
    import fsspec
    print('fsspec installed.')
except ImportError as e:
    !pip install fsspec
fsspec installed.

Configuring for Data Streaming#

Some lessons in this book stream data directly from DANDI rather than downloading it.

On Dandihub: This is already configured for you!

On your local machine: For the most recent guidance on configuring your environment for streaming, please see the PyNWB streaming tutorial.

# Check for remfile (required for streaming)
try:
    import remfile
    print('remfile installed.')
except ImportError as e:
    !pip install remfile
remfile installed.

DandiHub Setup for Lessons 3 & 4#

Note: This environment is only required for Lessons 3 and 4, which use the Allen SDK. The Allen SDK requires Python 3.11 due to numpy version compatibility. All other lessons work with the default DandiHub environment.

Step 1: Open a Terminal#

  • In JupyterHub, click “File” → “New” → “Terminal”

Step 2: Create the conda environment with pip#

conda create --name nwb4edu python=3.11 pip -y

Step 3: Activate the environment#

conda activate nwb4edu

Step 4: Install required packages#

PIP_REQUIRE_VIRTUALENV=false pip install allensdk ipykernel

Note: This installation may take 5-10 minutes to complete. Please be patient while the packages are downloaded and installed.

Step 5: Create a Jupyter kernel for this environment#

python -m ipykernel install --user --name nwb4edu --display-name "Python 3.11 (nwb4edu)"

Step 6: Refresh your browser#

  • Refresh the JupyterHub page to see the new kernel

Step 7: Select the kernel in Lesson 3 & 4 notebooks#

  • Open a notebook from Lesson 3 or 4

  • Click “Kernel” → “Change Kernel” → “Python 3.11 (nwb4edu)”

Step 8: Verify the installation#

Run this in a notebook cell to verify everything installed correctly:

import sys
print(f"Python version: {sys.version}")
import allensdk
print(f"allensdk version: {allensdk.__version__}")