Skip to main content

Task-based evaluation toolkit for Metal Artifact Reduction (MAR) in CT imaging (Annex GG Framework)

Project description

mar-eval

Objective Evaluation Toolkit for Metal Artifact Reduction (MAR) Algorithms in CT Imaging

mar-eval CI

mar-eval is an open-source Python toolkit that implements the analysis framework described in Annex GG of the proposed IEC 60601-2-44 Ed. 4.
It enables objective evaluation of Metal Artifact Reduction (MAR) algorithms in CT imaging using the Channelized Hotelling Observer (CHO), AUC-based detectability metrics, and bias assessment between MAR and non-MAR reconstructions.


Purpose

mar-eval supports regulatory, clinical, and technical validation of MAR performance by providing reproducible, quantitative methods for:

  • Computing Area Under the ROC Curve (AUC) using CHO-derived decision variables
  • Performing paired statistical comparison of MAR vs. non-MAR detectability
  • Estimating confidence intervals and ΔAUC bias
  • Enabling interoperability across CT simulators, physical phantoms, and regulatory test environments

Example Notebook

A runnable Jupyter Notebook, examples/mar_eval_demo.ipynb, walks through the full workflow described in Annex GG:

  1. GG.2 – Model Observer Task
    Simulates lesion-present and lesion-absent image sets using Gaussian statistics.
  2. GG.3 – Data Evaluation
    Computes CHO decision values, ROC curves, and AUC estimates.
  3. GG.4 – Statistical Comparison
    Uses a one-tailed paired t-test to detect significant improvements in detectability.
  4. GG.5 – Bias Assessment
    Quantifies ΔAUC and confidence intervals to evaluate MAR-related bias.

Installation

Install directly from PyPI:

pip install mar-eval

Or, for the latest development version:

pip install git+https://github.com/cdc15000/mar-eval.git

Running the Example

# Clone the repository
git clone https://github.com/cdc15000/mar-eval.git
cd mar-eval

# Install dependencies
pip install -r requirements.txt

# Launch JupyterLab
jupyter lab

# Open and run the example notebook
examples/mar_eval_demo.ipynb

Output Example

The notebook produces AUC estimates and statistical comparison similar to:

AUC (no MAR): 0.484  CI: (0.423, 0.538)
AUC (with MAR): 0.504  CI: (0.445, 0.558)
ΔAUC = 0.020, p = 0.0005

Package Structure

mareval/
├── __init__.py
├── cho.py           # CHO computation routines
├── stats.py         # AUC, bias, and statistical testing
├── utils.py         # Helper utilities
examples/
└── mar_eval_demo.ipynb
tests/
└── test_mareval_basic.py

Citation

If you use mar-eval in your research, please cite:

C.D. Cocchiaraley, Annex GG — Objective evaluation of Metal Artifact Reduction algorithms in CT imaging,
Proposed addition to IEC 60601-2-44 Ed. 4 (2025).


License

MIT License — see LICENSE for details.


Contributing

Contributions, issue reports, and pull requests are welcome.
Please open an issue or submit a PR with your proposed improvements.


© 2025 Christopher D. Cocchiaraley. All rights reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mar_eval-0.1.1.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

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

mar_eval-0.1.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file mar_eval-0.1.1.tar.gz.

File metadata

  • Download URL: mar_eval-0.1.1.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for mar_eval-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8a44a5b462f909c2adfe80b688b82e782822aaca701f6e41cced89dc3458135e
MD5 d33ca6257cb24b9b7ed93817de0ff49a
BLAKE2b-256 de7ec8c36873bb0a518f0be138c3771f3192116dc544d7242a3f29ab54133ff2

See more details on using hashes here.

File details

Details for the file mar_eval-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mar_eval-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for mar_eval-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1d3017d42b63b94d0dba7ce804621da56859ccb13e703a6cd851090923a061b3
MD5 bbe33637d8448760e45b1d11547be33d
BLAKE2b-256 86ad2e0a720d8a69a28e5f05293347a08b74bd700939b3bb899ed182dd2ed71a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page