Skip to main content

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, 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

  1. Open a folderFile → Open Folder, or use the folder button in the Explorer dock.
  2. Preview files — Double-click a file in Explorer, or use FilePreview. Images, DICOM/NIfTI volumes, tables, markdown, and code open in tabs.
  3. Import data — Open the ImportData toolbox (Toolboxes menu). Drag files or folders, or browse a DICOM series. Imported arrays appear in the Variables dock and in Jupyter.
  4. Analyze — Write scripts in PyEditor, or run code in the Jupyter tab. Both share the workspace namespace.
  5. SaveFile → Save Workspace writes 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, 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)

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:

  1. pip packages that declare a medics.extensions entry point (preferred)
  2. 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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

medics-20260824.9-cp311-cp311-win_amd64.whl (14.5 MB view details)

Uploaded CPython 3.11Windows x86-64

medics-20260824.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (17.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

medics-20260824.9-cp311-cp311-macosx_10_9_universal2.whl (28.2 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file medics-20260824.9-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for medics-20260824.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c2b3268512d342c717939e6cc568bfd4f40f1fa95c5dee3c91fee9127e9f278a
MD5 84237be3fefee581990aba43cbb61f21
BLAKE2b-256 4f5827cd80d6e6a80ad17d780b585847a700e6e9fb1dd443eecc996eec66dcc3

See more details on using hashes here.

File details

Details for the file medics-20260824.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for medics-20260824.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f98dd9ccf956a2f8476b96e5a301c0ad0c688068bf53bdb6562d86139bda143b
MD5 8a917636bdf420a4572b09fa20142b0a
BLAKE2b-256 edfe1087ec0bad539f37a687d2c2a4d28c437570a69383ce2888ce050dc7b330

See more details on using hashes here.

File details

Details for the file medics-20260824.9-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for medics-20260824.9-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 fc73c8f379b4a4ab617873a18849261f0fab5c1ff72d4b7cd23c7f7424118a2a
MD5 1cbf7e5e0ef1ad07510f6aaf39f59aef
BLAKE2b-256 a3b8de1d4fb15e7ebd6b135467efa222e92d9329c36a608a9745541acbfa1301

See more details on using hashes here.

Release history Release notifications | RSS feed

202609102303

1 file

202609100010

1 file

202609090420

1 file

202608282249

3 files

202608250449

3 files

This release

20260824.9 This release

3 files

20260823.256

3 files

2026.7.9

12 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