Installing
Requirements
| Component | Version |
|---|---|
| C++ compiler | C++17 (MSVC 19.20+, GCC 9+, Clang 10+) |
| CMake | ≥ 3.14 |
| Eigen | vendored at third_party/eigen |
| GoogleTest | provided via conda or system package |
| Ninja | provided via conda |
| Python | 3.11 |
| Docker (optional) | Engine ≥ 20.10 with NVIDIA Container Toolkit for CUDA inference |
Python runtime dependencies are defined by environment.yml (the source of
truth): numpy==2.4.4, pandas==3.0.2, scipy==1.17.1, pytest==9.0.3, absl-py==2.4.0, matplotlib==3.10.9, opencv-python==4.13.0.92, pillow==12.2.0, pycocotools==2.0.11, rich==15.0.0, sushicore==0.4.0, tqdm==4.67.3. PyTorch (torch/torchvision/torchaudio) is installed from the conda pytorch channel with pytorch-cuda=12.1. The Dockerfile installs the same pip set without sushicore, which the CLI install resolves, and pins PyTorch to torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 from the cu121 wheel index.
environment.yml pins sushicore==0.4.0, while the CLI requires sushicore>=0.7.0. An
environment built from the file needs the newer sushicore installed by hand, as shown under
CLI (pipx); the mismatch is in Known issues.
Compiler flags: MSVC compiles with /W3 /O2 /Ot /fp:fast /arch:AVX2 /DNDEBUG; GCC/Clang compile with -Wall -O3 -ffast-math -funroll-loops -DNDEBUG (plus -mavx2 on x86_64, mirroring the MSVC flag). Library is built SHARED with hidden-by-default symbol visibility on every platform; only functions carrying SUSHITRACK_API (include/SushiTrack/sushitrack_export.hpp) are exported, via __declspec(dllexport)/dllimport on Windows and __attribute__((visibility("default"))) on GCC/Clang. Outputs are unified under ${CMAKE_BINARY_DIR}/bin and ${CMAKE_BINARY_DIR}/lib.
CLI (pipx)
The CLI is a small pipx-installed package, built on sushicore, the console,
theme and config-layering foundation shared with every other Sushi* developer
CLI (sr, se, sa, sb, sd, hub). Inside a SushiStack workspace,
hub add sushitrack installs it automatically; standalone, install it by hand:
pipx install cli/
cli/pyproject.toml declares sushicore>=0.7.0 as an ordinary dependency, next to
typer>=0.12 and rich>=13.0. PyPI carries sushicore 0.1.0 to 0.4.0, so until 0.7.0 is
published pipx install cli/ cannot resolve that requirement. Until then, install
sushicore from a checkout into one environment, then the CLI beside it:
pip install -e /path/to/sushicore
pip install -e cli
Once installed, st --help (or its full-name alias, sushitrack --help) lists every
command and st --version prints the installed version of sushitrack-cli.
Conda environment
conda env create -f environment.yml
conda activate sushitrack
environment.yml installs Python 3.11, CMake, Ninja, GoogleTest, PyTorch from the conda pytorch channel (pytorch-cuda=12.1), and the remaining pip dependency set (numpy/pandas/scipy/opencv/sushicore/rich/pytest/etc.).
Docker
st container build # builds image from ./Dockerfile (CUDA 12.1, Ubuntu 22.04)
st container run # docker run -it --rm -v $(pwd):/workspace/sushitrack sushitrack bash
The Dockerfile pins the same wheel versions as environment.yml, except sushicore, which it leaves to the CLI install. The project root is bind-mounted at /workspace/sushitrack; output files written inside the container are immediately visible on the host. The image installs the CLI with pip3 install, which puts st and sushitrack on PATH, so st works interactively and as docker run ... st build alike.

