Skip to main content

Admin CLI for managing medical imaging datasets in S3/MinIO for DataSHIELD

Project description

dsimaging-admin

Admin CLI for creating and operating dsimaging-store deployments and the medical imaging datasets stored in them.

Install

pip install dsimaging-admin

Create a store

dsimaging-admin store init writes a Docker Compose project for MinIO plus the dsimaging-store controller.

dsimaging-admin store init ./study-store \
  --controller-image davidsarratgonzalez/dsimaging-store:latest
dsimaging-admin store up ./study-store
dsimaging-admin store doctor ./study-store

For local controller development, build from a checked-out dsimaging-store repo instead of using an image:

dsimaging-admin store init ./study-store \
  --store-source /path/to/dsimaging-store
dsimaging-admin store up ./study-store

Use the generated connection details as a reusable CLI profile:

dsimaging-admin init \
  --endpoint http://127.0.0.1:9000 \
  --controller-url http://127.0.0.1:8080 \
  --bucket imaging-data

Dataset operations

# Publish with staging, publish lock, skip-if-hash-matches and DICOM checks.
dsimaging-admin publish \
  --dataset-id study_ct_v1 \
  --source /data/study_ct \
  --metadata /data/study_ct/clinical.csv \
  --modality ct

# Inspect and verify.
dsimaging-admin list
dsimaging-admin status study_ct_v1
dsimaging-admin verify study_ct_v1
dsimaging-admin doctor

# Rebuild artifacts from S3, copy, download or delete.
dsimaging-admin rescan study_ct_v1
dsimaging-admin copy study_ct_v1 study_ct_v2 --yes
dsimaging-admin download study_ct_v1 ./debug/study_ct_v1
dsimaging-admin delete study_ct_v1 --yes --purge-versions

All reporting commands that are useful for automation support JSON output:

dsimaging-admin list --output json
dsimaging-admin status study_ct_v1 --output json
dsimaging-admin verify study_ct_v1 --output json
dsimaging-admin doctor --output json

What publish does

  1. Scans your local image directory and optional masks under source/masks/, masks/, source/labels/, or labels/.
  2. Runs basic DICOM sanity checks for series UID, modality and instance order.
  3. Computes SHA-256 content hashes.
  4. Skips uploads that already match the current dataset hash indexes.
  5. Uploads through datasets/<id>/.staging-* and a .publish-lock, then copies into datasets/<id>/source/....
  6. Generates and uploads:
    • manifest.yaml
    • indexes/content_hash_index.parquet
    • indexes/masks_content_hash_index.parquet when masks exist
    • metadata/sample_manifests.parquet
    • metadata/samples.parquet

Use --dry-run to scan and show the upload plan without S3 writes, --no-skip to force uploads, or --no-atomic to disable staging.

Configuration

~/.dsimaging.yaml supports multiple profiles:

default_profile: default
profiles:
  default:
    endpoint: http://127.0.0.1:9000
    controller_url: http://127.0.0.1:8080
    bucket: imaging-data
    access_key: minioadmin
    secret_key: minioadmin123
    region: ""

Environment variables override profile values:

Variable Default Description
DSIMAGING_PROFILE default Config profile
DSIMAGING_ENDPOINT http://127.0.0.1:9000 S3/MinIO endpoint
DSIMAGING_CONTROLLER_URL (empty) dsimaging-store controller URL
DSIMAGING_ACCESS_KEY minioadmin S3 access key
DSIMAGING_SECRET_KEY minioadmin123 S3 secret key
DSIMAGING_BUCKET imaging-data Bucket name
DSIMAGING_REGION (empty) S3 region

Dataset layout in S3

s3://<bucket>/datasets/<dataset_id>/
  manifest.yaml
  metadata/
    samples.parquet
    sample_manifests.parquet
  indexes/
    content_hash_index.parquet
    masks_content_hash_index.parquet
  source/
    images/
    masks/
  derived/
  qc/

Store creation and dataset management only target dsimaging-store deployments.

Project details


Download files

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

Source Distribution

dsimaging_admin-0.3.2.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

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

dsimaging_admin-0.3.2-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file dsimaging_admin-0.3.2.tar.gz.

File metadata

  • Download URL: dsimaging_admin-0.3.2.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for dsimaging_admin-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a0472895229c5dbb20094d1065959935d1f2862ff6d5f44eb67d54853169596a
MD5 52ed18a6319da4fc7154e9cc7854db34
BLAKE2b-256 be8c25f5df63074fe2aeaf1e22f9cf87fb1217db20e40f2d0beb01e255a66dcb

See more details on using hashes here.

File details

Details for the file dsimaging_admin-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for dsimaging_admin-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 647fd75f15c2a34f5f85dd2718b0eb6df37aa7dfb6730243f7280ab6b688da7a
MD5 f356a1b7f7df7cfac8444562c60f0f9c
BLAKE2b-256 adc0a5ac56f410273047be512f6a1f14332ceb77e86f2468d8027ce46f07c8db

See more details on using hashes here.

Supported by

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