|
1 | | -PortPy |
| 1 | +# What is PortPy? |
2 | 2 |
|
3 | | -> Modern Portfolio Optimization in Python |
| 3 | +<img src="./images/Linac.gif" align="right" alt="Radiotherapy 101" width="30%" height="30%" margin-right="10px"> |
4 | 4 |
|
5 | | ---- |
6 | | -Test7 |
7 | | -Welcome to **PortPy**! Effortlessly optimize, analyze, and visualize your investment portfolios with a modern, user-friendly Python library. |
| 5 | +**PortPy**, short for **P**lanning and **O**ptimization for **R**adiation **T**herapy, is an open-source Python library |
| 6 | +designed to advance cancer radiotherapy treatment planning optimization. Radiotherapy plays a critical role in |
| 7 | +treating over half of all cancer patients, whether as a standalone treatment or in combination with surgery, |
| 8 | +chemotherapy, or immunotherapy. It works by delivering high-energy radiation beams to tumors, aiming to destroy |
| 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**. |
8 | 16 |
|
9 | | -<div align="center"> |
10 | | - <img src="https://raw.githubusercontent.com/your-org/portpy/main/assets/logo.png" alt="PortPy Logo" width="180"/> |
11 | | -</div> |
12 | 17 |
|
13 | | ---- |
14 | 18 |
|
15 | | -## 🚀 Features |
| 19 | +## 🚀 Main Features |
16 | 20 |
|
17 | | -- **Intuitive API** for portfolio construction and optimization |
18 | | -- **Interactive visualizations** for risk and return analysis |
19 | | -- **Jupyter notebook support** for reproducible research |
20 | | -- **Extensive documentation** and real-world examples |
| 21 | +- **IMRT/VMAT Planning Optimization (including AI):** |
| 22 | + 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)), |
| 23 | +VMAT direct aperture optimization |
| 24 | +(see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/vmat_scp_tutorial.ipynb)), |
| 25 | +AI-based dose-prediction IMRT |
| 26 | +(see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/imrt_dose_prediction.ipynb)) |
| 27 | +and VMAT (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/vmat_scp_dose_prediction.ipynb)) planning. |
21 | 28 |
|
22 | | ---- |
| 29 | +- **Integration with Commercial TPS:** |
| 30 | + PortPy outputs IMRT/VMAT plans in DICOM-RT format which can be exported into commercial TPSs |
| 31 | +(see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/vmat_tps_import.ipynb)). For Eclipse TPS users: |
| 32 | + - PortPy outputs IMRT optimal fluence maps in an Eclipse-compatible format (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/imrt_tps_import.ipynb)). |
| 33 | + - It supports automated data extraction (e.g., beamlets, voxels, dose influence matrix) |
| 34 | + from Eclipse via its scripting API in a PortPy-compatible format (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/eclipse_photon_dose_calculation.ipynb)). |
23 | 35 |
|
24 | | -## Get Started |
| 36 | +- **Benchmark Datasets:** |
| 37 | + Provides access to a curated dataset of **100 lung cancer patients** with all necessary components for treatment planning optimization |
| 38 | +(beamlet, voxel, pre-computed dose influence matrix). IMRT plans generated using our in-house automated planning |
| 39 | +system, **ECHO**, are included for benchmarking |
25 | 40 |
|
26 | | -- [Installation Guide](installation.md) |
27 | | -- [Quickstart Tutorial](quickstart.md) |
28 | | -- [API Reference](reference/) |
29 | | -- [GitHub Repository](https://github.com/your-org/portpy) |
| 41 | +- **Globally Optimal IMRT/VMAT Plans:** |
| 42 | + Implements slow but exact algorithms (e.g., Mixed-Integer Programming) to compute globally optimal plans, useful for benchmarking and validating heuristic algorithms. |
30 | 43 |
|
31 | | ---- |
32 | 44 |
|
33 | | -## Why PortPy? |
| 45 | +## 📢 News |
| 46 | +- **[PortPy v1.1.0 released]** The following features have been added: |
| 47 | + |
| 48 | + - **Eclipse users can use their own dataset**: For more info, see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/eclipse_photon_dose_calculation.ipynb). |
| 49 | + - **Lung benchmark dataset expanded**: Lung dataset expanded to 100 patients and is now hosted on [HuggingFace](https://huggingface.co/datasets/PortPy-Project), |
| 50 | + making it easier to access and use them in your research (see [notebook](https://github.com/PortPy-Project/PortPy/blob/master/examples/1_basic_tutorial.ipynb)). |
| 51 | + - **VMAT column generation algorithm added**: It finds a "warm start" |
| 52 | + (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 | + - **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)). |
34 | 54 |
|
35 | | -- Built for both beginners and professionals |
36 | | -- Actively maintained and open source |
37 | | -- Integrates seamlessly with the Python data science stack |
| 55 | +[//]: # () |
| 56 | +[//]: # (## 🚀 Key Components: Benchmark Datasets, Baseline Algorithms, and PortPy Toolkit) |
38 | 57 |
|
39 | | ---- |
| 58 | +[//]: # () |
| 59 | +[//]: # (<img src="./images/AI_Pyramid.png" align="right" alt="Radiotherapy 101" width="50%" height="40%">) |
40 | 60 |
|
41 | | -<div align="center"> |
42 | | - <a href="quickstart.md"><b>Start Optimizing Your Portfolio →</b></a> |
43 | | -</div> |
| 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 | + |
| 139 | +[//]: # (</div>) |
44 | 140 |
|
0 commit comments