Python API for NimbusImage
Project description
nimbusimage
Python API for NimbusImage — 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.
Set environment variables for persistent access:
# Add to ~/.zshrc or ~/.bashrc
# For nimbusimage.com:
export NI_API_URL="https://nimbusimage.com/girder"
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 the full documentation for detailed API reference and examples.
Claude Code integration
NimbusImage includes skills for Claude Code that teach Claude how to use this API. After installing, you can ask Claude things like "connect to my NimbusImage server and list datasets" and it will write correct code.
Install the skills
Option A — Marketplace install (recommended):
# Add the NimbusImage marketplace (one-time)
claude plugin marketplace add arjunrajlaboratory/NimbusImage
# Install the nimbusimage plugin
claude plugin install nimbusimage@arjunrajlaboratory/NimbusImage
Option B — For this session only:
claude --plugin-dir /path/to/NimbusImage/plugins/nimbusimage
Option C — Permanent (project-scoped):
Add to your project's .claude/settings.local.json:
{
"plugins": ["/path/to/NimbusImage/plugins/nimbusimage"]
}
Available skills
| Command | What it covers |
|---|---|
/nimbusimage |
Connection, dataset discovery, metadata, projects |
/nimbusimage:annotations |
Annotation CRUD, geometry helpers, bulk operations |
/nimbusimage:images |
Frame retrieval, composites, z-stacks, crops |
/nimbusimage:workers |
Docker worker discovery, execution, job tracking |
/nimbusimage:analyze |
Properties, export, connections, sharing |
The skills use progressive disclosure — Claude loads only what it needs for the current task.
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nimbusimage-0.1.0.tar.gz.
File metadata
- Download URL: nimbusimage-0.1.0.tar.gz
- Upload date:
- Size: 44.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cf1ddb8a6da96956c5d0db862abb33ed1261335048c00da3a0aed2607625be9
|
|
| MD5 |
798ca618ded185a832f9d59266cdf9ec
|
|
| BLAKE2b-256 |
a4143b36fe2c7edbefa3da163f00bd759f8d50bac6e8c8ac394a67d28a57ec46
|
Provenance
The following attestation bundles were made for nimbusimage-0.1.0.tar.gz:
Publisher:
publish-nimbusimage.yaml on arjunrajlaboratory/NimbusImage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nimbusimage-0.1.0.tar.gz -
Subject digest:
4cf1ddb8a6da96956c5d0db862abb33ed1261335048c00da3a0aed2607625be9 - Sigstore transparency entry: 1186279286
- Sigstore integration time:
-
Permalink:
arjunrajlaboratory/NimbusImage@abec35f7b2cef53bc31fad3cd47d16689fc276c5 -
Branch / Tag:
refs/tags/nimbusimage-v0.1.0 - Owner: https://github.com/arjunrajlaboratory
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-nimbusimage.yaml@abec35f7b2cef53bc31fad3cd47d16689fc276c5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nimbusimage-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nimbusimage-0.1.0-py3-none-any.whl
- Upload date:
- Size: 35.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdc4c5733a7d67f7e6087085bf3b642f71ef30b6285c4668a524774a93921541
|
|
| MD5 |
8195014eb13e469c2d6c73702ad7276b
|
|
| BLAKE2b-256 |
f13487e81abe573ad6dd26a410c1303b600fff9b83052cc26a0deabb8f9f6720
|
Provenance
The following attestation bundles were made for nimbusimage-0.1.0-py3-none-any.whl:
Publisher:
publish-nimbusimage.yaml on arjunrajlaboratory/NimbusImage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nimbusimage-0.1.0-py3-none-any.whl -
Subject digest:
cdc4c5733a7d67f7e6087085bf3b642f71ef30b6285c4668a524774a93921541 - Sigstore transparency entry: 1186279317
- Sigstore integration time:
-
Permalink:
arjunrajlaboratory/NimbusImage@abec35f7b2cef53bc31fad3cd47d16689fc276c5 -
Branch / Tag:
refs/tags/nimbusimage-v0.1.0 - Owner: https://github.com/arjunrajlaboratory
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-nimbusimage.yaml@abec35f7b2cef53bc31fad3cd47d16689fc276c5 -
Trigger Event:
push
-
Statement type: