Skip to main content

nimbusimage

Python API for NimbusImage (app) — programmatic access to scientific imaging datasets, annotations, workers, and analysis.

Installation

pip install nimbusimage

For Docker worker development (includes large_image for writing TIFF files):

pip install nimbusimage[worker]

Authentication

The recommended setup uses a Girder API key, which is persistent and doesn't expire.

How to get an API key:

  • nimbusimage.com (hosted): Email support@cytopixel.com with your account email address to request an API key.
  • Local/self-hosted server: In the Girder admin UI, go to Users > select the user > Edit User > API Keys > create a new key and copy the key string.

Required scopes. The simplest option is a full-access key (leave the scope list empty), which works for everything including polling job status. If you instead create a scoped key, it must include core.user_auth — without it, job.wait() / job.refresh() fail with a confusing 401 Unauthorized even though you own the job. Add jobs.rest.list_job as well so job logs can be read. Recommended scoped-key set: core.data.read, core.data.write, core.data.own, core.user_info.read, core.user_auth, jobs.rest.list_job.

Set environment variables for persistent access:

# Add to ~/.zshrc or ~/.bashrc

# For nimbusimage.com:
export NI_API_URL="https://app.nimbusimage.com/girder/api/v1"
export NI_API_KEY="your-api-key-here"

# For a local server:
export NI_API_URL="http://localhost:8080/api/v1"
export NI_API_KEY="your-api-key-here"

Then connect with no arguments:

import nimbusimage as ni

client = ni.connect()

Or pass credentials explicitly:

client = ni.connect("http://localhost:8080/api/v1", api_key="your-api-key")

Quick start

import nimbusimage as ni

client = ni.connect()

# List datasets
for d in client.list_datasets():
    print(f"{d['name']} (ID: {d['_id']})")

# Open a dataset
ds = client.dataset(name="My Experiment")
print(f"{ds.name}: {ds.channels}, {ds.num_z} z-slices, {ds.shape}")

# Fetch an image
img = ds.images.get(channel=0, z=0)  # numpy array

# Get a composite RGB image
rgb = ds.images.get_composite(dtype="uint8")

# List annotations
polygons = ds.annotations.list(shape="polygon")

# Run a worker
job = ds.annotations.compute(
    image="annotations/random_squares:latest",
    channel=0, tags=["detected"],
    worker_interface={"Number of squares": 10, "Square size": 15},
)
job.wait()

# Export data
ds.export.to_csv(property_paths=[["prop_id", "Area"]], path="results.csv")

# Open in browser
ds.open(z=3)

API overview

The package follows an accessor pattern:

ni.connect() -> NimbusClient
    client.dataset(id) -> Dataset
        ds.images        # fetch frames, composites, z-stacks
        ds.annotations   # create, list, filter, delete annotations
        ds.connections   # parent-child annotation links
        ds.properties    # computed measurements
        ds.collections   # display configuration (layers, tools)
        ds.export        # JSON and CSV export
        ds.history       # undo/redo
        ds.sharing       # access control
    client.list_datasets()
    client.list_workers()
    client.list_projects()

See docs.nimbusimage.com for general documentation and the API reference for detailed API docs.

Agent integration: Claude Code and Codex

NimbusImage includes a shared set of Agent Skills that teach Claude Code and Codex how to use this API. After installing the plugin, ask either agent to connect to a NimbusImage server, inspect datasets, retrieve images, manage annotations, run workers, or export results.

Claude Code

# Add the NimbusImage marketplace (one-time)
claude plugin marketplace add arjunrajlaboratory/NimbusImage

# Install the plugin
claude plugin install nimbusimage@NimbusImage

For development from a local clone, load the plugin for one session:

claude --plugin-dir /path/to/NimbusImage/plugins/nimbusimage

Codex

# Add the NimbusImage marketplace (one-time)
codex plugin marketplace add arjunrajlaboratory/NimbusImage

# Install the plugin
codex plugin add nimbusimage@NimbusImage

When working inside a clone of this repository, Codex can also discover the synchronized repository-local skills under .agents/skills/ without installing the plugin.

Available skills

Skill Claude Code Codex What it covers
Core /nimbus-skills:nimbusimage $nimbusimage:nimbusimage Connection, dataset discovery, metadata, projects
Annotations /nimbus-skills:annotations $nimbusimage:annotations CRUD, geometry helpers, bulk operations
Images /nimbus-skills:images $nimbusimage:images Frame retrieval, composites, z-stacks, crops
Workers /nimbus-skills:workers $nimbusimage:workers Docker worker discovery, execution, job tracking
Analyze /nimbus-skills:analyze $nimbusimage:analyze Properties, export, connections, sharing

The skills use progressive disclosure, so each agent loads detailed instructions and API references only when needed. See the plugin documentation for repository-local Codex aliases and skill-development instructions.

Development

cd nimbusimage
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# Run unit tests (no backend required)
pytest tests/ --ignore=tests/integration -v

# Run integration tests (requires docker compose up)
pytest tests/integration/ -v -m integration

License

See the project root for license information.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nimbusimage-0.2.2.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nimbusimage-0.2.2-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

Details for the file nimbusimage-0.2.2.tar.gz.

File metadata

  • Download URL: nimbusimage-0.2.2.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nimbusimage-0.2.2.tar.gz
Algorithm Hash digest
SHA256 8830c073a64c780eabb58f30d7811fa4a2820e88421af74904a5c5a12d1eae3d
MD5 4fa1e657fa0b3b7089f8d66535dd31a8
BLAKE2b-256 191e78cb77c1fbd82ac00381e406484fc3ef36f951b18089c5a1cfd7cc14c598

See more details on using hashes here.

Provenance

The following attestation bundles were made for nimbusimage-0.2.2.tar.gz:

Publisher: publish-nimbusimage.yaml on arjunrajlaboratory/NimbusImage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nimbusimage-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: nimbusimage-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nimbusimage-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9d7978599fd19f3d25bd4262f814905d4fc07aef7fd3b458badcc09c3262acf2
MD5 904e79b5c3d06c5e92236ac6999b6950
BLAKE2b-256 c5cef82f5bc3e45c6d112f43c414c277e9ef2a42739951c688bd1c7dc69668cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nimbusimage-0.2.2-py3-none-any.whl:

Publisher: publish-nimbusimage.yaml on arjunrajlaboratory/NimbusImage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page