cutright / DVHA-MLCA

MLC Analyzer from DVHA as a Stand-Alone Script
Other
7 stars 3 forks source link

DVHA MLC Analyzer

|logo|

|build| |Docs| |pypi| |python-version| |lgtm| |lgtm-cq| |Codecov| |lines| |repo-size| |code-style|

Batch analyze DICOM-RT Plan files to calculate complexity scores

DVH Analytics <https://github.com/cutright/DVH-Analytics>__ (DVHA) is a software application for building a local database of radiation oncology treatment planning data. It imports data from DICOM-RT files (i.e., plan, dose, and structure), creates a SQL database, provides customizable plots, and provides tools for generating linear, multi-variable, and machine learning regressions.

DVHA-MLCA is a stand-alone command-line script to batch analyze DICOM-RT Plans using the MLC Analyzer code from DVHA.

Complexity score based on:
Younge KC, Matuszak MM, Moran JM, McShan DL, Fraass BA, Roberts DA. Penalization of aperture complexity in inversely planned volumetric modulated arc therapy. Med Phys. 2012;39(11):7160–70.

Installation

To install via pip:

.. code-block:: console

$ pip install dvha-mlca

If you've installed via pip or setup.py, launch from your terminal with:

.. code-block:: console

$ mlca <init-scanning-directory>

If you've cloned the project, but did not run the setup.py installer, launch DVHA-MLCA with:

.. code-block:: console

$ python mlca/main.py <init-scanning-directory>

Command line usage

.. code-block:: console

usage: mlca [-h] [-of OUTPUT_FILE] [-xw COMPLEXITY_WEIGHT_X]
            [-yw COMPLEXITY_WEIGHT_Y] [-xs MAX_FIELD_SIZE_X]
            [-ys MAX_FIELD_SIZE_Y] [-ver] [-v] [-n PROCESSES]
            [init_dir]

Command line DVHA MLC Analyzer

positional arguments:
  init_dir              Directory containing DICOM-RT Plan files

optional arguments:
  -h, --help            show this help message and exit
  -of OUTPUT_FILE, --output-file OUTPUT_FILE
                        Output will be saved as
                        dvha_mlca_<version>_results_<time-stamp>.csv by
                        default.
  -xw COMPLEXITY_WEIGHT_X, --x-weight COMPLEXITY_WEIGHT_X
                        Complexity coefficient for x-dimension: default = 1.0
  -yw COMPLEXITY_WEIGHT_Y, --y-weight COMPLEXITY_WEIGHT_Y
                        Complexity coefficient for y-dimension: default = 1.0
  -xs MAX_FIELD_SIZE_X, --x-max-field-size MAX_FIELD_SIZE_X
                        Maximum field size in the x-dimension: default = 400.0
                        (mm)
  -ys MAX_FIELD_SIZE_Y, --y-max-field-size MAX_FIELD_SIZE_Y
                        Maximum field size in the y-dimension: default = 400.0
                        (mm)
  -ver, --version       Print the DVHA-MLCA version
  -v, --verbose         Print final results and plan summaries as they are
                        analyzed
  -n PROCESSES, --processes PROCESSES
                        Enable multiprocessing, set number of parallel
                        processes

For example:

.. code-block:: console

$ mlca "C:\PatientDicom" -n 8
Directory: C:\PatientDicom
Begin file tree scan ...
File tree scan complete
Searching for DICOM-RT Plan files ...
     100%|██████████████████████████████| 9087/9087 [00:59<00:00, 153.52it/s]
1650 DICOM-RT Plan file(s) found
Analyzing 1650 file(s) ...
      10%|███                           | 169/1650 [02:02<13:35,  1.82it/s]

Dependencies

Support

If you like DVHA-MLCA and would like to support our mission, all we ask is that you cite us if we helped your publication, or help the DVHA community by submitting bugs, issues, feature requests, or solutions on the issues page <https://github.com/cutright/DVHA-MLCA/issues>__.

Cite

DOI: https://doi.org/10.1002/acm2.12401 <https://doi.org/10.1002/acm2.12401>__ Cutright D, Gopalakrishnan M, Roy A, Panchal A, and Mittal BB. "DVH Analytics: A DVH database for clinicians and researchers." Journal of Applied Clinical Medical Physics 19.5 (2018): 413-427.

.. |build| image:: https://github.com/cutright/DVHA-MLCA/workflows/build/badge.svg :target: https://github.com/cutright/DVHA-MLCA/actions :alt: build

.. |pypi| image:: https://img.shields.io/pypi/v/dvha-mlca.svg :target: https://pypi.org/project/dvha-mlca :alt: PyPI

.. |python-version| image:: https://img.shields.io/pypi/pyversions/dvha-mlca.svg :target: https://pypi.org/project/dvha-mlca :alt: PyPI

.. |lgtm-cq| image:: https://img.shields.io/lgtm/grade/python/g/cutright/DVHA-MLCA.svg?logo=lgtm&label=code%20quality :target: https://lgtm.com/projects/g/cutright/DVHA-MLCA/context:python :alt: lgtm code quality

.. |lgtm| image:: https://img.shields.io/lgtm/alerts/g/cutright/DVHA-MLCA.svg?logo=lgtm :target: https://lgtm.com/projects/g/cutright/DVHA-MLCA/alerts :alt: lgtm

.. |Codecov| image:: https://codecov.io/gh/cutright/DVHA-MLCA/branch/master/graph/badge.svg :target: https://codecov.io/gh/cutright/DVHA-MLCA :alt: Codecov

.. |Docs| image:: https://readthedocs.org/projects/dvha-mlca/badge/?version=latest :target: https://dvha-mlca.readthedocs.io/ :alt: Documentation Status

.. |code-style| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: Code style: black

.. |lines| image:: https://img.shields.io/tokei/lines/github/cutright/dvha-mlca :target: https://img.shields.io/tokei/lines/github/cutright/dvha-mlca :alt: Lines of code

.. |repo-size| image:: https://img.shields.io/github/languages/code-size/cutright/dvha-mlca :target: https://img.shields.io/github/languages/code-size/cutright/dvha-mlca :alt: Repo Size

.. |logo| raw:: html

<a>
  <img src="https://user-images.githubusercontent.com/4778878/92505112-351c7780-f1c9-11ea-9b5c-0de1ad2d131d.png" width='400' alt="DVHA logo"/>
</a>