MedICS — Medical Image Computing Suite
A cross-platform, modular platform for medical image visualization and analysis. MedICS combines a scientific Python workspace, built-in toolboxes, and a pip-installable extension system into one desktop application.
Python 3.11+ · Windows / macOS / Linux · Qt 6
Table of contents
Introduction
MedICS (Medical Image Computing Suite) is a research-oriented desktop environment for loading, inspecting, and analyzing medical images. It is designed so that image I/O, interactive preview, Python scripting, and third-party tools share one workspace instead of living in separate applications.
Typical work happens in a single window:
- File Explorer for the current folder
- Central tabs for toolboxes (editor, importer, preview, extensions)
- Variables dock for the in-memory workspace
- Bottom panel for Jupyter, terminal, and logs
Data lives in a DataDict workspace and can be saved as a .med file (HDF5). Scripts in PyEditor and the embedded Jupyter console see the same variables.
Features
| Area | What you get |
|---|---|
| Image I/O | DICOM (including JPEG 2000 / OCT series), TIFF stacks, NIfTI, HDF5 / .med, MATLAB .mat, PNG/JPEG, video (.mp4, .avi, .mkv, .mov, .webm, …), and other scientific formats via FileIO |
| Preview | Double-click files in Explorer to inspect text, markdown, tables, 2-D images, and volumes (slice, window/level, transforms) |
| Import | Drag-and-drop importer with background loading and progress |
| Python | In-process Jupyter kernel plus a full editor (syntax highlighting, completions, terminal) |
| Workspace | Named variables, inspector, auto-save, load/save .med workspaces |
| UI | Dark and light QSS themes, draggable toolbar, dock layout, central tab workspace |
| Extensions | Discover pip packages (medics.extensions entry points) or drop-in folders; load, show, and unload without restarting the core app |
Get started
Requirements
- Python 3.11 or later
- A supported OS: Windows, macOS, or Linux
- Scientific stack (NumPy, SciPy, scikit-image, pydicom, h5py, PySide6, and others) — installed automatically with the package
Install
From PyPi
pip install medics
Verify
python -c "import medics; print(medics.__version__)"
medics --help
Launch
medics
# or
python -m medics
Useful CLI commands:
medics Start the application
medics --create-ext [NAME] [DIR] Scaffold a new extension
medics --build-ext [OPTIONS] Build an extension wheel
medics --version, -V Print the installed version
medics --help Show CLI help
Basic workflow
- Open a folder —
File → Open Folder, or use the folder button in the Explorer dock. - Preview files — Double-click a file in Explorer, or use FilePreview. Images, DICOM/NIfTI volumes, tables, markdown, and code open in tabs.
- Import data — Open the ImportData toolbox (
Toolboxesmenu). Drag files or folders, or browse a DICOM series. Imported arrays appear in the Variables dock and in Jupyter. - Analyze — Write scripts in PyEditor, or run code in the Jupyter tab. Both share the workspace namespace.
- Save —
File → Save Workspacewrites variables to a.med(HDF5) file. Auto-save can be enabled in settings.
Toolboxes
Built-in toolboxes open as tabs in the central widget, not as dock panels. The Toolboxes menu controls which icons appear on the activity bar.
| Toolbox | Role |
|---|---|
| PyEditor | Python IDE: syntax highlighting, completions, AST outline, integrated terminal, run against the Jupyter kernel |
| ImportData | Unified importer for DICOM, NIfTI, TIFF/PNG/JPEG, video (MP4/AVI/MKV/MOV/WebM/…), HDF5, MAT, NumPy, CSV, and related formats; background workers with progress |
| FilePreview | Read-only preview of text, code, markdown, spreadsheets, 2-D images, and volumetric data (DICOM series, stacked TIFF, NIfTI, video frame stacks) |
Custom tools should be packaged as extensions rather than patched into medics/toolboxes/.
Extensions
Extensions add UI, menus, and workspace tools without changing the MedICS core. They are discovered automatically from:
- pip packages that declare a
medics.extensionsentry point (preferred) - Filesystem drop-ins under
medics/extensions/
Discovery prefers entry points when the same ID exists in both places.
Install an extension
pip install medics-ext-example
medics
Loaded extensions appear under the Extensions menu and, when windowed is true, can open a tab or window. Enable, disable, and inspect them from the extension manager dialog.
Create an extension
medics --create-ext
# or with a name
medics --create-ext medics-ext-my-tool
This copies the bundled scaffold from medics/extension_template/ and substitutes names. A typical layout:
medics-ext-my-tool/
├── medics_ext_my_tool/
│ ├── __init__.py # ExtensionInterface implementation
│ ├── extension.json # Display metadata
│ └── ui/
│ └── main_widget.py # Optional PySide6 widget
├── tests/
├── pyproject.toml
└── README.md
Every extension implements ExtensionInterface:
def get_name(self) -> str: ...
def get_version(self) -> str: ...
def get_description(self) -> str: ...
def get_author(self) -> str: ...
def get_category(self) -> str: ...
def initialize(self, app_context) -> bool: ...
def cleanup(self) -> None: ...
def show_extension(self) -> None: ...
initialize(app_context) receives the running MedICSMain instance, so the extension can use the workspace, config, event bus, menus, and docks.
extension.json
{
"name": "My Tool",
"version": "1.0.0",
"description": "Does XYZ",
"author": "Your Name",
"category": "Image Analysis",
"enabled": true,
"windowed": true,
"icon": null
}
Entry point (pyproject.toml)
[project.entry-points."medics.extensions"]
my_tool = "medics_ext_my_tool:MyToolExtension"
Lifecycle in short: discover → initialize(app_context) → menu/toolbar action → show_extension() → cleanup() on unload.
Build and publish
Run from the extension project directory:
medics --build-ext # plain Python wheel (default)
medics --build-ext --protect # Cython-compiled, source-stripped
medics --build-ext -p # same as --protect
medics --build-ext --upload # build, then upload to PyPI
medics --build-ext --upload --test-pypi
Full API and publishing notes: docs/extension-system.md and medics/extension_template/docs/DEVELOPER_GUIDE.md.
License
Copyright © 2024–2026 MedICS Team. All rights reserved.
MedICS is proprietary software. See LICENSE for the full terms.
MedICS is built on PySide6/Qt, NumPy, SciPy, pydicom, h5py, scikit-image, Matplotlib, napari, pyqtgraph, qtconsole, and numba.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file medics-202609102303-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: medics-202609102303-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 15.3 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65cd622734f620034b5e0283b62b6bae8948a3a0eea4b18dcbd8b80bbe610943
|
|
| MD5 |
e2a30637c690687c828c3f230ef2b9d9
|
|
| BLAKE2b-256 |
c3d545520ed7c339163fba16e4826054a33db49b173f2440396358ad86db573a
|