Skip to main content
Pre-release

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

RSNA DICOM Anonymizer (V18 stable / V19 dev)

de es fr Tests

Install Python with tkinter (GUI library)

Windows

  1. Download Python 3.12 from python.org (pytorch does not currently support 3.13)
  2. Run installer
    • Select "Add python.exe to PATH"
    • Enable "tcl/tk and IDLE"

macOS

  1. Install Homebrew if not present: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)'
  2. Install Python 3.12 with Tcl/Tk:
brew install python@3.12
brew install tcl-tk

Linux (Ubuntu/Debian)

  1. Install the required packages:
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.12 python3.12-tk

Verify Installation

python --version
python -m tkinter

If python + tkinter has been installed successfully a small GUI window should open

Install rsna-anonymizer package from PyPI

Stable (V18):

pip install rsna-anonymizer

V19 development pre-release (requires --pre; does not replace the stable install above):

pip install --pre rsna-anonymizer

Pin a specific dev build:

pip install --pre rsna-anonymizer==19.0.0.dev2

Verify: pip show rsna-anonymizer or rsna-anonymizer --version. See CHANGELOG for dev release notes.

TotalSegmentator, XGBoost, and related dependencies are included. Enable Harmonize, Face Blur, and Remove Pixel PHI per project in Settings → Project (or when creating a new project). Download models and apply the face license from the AI Features panel.

Execution

rsna-anonymizer

Headless Mode

You need to provide a path to a project configuration to run in headless mode rsna-anonymizer -c path/to/ProjectModel.json

Upgrading

Stable:

pip install --upgrade rsna-anonymizer

V19 dev pre-release:

pip install --upgrade --pre rsna-anonymizer

Documentation

Help files

Development

Setup

  1. Setup python environment (3.12) which includes Tkinter, recommend using pyenv with MacOS & Linux
  2. Ensure python is installed with Tkinter: python -m tkinter, a small GUI window should open
  3. Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh
  4. Clone repository (for V19 work, checkout branch V19 before syncing)
  5. Create virtual environment and install dependencies: uv sync --group dev
  6. macOS Harmonize contrast: brew install libomp when using XGBoost/TotalSegmentator contrast
  7. Enable Git pre-commit hooks (Ruff lint, same rules as CI): uv run pre-commit install

For hot-reload during UI work: uv run python scripts/dev_anonymizer.py (requires watchexec).

Hooks run on every git commit, including commits from the VS Code / Cursor Source Control UI. To skip once: git commit --no-verify.

Linting (Ruff)

Configuration: [tool.ruff] in pyproject.toml (scope: src/anonymizer/).

uv run ruff check ./src/anonymizer/
uv run ruff check ./src/anonymizer/ --fix   # safe auto-fixes only; not run in CI
uv run pre-commit run ruff-check --all-files

CI runs ruff check without --fix. Pre-commit uses the same check on staged Python files under src/anonymizer/.

Unit Testing

Test layout mirrors source: tests/controller/ → src/anonymizer/controller/, prototyping tests live under src/prototyping/*/tests/. See tests/README.md.

uv sync --group dev
uv run pytest tests/controller/tseg -q                             # may download TS weights
uv run pytest tests/controller tests/model -q   # CI suite (no view)
uv run pytest src/prototyping -q              # prototyping only
uv run pytest -q                              # full local suite (controller + view + model)

Optional: create tests/controller/.env with AWS_USERNAME and AWS_PASSWORD for S3 upload tests.

Markers (tseg_integration, dicom_integration, rsna_local_data) are documented in pyproject.toml and tests/README.md.

Translations

Languages for 17.3: en_US, de, es, fr

Ensure gettext is installed:

  1. Windows: Install instructions or choco install gettext
  2. Mac OSX: brew install gettext
  3. Linux: sudo apt-get install gettext

Extracting messages from source files:

cd src/anonymizer/assets/locales/ ./extract_translations.sh

Updating translations:

cd src/anonymizer/assets/locales/ ./update_translations.sh

Software Architecture

Full class diagram on github here

Metadata

Release files for rsna-anonymizer 19.0.0.dev2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rsna-anonymizer 19.0.0.dev2
File Size Uploaded
rsna_anonymizer-19.0.0.dev2.tar.gz 18.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for rsna-anonymizer 19.0.0.dev2
File Interpreter ABI Platform
rsna_anonymizer-19.0.0.dev2-py3-none-any.whl Python 3 none any Details

Total release size: 29.1 MB

Release files / rsna_anonymizer-19.0.0.dev2.tar.gz

Download URL rsna_anonymizer-19.0.0.dev2.tar.gz
Size 18.1 MB
Tags Source
SHA-256 checksum
How to use checksums
9b97986de3ed4fb660e2515104f9de80dbe0c9d9a2ab6313240c368f1f1c3f96
BLAKE2b-256 checksum
How to use checksums
2c91960c5248eceb3546e8b0bf4d89b4340b7dd5e3a334abf00551a1fedaad1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release files / rsna_anonymizer-19.0.0.dev2-py3-none-any.whl

Download URL rsna_anonymizer-19.0.0.dev2-py3-none-any.whl
Size 11.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
2a35a01c4706d4c1e4319f5b1e2275e4eea1948dc8ff2c680398b668df38f94f
BLAKE2b-256 checksum
How to use checksums
1a4b7c9e6bda113184dd8ae7b7b0dc0f94a3071560aca56632ef3bcaab037b6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.

Transparency log

Release history Release notifications | RSS feed

19.0.9

2 release files

19.0.8

2 release files

19.0.7

2 release files

This release

19.0.0.dev2 This release

2 release files

18.0.7

2 release files

18.0.6

2 release files

18.0.3

2 release files

18.0.2

2 release files

17.4.1

2 release files

17.3.9

2 release files

17.3.8

2 release files

17.3.7

2 release files

17.3.6

2 release files

17.3.4

2 release files

17.3.2

2 release files

17.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page