# RSNA DICOM Anonymizer V18.0
[](readme.de.md)
[](readme.es.md)
[](readme.fr.md)
[](https://github.com/RSNA/anonymizer/actions/workflows/tests.yaml)
## Install Python with tkinter (GUI library)
### Windows
1. Download Python 3.12 from [python.org](https://www.python.org/downloads/) (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
`pip install rsna-anonymizer`
## 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
`pip install --upgrade rsna-anonymizer`
## Documentation
[Help files](https://rsna.github.io/anonymizer)
## Development
### Setup
1. Setup python environment (>3.10) 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 poetry: `pip install poetry`
4. Set virtual environment within project: `poetry config virtualenvs.in-project true`
4. Clone repository
5. Setup virtual environment and install all dependencies listed in pyproject.toml: `poetry install --with dev`
### Unit Testing
#### For model and controller with coverage
```
1. Create tests/controller/.env file with your AWS_USERNAME and AWS_PASSWORD
2. poetry run pytest
```
### Translations
Languages for 17.3: `en_US, de, es, fr`
#### Ensure gettext is installed:
1. Windows: [Install instructions](https://mlocati.github.io/articles/gettext-iconv-windows.html) 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](class_diagram.md)
Raw data
{
"_id": null,
"home_page": null,
"name": "rsna-anonymizer",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13.0,>=3.12.0",
"maintainer_email": null,
"keywords": null,
"author": "Algorhythm Software",
"author_email": "michael@dx.life",
"download_url": "https://files.pythonhosted.org/packages/a4/32/ce96f84ce681cb708d02b823b440371820883dc53bbee2a21fbd4f172f57/rsna_anonymizer-18.0.3.tar.gz",
"platform": null,
"description": "# RSNA DICOM Anonymizer V18.0\n[](readme.de.md)\n[](readme.es.md)\n[](readme.fr.md)\n[](https://github.com/RSNA/anonymizer/actions/workflows/tests.yaml)\n\n## Install Python with tkinter (GUI library)\n### Windows\n1. Download Python 3.12 from [python.org](https://www.python.org/downloads/) (pytorch does not currently support 3.13)\n2. Run installer\n - Select \"Add python.exe to PATH\"\n - Enable \"tcl/tk and IDLE\"\n### macOS\n1. Install Homebrew if not present: `/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)'\n2. Install Python 3.12 with Tcl/Tk:\n```\nbrew install python@3.12\nbrew install tcl-tk\n```\n### Linux (Ubuntu/Debian)\n1. Install the required packages:\n```\nsudo apt update\nsudo apt install software-properties-common\nsudo add-apt-repository ppa:deadsnakes/ppa\nsudo apt install python3.12 python3.12-tk\n```\n## Verify Installation\n```\npython --version\npython -m tkinter\n```\nIf python + tkinter has been installed successfully a small GUI window should open\n## Install rsna-anonymizer package from PyPI\n`pip install rsna-anonymizer`\n## Execution\n`rsna-anonymizer`\n### Headless Mode\nYou need to provide a path to a project configuration to run in headless mode\n`rsna-anonymizer -c path/to/ProjectModel.json`\n## Upgrading\n`pip install --upgrade rsna-anonymizer`\n## Documentation\n[Help files](https://rsna.github.io/anonymizer)\n## Development\n### Setup\n1. Setup python environment (>3.10) which includes Tkinter, recommend using pyenv with MacOS & Linux\n2. Ensure python is installed with Tkinter: `python -m tkinter`, a small GUI window should open\n3. Install poetry: `pip install poetry`\n4. Set virtual environment within project: `poetry config virtualenvs.in-project true`\n4. Clone repository\n5. Setup virtual environment and install all dependencies listed in pyproject.toml: `poetry install --with dev`\n### Unit Testing \n#### For model and controller with coverage\n```\n1. Create tests/controller/.env file with your AWS_USERNAME and AWS_PASSWORD\n2. poetry run pytest\n```\n### Translations\nLanguages for 17.3: `en_US, de, es, fr`\n#### Ensure gettext is installed:\n1. Windows: [Install instructions](https://mlocati.github.io/articles/gettext-iconv-windows.html) or `choco install gettext`\n2. Mac OSX: `brew install gettext`\n3. Linux: `sudo apt-get install gettext`\n#### Extracting messages from source files:\ncd src/anonymizer/assets/locales/\n./extract_translations.sh\n#### Updating translations:\ncd src/anonymizer/assets/locales/\n./update_translations.sh\n### Software Architecture\nFull class diagram on github [here](class_diagram.md)\n\n",
"bugtrack_url": null,
"license": "RSNA-MIRC Public License",
"summary": "RSNA DICOM Anonymizer",
"version": "18.0.3",
"project_urls": {
"Homepage": "https://github.com/RSNA/anonymizer"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cad5b13cb7a406a0661a4a2116579953ca392bd7d2ec8950d4d0779fc22e3ba5",
"md5": "d044000850ba11c312842ecc8fa1a5b3",
"sha256": "51e89fa19cfb4323a33c4c37d39a92cbbaa5bc8c9b7e1fe52d540c5a353f215c"
},
"downloads": -1,
"filename": "rsna_anonymizer-18.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d044000850ba11c312842ecc8fa1a5b3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13.0,>=3.12.0",
"size": 10910663,
"upload_time": "2025-08-13T10:37:28",
"upload_time_iso_8601": "2025-08-13T10:37:28.405315Z",
"url": "https://files.pythonhosted.org/packages/ca/d5/b13cb7a406a0661a4a2116579953ca392bd7d2ec8950d4d0779fc22e3ba5/rsna_anonymizer-18.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a432ce96f84ce681cb708d02b823b440371820883dc53bbee2a21fbd4f172f57",
"md5": "d3568b82fa1b9f7cc4317481889d2dfe",
"sha256": "833a91f7665e5e1dca33b9701db217ce1400abe74393950934aa94295629e5c6"
},
"downloads": -1,
"filename": "rsna_anonymizer-18.0.3.tar.gz",
"has_sig": false,
"md5_digest": "d3568b82fa1b9f7cc4317481889d2dfe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13.0,>=3.12.0",
"size": 10786344,
"upload_time": "2025-08-13T10:37:31",
"upload_time_iso_8601": "2025-08-13T10:37:31.013592Z",
"url": "https://files.pythonhosted.org/packages/a4/32/ce96f84ce681cb708d02b823b440371820883dc53bbee2a21fbd4f172f57/rsna_anonymizer-18.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-13 10:37:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "RSNA",
"github_project": "anonymizer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "rsna-anonymizer"
}