Skip to main content

First open-source radiation treatment planning system in Python

Project description

What is PortPy?

Note: The package is at its early stages of development (version 0.0.1) and we are now collecting feedback from researchers to further refine the data structure and the main functionality. We are expecting to have a stable version 1.xx around July 2023. We would love to hear your feedback.

PortPy (Planning and Optimization for Radiation Therapy) is a community effort to develop the first opensource python library to facilitate the development and clinical translation of radiotherapy cancer treatment planning algorithms. PortPy includes:

  1. Research-ready data and code for benchmarking, reproducibility, and community-driven development.
  2. Interface to an open-source optimization package CVXPy for easy/quick prototyping and out-of-the-box access to commercial/opensource optimization engines (e.g., Mosek, Gorubi, CPLEX).
  3. Visualization modules to visualize relevant plan information (e.g, dose volume histograms, dose distribution, fluence map).
  4. Evaluation modules to quantify plan quality with respect to established clinical metrics (e.g., RTOG metrics, dose conformality, tumor control probability, normal tissue control probability).

Data

Data needed for optimization and algorithm development (e.g., a set of beams/beamlets/voxels, dose contribution of each beamlet to each voxel) are provided for a set of pre-specified machine parameters (e.g., beam/collimator/couch angles). We will initially provide these for a set of publicly available datasets from TCIA. We initially start with two lung patients to get feedback and then expand to about 100 patients in version 1.xx (about end of July). We hope to further expand our dataset in the future. The data needed for optimization is extracted from EclipseTM, a FDA-approved commerical treatment planning system (Varian Medical Systems), using its API.

You can download the sample patient data here.

Create a directory named './data' in the current project directory and copy the downloaded file to it, e.g ./data/Lung_Phantom_Patient_1

Quick Start

Please see below for understanding the basic functionalities of PortPy. For advance usage of PortPy, we recommend navigating through examples folder.

  1. To understand the most important features of PortPy, we highly recommend going through notebook ex_1_introduction.ipynb
  2. One of the major computational issues while optimizing the plan arise due to large size of influence matrix. We suggest you to follow ex_2_down_sampling.py and ex_4_inf_matrix_sparsification.py to understand how PortPy can assist in resolving it.
  3. You can check out ex_3_structure_operations.py to know how to perform different structure operations (e.g., boolean, margin).
  4. For algorithm benchmarking, the global optimal solution is provided for non-convex optimization problems resulting from beam angle optimization ex_6_boo_benchmark.ipynb, incorporating DVH constraints ex_5_dvh_benchmark.py, and VMAT optimization ex_8_VMAT.py using the mixed-integer programming on down-sampled data.
  5. In addition to basic visualization capabilities, PortPy provide advanced visualization by integration with 3D Slicer. Please check out notebook ex_7_Slicer.ipynb

Installing PortPy

  1. Installing using pip
pip install portpy
  1. Installing using conda
conda install -c conda-forge portpy
  1. Installing from source
  • Clone this repository:

    git clone https://github.com/PortPy-Project/PortPy.git
    cd portpy
    
  • You need to install the dependencies in either a python virtual environment or anaconda environment. Instructions for setting up in python virtual environment are as follows:

    Install all the dependencies present in requirements.txt:

    python3 -m venv venv
    source venv/bin/activate
    (venv) pip install -r requirements.txt
    

Team

PortPy is a community project initiated at Memorial Sloan Kettering Cancer Center. It is currently developed and maintained by:

Name Expertise Institution
Masoud Zarepisheh Treatment Planning and Optimization MSK
Saad Nadeem Computer Vision and AI in Medical Imaging MSK
Gourav Jhanwar Algorithm Design and Development MSK
Mojtaba Tefagh Mathematical Modeling and Reinforcement Learning SUT
Vicki Taasti Physics and Planning of Proton Therapy MAASTRO
Sadegh Alam Adaptive Treatment Planning and Imaging Cornell
Seppo Tuomaala Eclispe API Scripting VARIAN

License

PortPy code is distributed under Apache 2.0 with Commons Clause license, and is available for non-commercial academic purposes.

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

portpy-0.0.5.tar.gz (197.4 kB view details)

Uploaded Source

Built Distribution

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

portpy-0.0.5-py3-none-any.whl (55.4 kB view details)

Uploaded Python 3

File details

Details for the file portpy-0.0.5.tar.gz.

File metadata

  • Download URL: portpy-0.0.5.tar.gz
  • Upload date:
  • Size: 197.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.4

File hashes

Hashes for portpy-0.0.5.tar.gz
Algorithm Hash digest
SHA256 717c2edc8ae253787b0e36f92175e204da1866ca32d07cab674375807611c01e
MD5 283dbb1433f4cfd17b094048a6679c1d
BLAKE2b-256 eccffec4235477d1521926d903f67ace69e5df5aaca68cfa62f1c69f7b3f35dc

See more details on using hashes here.

File details

Details for the file portpy-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: portpy-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 55.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.4

File hashes

Hashes for portpy-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2097f69d4965a9e2fc4060b79691a63e18e50c63c9544b25e69a2639f794fedd
MD5 d983d0b99676a98fb8e2e26b3285d3ec
BLAKE2b-256 43e7ac9ee1c6ddd485969ed9d32fdc46280eb9a135c408c7df706773be4174d4

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