|
1 | 1 | # **What is PortPy?** |
2 | 2 |
|
3 | | -<img src="./images/Linac.gif" align="right" alt="Radiotherapy 101" width="30%" height="30%" margin-right="10px"> |
| 3 | +<img src="./images/Linac.gif" align="right" alt="Radiotherapy 101" width="40%" height="40%" margin-right="10px"> |
4 | 4 |
|
5 | 5 | **PortPy**, short for **P**lanning and **O**ptimization for **R**adiation **T**herapy, is an open-source Python library |
6 | 6 | designed to advance cancer radiotherapy treatment planning optimization. Radiotherapy plays a critical role in |
7 | 7 | treating over half of all cancer patients, whether as a standalone treatment or in combination with surgery, |
8 | 8 | chemotherapy, or immunotherapy. It works by delivering high-energy radiation beams to tumors, aiming to destroy |
9 | 9 | cancerous cells while minimizing damage to the surrounding healthy tissues. |
10 | | -Given that each patient has a unique anatomy, it is essential to customize the |
11 | | -radiation beams' shape, angle, and intensity. The goal is to maximize damage to the |
12 | | -tumor while minimizing exposure to healthy surrounding tissues. This challenge translates into modeling and |
13 | | -solving large-scale, |
14 | | -patient-specific mathematical optimization problems. PortPy aims to accelerate research |
15 | | -in this interdisciplinary field by offering **tools**, **baseline algorithms**, and **benhcmark datasets**. |
| 10 | +Since every patient has a unique anatomy, the radiation beam’s shape, angle, and intensity must be carefully |
| 11 | +customized. The objective is to maximize tumor dose while minimizing exposure to nearby organs at risk—a |
| 12 | +challenge that translates into solving large-scale, patient-specific mathematical optimization problems. |
16 | 13 |
|
| 14 | +PortPy aims to accelerate research in this interdisciplinary field by providing tools and algorithms |
| 15 | +to model and solve these complex optimization problems, as well as to visualize and quantitatively |
| 16 | +evaluate the resulting treatment plans (see image below). |
17 | 17 |
|
18 | 18 |
|
19 | | -## 🚀 Main Features |
| 19 | +<img src="./images/Visualization.png" align="center" width="100%" height="70%"> |
| 20 | + |
| 21 | +[//]: # () |
| 22 | +[//]: # (# 👀 What is Radiotherapy Treatment Planning Optimization?) |
| 23 | + |
| 24 | +[//]: # (<img src="./images/Linac_infMatrix.png" align="center" width="100%" height="70%">) |
| 25 | + |
| 26 | +[//]: # () |
| 27 | +[//]: # (In radiotherapy, the patient lies on a couch while a ) |
| 28 | + |
| 29 | +[//]: # (linear accelerator rotates around them to deliver radiation (Figure a). The radiation beams are shaped using ) |
| 30 | + |
| 31 | +[//]: # (a set of metal leaves known as a multi-leaf collimator (MLC), which dynamically move in-and-out to modulate ) |
| 32 | + |
| 33 | +[//]: # (the beam shape. This allows radiation to be precisely targeted at the tumor from multiple directions, ) |
| 34 | + |
| 35 | +[//]: # (effectively placing it in the crossfire (Figure b). Optimizing the angle, shape, and intensity of these ) |
| 36 | + |
| 37 | +[//]: # (beams for each individual patient, can be formulated as a mathematical optimization problem. ) |
| 38 | + |
| 39 | +[//]: # (For this, the patient's anatomy is discretized into 3D voxels and each beam is subdivided into 2D beamlets and ) |
| 40 | + |
| 41 | +[//]: # (the radiation dose contribution from each beamlet to each ) |
| 42 | + |
| 43 | +[//]: # (voxel is precomputed (Figure c), and stored in a matrix commonly referred to as the dose influence matrix ) |
| 44 | + |
| 45 | +[//]: # ((or dose deposition matrix). ) |
| 46 | + |
| 47 | +[//]: # () |
| 48 | +[//]: # (PortPy provides tools to model and solve these optimization problems that are often large-scale and non-convex.) |
| 49 | + |
| 50 | +[//]: # (PortPy also provides a set of tools for visual and quantitative assessment of treatment plans, including: dose distribution (Figure e)) |
| 51 | + |
| 52 | +[//]: # (beamlet intensity maps for individual beams (Figure e), dose-volume histograms (DVHs, Figure f), and a color-coded table that) |
| 53 | + |
| 54 | +[//]: # (compares quantitative dose metrics against clinical criteria (Figure g).) |
| 55 | + |
| 56 | +[//]: # () |
| 57 | +[//]: # (<img src="./images/Visualization.png" align="center" width="90%" height="60%">) |
| 58 | + |
| 59 | +[//]: # () |
| 60 | + |
| 61 | + |
| 62 | +## 🚀 PortPy Main Features |
20 | 63 |
|
21 | 64 | - **IMRT/VMAT Planning Optimization (including AI):** |
22 | 65 | Includes support for IMRT fluence map optimization and leaf sequencing (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/1_basic_tutorial.ipynb)), |
@@ -52,89 +95,5 @@ system, **ECHO**, are included for benchmarking |
52 | 95 | (i.e., good but not neceassirily optimal) solution quickly for the current VMAT SCP (Sequential Convex Programming) optimization algorithm (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/vmat_scp_tutorial.ipynb)). |
53 | 96 | - **Enhanced visualization**: The evaluation table has been improved for better readability and analysis (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/1_basic_tutorial.ipynb)). |
54 | 97 |
|
55 | | -[//]: # () |
56 | | -[//]: # (## 🚀 Key Components: Benchmark Datasets, Baseline Algorithms, and PortPy Toolkit) |
57 | | - |
58 | | -[//]: # () |
59 | | -[//]: # (<img src="./images/AI_Pyramid.png" align="right" alt="Radiotherapy 101" width="50%" height="40%">) |
60 | | - |
61 | | -[//]: # ( ) |
62 | | -[//]: # (This pyramid figure illustrates the inspiration behind developing PortPy, drawing from ) |
63 | | - |
64 | | -[//]: # (successful open-source practices in the AI and computer science communities. ) |
65 | | - |
66 | | -[//]: # (Tools like PyTorch and TensorFlow, along with benchmark datasets such as ) |
67 | | - |
68 | | -[//]: # (ImageNet and algorithms like AlexNet, have revolutionized AI and data science. ) |
69 | | - |
70 | | -[//]: # (Our goal is to replicate this successful model in the field of radiotherapy by ) |
71 | | - |
72 | | -[//]: # (equipping researchers with PortPy toolkit, benchmark algorithms, and datasets, ) |
73 | | - |
74 | | -[//]: # (as outlined below:) |
75 | | - |
76 | | -[//]: # () |
77 | | -[//]: # (1. **PortPy Toolkit**. A set of python classes and functions allowing users to load the data, ) |
78 | | - |
79 | | -[//]: # (generate IMRT/VMAT plans, and evaluate/visualize the results. For more info, see our Jupyter Notebooks [basic_tutorial]()) |
80 | | - |
81 | | -[//]: # (2. **Benchmark Datasets**. We have curated and made publicly available a dataset of 100 lung cancer patients,) |
82 | | - |
83 | | -[//]: # (which includes all the necessary data for treatment plan optimization (e.g., beamlets, voxels, pre-computed dose influence matrix). ) |
84 | | - |
85 | | -[//]: # (These data are extracted from the commercial Eclipse treatment planning system using its API. Using your own data is currently only supported for Eclipse TPS users. For more info, see our Jupyter Notebooks ([eclipse_photon_dose_calculation](https://github.com/PortPy-Project/PortPy/blob/master/examples/eclipse_photon_dose_calculation.ipynb)) |
86 | | - |
87 | | -[//]: # (3. **Baseline Algorithms**. This includes two sets of algorithms: 1) fast algorithms that can generate IMRT/VMAT plans within the clinical time-frame (in oder of minutes/hours),) |
88 | | - |
89 | | -[//]: # (2) slow algorithms that can generate globally optimal plans for benchmaking purposes. These plans could take weeks to generate and often involve some simplistic assumptions (e.g., ignoring plan delivery efficiency in VMAT).) |
90 | | - |
91 | | -[//]: # () |
92 | | -[//]: # (> Modern Portfolio Optimization in Python) |
93 | | - |
94 | | -[//]: # () |
95 | | -[//]: # (---) |
96 | | - |
97 | | -[//]: # (Test7) |
98 | | - |
99 | | -[//]: # (Welcome to **PortPy**! Effortlessly optimize, analyze, and visualize your investment portfolios with a modern, user-friendly Python library.) |
100 | | - |
101 | | -[//]: # () |
102 | | -[//]: # (<div align="center">) |
103 | | - |
104 | | -[//]: # ( <img src="https://raw.githubusercontent.com/your-org/portpy/main/assets/logo.png" alt="PortPy Logo" width="180"/>) |
105 | | - |
106 | | -[//]: # (</div>) |
107 | | - |
108 | | -[//]: # () |
109 | | -[//]: # (---) |
110 | | - |
111 | | -[//]: # () |
112 | | -[//]: # () |
113 | | -[//]: # () |
114 | | -[//]: # (---) |
115 | | - |
116 | | -[//]: # () |
117 | | -[//]: # (## Get Started) |
118 | | - |
119 | | -[//]: # () |
120 | | -[//]: # (- [Installation Guide](installation.md)) |
121 | | - |
122 | | -[//]: # (- [Quickstart Tutorial](quickstart.md)) |
123 | | - |
124 | | -[//]: # (- [API Reference](reference/)) |
125 | | - |
126 | | -[//]: # (- [GitHub Repository](https://github.com/your-org/portpy)) |
127 | | - |
128 | | -[//]: # () |
129 | | -[//]: # (---) |
130 | | - |
131 | | -[//]: # () |
132 | | -[//]: # (---) |
133 | | - |
134 | | -[//]: # () |
135 | | -[//]: # (<div align="center">) |
136 | | - |
137 | | -[//]: # ( <a href="quickstart.md"><b>Start Optimizing Your Portfolio →</b></a>) |
138 | 98 |
|
139 | | -[//]: # (</div>) |
140 | 99 |
|
0 commit comments