From 747e2617383aa376ed1ca660ed9cdefe2e49aecf Mon Sep 17 00:00:00 2001
From: eberrigan
Date: Fri, 28 Jun 2024 15:37:34 +0000
Subject: [PATCH] deploy: 05283629a67385f40a6e8302519393fb2f87ecfb
---
develop/.buildinfo | 2 +-
develop/CODE_OF_CONDUCT.html | 3 +-
develop/CONTRIBUTING.html | 3 +-
develop/_sources/installation.md | 392 +++++++++++-------
develop/_static/css/tabs.css | 93 -----
develop/_static/documentation_options.js | 2 +-
develop/_static/tabs.css | 89 ----
develop/_static/tabs.js | 145 -------
develop/api.html | 3 +-
develop/api/sleap.info.align.html | 19 +-
.../api/sleap.info.feature_suggestions.html | 51 ++-
develop/api/sleap.info.labels.html | 3 +-
develop/api/sleap.info.metrics.html | 23 +-
develop/api/sleap.info.summary.html | 15 +-
develop/api/sleap.info.trackcleaner.html | 5 +-
develop/api/sleap.info.write_tracking_h5.html | 19 +-
develop/api/sleap.instance.html | 155 +++++--
develop/api/sleap.io.asyncvideo.html | 15 +-
develop/api/sleap.io.convert.html | 5 +-
develop/api/sleap.io.dataset.html | 173 ++++----
develop/api/sleap.io.format.adaptor.html | 21 +-
develop/api/sleap.io.format.alphatracker.html | 27 +-
develop/api/sleap.io.format.coco.html | 15 +-
develop/api/sleap.io.format.csv.html | 15 +-
develop/api/sleap.io.format.deeplabcut.html | 29 +-
develop/api/sleap.io.format.deepposekit.html | 15 +-
develop/api/sleap.io.format.dispatch.html | 3 +-
develop/api/sleap.io.format.filehandle.html | 9 +-
develop/api/sleap.io.format.genericjson.html | 17 +-
develop/api/sleap.io.format.hdf5.html | 17 +-
develop/api/sleap.io.format.labels_json.html | 19 +-
develop/api/sleap.io.format.leap_matlab.html | 15 +-
develop/api/sleap.io.format.main.html | 7 +-
develop/api/sleap.io.format.ndx_pose.html | 17 +-
develop/api/sleap.io.format.nix.html | 17 +-
.../api/sleap.io.format.sleap_analysis.html | 17 +-
develop/api/sleap.io.format.text.html | 17 +-
develop/api/sleap.io.legacy.html | 7 +-
develop/api/sleap.io.pathutils.html | 9 +-
develop/api/sleap.io.video.html | 87 ++--
develop/api/sleap.io.videowriter.html | 11 +-
develop/api/sleap.io.visuals.html | 17 +-
develop/api/sleap.message.html | 19 +-
.../api/sleap.nn.architectures.common.html | 5 +-
...leap.nn.architectures.encoder_decoder.html | 29 +-
.../api/sleap.nn.architectures.hourglass.html | 21 +-
develop/api/sleap.nn.architectures.hrnet.html | 13 +-
develop/api/sleap.nn.architectures.leap.html | 7 +-
....nn.architectures.pretrained_encoders.html | 9 +-
.../api/sleap.nn.architectures.resnet.html | 27 +-
develop/api/sleap.nn.architectures.unet.html | 11 +-
.../sleap.nn.architectures.upsampling.html | 9 +-
develop/api/sleap.nn.callbacks.html | 39 +-
develop/api/sleap.nn.config.data.html | 11 +-
develop/api/sleap.nn.config.model.html | 41 +-
develop/api/sleap.nn.config.optimization.html | 13 +-
develop/api/sleap.nn.config.outputs.html | 11 +-
develop/api/sleap.nn.config.training_job.html | 17 +-
develop/api/sleap.nn.config.utils.html | 5 +-
develop/api/sleap.nn.data.augmentation.html | 23 +-
.../api/sleap.nn.data.confidence_maps.html | 21 +-
develop/api/sleap.nn.data.dataset_ops.html | 31 +-
develop/api/sleap.nn.data.edge_maps.html | 17 +-
develop/api/sleap.nn.data.general.html | 19 +-
develop/api/sleap.nn.data.grouping.html | 7 +-
develop/api/sleap.nn.data.identity.html | 15 +-
develop/api/sleap.nn.data.inference.html | 15 +-
.../api/sleap.nn.data.instance_centroids.html | 13 +-
.../api/sleap.nn.data.instance_cropping.html | 19 +-
develop/api/sleap.nn.data.normalization.html | 29 +-
.../api/sleap.nn.data.offset_regression.html | 7 +-
develop/api/sleap.nn.data.pipelines.html | 69 ++-
develop/api/sleap.nn.data.providers.html | 21 +-
develop/api/sleap.nn.data.resizing.html | 23 +-
develop/api/sleap.nn.data.training.html | 13 +-
develop/api/sleap.nn.data.utils.html | 17 +-
develop/api/sleap.nn.evals.html | 31 +-
develop/api/sleap.nn.heads.html | 41 +-
develop/api/sleap.nn.identity.html | 9 +-
develop/api/sleap.nn.inference.html | 161 ++++---
develop/api/sleap.nn.losses.html | 17 +-
develop/api/sleap.nn.model.html | 9 +-
develop/api/sleap.nn.paf_grouping.html | 47 +--
develop/api/sleap.nn.peak_finding.html | 21 +-
develop/api/sleap.nn.system.html | 33 +-
develop/api/sleap.nn.tracker.components.html | 29 +-
develop/api/sleap.nn.tracker.kalman.html | 9 +-
develop/api/sleap.nn.tracking.html | 51 ++-
develop/api/sleap.nn.training.html | 63 ++-
develop/api/sleap.nn.utils.html | 11 +-
develop/api/sleap.nn.viz.html | 19 +-
develop/api/sleap.skeleton.html | 85 ++--
develop/api/sleap.util.html | 33 +-
develop/datasets.html | 3 +-
develop/docs/_static/css/tabs.css | 93 -----
develop/genindex.html | 42 +-
develop/guides/choosing-models.html | 3 +-
develop/guides/cli.html | 3 +-
develop/guides/colab.html | 3 +-
develop/guides/custom-training.html | 3 +-
develop/guides/gui.html | 3 +-
develop/guides/index.html | 3 +-
develop/guides/merging.html | 3 +-
develop/guides/proofreading.html | 3 +-
develop/guides/remote.html | 3 +-
develop/guides/skeletons.html | 3 +-
develop/guides/training.html | 3 +-
develop/guides/troubleshooting-workflows.html | 3 +-
develop/help.html | 5 +-
develop/index.html | 3 +-
develop/installation.html | 278 ++++++++-----
develop/notebooks/Analysis_examples.html | 3 +-
develop/notebooks/Data_structures.html | 3 +-
.../Interactive_and_realtime_inference.html | 3 +-
.../Interactive_and_resumable_training.html | 3 +-
develop/notebooks/Model_evaluation.html | 3 +-
.../notebooks/Post_inference_tracking.html | 3 +-
...g_and_inference_on_an_example_dataset.html | 3 +-
...ning_and_inference_using_Google_Drive.html | 3 +-
.../notebooks/analysis_example/README.html | 3 +-
develop/notebooks/index.html | 3 +-
develop/objects.inv | Bin 20404 -> 20573 bytes
develop/overview.html | 3 +-
develop/py-modindex.html | 4 +-
develop/search.html | 4 +-
develop/searchindex.js | 2 +-
develop/tutorials/analysis.html | 3 +-
develop/tutorials/assisted-labeling.html | 3 +-
develop/tutorials/initial-labeling.html | 3 +-
develop/tutorials/initial-training.html | 3 +-
develop/tutorials/new-project.html | 5 +-
develop/tutorials/proofreading.html | 3 +-
develop/tutorials/tutorial.html | 3 +-
133 files changed, 1576 insertions(+), 1888 deletions(-)
delete mode 100644 develop/_static/css/tabs.css
delete mode 100644 develop/_static/tabs.css
delete mode 100644 develop/_static/tabs.js
delete mode 100644 develop/docs/_static/css/tabs.css
diff --git a/develop/.buildinfo b/develop/.buildinfo
index 068b73894..ff92ce9d0 100644
--- a/develop/.buildinfo
+++ b/develop/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: bafb023a743a251419508374ad5197e6
+config: a7b7f9800faa1bcc2746e1b3ba7ad6cf
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/develop/CODE_OF_CONDUCT.html b/develop/CODE_OF_CONDUCT.html
index 1027a9c2d..1c50c1822 100644
--- a/develop/CODE_OF_CONDUCT.html
+++ b/develop/CODE_OF_CONDUCT.html
@@ -9,7 +9,7 @@
- Contributor Covenant Code of Conduct — SLEAP (v1.4.1a1)
+ Contributor Covenant Code of Conduct — SLEAP (v1.4.1a2)
@@ -34,7 +34,6 @@
-
diff --git a/develop/CONTRIBUTING.html b/develop/CONTRIBUTING.html
index ebcee91b8..f247fa178 100644
--- a/develop/CONTRIBUTING.html
+++ b/develop/CONTRIBUTING.html
@@ -9,7 +9,7 @@
- Contributing to SLEAP — SLEAP (v1.4.1a1)
+ Contributing to SLEAP — SLEAP (v1.4.1a2)
@@ -34,7 +34,6 @@
-
diff --git a/develop/_sources/installation.md b/develop/_sources/installation.md
index e50b19e18..c0ab66580 100644
--- a/develop/_sources/installation.md
+++ b/develop/_sources/installation.md
@@ -1,21 +1,10 @@
# Installation
-SLEAP can be installed as a Python package on Windows, Linux, and Mac OS. For quick install using conda, see below:
+SLEAP can be installed as a Python package on Windows, Linux, Mac OS X, and Mac OS Apple Silicon.
-````{tabs}
- ```{group-tab} Windows and Linux
- ```bash
- conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1a1
- ```
- ```
- ```{group-tab} Mac OS
- ```bash
- conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1a1
- ```
- ```
-````
+SLEAP requires many complex dependencies, so we **strongly** recommend using [Mambaforge](https://mamba.readthedocs.io/en/latest/installation.html) to install it in its own isolated environment. See {ref}`Installing Mambaforge` below for more instructions.
-. For more in-depth installation instructions, see the [installation methods](installation-methods). The newest version of SLEAP can always be found in the [Releases page](https://github.com/talmolab/sleap/releases).
+The newest version of SLEAP can always be found in the [Releases page](https://github.com/talmolab/sleap/releases).
```{contents} Contents
---
@@ -23,30 +12,66 @@ local:
---
```
-`````{hint}
- Installation requires entering commands in a terminal. To open one:
- ````{tabs}
- ```{tab} Windows
- Open the *Start menu* and search for the *Anaconda Prompt* (if using Miniconda) or the *Command Prompt* if not.
- ```{note}
- On Windows, our personal preference is to use alternative terminal apps like [Cmder](https://cmder.net) or [Windows Terminal](https://aka.ms/terminal).
- ```
- ```
- ```{tab} Linux
- Launch a new terminal by pressing Ctrl + Alt + T.
- ```
- ```{group-tab} Mac OS
- Launch a new terminal by pressing Cmd + Space and searching for _Terminal_.
- ```
+````{hint}
+Installation requires entering commands in a terminal. To open one:
+
+**Windows:** Open the *Start menu* and search for the *Miniforge Prompt* (if using Mambaforge) or the *Command Prompt* if not.
+```{note}
+On Windows, our personal preference is to use alternative terminal apps like [Cmder](https://cmder.net) or [Windows Terminal](https://aka.ms/terminal).
+```
+
+**Linux:** Launch a new terminal by pressing Ctrl + Alt + T.
+
+**Mac:** Launch a new terminal by pressing Cmd + Space and searching for _Terminal_.
+
+````
+
+(apple-silicon)=
+
+### Macs Pre-M1 (Pre-Installation)
+
+SLEAP can be installed on Macs by following these instructions:
+
+1. Make sure you're on **macOS Monterey** or later, i.e., version 12+.
+
+2. If you don't have it yet, [install **homebrew**](https://brew.sh/), a convenient package manager for Macs (skip this if you can run `brew` from the terminal):
+
+ ```bash
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+ ```
+
+ This might take a little while since it'll also install Xcode (which we'll need later). Once it's finished, your terminal should give you two extra commands to run listed under **Next Steps**.
+
+ ````{note}
+ We recommend running the commands given in your terminal which will be similar to (but may differ slightly) from the commands below:
+ ```bash
+ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
+ ```
+
+ ```bash
+ eval "$(/opt/homebrew/bin/brew shellenv)"
+ ```
+
````
-`````
-## Package Manager
+ Then, close and re-open the terminal for it to take effect.
+
+3. Install wget, a CLI downloading utility (also makes sure your homebrew setup worked):
+
+ ```bash
+ brew install wget
+ ```
+
+(mambaforge)=
-SLEAP requires many complex dependencies, so we **strongly** recommend using a package manager such as [Miniconda](https://docs.anaconda.com/free/miniconda/) to install SLEAP in its own isolated environment. See the [Miniconda website](https://docs.anaconda.com/free/miniconda/) for installation instructions. The Anaconda or Mamba package managers will also work well; however, take care not to install multiple different conda-based package managers - choose one and stick with it.
+## Installing Mambaforge
+
+**Anaconda** is a Python environment manager that makes it easy to install SLEAP and its necessary dependencies without affecting other Python software on your computer.
+
+[**Mambaforge**](https://mamba.readthedocs.io/en/latest/installation.html) is a lightweight installer of Anaconda with speedy package resolution that we recommend.
````{note}
-If you already have Anaconda on your computer (and it is an [older installation](https://conda.org/blog/2023-11-06-conda-23-10-0-release/)), then make sure to [set the solver to `libmamba`](https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community) in the `base` environment.
+If you already have Anaconda on your computer, then you can [set the solver to `libmamba`](https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community) in the `base` environment (and skip the Mambaforge installation):
```bash
conda update -n base conda
@@ -55,144 +80,195 @@ conda config --set solver libmamba
```
```{warning}
-Any subsequent `conda` commands in the docs will need to be replaced with `mamba` if you have [Mamba](https://mamba.readthedocs.io/en/latest/) installed instead of Anaconda or Miniconda.
+Any subsequent `mamba` commands in the docs will need to be replaced with `conda` if you choose to use your existing Anaconda installation.
```
````
-(installation-methods)=
+Otherwise, to install Mamba:
+
+**On Windows**, just click through the installation steps.
+
+1. Go to: https://github.com/conda-forge/miniforge#mambaforge
+2. Download the latest version for your OS.
+3. Follow the installer instructions.
+
+We recommend using the following settings:
+
+- Install for: All Users (requires admin privileges)
+- Destination folder: `C:\mambaforge`
+- Advanced Options: Add MambaForge to the system PATH environment variable
+- Advanced Options: Register MambaForge as the system Python 3.X
+ These will make sure that MambaForge is easily accessible from most places on your computer.
+
+**On Linux**, it might be easier to do this straight from the terminal (Ctrl + Alt + T) with this one-liner:
+
+```bash
+wget -nc https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh && bash Mambaforge-Linux-x86_64.sh -b && ~/mambaforge/bin/conda init bash
+```
+
+Restart the terminal after running this command.
+
+```{note}
+For other Linux architectures (arm64 and POWER8/9), replace the `.sh` filenames above with the correct installer name for your architecture. See the Download column in [this table](https://github.com/conda-forge/miniforge#mambaforge) for the correct filename.
+
+```
+
+**On Macs (pre-M1)**, you can run the installer using this terminal command:
+
+```bash
+wget -nc https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-x86_64.sh && bash Mambaforge-MacOSX-x86_64.sh -b && ~/mambaforge/bin/conda init zsh
+```
+
+**On Macs (Apple Silicon)**, use this terminal command:
+
+```bash
+curl -fsSL --compressed https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-arm64.sh -o Mambaforge3-MacOSX-arm64.sh && chmod +x Mambaforge3-MacOSX-arm64.sh && ./Mambaforge3-MacOSX-arm64.sh -b -p ~/mambaforge3 && rm Mambaforge3-MacOSX-arm64.sh && ~/mambaforge3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+```
+
## Installation methods
SLEAP can be installed three different ways: via {ref}`conda package`, {ref}`conda from source`, or {ref}`pip package`. Select one of the methods below to install SLEAP. We recommend {ref}`conda package`.
-````{tabs}
- ```{tab} conda package
- **This is the recommended installation method**.
- ````{tabs}
- ```{group-tab} Windows and Linux
- ```bash
- conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1a1
- ```
- ```{note}
- - This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).
- - If you already have CUDA installed on your system, this will not conflict with it.
- - This will also work in CPU mode if you don't have a GPU on your machine.
- ```
- ```
- ```{group-tab} Mac OS
- ```bash
- conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1a1
- ```
- ```{note}
- This will also work in CPU mode if you don't have a GPU on your machine.
- ```
- ```
- ````
+(condapackage)=
+
+### `conda` package
+
+**Windows** and **Linux**
+
+```bash
+mamba create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1a2
+```
+
+**Mac OS X** and **Apple Silicon**
+
+```bash
+mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1a2
+```
+
+**This is the recommended installation method**.
+
+```{note}
+- This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).
+- If you already have CUDA installed on your system, this will not conflict with it.
+- This will also work in CPU mode if you don't have a GPU on your machine.
+```
+
+(condasource)=
+
+### `conda` from source
+
+1. First, ensure git is installed:
+
+ ```bash
+ git --version
+ ```
+
+ If 'git' is not recognized, then [install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
+
+2. Then, clone the repository:
+
+ ```bash
+ git clone https://github.com/talmolab/sleap && cd sleap
+ ```
+
+3. Finally, install from the environment file (differs based on OS and GPU):
+
+ **Windows** and **Linux**
+
+ ```bash
+ mamba env create -f environment.yml -n sleap
```
- ```{tab} conda from source
- This is the **recommended method for development**.
- 1. First, ensure git is installed:
- ```bash
- git --version
- ```
- If `git` is not recognized, then [install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
- 2. Then, clone the repository:
- ```bash
- git clone https://github.com/talmolab/sleap && cd sleap
- ```
- 3. Finally, install SLEAP from the environment file:
- ````{tabs}
- ```{group-tab} Windows and Linux
- ````{tabs}
- ```{group-tab} NVIDIA GPU
- ```bash
- conda env create -f environment.yml -n sleap
- ```
- ```
- ```{group-tab} CPU or other GPU
- ```bash
- conda env create -f environment_no_cuda.yml -n sleap
- ```
- ```
- ````
- ```
- ```{group-tab} Mac OS
- ```bash
- conda env create -f environment_mac.yml -n sleap
- ```
- ```
- ````
- ```{note}
- - This installs SLEAP in development mode, which means that edits to the source code will be applied the next time you run SLEAP.
- - Change the `-n sleap` in the command to create an environment with a different name (e.g., `-n sleap_develop`).
- ```
+
+ If you do not have a NVIDIA GPU, then you should use the no CUDA environment file:
+
+ ```bash
+ mamba env create -f environment_no_cuda.yml -n sleap
```
- ```{tab} pip package
- This is the **recommended method for Google Colab only**.
- ```{warning}
- This will uninstall existing libraries and potentially install conflicting ones.
-
- We strongly recommend that you **only use this method if you know what you're doing**!
- ```
- ````{tabs}
- ```{group-tab} Windows and Linux
- ```{note}
- - Requires Python 3.7
- - To enable GPU support, make sure that you have **CUDA Toolkit v11.3** and **cuDNN v8.2** installed.
- ```
- Although you do not need Miniconda installed to perform a `pip install`, we recommend [installing Miniconda](https://docs.anaconda.com/free/miniconda/) to create a new environment where we can isolate the `pip install`. Alternatively, you can use a venv if you have an existing Python 3.7 installation. If you are working on **Google Colab**, skip to step 3 to perform the `pip install` without using a conda environment.
- 1. Otherwise, create a new conda environment where we will `pip install sleap`:
- ````{tabs}
- ```{group-tab} NVIDIA GPU
- ```bash
- conda create --name sleap pip python=3.7.12 cudatoolkit=11.3 cudnn=8.2
- ```
- ```
- ```{group-tab} CPU or other GPU
- ```bash
- conda create --name sleap pip python=3.7.12
- ```
- ```
- ````
- 2. Then activate the environment to isolate the `pip install` from other environments on your computer:
- ```bash
- conda activate sleap
- ```
- ```{warning}
- Refrain from installing anything into the `base` environment. Always create a new environment to install new packages.
- ```
- 3. Finally, we can perform the `pip install`:
- ```bash
- pip install sleap[pypi]==1.4.1a1
- ```
- ```{note}
- The pypi distributed package of SLEAP ships with the following extras:
- - **pypi**: For installation without an conda environment file. All dependencies come from PyPI.
- - **jupyter**: This installs all *pypi* and jupyter lab dependencies.
- - **dev**: This installs all *jupyter* dependencies and developement tools for testing and building docs.
- - **conda_jupyter**: For installation using a conda environment file included in the source code. Most dependencies are listed as conda packages in the environment file and only a few come from PyPI to allow jupyter lab support.
- - **conda_dev**: For installation using [a conda environment](https://github.com/search?q=repo%3Atalmolab%2Fsleap+path%3Aenvironment*.yml&type=code) with a few PyPI dependencies for development tools.
- ```
- ```
- ```{group-tab} Mac OS
- Not supported.
- ```
- ````
+
+ **Mac OS X** and **Apple Silicon**
+
+ ```bash
+ mamba env create -f environment_mac.yml -n sleap
+ ```
+
+ This is the **recommended method for development**.
+
+```{note}
+- This installs SLEAP in development mode, which means that edits to the source code will be applied the next time you run SLEAP.
+- Change the `-n sleap` in the command to create an environment with a different name (e.g., `-n sleap_develop`).
+```
+
+(pippackage)=
+
+### `pip` package
+
+Although you do not need Mambaforge installed to perform a `pip install`, we recommend {ref}`installing Mambaforge` to create a new environment where we can isolate the `pip install`. Alternatively, you can use a venv if you have an existing python installation. If you are working on **Google Colab**, skip to step 3 to perform the `pip install` without using a conda environment.
+
+1. Otherwise, create a new conda environment where we will `pip install sleap`:
+
+ either without GPU support:
+
+ ```bash
+ mamba create --name sleap pip python=3.7.12
+ ```
+
+ or with GPU support:
+
+ ```bash
+ mamba create --name sleap pip python=3.7.12 cudatoolkit=11.3 cudnn=8.2
+ ```
+
+2. Then activate the environment to isolate the `pip install` from other environments on your computer:
+
+ ```bash
+ mamba activate sleap
+ ```
+
+ ```{warning}
+ Refrain from installing anything into the `base` environment. Always create a new environment to install new packages.
+ ```
+
+3. Finally, we can perform the `pip install`:
+
+ ```bash
+ pip install sleap[pypi]==1.4.1a2
+ ```
+
+ This works on **any OS except Apple silicon** and on **Google Colab**.
+
+ ```{note}
+ The pypi distributed package of SLEAP ships with the following extras:
+ - **pypi**: For installation without an mamba environment file. All dependencies come from PyPI.
+ - **jupyter**: This installs all *pypi* and jupyter lab dependencies.
+ - **dev**: This installs all *jupyter* dependencies and developement tools for testing and building docs.
+ - **conda_jupyter**: For installation using a mamba environment file included in the source code. Most dependencies are listed as conda packages in the environment file and only a few come from PyPI to allow jupyter lab support.
+ - **conda_dev**: For installation using [a mamba environment](https://github.com/search?q=repo%3Atalmolab%2Fsleap+path%3Aenvironment*.yml&type=code) with a few PyPI dependencies for development tools.
+ ```
+
+ ```{note}
+ - Requires Python 3.7
+ - To enable GPU support, make sure that you have **CUDA Toolkit v11.3** and **cuDNN v8.2** installed.
+ ```
+
+ ```{warning}
+ This will uninstall existing libraries and potentially install conflicting ones.
+
+ We strongly recommend that you **only use this method if you know what you're doing**!
```
-````
## Testing that things are working
-If you installed using `conda`, first activate the `sleap` environment by opening a terminal and typing:
+If you installed using `mamba`, first activate the `sleap` environment by opening a terminal and typing:
```bash
-conda activate sleap
+mamba activate sleap
```
````{hint}
-Not sure what `conda` environments you already installed? You can get a list of the environments on your system with:
+Not sure what `mamba` environments you already installed? You can get a list of the environments on your system with:
```
-conda env list
+mamba env list
```
````
@@ -225,7 +301,7 @@ python -c "import sleap; sleap.versions()"
### GPU support
-Assuming you installed using either of the `conda`-based methods on Windows or Linux, SLEAP should automatically have GPU support enabled.
+Assuming you installed using either of the `mamba`-based methods on Windows or Linux, SLEAP should automatically have GPU support enabled.
To check, verify that SLEAP can detect the GPUs on your system:
@@ -286,7 +362,7 @@ file: No such file or directory
then activate the environment:
```bash
-conda activate sleap
+mamba activate sleap
```
and run the commands:
@@ -315,13 +391,13 @@ We **strongly recommend** installing SLEAP in a fresh environment when updating.
To uninstall an existing environment named `sleap`:
```bash
-conda env remove -n sleap
+mamba env remove -n sleap
```
````{hint}
-Not sure what `conda` environments you already installed? You can get a list of the environments on your system with:
+Not sure what `mamba` environments you already installed? You can get a list of the environments on your system with:
```bash
-conda env list
+mamba env list
```
````
@@ -337,10 +413,10 @@ If you get any errors or the GUI fails to launch, try running the diagnostics to
sleap-diagnostic
```
-If you were not able to get SLEAP installed, activate the conda environment it is in and generate a list of the package versions installed:
+If you were not able to get SLEAP installed, activate the mamba environment it is in and generate a list of the package versions installed:
```bash
-conda list
+mamba list
```
Then, [open a new Issue](https://github.com/talmolab/sleap/issues) providing the versions from either command above, as well as any errors you saw in the console during the installation. Or [start a discussion](https://github.com/talmolab/sleap/discussions) to get help from the community.
diff --git a/develop/_static/css/tabs.css b/develop/_static/css/tabs.css
deleted file mode 100644
index 10914e8a4..000000000
--- a/develop/_static/css/tabs.css
+++ /dev/null
@@ -1,93 +0,0 @@
-.sphinx-tabs {
- margin-bottom: 1rem;
- }
-
- [role="tablist"] {
- border-bottom: 1px solid #a0b3bf;
- }
-
- .sphinx-tabs-tab {
- position: relative;
- font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;
- color: var(--pst-color-link);
- line-height: 24px;
- margin: 3px;
- font-size: 16px;
- font-weight: 400;
- background-color: var(--bs-body-color);
- border-radius: 5px 5px 0 0;
- border: 0;
- padding: 1rem 1.5rem;
- margin-bottom: 0;
- }
-
- .sphinx-tabs-tab[aria-selected="true"] {
- font-weight: 700;
- border: 1px solid #a0b3bf;
- border-bottom: 1px solid rgb(50, 50, 50);
- margin: -1px;
- background-color: rgb(50, 50, 50);
- }
-
- .admonition .sphinx-tabs-tab[aria-selected="true"]:last-child {
- margin-bottom: -1px;
- }
-
- .sphinx-tabs-tab:focus {
- z-index: 1;
- outline-offset: 1px;
- }
-
- .sphinx-tabs-panel {
- position: relative;
- padding: 1rem;
- border: 1px solid #a0b3bf;
- margin: 0px -1px -1px -1px;
- border-radius: 0 0 5px 5px;
- border-top: 0;
- background: rgb(50, 50, 50);
- }
-
- .sphinx-tabs-panel.code-tab {
- padding: 0.4rem;
- }
-
- .sphinx-tab img {
- margin-bottom: 24 px;
- }
-
- /* Dark theme preference styling */
-
- @media (prefers-color-scheme: dark) {
- body[data-theme="auto"] .sphinx-tabs-panel {
- color: white;
- background-color: rgb(50, 50, 50);
- }
-
- body[data-theme="auto"] .sphinx-tabs-tab {
- color: white;
- background-color: rgba(255, 255, 255, 0.05);
- }
-
- body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] {
- border-bottom: 1px solid rgb(50, 50, 50);
- background-color: rgb(50, 50, 50);
- }
- }
-
- /* Explicit dark theme styling */
-
- body[data-theme="dark"] .sphinx-tabs-panel {
- color: white;
- background-color: rgb(50, 50, 50);
- }
-
- body[data-theme="dark"] .sphinx-tabs-tab {
- color: white;
- background-color: rgba(255, 255, 255, 0.05);
- }
-
- body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] {
- border-bottom: 2px solid rgb(50, 50, 50);
- background-color: rgb(50, 50, 50);
- }
\ No newline at end of file
diff --git a/develop/_static/documentation_options.js b/develop/_static/documentation_options.js
index aa3a1677a..c1be250f4 100644
--- a/develop/_static/documentation_options.js
+++ b/develop/_static/documentation_options.js
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
- VERSION: 'v1.4.1a1',
+ VERSION: 'v1.4.1a2',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff --git a/develop/_static/tabs.css b/develop/_static/tabs.css
deleted file mode 100644
index 957ba60d6..000000000
--- a/develop/_static/tabs.css
+++ /dev/null
@@ -1,89 +0,0 @@
-.sphinx-tabs {
- margin-bottom: 1rem;
-}
-
-[role="tablist"] {
- border-bottom: 1px solid #a0b3bf;
-}
-
-.sphinx-tabs-tab {
- position: relative;
- font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;
- color: #1D5C87;
- line-height: 24px;
- margin: 0;
- font-size: 16px;
- font-weight: 400;
- background-color: rgba(255, 255, 255, 0);
- border-radius: 5px 5px 0 0;
- border: 0;
- padding: 1rem 1.5rem;
- margin-bottom: 0;
-}
-
-.sphinx-tabs-tab[aria-selected="true"] {
- font-weight: 700;
- border: 1px solid #a0b3bf;
- border-bottom: 1px solid white;
- margin: -1px;
- background-color: white;
-}
-
-.sphinx-tabs-tab:focus {
- z-index: 1;
- outline-offset: 1px;
-}
-
-.sphinx-tabs-panel {
- position: relative;
- padding: 1rem;
- border: 1px solid #a0b3bf;
- margin: 0px -1px -1px -1px;
- border-radius: 0 0 5px 5px;
- border-top: 0;
- background: white;
-}
-
-.sphinx-tabs-panel.code-tab {
- padding: 0.4rem;
-}
-
-.sphinx-tab img {
- margin-bottom: 24 px;
-}
-
-/* Dark theme preference styling */
-
-@media (prefers-color-scheme: dark) {
- body[data-theme="auto"] .sphinx-tabs-panel {
- color: white;
- background-color: rgb(50, 50, 50);
- }
-
- body[data-theme="auto"] .sphinx-tabs-tab {
- color: white;
- background-color: rgba(255, 255, 255, 0.05);
- }
-
- body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] {
- border-bottom: 1px solid rgb(50, 50, 50);
- background-color: rgb(50, 50, 50);
- }
-}
-
-/* Explicit dark theme styling */
-
-body[data-theme="dark"] .sphinx-tabs-panel {
- color: white;
- background-color: rgb(50, 50, 50);
-}
-
-body[data-theme="dark"] .sphinx-tabs-tab {
- color: white;
- background-color: rgba(255, 255, 255, 0.05);
-}
-
-body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] {
- border-bottom: 2px solid rgb(50, 50, 50);
- background-color: rgb(50, 50, 50);
-}
diff --git a/develop/_static/tabs.js b/develop/_static/tabs.js
deleted file mode 100644
index 48dc303c8..000000000
--- a/develop/_static/tabs.js
+++ /dev/null
@@ -1,145 +0,0 @@
-try {
- var session = window.sessionStorage || {};
-} catch (e) {
- var session = {};
-}
-
-window.addEventListener("DOMContentLoaded", () => {
- const allTabs = document.querySelectorAll('.sphinx-tabs-tab');
- const tabLists = document.querySelectorAll('[role="tablist"]');
-
- allTabs.forEach(tab => {
- tab.addEventListener("click", changeTabs);
- });
-
- tabLists.forEach(tabList => {
- tabList.addEventListener("keydown", keyTabs);
- });
-
- // Restore group tab selection from session
- const lastSelected = session.getItem('sphinx-tabs-last-selected');
- if (lastSelected != null) selectNamedTabs(lastSelected);
-});
-
-/**
- * Key focus left and right between sibling elements using arrows
- * @param {Node} e the element in focus when key was pressed
- */
-function keyTabs(e) {
- const tab = e.target;
- let nextTab = null;
- if (e.keyCode === 39 || e.keyCode === 37) {
- tab.setAttribute("tabindex", -1);
- // Move right
- if (e.keyCode === 39) {
- nextTab = tab.nextElementSibling;
- if (nextTab === null) {
- nextTab = tab.parentNode.firstElementChild;
- }
- // Move left
- } else if (e.keyCode === 37) {
- nextTab = tab.previousElementSibling;
- if (nextTab === null) {
- nextTab = tab.parentNode.lastElementChild;
- }
- }
- }
-
- if (nextTab !== null) {
- nextTab.setAttribute("tabindex", 0);
- nextTab.focus();
- }
-}
-
-/**
- * Select or deselect clicked tab. If a group tab
- * is selected, also select tab in other tabLists.
- * @param {Node} e the element that was clicked
- */
-function changeTabs(e) {
- // Use this instead of the element that was clicked, in case it's a child
- const notSelected = this.getAttribute("aria-selected") === "false";
- const positionBefore = this.parentNode.getBoundingClientRect().top;
- const notClosable = !this.parentNode.classList.contains("closeable");
-
- deselectTabList(this);
-
- if (notSelected || notClosable) {
- selectTab(this);
- const name = this.getAttribute("name");
- selectNamedTabs(name, this.id);
-
- if (this.classList.contains("group-tab")) {
- // Persist during session
- session.setItem('sphinx-tabs-last-selected', name);
- }
- }
-
- const positionAfter = this.parentNode.getBoundingClientRect().top;
- const positionDelta = positionAfter - positionBefore;
- // Scroll to offset content resizing
- window.scrollTo(0, window.scrollY + positionDelta);
-}
-
-/**
- * Select tab and show associated panel.
- * @param {Node} tab tab to select
- */
-function selectTab(tab) {
- tab.setAttribute("aria-selected", true);
-
- // Show the associated panel
- document
- .getElementById(tab.getAttribute("aria-controls"))
- .removeAttribute("hidden");
-}
-
-/**
- * Hide the panels associated with all tabs within the
- * tablist containing this tab.
- * @param {Node} tab a tab within the tablist to deselect
- */
-function deselectTabList(tab) {
- const parent = tab.parentNode;
- const grandparent = parent.parentNode;
-
- Array.from(parent.children)
- .forEach(t => t.setAttribute("aria-selected", false));
-
- Array.from(grandparent.children)
- .slice(1) // Skip tablist
- .forEach(panel => panel.setAttribute("hidden", true));
-}
-
-/**
- * Select grouped tabs with the same name, but no the tab
- * with the given id.
- * @param {Node} name name of grouped tab to be selected
- * @param {Node} clickedId id of clicked tab
- */
-function selectNamedTabs(name, clickedId=null) {
- const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`);
- const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode);
-
- tabLists
- .forEach(tabList => {
- // Don't want to change the tabList containing the clicked tab
- const clickedTab = tabList.querySelector(`[id="${clickedId}"]`);
- if (clickedTab === null ) {
- // Select first tab with matching name
- const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`);
- deselectTabList(tab);
- selectTab(tab);
- }
- })
-}
-
-if (typeof exports === 'undefined') {
- exports = {};
-}
-
-exports.keyTabs = keyTabs;
-exports.changeTabs = changeTabs;
-exports.selectTab = selectTab;
-exports.deselectTabList = deselectTabList;
-exports.selectNamedTabs = selectNamedTabs;
diff --git a/develop/api.html b/develop/api.html
index e2f8a6e0c..4d24d74bb 100644
--- a/develop/api.html
+++ b/develop/api.html
@@ -9,7 +9,7 @@
- Developer API — SLEAP (v1.4.1a1)
+ Developer API — SLEAP (v1.4.1a2)
@@ -34,7 +34,6 @@
-
diff --git a/develop/api/sleap.info.align.html b/develop/api/sleap.info.align.html
index 01bd53d8c..0eb9626c1 100644
--- a/develop/api/sleap.info.align.html
+++ b/develop/api/sleap.info.align.html
@@ -9,7 +9,7 @@
- sleap.info.align — SLEAP (v1.4.1a1)
+ sleap.info.align — SLEAP (v1.4.1a2)
@@ -34,7 +34,6 @@
-
@@ -344,49 +343,49 @@
Enables easy per-video pipeline parallelization for feature suggestions.
Create a FeatureSuggestionPipeline with the desired parameters, and
then call ParallelFeaturePipeline.run() with the pipeline and the list
@@ -580,25 +579,25 @@
sleap.info.feature_suggestions
the results back into a single list of SuggestionFrame objects.
The fields are copied in a shallow manner with the exception of points. For each
point in the instance a PredictedPoint is created with score set to default
@@ -994,7 +1063,7 @@
A track object is associated with a set of animal/object instances
across multiple frames of video. This allows tracking of unique
entities in the video over time and space.
The Labels class collects the data for a SLEAP project.
This class is front-end for all interactions with loading, writing,
and modifying these labels. The actual storage backend for the data
@@ -449,13 +448,13 @@
Add a video to the labels if it is not already in it.
Video instances are added automatically when adding labeled frames,
but this function allows for adding videos to the labels before any
@@ -495,25 +494,25 @@
Serializes the labels in the underling list of LabeledFrames to a dict
structure. This function returns a nested dict structure composed entirely of
@@ -1507,7 +1506,7 @@
SLEAP labels files (slp) contain all the metadata for a labeling project or the
predicted labels from a video. This includes the skeleton, videos, labeled frames,
diff --git a/develop/api/sleap.io.format.adaptor.html b/develop/api/sleap.io.format.adaptor.html
index 59c9ad70f..aeb787e8e 100644
--- a/develop/api/sleap.io.format.adaptor.html
+++ b/develop/api/sleap.io.format.adaptor.html
@@ -9,7 +9,7 @@
-
An adaptor handles reading and/or writing a specific file format. To add
support for a new file format, you’ll create a new class which inherits from
@@ -336,13 +335,13 @@