Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

bloomctl

Command-line tool for the Bloom Database (Salk Harnessing Plants Initiative) — log in, find cylinder experiments, download their images and metadata, and work with cylinder trait datasets.

Install

bloomctl is on PyPI as bloomctl. Current releases are pre-releases (0.1.0aN), so opt in:

uv tool install bloomctl --prerelease=allow    # isolated CLI tool (recommended)
uvx --prerelease=allow bloomctl --help         # one-off, no install
pip install --pre bloomctl                     # into the active environment
bloomctl --version

Quickstart for Cylinder Image Downloads

# 1. Log in once (prompts for your Bloom email + password; saves to ~/.bloom)
bloomctl login

# 2. Find an experiment — pick a species from a menu, grab its id
bloomctl cyl experiments list --species-menu

# 3. Download it — by id, or just by name
bloomctl cyl download ./out --experiment-id 42
bloomctl cyl download ./out --experiment-name "drought 2024"

That writes ./out/scans.csv (metadata) and the per-frame images.

Every command takes -p/--profile to target a different login (default prod), and

the list commands take --output csv|json for machine-readable output.

Commands

Find & download (any logged-in user):

Command What it does
cyl experiments list List experiments (species · name · id); filter with --species NAME or --species-menu
cyl accessions list Accessions in an experiment (--experiment-id, or pick from a menu)
cyl accessions sample-counts Plant count per accession/species (--species NAME, or --species-menu)
cyl datasets list / get List trait datasets (--experiment menu) / show one dataset's traits
cyl qc list-sets List cylinder QC sets
cyl download <dir> Download an experiment/scan:scans.csv + images. Select by --experiment-id, --scan-id, or --experiment-name

Pipeline (stage-in / write-back):

Command What it does
cyl download-for-predict / batch-download-for-predict Stage scan(s) into the predict-ready layout
cyl ingest-result / batch-ingest-result Write per-scan pipeline results back to Bloom*(needs write access)*
cyl datasets create Create a trait dataset*(needs write access)*

Run bloomctl <command> --help for the full options of any command.

Run as a container

Prefer a container (e.g. a pipeline step) over a pip install? The same CLI is published to GHCR:

ghcr.io/salk-harnessing-plants-initiative/bloomctl
docker run --rm ghcr.io/salk-harnessing-plants-initiative/bloomctl:staging \
  cyl ingest-result path/to/scan.result.json

Tags: :staging (latest staging build) · :<version> (matches the PyPI release of the same name) · :sha-<git-sha> (immutable, one per commit). Image provenance and build details are in the repo docs.

Notes

  • Species selector--species NAME filters by species (typed, scriptable); --species-menu picks from a menu. Same on every command; the two are mutually exclusive.
  • Interactive menus (--species-menu, --experiment) need a terminal; in a pipe/CI they abort rather than guess. For scripting, pass the typed value/id and use --output json.
  • Read vs write — browsing/downloading works for any account; the write commands (ingest-result, datasets create) need an account with write access.

Documentation

Full docs — per-command detail, the container image, and access roles — are in the project repository.

Tutorials

Download an experiment, from login to files

A start-to-finish walkthrough for the common task — "get me the images + metadata for the soybean drought experiment."

# 1. Log in (once). Defaults to prod; use --server + -p for a named staging/local profile.
bloomctl login
#    → prompts for email + password; writes credentials to ~/.bloom

# 2. Find the experiment — browse by species from a menu (menu prints to stderr):
bloomctl cyl experiments list --species-menu
#    Select a species:
#      0) All species
#      1) Arabidopsis
#      2) Soybean
#    → prints the table; note the experiment_id you want, e.g. 42
#    (or skip this and let `download` resolve the name — see step 4)

# 3. (optional) Sanity-check the contents before pulling gigabytes of images:
bloomctl cyl accessions list --experiment-id 42       # which accessions are in it
bloomctl cyl accessions sample-counts --species-menu  # plant count per accession (pick a species)
bloomctl cyl datasets list --experiment-id 42         # any trait datasets already built

# 4. Download it — metadata only first to preview, then the full pull:
bloomctl cyl download ./soy-drought --experiment-id 42 --meta-only   # scans.csv only
bloomctl cyl download ./soy-drought --experiment-id 42               # scans.csv + all frames
#    …or without ever looking up the id:
bloomctl cyl download ./soy-drought --experiment-name "drought" --species Soybean

Result: ./soy-drought/scans.csv (one row per scan) plus ./soy-drought/images/Wave{n}/… (the frames). For scripting, swap the menus for explicit ids and add --output json.

Download files

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

Source Distribution

bloomctl-0.1.0a3.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

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

bloomctl-0.1.0a3-py3-none-any.whl (49.2 kB view details)

Uploaded Python 3

File details

Details for the file bloomctl-0.1.0a3.tar.gz.

File metadata

  • Download URL: bloomctl-0.1.0a3.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bloomctl-0.1.0a3.tar.gz
Algorithm Hash digest
SHA256 ff235b25916d00649ad749b8a1d6b9606ba8a8ddb4ef81a436f3c46d4759747e
MD5 9192ffe0ee74d5399efef8236bfce168
BLAKE2b-256 65d346777ffd9df4d8c5ce7597da11541557d74db1c93b44e3dd207668f0f0d9

See more details on using hashes here.

File details

Details for the file bloomctl-0.1.0a3-py3-none-any.whl.

File metadata

  • Download URL: bloomctl-0.1.0a3-py3-none-any.whl
  • Upload date:
  • Size: 49.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bloomctl-0.1.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 306fc3c1762a29495d462dafe5ce9e4e69678f9f6a9ae921bf2e54e437752dd8
MD5 b0fc1e239df44c64c3dc8640ad846bd4
BLAKE2b-256 5a50607b6541d75608cdfc5942bbc178c064e82e804c0ccabaa9f65e7466cdd3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0a3 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page