Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Installation

Install CyteOnto to run comparisons on your own computer. The hosted API needs no installation.

Requirements

Install the package

cyteonto is not published on PyPI. Install it from GitHub:

pip
uv
pip install "git+https://github.com/NygenAnalytics/CyteOnto.git"

The package also installs the tools of the hosted service and of its development, such as FastAPI, Modal, Jupyter and pytest, so install it into a dedicated virtual environment.

To work on CyteOnto itself, or to run the notebooks in its notebooks folder, clone the repository and install its locked environment instead:

git clone https://github.com/NygenAnalytics/CyteOnto.git
cd CyteOnto
uv sync

Download the Cell Ontology files

CyteOnto needs the Cell Ontology and the descriptions and embeddings of its terms. Download them once:

python -m cyteonto.setup

The command writes into the data directory inside the installed package, or into another directory that you pass with --data-dir. Files that exist are skipped; pass --force to download them again.

FileSizeContents
cell_ontology/cell_to_cell_ontology.csv0.2 MBThe labels of the Cell Ontology terms: 6,156 labels of 2,902 terms
cell_ontology/cell_to_cell_ontology_enriched.csv0.4 MBThe labels without duplicates, 6,155, with a lowercase label_normalized column; used for lookups
cell_ontology/cl.owl63 MBThe Cell Ontology, for the hierarchy metrics
embedding/descriptions/descriptions_nebius_moonshotai-Kimi-K2.6.json2.1 MBA description of every term, written by Kimi K2.6
embedding/cell_ontology/embeddings_nebius_moonshotai-Kimi-K2.6_nebius_Qwen-Qwen3-Embedding-8B.npz25 MBThe embedding of every description, made with Qwen3-Embedding-8B

The command also downloads the descriptions and embeddings of the fallback model pair (27 MB); if those downloads fail, it warns and continues. If the enriched CSV cannot be downloaded, it builds it from the original CSV. The command exits with status 1 when a required file cannot be downloaded.

Models and providers explains which models the precomputed files belong to, and Data files and formats describes every file.

API keys

CyteOnto calls two models, and each needs a key from its provider.

Embedding providerEnvironment variable
deepinfraDEEPINFRA_API_KEY
fireworksFIREWORKS_API_KEY
googleGOOGLE_API_KEY
nebiusNEBIUS_API_KEY
openaiOPENAI_API_KEY
openrouterOPENROUTER_API_KEY
togetherTOGETHER_API_KEY

If that variable is not set, CyteOnto uses EMBEDDING_MODEL_API_KEY. The ollama provider, a local Ollama server, needs no key. Export the variables in your shell, or keep them in a .env file:

# .env
NEBIUS_API_KEY=<your-nebius-api-key>

Loading a .env file does not change variables that are already set. Variables that CyteOnto reads when it is imported, such as CYTEONTO_LOG_LEVEL, must be set before import cyteonto. Keep .env files out of version control. Environment and limits lists all the variables that CyteOnto reads.

Check the installation

python -c "import cyteonto; print(cyteonto.__version__)"

This prints the installed version, such as 0.3.0.

Update

Run the install command again with --force-reinstall, or, in a clone of the repository, run git pull and then uv sync. Downloaded files in the package’s data directory may be lost when the package is reinstalled; run python -m cyteonto.setup again if they are missing.

Next step

Compare your first labels in Python: Quickstart (Python).