Skip to content

pontikos-lab/process-dcm

Repository files navigation

Process DCM

Maintenance GitHub GitHub release (latest by date) GitHub Release PyPI Poetry Ruff pre-commit

About The Project

Python library and app to extract images from DCM files with metadata in private-eye format

Installation and Usage

pip install process-dcm
 Usage: process-dcm [OPTIONS] INPUT_DIR

 Process DICOM files in subfolders, extract images and metadata using parallel processing.
 Version: 0.4.0

╭─ Arguments ──────────────────────────────────────────────────────────────────────────────────────────╮
│ *    input_dir      TEXT  Input directory containing subfolders with DICOM files. [default: None]    │
│                           [required]                                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────╮
│ --image_format        -f      TEXT     Image format for extracted images (png, jpg, webp). Defaults  │
│                                        to: png                                                       │
│                                        [default: png]                                                │
│ --output_dir          -o      TEXT     Output directory for extracted images and metadata. Defaults  │
│                                        to: exported_data                                             │
│                                        [default: exported_data]                                      │
│ --group               -g               Re-group DICOM files in a given folder by                     │
│                                        AcquisitionDateTime.                                          │
│ --relative            -r               Save extracted data in folders relative to _input_dir_.       │
│ --n_jobs              -j      INTEGER  Number of parallel jobs. Defaults to: 1 [default: 1]          │
│ --mapping             -m      TEXT     Path to CSV containing patient_id to study_id mapping. If not │
│                                        provided and patient_id is not anonymised, a                  │
│                                        'patient_2_study_id.csv' file will be generated               │
│ --keep                -k      TEXT     Keep the specified fields (p: patient_key, n: names, d:       │
│                                        date_of_birth, D: year-only DOB, g: gender)                   │
│ --overwrite           -w               Overwrite existing images if found.                           │
│ --quiet               -q               Silence verbosity.                                            │
│ --version             -V               Prints app version.                                           │
│ --install-completion                   Install completion for the current shell.                     │
│ --show-completion                      Show completion for the current shell, to copy it or          │
│                                        customize the installation.                                   │
│ --help                -h               Show this message and exit.                                   │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯

For Developers

To run this project locally, you will need to install the prerequisites and follow the installation section.

Prerequisites

This Project depends on the poetry.

  1. Install poetry, via homebrew or pipx:

    brew install poetry

    or

    pipx install poetry
  2. Don't forget to use the python environment you set before and, if using VScode, apply it there.

  3. It's optional, but we strongly recommend commitizen, which follows Conventional Commits

Installation

  1. Clone the repo

    git clone https://github.com/pontikos-lab/process-dcm
    cd process-dcm

Bumping Version

We use commitizen. The instructions below are only for exceptional cases.

  1. Using poetry-bumpversion. Bump the version number by running poetry version [part] [--dry-run] where [part] is major, minor, or patch, depending on which part of the version number you want to bump.

    Use --dry-run option to check it in advance.

  2. Push the tagged commit created above and the tag itself, i.e.:

    ver_tag=$(poetry version | cut -d ' ' -f2)
    git tag -a v"$ver_tag" -m "Tagged version $ver_tag"
    git push
    git push --tags