diff --git a/.github/assets/readme/LUCIDE-LICENSE b/.github/assets/readme/LUCIDE-LICENSE new file mode 100644 index 0000000..718bb3f --- /dev/null +++ b/.github/assets/readme/LUCIDE-LICENSE @@ -0,0 +1,43 @@ +ISC License + +Copyright (c) 2026 Lucide Icons and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +The following Lucide icons are derived from the Feather project: + +airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out + +The MIT License (MIT) (for the icons listed above) + +Copyright (c) 2013-present Cole Bemis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.github/assets/readme/MEDiml_Header.png b/.github/assets/readme/MEDiml_Header.png new file mode 100644 index 0000000..1eb1f38 Binary files /dev/null and b/.github/assets/readme/MEDiml_Header.png differ diff --git a/.github/assets/readme/app-window.svg b/.github/assets/readme/app-window.svg new file mode 100644 index 0000000..abf9645 --- /dev/null +++ b/.github/assets/readme/app-window.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/.github/assets/readme/arxiv.svg b/.github/assets/readme/arxiv.svg new file mode 100644 index 0000000..9f18994 --- /dev/null +++ b/.github/assets/readme/arxiv.svg @@ -0,0 +1 @@ +arXiv \ No newline at end of file diff --git a/.github/assets/readme/book-open.svg b/.github/assets/readme/book-open.svg new file mode 100644 index 0000000..65661b1 --- /dev/null +++ b/.github/assets/readme/book-open.svg @@ -0,0 +1,14 @@ + + + + diff --git a/.github/assets/readme/clipboard-check.svg b/.github/assets/readme/clipboard-check.svg new file mode 100644 index 0000000..8958780 --- /dev/null +++ b/.github/assets/readme/clipboard-check.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/.github/assets/readme/compass.svg b/.github/assets/readme/compass.svg new file mode 100644 index 0000000..6498ba7 --- /dev/null +++ b/.github/assets/readme/compass.svg @@ -0,0 +1,14 @@ + + + + diff --git a/.github/assets/readme/graduation-cap.svg b/.github/assets/readme/graduation-cap.svg new file mode 100644 index 0000000..c27f353 --- /dev/null +++ b/.github/assets/readme/graduation-cap.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/.github/assets/readme/handshake.svg b/.github/assets/readme/handshake.svg new file mode 100644 index 0000000..f86d35a --- /dev/null +++ b/.github/assets/readme/handshake.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/.github/assets/readme/heart-handshake.svg b/.github/assets/readme/heart-handshake.svg new file mode 100644 index 0000000..dbbe87f --- /dev/null +++ b/.github/assets/readme/heart-handshake.svg @@ -0,0 +1,13 @@ + + + diff --git a/.github/assets/readme/joss.svg b/.github/assets/readme/joss.svg new file mode 100644 index 0000000..f09403f --- /dev/null +++ b/.github/assets/readme/joss.svg @@ -0,0 +1 @@ +JOSS emblemOpen Journals, CC BY 4.0. https://joss.theoj.org/about diff --git a/.github/assets/readme/life-buoy.svg b/.github/assets/readme/life-buoy.svg new file mode 100644 index 0000000..c77e2b2 --- /dev/null +++ b/.github/assets/readme/life-buoy.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/.github/assets/readme/list-tree.svg b/.github/assets/readme/list-tree.svg new file mode 100644 index 0000000..fe80d0e --- /dev/null +++ b/.github/assets/readme/list-tree.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/.github/assets/readme/mediml-logo.svg b/.github/assets/readme/mediml-logo.svg new file mode 100644 index 0000000..5e1c566 --- /dev/null +++ b/.github/assets/readme/mediml-logo.svg @@ -0,0 +1,41 @@ + + +MEDiml logo + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/assets/readme/mediml-overview.svg b/.github/assets/readme/mediml-overview.svg new file mode 100644 index 0000000..be96fd8 --- /dev/null +++ b/.github/assets/readme/mediml-overview.svg @@ -0,0 +1,462 @@ + + +MEDiml package workflow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/assets/readme/package-open.svg b/.github/assets/readme/package-open.svg new file mode 100644 index 0000000..c210872 --- /dev/null +++ b/.github/assets/readme/package-open.svg @@ -0,0 +1,16 @@ + + + + + + diff --git a/.github/assets/readme/quote.svg b/.github/assets/readme/quote.svg new file mode 100644 index 0000000..5be9a9f --- /dev/null +++ b/.github/assets/readme/quote.svg @@ -0,0 +1,14 @@ + + + + diff --git a/.github/assets/readme/scale.svg b/.github/assets/readme/scale.svg new file mode 100644 index 0000000..b2b9012 --- /dev/null +++ b/.github/assets/readme/scale.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/.github/assets/readme/workflow.svg b/.github/assets/readme/workflow.svg new file mode 100644 index 0000000..52f496f --- /dev/null +++ b/.github/assets/readme/workflow.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/README.md b/README.md index c8f31d7..2f3c1ee 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,60 @@ -# MEDiml logo MEDiml: MEDical Image analysis with Machine Learning | The package - -
+

+ + MEDiml: Medical Image Analysis with Machine Learning / The Package + +

-[![PyPI - Python Version](https://img.shields.io/badge/python-3.8%20|%203.9%20|%203.10-blue)](https://www.python.org/downloads/release/python-380/) -[![PyPI - version](https://img.shields.io/pypi/v/mediml)](https://pypi.org/project/mediml/) -[![Continuous Integration](https://github.com/MEDomicsLab/MEDiml-pkg/actions/workflows/python-app.yml/badge.svg)](https://github.com/MEDomicsLab/MEDiml-pkg/actions/workflows/python-app.yml) -[![Documentation Status](https://readthedocs.org/projects/mediml/badge/?version=latest)](https://mediml.readthedocs.io/en/latest/?badge=latest) -[![License: GPL-3](https://img.shields.io/badge/license-GPLv3-blue)](LICENSE) -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/tutorial/DataManager-Tutorial.ipynb) +

A Python package for radiomics and dosiomics feature extraction.

-
+

+ Python 3.8, 3.9 and 3.10 + PyPI version + Build + Documentation build status + License + Open tutorial in Google Colab +

- 📖 Documentation +  Documentation +   ·   +  Website   ·   - 🌐 MEDiml.app +  Paper (Submitted)   ·   - 🖥️ MEDiml-app +  Reference Manual

-## Table of Contents - * [1. Introduction](#1-introduction) - * [2. Installation](#2-installation) - * [3. Using MEDiml](#3-using-mediml) - * [3.1 Using MEDiml through the command line](#31-using-mediml-through-the-command-line) - * [3.2 Using MEDiml through code](#32-using-mediml-through-code) - * [4. Tutorials](#4-tutorials) - * [5. IBSI Standardization](#5-ibsi-standardization) - * [IBSI Chapter 1](#ibsi-chapter-1) - * [IBSI Chapter 2](#ibsi-chapter-2) - * [6. Contributing and support](#6-contributing-and-support) - * [7. Citation](#7-citation) - * [8. Acknowledgement](#8-acknowledgement) - * [9. Authors](#9-authors) - * [10. License](#10-license) + + +![MEDiml workflow: datasets, DataManager, image inputs, subpackages, radiomic features, machine learning outputs and additional features](.github/assets/readme/mediml-overview.svg) -## 1. Introduction -MEDiml is an open-source Python package that can be used for processing multi-modal medical images (MRI, CT or PET) and for extracting their radiomic features. This package is meant to facilitate the processing of medical images and the subsequent computation of all types of radiomic features while maintaining the reproducibility of analyses. This package has been standardized with the [IBSI](https://theibsi.github.io/) norms. +## Table of Contents + * [Introduction](#introduction) + * [Installation](#installation) + * [Using MEDiml](#using-mediml) + * [Tutorials](#tutorials) + * [IBSI Standardization](#ibsi-standardization) + * [Getting help](#getting-help) + * [Contributing](#contributing) + * [Acknowledgement](#acknowledgement) + * [Citation](#citation) + * [License](#license) -![MEDiml overview](https://raw.githubusercontent.com/MEDomicsLab/MEDiml-pkg/main/docs/figures/pakcage-overview.png) +## Introduction +MEDiml-pkg is an open-source Python package that can be used for processing multi-modal medical images (MRI, CT or PET) and for extracting their radiomic features. It is also the computational engine behind [MEDiml-app](https://www.mediml.app/), the desktop application for conducting radiomics workflows without writing code. This package is meant to facilitate the processing of medical images and the subsequent computation of all types of radiomic features whilst maintaining the reproducibility of analyses. This package has been standardised with the [IBSI](https://theibsi.github.io/) norms. -## 2. Installation +See the [workflow figure at the top](#package-workflow) for a step-by-step overview of the package, from medical image datasets and preprocessing to radiomic feature extraction and machine learning. + +## Installation ### Python installation + The MEDiml package requires *Python 3.8*, *3.9* or *3.10*. If you don't have it installed on your machine, follow the instructions [here](https://github.com/MEDomicsLab/MEDiml-pkg/blob/main/python.md) to install it. ### Package installation + You can easily install the ``MEDiml`` package from PyPI using: ``` pip install MEDiml @@ -62,10 +70,12 @@ If your uv project uses Python 3.11 or newer, create one for Python 3.10 instead For more installation options (Conda, Poetry...) check out the [installation documentation](https://mediml.readthedocs.io/en/latest/Installation.html). -## 3. Using MEDiml +## Using MEDiml + MEDiml can be used either as a command line tool for batch radiomics extraction, or as a Python package that you import directly into your own scripts and notebooks for finer-grained control over the processing and feature extraction pipeline. -### 3.1 Using MEDiml through the command line +### Using MEDiml through the command line + After installation, you can launch radiomics extraction directly from the terminal: ```bash @@ -94,7 +104,8 @@ The command wraps the existing `BatchExtractor` workflow and selects the appropr | `--n-batch` | No | Number of CPU cores to use for extraction. Defaults to `4`. | | `--skip-existing` | No | Skip scans whose features already exist in the output folder. | -### 3.2 Using MEDiml through code +### Using MEDiml through code + ```python import os import pickle @@ -133,35 +144,34 @@ med_obj.save_radiomics( ) ``` -## 4. Tutorials +## Tutorials We have created many [tutorial notebooks](https://github.com/MEDomicsLab/MEDiml-pkg/tree/main/notebooks) to assist you in learning how to use the different parts of the package. More details can be found in the [documentation](https://mediml.readthedocs.io/en/latest/tutorials.html). -## 5. IBSI Standardization +## IBSI Standardization + The image biomarker standardization initiative ([IBSI](https://theibsi.github.io)) is an independent international collaboration that aims to standardize the extraction of image biomarkers from acquired imaging. The IBSI therefore seeks to provide image biomarker nomenclature and definitions, benchmark datasets, and benchmark values to verify image processing and image biomarker calculations, as well as reporting guidelines, for high-throughput image analysis. We participate in this collaboration with our package to make sure it respects international nomenclatures and definitions. The participation was separated into two chapters: - - ### IBSI Chapter 1 - [The IBSI chapter 1](https://theibsi.github.io/ibsi1/) is dedicated to the standardization of commonly used radiomic features. It was initiated in September 2016 and reached completion in March 2020. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml-pkg/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves. The tests can also be explored in interactive Colab notebooks that are directly accessible here: - - - **Phase 1**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi1p1.ipynb) - - **Phase 2**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi1p2.ipynb) +### IBSI Chapter 1 - - ### IBSI Chapter 2 - [The IBSI chapter 2](https://theibsi.github.io/ibsi2/) was launched in June 2020 and reached completion in February 2024. It is dedicated to the standardization of commonly used imaging filters in radiomic studies. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml-pkg/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves and validate image filtering and image biomarker calculations from filter response maps. The tests can also be explored in interactive Colab notebooks that are directly accessible here: - - - **Phase 1**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi2p1.ipynb) - - **Phase 2**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi2p2.ipynb) +[The IBSI chapter 1](https://theibsi.github.io/ibsi1/) is dedicated to the standardization of commonly used radiomic features. It was initiated in September 2016 and reached completion in March 2020. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml-pkg/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves. The tests can also be explored in interactive Colab notebooks that are directly accessible here: - Our team named *UdeS* (a.k.a. Université de Sherbrooke) has already submitted the benchmarked values to the [IBSI uploading website](https://ibsi.radiomics.hevs.ch/). +- **Phase 1**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi1p1.ipynb) +- **Phase 2**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi1p2.ipynb) ---- -**Miscellaneous** +### IBSI Chapter 2 -You can avoid the next steps (Jupyter installation) if you already have a Jupyter Notebook setup available. +[The IBSI chapter 2](https://theibsi.github.io/ibsi2/) was launched in June 2020 and reached completion in February 2024. It is dedicated to the standardization of commonly used imaging filters in radiomic studies. We have created two [jupyter notebooks](https://github.com/MEDomicsLab/MEDiml-pkg/tree/main/notebooks/ibsi) for each phase of the chapter and made them available for the users to run the IBSI tests for themselves and validate image filtering and image biomarker calculations from filter response maps. The tests can also be explored in interactive Colab notebooks that are directly accessible here: ---- +- **Phase 1**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi2p1.ipynb) +- **Phase 2**: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MEDomicsLab/MEDiml-pkg/blob/main/notebooks/ibsi/ibsi2p2.ipynb) -You can view and run the tests locally by installing the [Jupyter Notebook](https://jupyter.org/) application on your machine: +Our team named *UdeS* (a.k.a. Université de Sherbrooke) has already submitted the benchmarked values to the [IBSI uploading website](https://ibsi.radiomics.hevs.ch/). + +
+Run IBSI tests locally + +You can view and run the tests locally with [Jupyter Notebook](https://jupyter.org/). If it is not already installed on your machine, install it using: ``` python -m pip install jupyter ``` @@ -184,13 +194,23 @@ Make sure to run the notebooks with a Jupyter kernel that has `MEDiml` installed ! pip install MEDiml ``` -## 6. Contributing and support -Contributions are welcome! Please read the [contributing guidelines](CONTRIBUTING.md) and our [code of conduct](CODE_OF_CONDUCT.md). +
+ +## Getting help + +- **Bugs and feature requests**: open an issue on [GitHub Issues](https://github.com/MEDomicsLab/MEDiml-pkg/issues). +- **Questions and discussion**: join the [MEDomics Discord](https://discord.gg/ZbaGj8E6mP). -- **Report a bug or request a feature**: open an issue on the [issue tracker](https://github.com/MEDomicsLab/MEDiml-pkg/issues). -- **Seek support**: check the [documentation](https://mediml.readthedocs.io/) and its [FAQs](https://mediml.readthedocs.io/en/latest/FAQs.html), then open an [issue](https://github.com/MEDomicsLab/MEDiml-pkg/issues) or contact the team at medomics.info@gmail.com. +## Contributing + +Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) and our [Code of Conduct](CODE_OF_CONDUCT.md). + +## Acknowledgement + +MEDiml is an open-source package developed at the [MEDomicsLab](https://www.medomicslab.com/en/) laboratory with the collaboration of the international consortium [MEDomics](https://www.medomics.ai/). We welcome any contribution and feedback. Furthermore, we wish that this package could serve the growing radiomics research community by providing a flexible as well as [IBSI](https://theibsi.github.io/) standardized tool to reimplement existing methods and develop new ones. + +## Citation -## 7. Citation If you use MEDiml in your research, please cite it using: ```bibtex @@ -204,17 +224,8 @@ If you use MEDiml in your research, please cite it using: } ``` -The full reference manual of MEDiml is available on [arXiv](https://arxiv.org/abs/2610.29666). - -## 8. Acknowledgement -MEDiml is an open-source package developed at the [MEDomicsLab](https://www.medomicslab.com/en/) laboratory with the collaboration of the international consortium [MEDomics](https://www.medomics.ai/). We welcome any contribution and feedback. Furthermore, we wish that this package could serve the growing radiomics research community by providing a flexible as well as [IBSI](https://theibsi.github.io/) standardized tool to reimplement existing methods and develop new ones. - -## 9. Authors - -MEDiml is developed by: -* [MEDomicsLab](https://www.medomicslab.com/): Research laboratory at Université de Sherbrooke & McGill University. -* [MEDomics](https://github.com/medomics/): MEDomics consortium. +The [MEDiml reference manual](https://arxiv.org/abs/2610.29666) explains the radiomics concepts and workflow shared by the Python package and desktop application, including image preprocessing, feature extraction, predictive modelling and interpretation. It also covers the software architecture and installation, compares MEDiml with other tools, and illustrates its use on five oncological imaging cohorts. -## 10. License +## License -MEDiml-app is released under the [GNU General Public License v3.0](LICENSE). +MEDiml-pkg is released under the [GNU General Public License v3.0](LICENSE.md).