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.1.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.1-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dsimaging_admin-0.3.1.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.1.tar.gz
Algorithm Hash digest
SHA256 a2073a7ce13ace41c4428aea08c933be9b06643be9a957122423b785025edb72
MD5 d075728c4d370c3c263be0ac406797d8
BLAKE2b-256 4c12c282c03ccb9422b66fad4e77f4725a3bbce1a1d2944c38a5eb0a0a350c9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dsimaging_admin-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f6cec637242e76c5f872161e44783c74c86e55f030ccc6586a726950b5fd9c7f
MD5 47b58962033891b3cbf76c0d97e84120
BLAKE2b-256 98a73b35415799565350f991ed2a429a396a858c538b115ced9badf420432190

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