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.1.tar.gz (59.7 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.1-py3-none-any.whl (44.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nimbusimage-0.2.1.tar.gz
  • Upload date:
  • Size: 59.7 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.1.tar.gz
Algorithm Hash digest
SHA256 0a9ec00e002fdf4952d42e994a235caf7de4512b9ac3c92260f23643624ec246
MD5 640fc31e06b52daa8b6a1fd2754e66ee
BLAKE2b-256 121f98cde9cb4b2da445a05d4eea152c0821f0b1d04f7a59e98fc6a31dc393b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for nimbusimage-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: nimbusimage-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 44.0 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4b55c70ec070c2f8b8afe623830317281459c8000fc151b3037b44a1c90e2d29
MD5 4ddd366c7e136ff16da93da16e78d674
BLAKE2b-256 566db8408fec7ae5428481c8ab88bd5add9838cc049535130ebd2c1efc2449e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for nimbusimage-0.2.1-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

0.2.2

2 files

This release

0.2.1 This release

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