This program is a stand-alone toy example
of radiation treatment planning(RTP)
optimization for a brain tumor case.
The program generates a toy patient
head model using scaled and shifted
ellipsoids and p-norm sublevel sets to
represent all the volumes of interest (VOIs), including skin, eyes, optic nerves, brain stem, a tumor and artificial "shell" around the tumor. These VOI sublevel sets are then
discretized into PointClouds, by retaining the points in a discrete 3-D
grid of volume elements (voxels) that lie in the 1-sublevel set of the VOI's p-norm model.
Then we compute candidate beam directions by firing beams at random points on the tumor surface from a set of about 150 nodes, located uniformly in a spherical region of radius 80cm from the patient's head.
Then we compute the dose vectors associated with each beam in each of the VOIs, by evaluating a dose function in a cylindrical region around each beam direction. The dose function is a crude model of the roll-off with depth, and radial diffusion or scatter. For each candidate beam, this rolloff/scatter function is evaluated for each voxel in each VOI. Thus each beam results in a column of the patient dose matrix. Finally, we set the min and max dosages for each VOI.
We then pass the dose matrices and min and max specs to one of two solvers (CPLEX or ADMM), which find the optimal set of beams and intensities (beam weights) for this patient case. This is the optimal "plan". The optimization formulation is based on a problem from the Stanford EE364b final exam from 2011, by Stephen Boyd and Eric Chu.
Then we visualize the optimal plan by plotting the dose levels for all the voxels of each VOI, and the dose volume histograms.
The program consists of this Main() function and several "classes":
(1) Patient: cell array of VOIs, names, etc
(2) VOI: p-norm model and associated point cloud and boundary, dose specs
(3) Beams: beam heads,tails,dose vector computation + nodes + collimators
(4) Model: p-norm models and gradients
(5) Point Cloud & 3-D geometry functions
(6) Optimizer functions: CPLEX wrapper and ADMM solver (ala EE364b)
Reference:
H. Hindi, "A Tutorial on Optimization Methods for Cancer Radiation Treatment Planning," Proc. American Control Conference, 2013.
Written by Haitham Hindi, 2012/01/18
DISCLAIMER: This code is intended for algorithm research purposes only! It is not intended to be used to generate real treatment plans. Author makes no claims as to the realism, accuracy, or correctness of any part of this code, including (but not limited to): patient anatomy and dimensions; plan safety; beam weights,doses,physics; dose units, dose specs; plan quality, evaluation metrics. The author is an engineer with no medical training whatsoever. This code is supplied as-is, with no guarantee of correctness, and the author accepts no responsibility for any damage or false conclusions from the use of this code. Of course, we would appreciate hearing about any bugs you might find. |