From 3aaff37628f93c3198b8966b7c58a75d38058486 Mon Sep 17 00:00:00 2001 From: michal367 Date: Wed, 21 Feb 2024 17:10:55 +0100 Subject: [PATCH 01/25] add building documentation to setup scripts --- setup.bat | 13 +++++++++++++ setup.sh | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/setup.bat b/setup.bat index 78b7c98..bde525b 100644 --- a/setup.bat +++ b/setup.bat @@ -21,6 +21,8 @@ set BUILD_PERFORMANCE_TESTING=OFF set REF_IMG=img_reference.dcm set EVAL_IMG=img_evaluated.dcm +set BUILD_DOCUMENTATION=OFF + set INSTALL=OFF set INSTALL_DIR=./yagit @@ -90,6 +92,17 @@ if %BUILD_PERFORMANCE_TESTING% == ON ( ) +@REM ============================================================ +if %BUILD_DOCUMENTATION% == ON ( + echo: + echo BUILDING DOCUMENTATION... + cd docs + doxygen + make html + echo DOCUMENTATION MAIN PAGE: %cd:\=/%/docs/build/html/index.html +) + + @REM ============================================================ if %INSTALL% == ON ( echo: diff --git a/setup.sh b/setup.sh index 85f97f7..7017846 100755 --- a/setup.sh +++ b/setup.sh @@ -25,6 +25,8 @@ BUILD_PERFORMANCE_TESTING=OFF REF_IMG=img_reference.dcm EVAL_IMG=img_evaluated.dcm +BUILD_DOCUMENTATION=OFF + INSTALL=OFF INSTALL_DIR=./yagit @@ -146,6 +148,18 @@ if [ $BUILD_PERFORMANCE_TESTING == ON ]; then fi +# ============================================================ +if [ $BUILD_DOCUMENTATION == ON ]; then + echo "" + echo "BUILDING DOCUMENTATION..." + cd docs + doxygen + make html + cd .. + echo DOCUMENTATION MAIN PAGE: $(pwd)/docs/build/html/index.html +fi + + # ============================================================ if [ $INSTALL == ON ]; then echo "" From e7b5cbc931fdd2e65fad01a3cc9fc31f4de587bb Mon Sep 17 00:00:00 2001 From: michal367 Date: Wed, 28 Feb 2024 22:21:56 +0100 Subject: [PATCH 02/25] add documentation part 1 --- docs/source/_static/.gitkeep | 0 docs/source/_static/css/style.css | 59 + docs/source/_static/images/flow_diagram.svg | 3 + .../_static/images/gamma_index_example.svg | 3 + .../source/_static/images/wendling_circle.svg | 3 + .../images/wendling_circle_distances.svg | 3 + docs/source/_static/images/yf_16threads.svg | 1539 +++++++++++++++ docs/source/_static/images/yfp_1thread.svg | 1721 +++++++++++++++++ docs/source/algorithms.rst | 126 ++ docs/source/authors.rst | 2 - docs/source/conf.py | 9 +- docs/source/data_representation.rst | 2 + docs/source/gamma_index.rst | 147 ++ docs/source/gamma_index_parameters.rst | 2 + docs/source/index.rst | 15 +- docs/source/input_and_output_data.rst | 10 + docs/source/introduction.rst | 122 ++ 17 files changed, 3759 insertions(+), 7 deletions(-) delete mode 100644 docs/source/_static/.gitkeep create mode 100644 docs/source/_static/css/style.css create mode 100644 docs/source/_static/images/flow_diagram.svg create mode 100644 docs/source/_static/images/gamma_index_example.svg create mode 100644 docs/source/_static/images/wendling_circle.svg create mode 100644 docs/source/_static/images/wendling_circle_distances.svg create mode 100644 docs/source/_static/images/yf_16threads.svg create mode 100644 docs/source/_static/images/yfp_1thread.svg delete mode 100644 docs/source/authors.rst create mode 100644 docs/source/data_representation.rst create mode 100644 docs/source/gamma_index.rst create mode 100644 docs/source/gamma_index_parameters.rst create mode 100644 docs/source/input_and_output_data.rst diff --git a/docs/source/_static/.gitkeep b/docs/source/_static/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/docs/source/_static/css/style.css b/docs/source/_static/css/style.css new file mode 100644 index 0000000..d98eb55 --- /dev/null +++ b/docs/source/_static/css/style.css @@ -0,0 +1,59 @@ +.wy-nav-content { + background: white; +} + +figure { + margin-bottom: 20px !important; +} + +figure img { + margin-bottom: 10px; +} + +figure p { + margin-bottom: 0; +} + +figure p a.headerlink { + display: none !important; +} + +ul.list, +ol.list { + margin-top: -18px; +} + +ol.list ol, +ul.list ul, +ol.list ul, +ul.list ol { + margin-bottom: 10px !important; + margin-left: 15px; +} + +ol.list li > p, +ul.list li > p { + margin-bottom: 5px !important; +} + +ol.list li > blockquote, +ul.list li > blockquote { + margin: 0 0 5px 0; +} + +table.center-headers th { + text-align: center; + vertical-align: middle; +} + +table.right-align-vals td:not(:first-child) { + text-align: right; +} + +.math.math-left { + text-align: left; +} + +.math.math-left mjx-container.MathJax { + text-align: left; +} diff --git a/docs/source/_static/images/flow_diagram.svg b/docs/source/_static/images/flow_diagram.svg new file mode 100644 index 0000000..c3e6639 --- /dev/null +++ b/docs/source/_static/images/flow_diagram.svg @@ -0,0 +1,3 @@ + + +
Algorithm calculating the gamma index
Algorithm calculating...
Reference image
Reference image
Evaluated image
Evaluated image
Input data
(radiation dose distributions)
Input data...
Gamma index image
Gamma index image
GIPR
GIPR
Parameters
(e.g. acceptance
criteria)
Parameters...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/source/_static/images/gamma_index_example.svg b/docs/source/_static/images/gamma_index_example.svg new file mode 100644 index 0000000..008085f --- /dev/null +++ b/docs/source/_static/images/gamma_index_example.svg @@ -0,0 +1,3 @@ + + +
0.93
0.93
0.95
0.95
0.97
0.97
1.00
1.00
Reference image
Reference image
x = -1
x = -1
x = 1
x = 1
y = 0
y = 0
y = 2
y = 2
0.93
0.93
0.96
0.96
0.90
0.90
1.02
1.02
Evaluated image
Evaluated image
x = 0
x = 0
x = 2
x = 2
y = 1
y = 1
y = 3
y = 3
0.471
0.471
0.577
0.577
1.106
1.106
0.816
0.816
Gamma index image
Gamma index image
x = -1
x = -1
x = 1
x = 1
y = 0
y = 0
y = 2
y = 2
2D gamma index – 3%G/3mm
2D gamma index – 3%G/3mm
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/source/_static/images/wendling_circle.svg b/docs/source/_static/images/wendling_circle.svg new file mode 100644 index 0000000..5ab3442 --- /dev/null +++ b/docs/source/_static/images/wendling_circle.svg @@ -0,0 +1,3 @@ + + +
4
4
6
6
8
8
10
10
2
2
0
0
-2
-2
4
4
2
2
0
0
-2
-2
-4
-4
6
6
8
8
x [mm]
x [mm]
y [mm]
y [mm]
spacing
spacing
step size
step size
maximum
search distance
maximum...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/source/_static/images/wendling_circle_distances.svg b/docs/source/_static/images/wendling_circle_distances.svg new file mode 100644 index 0000000..d7ce5cf --- /dev/null +++ b/docs/source/_static/images/wendling_circle_distances.svg @@ -0,0 +1,3 @@ + + +
4
6
8
10
2
0
-2
4
2
0
-2
-4
6
8
x [mm]
y [mm]
0
1
1
1
1
2
2
2
2
4
4
4
4
5
5
5
5
5
5
5
5
8
8
8
8
9
9
9
9
10
10
10
10
10
10
10
10
\ No newline at end of file diff --git a/docs/source/_static/images/yf_16threads.svg b/docs/source/_static/images/yf_16threads.svg new file mode 100644 index 0000000..7c0cacb --- /dev/null +++ b/docs/source/_static/images/yf_16threads.svg @@ -0,0 +1,1539 @@ + + + + + + + + 2024-02-22T18:28:12.316868 + image/svg+xml + + + Matplotlib v3.7.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/_static/images/yfp_1thread.svg b/docs/source/_static/images/yfp_1thread.svg new file mode 100644 index 0000000..0d11eec --- /dev/null +++ b/docs/source/_static/images/yfp_1thread.svg @@ -0,0 +1,1721 @@ + + + + + + + + 2024-02-22T18:23:50.164947 + image/svg+xml + + + Matplotlib v3.7.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/algorithms.rst b/docs/source/algorithms.rst index 1d63eba..1ffa096 100644 --- a/docs/source/algorithms.rst +++ b/docs/source/algorithms.rst @@ -1,12 +1,138 @@ Algorithms ========== +YAGIT implements two methods to calculate the gamma index. Wendling method is much faster than Classic method. + + Classic method -------------- +Classic method was introduced with the paper that introduced gamma index concept by Low et al. [1]_ in 1998. +This is a brute-force method, and because of that, it is very slow. It is based on calculating +gamma function for each pair of points in reference image and evaluated image. This results in a time complexity of +:math:`O(n^k * n^k) = O(n^{2k})`, where :math:`n` is the size of each axis of the input data and :math:`k` is the +dimensionality of the data. For example 3D gamma index has :math:`O(n^6)` time complexity. + + +The subsequent steps of the algorithm are as follows: + +.. rst-class:: list + +#. For each reference point :math:`\vec{r_r}` calculate gamma index :math:`\gamma(\vec{r_r})`: + + A. For each evaluated point :math:`\vec{r_e}` calculate gamma function :math:`\Gamma(\vec{r_r}, \vec{r_e})`. + B. Choose the minimum value of calculated :math:`\Gamma(\vec{r_r}, \vec{r_e})` + as the gamma index :math:`\gamma(\vec{r_r})`. + +#. In the end, the gamma index image is obtained. + + +To speed up these calculations for 3D images, a 2.5D method was introduced, which involves calculating the gamma index +in 2D version for each slice of the 3D image separately. This results in a time complexity of +:math:`O(n^3 * n^2) = O(n^5)`. Unfortunately, it returns less accurate results. + +A commonly used step in classic method to obtain more accurate results is the interpolation of evaluated image +before initiating gamma index calculations. This results in larger input data, further increasing the computation time. +Low and Dempsey propose that spacing in the evaluated image should be less than or equal to :math:`\frac{1}{3}` +of the DTA acceptance criterion [2]_. Wendling method --------------- +In 2007, a new fast method was introduced by Wendling et al. [3]_. +It is based on limiting the searched area in the evaluated image to a circle (in the case of 2D and 2.5D version) +or a sphere (in the case of 3D version). +There is a higher probability of finding the minimum value of the gamma function in the vicinity of the reference point +than in some distant place. + + +.. figure:: _static/images/wendling_circle.svg + :alt: Circle with a radius of the maximum search distance used in Wendling method + :align: center + :scale: 133% + + Limited area (circle) on a 2D evaluated image. Gamma function is calculated only for black points. + +Such a limited area has a maximum search radius and step size, which are parameters of this method. +Evaluated points, which are checked, are located on a grid with intervals equal to the step size, +and their distance from the center does not exceed the search radius. +Wendling et al. propose that the step size should be around :math:`\frac{1}{10}` of the DTA acceptance criterion +for precise results. +The values at points that do not exist in the evaluated image are determined on-the-fly using interpolation +(e.g. bilinear for 2D and trilinear for 3D). + +Some optimizations of on-the-fly interpolation can be achieved by resampling the evaluated image onto the grid +of the reference image before initiating gamma index calculations. +However, YAGIT doesn't perform this step due to two reasons that can lead to less accurate results. +Firstly, this approach involves double interpolation - first during the resampling process +and second during on-the-fly interpolation. +Second interpolation uses interpolated points from first interpolation, which can result in less accurate calculations. +Another reason is the fact that the evaluated image we start with can have a denser grid than the reference image, +and by resampling it, we would lose a lot of information. + + +.. figure:: _static/images/wendling_circle_distances.svg + :alt: Squared distances in circle used in Wendling method + :align: center + :scale: 133% + + Squared distances from the center in limited area (circle) on a 2D evaluated image. + +An important part of this method is the order of the traversing through points in the limited area. +We start from the point at the center of the circle/sphere and traverse through subsequent points that are +increasingly distant from the center. +This order and the squared distances only need to be calculated once -- at the very beginning -- +and then used thereafter. + +Significant speedup can be achieved by stopping the search when it is no longer possible for subsequent points +to yield a smaller value of the gamma function, which occurs when :math:`\frac{r(\vec{r_r}, \vec{r_e})}{\Delta d}` +is greater than or equal to the current minimum value of the gamma function :math:`\Gamma` for :math:`\vec{r_r}`. + + +The subsequent steps of the algorithm are as follows: + +.. rst-class:: list + +#. Resample the evaluated image onto the grid of the reference image (YAGIT doesn't do this). +#. Create a list of points located within the circle/sphere, sorted in ascending order by their distance from the center + of the circle/sphere. +#. For each reference point :math:`\vec{r_r}` calculate gamma index :math:`\gamma(\vec{r_r})` searching within + the limited region on the evaluated image: + + A. Start searching in :math:`\vec{r_e} = \vec{r_r}` and move through the previously created list of points, + which are increasingly further from the initial point: + + a. If the value :math:`r(\vec{r_r}, \vec{r_e}) / \Delta d` is greater than or equal to the current minimum + found value of the gamma function :math:`\Gamma` for :math:`\vec{r_r}`, then stop the search. + b. Determine the value at the point :math:`\vec{r_e}` using interpolation. + c. Calculate the value of the gamma function :math:`\Gamma(\vec{r_r}, \vec{r_e})`. + + B. Choose the minimum value of calculated :math:`\Gamma(\vec{r_r}, \vec{r_e})` + as the gamma index :math:`\gamma(\vec{r_r})`. + +#. In the end, the gamma index image is obtained. + + +The time complexity of such an algorithm is :math:`O(n^k * m^k)`, +where :math:`n` is the number of voxels along each axis, +:math:`k` is the dimensionality of the data +and :math:`m`` is the number of points along the radius of the circle/sphere. +Typically, the algorithm only traverses through a small portion of points within the circle/sphere, +so the average complexity is better. + + +References +---------- + +.. [1] D. A. Low, W. B. Harms, S. Mutic, and J. A. Purdy, + “A technique for the quantitative evaluation of dose distributions,” + Medical Physics, vol. 25, no. 5, pp. 656-661, 1998. + +.. [2] D. A. Low and J. F. Dempsey, + “Evaluation of the gamma dose distribution comparison method,” + Medical Physics, vol. 30, no. 9, pp. 2455-2464, 2003. +.. [3] M. Wendling, L. Zijp, L. McDermott, E. Smit, J.-J. Sonke, B. Mijnheer, and M. Herk, + “A fast algorithm for gamma evaluation in 3d,” + Medical physics, vol. 34, pp. 1647-54, 06 2007. diff --git a/docs/source/authors.rst b/docs/source/authors.rst deleted file mode 100644 index 8c5f784..0000000 --- a/docs/source/authors.rst +++ /dev/null @@ -1,2 +0,0 @@ -Authors -======= diff --git a/docs/source/conf.py b/docs/source/conf.py index af3b654..b818efe 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -5,8 +5,8 @@ # -- Project information ----------------------------------------------------- project = "Yet Another Gamma Index Tool" -author = f"'{project}' Developers" -copyright = f"2023, {author}" +author = f"YAGIT Developers" +copyright = f"2023-2024, {author}" # -- General configuration --------------------------------------------------- @@ -30,3 +30,8 @@ # breathe_debug_trace_directives = True # breathe_debug_trace_doxygen_ids = True # breathe_debug_trace_qualification = True + + +# -- Sphinx setup ------------------------------------------------------------ +def setup(app): + app.add_css_file("css/style.css") diff --git a/docs/source/data_representation.rst b/docs/source/data_representation.rst new file mode 100644 index 0000000..de7ac24 --- /dev/null +++ b/docs/source/data_representation.rst @@ -0,0 +1,2 @@ +Data representation +=================== diff --git a/docs/source/gamma_index.rst b/docs/source/gamma_index.rst new file mode 100644 index 0000000..8451f3d --- /dev/null +++ b/docs/source/gamma_index.rst @@ -0,0 +1,147 @@ +Gamma index +=========== + +The gamma index was proposed by Low et al. [1]_ in 1998. +It combines two other simpler methods: Dose Difference (DD) and Distance To Agreement (DTA). + + +Dose Difference +--------------- + +DD is based on calculating the dose difference at corresponding points :math:`\vec{r_e}` and :math:`\vec{r_r}` +located respectively on the evaluated image :math:`D_e` and the reference image :math:`D_r`. + +.. math:: + \delta(\vec{r_r}, \vec{r_e}) = D_e(\vec{r_e}) - D_r(\vec{r_r}) + +Its acceptance criterion is expressed in percentages [%]. It is related to global or local value: + +.. rst-class:: list + +- global - a predetermined value, typically the maximum value in the reference image, +- local - value at the current point in the reference image. + +If DD value at :math:`\vec{r_r}` point is at most the value of acceptance criterion (e.g. 3%, global), +then this point passes the test. Otherwise it fails. + +The drawback of this test is that it struggles with high gradient regions, as small shifts in the spatial +distribution of radiation doses can result in large DD values. + + +Distance To Agreement +--------------------- + +DTA, on the other hand, is determined by calculating the distance between two closest points with the same dose +on the two images. + +.. math:: + r(\vec{r_r}, \vec{r_e}) = | \vec{r_e} - \vec{r_r} |, +.. math:: + where\ \ D_e(\vec{r_e}) = D_r(\vec{r_r}) + +Its acceptance criterion is expressed in milimeters [mm]. +If DTA value at :math:`\vec{r_r}` point is at most the value of acceptance criterion (e.g. 3 mm), +then this point passes the test. Otherwise it fails. + +The drawback of this method is that it encounters difficulties in low gradient areas, +where minor dose misalignments may require large search radius (large DTA value). + + +Gamma function and gamma index +------------------------------ + +To overcome disadvantages of DD and DTA, the gamma index was developed. +Before calculating it, it is necessary to first determine the gamma function, which combines DD and DTA. + +.. math:: + \Gamma(\vec{r_r}, \vec{r_e}) = + \sqrt{\frac{\delta^2(\vec{r_r}, \vec{r_e})}{\Delta D ^2} + \frac{r^2(\vec{r_r}, \vec{r_e})}{\Delta d ^2}} + +:math:`\Delta D` and :math:`\Delta d` are acceptance criteria of DD and DTA, respectively. +The commonly used criteria values are 3%/3mm with global normalization, abbreviated as 3%G/3mm. + +Now, to obtain the gamma index value for a single reference point, one must select the minimum value +of the gamma function :math:`\Gamma` for that point and all evaluated points. + +.. math:: + \gamma(\vec{r_r}) = \min_{\vec{r_e}}\Gamma(\vec{r_r}, \vec{r_e}) + +It is calculated for each reference point, and in the end, the image containing gamma index values is obtained. +It has the same size as the reference image. + + +GIPR +---- + +The Gamma Index Passing Rate (GIPR) is a measure indicating how many points passed the test -- +that is, how many gamma index values are less than or equal to 1. + +.. math:: + GIPR = \frac{| \{\gamma(\vec{r_r}) \le 1\} |}{| \{\gamma(\vec{r_r})\} |} + +When this value is sufficiently high (e.g. 90%), it can be considered that +the two compared images are sufficiently similar to each other. + + +Flow diagram +------------ + +.. figure:: _static/images/flow_diagram.svg + :alt: Flow diagram of gamma index + :align: center + +The figure shows the successive stages of the gamma index calculations. +GIPR is an optional step that provides a simple single metric, but analyzing the gamma index image can provide +a lot more information about the result. + + +Example +------- + +To ilustrate how the gamma index works, a simple example is presented here. +It is calculated for two-dimensional images, each containing only 4 elements. + +Used parameters are: 3% with global normalization for DD acceptance criterion and 3 mm for DTA acceptance criterion. + +.. figure:: _static/images/gamma_index_example.svg + :alt: Example of calculating 2D gamma index - 3%G/3mm + :align: center + +Below are the calculations of gamma index image values. +Note that some of the gamma function calculations are skipped, and only minimum values are shown. + +.. rst-class:: math-left +.. math:: + \gamma(\vec{r_{r0}}) = \Gamma(\vec{r_{r0}}, \vec{r_{e0}}) = + \sqrt{\frac{(0.93 - 0.93)^2}{(0.03*1.00)^2} + \frac{(0 - (-1))^2 + (1 - 0)^2}{3^2}} \approx + \sqrt{0 + 0.222} \approx 0.471 + +.. rst-class:: math-left +.. math:: + \gamma(\vec{r_{r1}}) = \Gamma(\vec{r_{r1}}, \vec{r_{e1}}) = + \sqrt{\frac{(0.96 - 0.95)^2}{(0.03*1.00)^2} + \frac{(2 - 1)^2 + (1 - 0)^2}{3^2}} \approx + \sqrt{0.111 + 0.222} \approx 0.577 + +.. rst-class:: math-left +.. math:: + \gamma(\vec{r_{r2}}) = \Gamma(\vec{r_{r2}}, \vec{r_{e1}}) = + \sqrt{\frac{(0.96 - 0.97)^2}{(0.03*1.00)^2} + \frac{(2 - (-1))^2 + (1 - 2)^2}{3^2}} \approx + \sqrt{0.111 + 1.111} \approx 1.106 + +.. rst-class:: math-left +.. math:: + \gamma(\vec{r_{r3}}) = \Gamma(\vec{r_{r3}}, \vec{r_{e3}}) = + \sqrt{\frac{(1.02 - 1.00)^2}{(0.03*1.00)^2} + \frac{(2 - 1)^2 + (3 - 2)^2}{3^2}} \approx + \sqrt{0.444 + 0.222} \approx 0.816 + +.. rst-class:: math-left +.. math:: + GIPR = \frac{3}{4} = 75\% + + +References +---------- + +.. [1] D. A. Low, W. B. Harms, S. Mutic, and J. A. Purdy, + “A technique for the quantitative evaluation of dose distributions,” + Medical Physics, vol. 25, no. 5, pp. 656-661, 1998. diff --git a/docs/source/gamma_index_parameters.rst b/docs/source/gamma_index_parameters.rst new file mode 100644 index 0000000..78f8975 --- /dev/null +++ b/docs/source/gamma_index_parameters.rst @@ -0,0 +1,2 @@ +Gamma index parameters +====================== diff --git a/docs/source/index.rst b/docs/source/index.rst index 1c3e696..96f0301 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -2,11 +2,20 @@ Yet Another Gamma Index Tool |release| documentation ==================================================== .. toctree:: - :maxdepth: 2 + :maxdepth: 1 + :caption: Getting Started introduction - installation + gamma_index algorithms - authors + gamma_index_parameters + input_and_output_data + data_representation + +.. toctree:: + :maxdepth: 1 + :caption: Usage + + installation api/api examples diff --git a/docs/source/input_and_output_data.rst b/docs/source/input_and_output_data.rst new file mode 100644 index 0000000..d86a02b --- /dev/null +++ b/docs/source/input_and_output_data.rst @@ -0,0 +1,10 @@ +Input and output data +===================== + + +Input data +---------- + + +Output data +----------- diff --git a/docs/source/introduction.rst b/docs/source/introduction.rst index c516b33..3497159 100644 --- a/docs/source/introduction.rst +++ b/docs/source/introduction.rst @@ -1,2 +1,124 @@ Introduction ============ + +YAGIT (Yet Another Gamma Index Tool) is an efficient open-source library for calculating gamma index. +It can be used for comparison of two images (reference image and evaluated image) containing +2D or 3D radiation dose distributions. It is written in C++ and works on Linux and Windows. + + +Main functionalities +-------------------- + +Most important features of YAGIT are: + +.. rst-class:: list + +- two methods of gamma index calculation: classic and Wendling, +- four implementations of classic method (sequential, multithreaded, SIMD, multithreaded + SIMD), +- two implementations of Wendling method (sequential, multithreaded), +- three versions of gamma index: 2D, 2.5D and 3D, +- reading input files (DICOM and MetaImage), +- saving data and results to output file (MetaImage), +- linear, bilinear and trilinear interpolation of data. + +Performance +----------- + +The performance of YAGIT has been compared with the performance of `FRED`_ and `PyMedPhys`_. +Gamma index module of FRED has been tested using `FRED tools`_ that calls FRED functions underneath. + +.. _FRED: https://www.fred-mc.org/ +.. _FRED tools: https://github.com/jasqs/FREDtools +.. _PyMedPhys: https://github.com/pymedphys/pymedphys + +Performance tests have been executed on a machine with an AMD Ryzen 7 5800H processor, +which has a clock speed of 3.2 GHz, featuring 8 cores and 16 threads. Machine has 16 GB of RAM DDR4 3200 MHz. + +It has been tested on Windows 11 Home 64-bit (version 22H2) operating system with WSL2 and Ubuntu 22.04.2 LTS. +FRED's gamma index module requires Linux, so all tools have been tested on WSL to maintain identical environment. + +This system contains gcc and g++ compilers in version 11.4.0 with glibc 2.35 and libstdc++ 3.4.30, CMake 3.22.1 +and Python 3.10.12. + +Tested versions of tools are: + +.. rst-class:: list + +- YAGIT built from 51d34ae commit (05.09.2023) using CMake tool in Release mode and g++ compiler, +- FRED tools 0.6.79 with libFredGI.so 4.2, +- PyMedPhys 0.39.3. + +Two 3D DICOM images has been used in the tests. The reference image has dimensions of 198x198x198, +while the evaluated image has dimensions of 200x200x200. They are very similar (GIPR ~ 99%). + + +.. rst-class:: center-headers right-align-vals +.. table:: + :align: center + + +------------+----------------------------------------------------------------+ + | | Average time [s] | + | +-------------------------+-------------------------+------------+ + | DD/DTA | YAGIT | FRED | PyMedPhys | + | +------------+------------+------------+------------+------------+ + | | 1 thread | 16 threads | 1 thread | 16 threads | 1 thread | + +============+============+============+============+============+============+ + | Wendling method -- 3D | + +------------+------------+------------+------------+------------+------------+ + | 3\%G/3mm | 3.022 | 0.363 | 7.991 | 1.078 | 200.822 | + +------------+------------+------------+------------+------------+------------+ + | 2\%G/2mm | 8.637 | 1.021 | 21.472 | 2.598 | 445.684 | + +------------+------------+------------+------------+------------+------------+ + | 3\%L/3mm | 3.534 | 0.427 | 9.145 | 1.238 | 224.542 | + +------------+------------+------------+------------+------------+------------+ + | 2\%L/2mm | 9.618 | 1.183 | 23.895 | 2.878 | 498.518 | + +------------+------------+------------+------------+------------+------------+ + +The table shows comparison of calculation times between YAGIT, FRED and PyMedPhys. +Other parameters: normalizing dose = max. reference image dose, dose cutoff = 5%, +search radius = 3*DTA, step size = DTA/10. + +When using 16 threads, YAGIT and FRED speed up about 8 times. +It is 8, not 16, because the CPU on which it has been run has 8 cores. +16 threads have been used to achieve better speedup due to simultaneous multithreading (SMT). +PyMedPhys has been tested only with one thread, because it doesn't support multithreaded gamma index. + + +.. figure:: _static/images/yfp_1thread.svg + :alt: Single-threaded gamma index using Wendling method + :align: center + +First image shows differences in computation times between single-threaded YAGIT, FRED and PyMedPhys. +YAGIT is about 2.5 times faster than FRED and about 50--70 times faster than PyMedPhys. + + +.. figure:: _static/images/yf_16threads.svg + :alt: Multi-threaded gamma index using Wendling method + :align: center + +Second image shows differences in computation times between multi-threaded YAGIT and FRED. +YAGIT is about 2--3 times faster than FRED. + + +.. rst-class:: center-headers right-align-vals +.. table:: + :align: center + + +------------+--------------------------------------+ + | | GIPR [%] | + | DD/DTA +------------+------------+------------+ + | | YAGIT | FRED | PyMedPhys | + +============+============+============+============+ + | Wendling method -- 3D | + +------------+------------+------------+------------+ + | 3\%G/3mm | 99.960 | 99.960 | 99.967 | + +------------+------------+------------+------------+ + | 2\%G/2mm | 99.144 | 99.145 | 99.232 | + +------------+------------+------------+------------+ + | 3\%L/3mm | 99.959 | 99.959 | 99.966 | + +------------+------------+------------+------------+ + | 2\%L/2mm | 99.049 | 99.050 | 99.025 | + +------------+------------+------------+------------+ + +In this table, it can be noticed that the values of GIPR in YAGIT and FRED are nearly identical. +However, PyMedPhys returns values that slightly differ from the other two tools. From 21530d4eb3c49fd05d32b77501d0d4870df06ec8 Mon Sep 17 00:00:00 2001 From: michal367 Date: Fri, 8 Mar 2024 00:07:18 +0100 Subject: [PATCH 03/25] add documentation part 2 --- docs/source/_static/css/style.css | 13 ++ .../_static/images/coordinate_system.svg | 3 + docs/source/_static/images/flow_diagram.svg | 2 +- .../_static/images/gamma_image_example.png | Bin 0 -> 194695 bytes .../_static/images/gamma_index_example.svg | 2 +- docs/source/_static/images/image_planes.svg | 3 + .../_static/images/position_and_spacing.svg | 3 + .../images/reference_image_example.png | Bin 0 -> 53985 bytes .../source/_static/images/wendling_circle.svg | 2 +- .../images/wendling_circle_distances.svg | 2 +- docs/source/algorithms.rst | 3 +- docs/source/data_representation.rst | 217 ++++++++++++++++++ docs/source/gamma_index_parameters.rst | 2 - docs/source/index.rst | 4 +- docs/source/input_and_output_data.rst | 66 ++++++ docs/source/introduction.rst | 2 +- docs/source/parameters.rst | 95 ++++++++ 17 files changed, 409 insertions(+), 10 deletions(-) create mode 100644 docs/source/_static/images/coordinate_system.svg create mode 100644 docs/source/_static/images/gamma_image_example.png create mode 100644 docs/source/_static/images/image_planes.svg create mode 100644 docs/source/_static/images/position_and_spacing.svg create mode 100644 docs/source/_static/images/reference_image_example.png delete mode 100644 docs/source/gamma_index_parameters.rst create mode 100644 docs/source/parameters.rst diff --git a/docs/source/_static/css/style.css b/docs/source/_static/css/style.css index d98eb55..f50d8b5 100644 --- a/docs/source/_static/css/style.css +++ b/docs/source/_static/css/style.css @@ -57,3 +57,16 @@ table.right-align-vals td:not(:first-child) { .math.math-left mjx-container.MathJax { text-align: left; } + +.list-code-right code { + float: right; + margin-right: calc(100% - 520px); + padding: 0; + color: black !important; + font-size: 95%; +} + +.list-math-right .math { + float: right; + margin-right: calc(100% - 150px); +} diff --git a/docs/source/_static/images/coordinate_system.svg b/docs/source/_static/images/coordinate_system.svg new file mode 100644 index 0000000..6306ff8 --- /dev/null +++ b/docs/source/_static/images/coordinate_system.svg @@ -0,0 +1,3 @@ + + +
R
R
L
L
S
S
I
I
P
P
A
A
x
x
y
y
z
z
Patient
Patient
LPS
LPS
Directions
Directions
\ No newline at end of file diff --git a/docs/source/_static/images/flow_diagram.svg b/docs/source/_static/images/flow_diagram.svg index c3e6639..bb6abff 100644 --- a/docs/source/_static/images/flow_diagram.svg +++ b/docs/source/_static/images/flow_diagram.svg @@ -1,3 +1,3 @@ -
Algorithm calculating the gamma index
Algorithm calculating...
Reference image
Reference image
Evaluated image
Evaluated image
Input data
(radiation dose distributions)
Input data...
Gamma index image
Gamma index image
GIPR
GIPR
Parameters
(e.g. acceptance
criteria)
Parameters...
Text is not SVG - cannot display
\ No newline at end of file +
Algorithm calculating the gamma index
Algorithm calculating...
Reference image
Reference image
Evaluated image
Evaluated image
Input data
(radiation dose distributions)
Input data...
Gamma index image
Gamma index image
GIPR
GIPR
Parameters
(e.g. acceptance
criteria)
Parameters...
\ No newline at end of file diff --git a/docs/source/_static/images/gamma_image_example.png b/docs/source/_static/images/gamma_image_example.png new file mode 100644 index 0000000000000000000000000000000000000000..0af8d890ccc39737ab6f952422dd7c4ac95358e1 GIT binary patch literal 194695 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

G5nGwK8>2mntQ&BJ?^eKy_`zuD1W$D0-a# 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%0DEfw4UsezOQn(RIN z&v^Qtf`1;UY}^0F+#gs=E}e;>_eG!6e!Zb9^YhR!5DZ-)|l3ua%H3RfaH&h;32NSA2d;JbW4 z3~%oJuW_3qn=ez(m`9xQF|F?H=1vhNN1f+snVo2^x3uy6 zj4Nndxbw}T19hDN!79wU+ohqnZT>Ae>}V$U%6#L6L3}0GMv|`QdBTron9tf13k}Qa z2TS`su*hd-TPwuR{A`OR)dnokIQY4MM<($5OD^ciJ}0)hp7T#aB;_)UxqVZTVtZ&J zOnYkzlL!`*i})^U!l2=6yh!bxt?{b^5W?4vf9+0qtnesExHHYDgAn&L|& z`f5U+7R)2x?}i(g9zVyk!|`xlI$Gt=yhez#dh~6ANT;rE z%sb2=bIu0a)Ae9$CXeCUsCH!#8`3n%I5Oo2R!CIXZ9P_b8#DkfL597QJ-YI0!Hi;HFs3+2aM;5uS+Js zn|{olUfsoY)XQah)1B{NePrBspEeW@O+5ayiqTm~stGYwN)l7G!ctPh0-j5Ut;P&N zV=E1fXY6l@y+8X>sY;)2r84QP?SY4fQMQZ4>7n|X8;(b86DiMI#jl0sGZYj1gTJCb zwWC+<2n>Ndg!S0)=U0Psl9D1?y1+evHP9Jg5BPkJjjT%j_9O9Mm6W*Pzcs;jy{1o( zs&vX};@4iS{^PGA=`bnBsuP$q#8t96SHNO`UrIMM2ZPUmd4RR9%r6ET-IxbTL;%`4 zU?G@?@7Cds-UD9NVh-Tt{U`}?|7E@1X^VXdH%oAnX(`aRtRvE37|9yH|6pK5zJ_nU6OmS5Jf$H$`ay4kOIk(*mq zAJMRdOqP2w;v-7j-VNL*|Qr`*9mZfCtpZ^y&!nCC36v)1aHH3x?vM4_pH86 zB^Xl@-tDk*jYGIP6`QXhC05G)SleG4)7LJYPf!VncUW3{aIz&Xu?U?MyOwlnqtiR` ziZy0DUg1cVpCE(|%_>&O(U>2OIq-Q7#CTKWsnVi0n6eyK06dOcZKEv&p0^3v>#XUY^yJGGKucdBO}IVe!R zDxx>;ct(2O&AgPE08XR4hVK=B(g3H^4+YE4 zO9G8w)F7Q@vj9K^_~A60?GoS~eiJPMvZ}Pk^N|-`a=SvJLHv~MhIy(D{*qcFFOI~v zL;^`dZtoZUTrG9=b?b$rL^SG!v24nq)8ax>Px&}d?^eonC3EvbLK#~(M^&&lj;{@D zhum3(ewuw8Q}#tKU`Z)TuWhwovHR?SX(pc49rP>$l!EtmTE$ZqeD+gQn=rO3a8kzS z_qBSD@J@$cqc|}i>dxEpf8w=-Sw31GI>pfCX>;tiOn&TxvtO6`yU$>V&WrCi_Y<%W zjC`U~KB~-Edlfj>?J4kohO~ zTchEaGs2PirY`nYNS#>yjm5hjoZRyj8i4X%X|%;anYP|xwX;MaR=%H&h<=-8AMz4v zdyY0f?lSIfOt_(kcB6d_T=KchvPWRQV`fMqw;p%i#EH?djckz-pRY$mY}fmRF9x@* zu$q6b=SK&PU0&cVp1Mb;t*;C}(;z;0a>5Q`VF1{YM%j?WniSl~cK$==6@c3+B@G-MBES{8WK@lW1r zOtJVc0sVlv7Fq!PPA=3xE(-o-Klx{-C7%p0cu4emYJTVjh*-8ucFQo(3 zX@@(TD3Xi`AYDjIg}VrRf96&0b#k;Xf!uyN!ch}>w3d(_zV6XI;RqXath~@fa$nzn zY}e+F{qf@`qHQyL6UOw(Q#I)STiV;ykGmcpi1I#y8}?xnS)3vmJa68O&o*%g<sR!fMwY8hE=g>SQ`uc>Q*1(BaqgHcS+*>(m3olxW94Bw_^2MI?cx zBtU=qt1vpq%g<(XN{aiR*qtewcQ-OlZ^lESRAYW}a{d}-XI1-TG)_-O{P^g6Qoe{j zH;!Sw-*7DIVxe;XOYN{fcU84%V>`j#&5Dq&a0o-It}Y)_ZRmxLNU`U&o%X+1*&@A1 z#23w!bX-5!e?o32xLjT43_;2&@IQKBV5cG)`LGANC!*wm;h;Hb*DNc__xs+GrGoVs zBTTF1YYT}gpRkuKiQkqNZS{iOf7L?n(W2?_t9F1zpQ z{hOM@0(E;MWS`-)IIO=bjypg@51wcw}v*O?$!uvCM7r` z-XI1_oU_d%_qt2lvZ}=OGz^Wg1BeH|v;+H@Pce78Z`(Wsuek}#_GDwePWh?%NSBUB zgi@0hPIG;I8m_F4W)Z!&%8our38#IKIQB=NX{pa@@oN+(N0@)m*h%bp+_Usp2zq~a z|7M>3Lo2V{kLLrD^;Tum=KHPC-~nOdM<}^!?3IJ-Hf_~Ib6IMChoou^!Xk%y9Kn6x zL^^|7PP2q=YnN_)e2^*G6}p}DGwEm}ne*^;LP~3h+i{}J#<}I!?ik^3MBl4SwKkf5 zg{SXrr=IMVrymsB8_Ja?c5g7MR%h2gahKGO3`&8xccp0;ynJs3FTpZ^hmrLD?neyz z_x!ER&`HWVqiXH4@&;8r9;z54a)v4y=_8l^_^@#*zSERj`4u~`AWV1|ooyjJDubQ! z{3oCQkRY<)P&0QXB z2D(51r7)%&Gp79ha}|=D5}`mp)4~2X*ags8T_{yx;n;@s(id?%SEP^{=9H6QM{O0t zMZNonda8t1(T1pNt&J!Fo_xsy9I|=RSI0{OZ-B2w85p>Cnm(l5Ru==-DcC0~cUOF${=`>T;hJM;09zBW zqTN@!=j&KG-OaYf1A*iExqnGQxZ%S~KPa6_FiigI3r=6r+N3jzq;)MC0ceMY!@M+r z+|-x^Q$RGQ=O}-K=95qJe7EMIM^l2j!?wHCtDEDc@*~&p7TVaeuaQL~=iy_u)cBaG zHW&Mnte#tq_gjbj7!a_3VzK$X!R|?O*E9y^*%8FMgXzPqdi|dfE%x$=?P-#KvIm>f zuXI{Ea=O=c?;O2Pf{z#GTk1Hmav%*n{F>0Dd=nS*&eV(qp5!+sNiNrobyz9>Jk?K2 zo#}~P^La6(sYOv2O&`e&S+=%JS@uZqNA5mjD(*d>;Fu*}TJkkpN?e5h*xWsr7LtBC zMYHH2^ZccxQ82krj{OH-rd98Az2nN9S~$JBi!M((0W5Y_pQ+!j~&^54+l*2TB8w3(_G*dr&&4 zxr}&1S2(Mwx$StWGb@d4HoTHQ?BgCeTio<9Ew?oFI-gY3HS3D>*nWGeAmjX#NUc?w z4-V|hN^ewS`6hj+wCrD8hS8lY%k=znE89dd03Ebf;m%C;2L}sC? z&J$nb%@|dg(vYSg-0Z5x%<|U5MTR2cGVVZ^eFW zsYq;{LiUwhpx?%&yrw0hx%lQ|J}i|Ws;O)x8YWLfw=TfMt&PO&nQ-sDmD_>m@z!l} z>s#K2a;?3Hc2^e7<@AuwO**=!;`R7{tY!X<8i)Ej&GfC${jm#8U#nX;v>5I^7ZLG; z0pm249)0_P{QssfeUGlcW~`>n194RnZ@%RN0>*R!0ne8^sh zDi+9ULW5 z8JbKiD+$EbPJfZ=Y79q~SJf^}%1GeOR}+%O`g)Eu6$=mrw$)CWxpX|PGaAxuV|VJ; z537^KNP7BwSq#_dlEZJ6T#-A*O`hu6)an1df4;cAwR|qq+4seW>)0WI@;SI(l0|?( z3~j7<7dXieTThAsVspEN*CyonxM9ZFH;QWlT-|t44av2icMwTeBDC)^tvCEQ*YN_y zE5GuZ8+Vm_`Z!=~wn9ka$k$u&FvCyJ%ud9d8_^}%%;ZQh6`LKtiY>5wWHr#}rX7O# zvEvRK`X#JlSgX>Pt>-2pHo&-rzR)d7__cIOdT;FMrjvQ1Xi?|2y*m9!`%ii6sz_S} zhk(0!#RsR-zUB;P38+#$(+_o?-8H6{A(1kL=)rkd6SW?$!L0zL83%{!&W_nVNFO0L zk<5ely!(Z52FBq|$@-W@rKWqE+3lx{A6d>N!8Q4hd&aAp-A7k1J(&DdVo~t0?{PuT zDK*4G-T@|UTW$8Q#6!aOiXd)HU*oU^P?@LmRhiC}P4H0TAsdHhTb82Am0A_JBzweXN3z!?-s62M*t zFlhtrpe6@XC%JSKkIixxeI|-+uTa3`CBO^3ymCW;#Y1Q!sBDW(i2Uds00s8|y|TO{ zIWm~`FDp&ShN@H)rb-UuJ9Bsdj;47&Dy|fo{*dr3>}EzKoDMXBybOC{+|Za$;(7&9 zq~q9bBADsJ&Pg#~8P$U79W*#t+?zF%1gwqO?QLCOHH0haN9xcsie>#f$-#qqbi%(5f_-%e< zSY)?m{@&Rt-y3~5ga&2U@*pU+> zCL$191VDACyoQBDf;a^oiCd9G$V8Z^GSc5wU~bxNqZ2dbdJJ_LuGBs4%$?C}j{IPE z!TiBo%<}3g@&jRXlS_-&}~+aB~@wBlR)2^Te$51kn#*k%74Cj;^2} za-rp=k38Bma|^OCefGMsTyc1%u*<@H>qo7ho?Sm(6@QS{R!y>$2A_N4{l4opy;y); z5P-ro{|pI-54f@)rCi4B-{R~2y_Cc<#Ukl3e1bDjYH3c;>zJ3{cp3)JQ)_n=oO=xv zlD6X^&fi{-E)d!IB`-@WPeao2cQ@26i`)OrZgTxwuOAU%Z(`)QP?e;e{q?`D-wd|d z3>N208BAj1yS(*n>Brph9_`}oEkD%ILCVyU`z+@CsmcephTL7eqvMk2PwpihSw_YScgH}0>I>&c z;zrswN=vJubX|9(1HzqeUr&JR?g(RO7KBBX(w!U(^aXBE{BYF4 zz_XK`4N2zUblGouPAUF#hMW%v9NfjZP_=iMm#|qz)M#0z_sA8h}Q3%&*@U1WUHh|{F-fEZ~o`Y^YavjU~(|Q#vS+paS-yADS5t} zw)D-Vt4Bzc@_vh!@e#4N{*2|wRo!L$RHx^I6u)gS+wnpwT=S1xeNz?`M|=A2ai}j% zqi&eJ{iU`8!C_1eeO^YruUq8JzTrTdTgPV7EWIMl7qgT+q=xH}kKjw-n`0<1TRxd6M&2?*0p>5bwX{2&%-Hi+c=}A;V-)!!B_C`CCPSk1u$*C_hl} zSGS{~06d69+Zc}p9#;esd0&OivXseaH+|U6vuILU;rGWEM_@q)WZ7n*QC)F?Oc|Rf zAlJfGmWK_s^uy^#89Rd^@1t*Q%`+eaAaW?tJ+6Z;P3-`lW2A(+fk2UQV*&#f@MgFL z|9>Q%hdY)3|Hsd=$B`}L7>AQ6qa1ssNXDroWF0ew?0s--LRJ}>MJRhF^Vno3GvnAq z9Q!z--}!uh*LD7a`?|0Dyx*_a^YM6sjJE*cGa9Y+JC71nEorEa@Eiy?ix*6{v90L4 zj4fM(mcQ$Sb$$q&EOXcEr~zuxZvooR4~V*>@)a+=Z|aHg^`f#`wSP?a1vM^rziOXt zSc6Y!s$1Kf??2fTLeCa#CM4i+`X>jmC`_&C(+4+-dtfAoEscFLm5e~?f8={c6W$i- zb})*7j)(( z%)ipD`53`(kpD*vIMd9`lJ8q?Y)^%Zu!%r5Y@@%6I+~C18^KOMHyr}o`43@W0MH?Y05h_rdPCY zhg#7N){KdyUAj{Al+>6M3dNy79UQY?pb}k_HRl{_O=q9B-b6e&%9A+LPA4+K6k>&( zx-y+HU1^?ciWhxM8b_Ur%Fbjih9j&CRKFiP)adX3K)ma2<9@sxcC%bHD{90u5&l3e zj!lI`#$K%<|Hi4F#==%R=6N>1X-QlV6LNevn1-u!2qSkF#XTAw#d;1(T5YQ{Eu|5C zQyi)lz)TLO+pVPZqTQ7CHVhs%!+Q$+w3)gsa`?sCKZt8Yzn`k@eH!hz9anN~xqbV> z=WMKQMsr8NoLg^v#gaem?#MS3dAoOZux5j4Aau}01ry1?cLCNzKq?-|%PT1(fx8}^ zri-M>OlFSS&PK@Hp;bYkybB8p)8SO}tM~V68<}1?-+ROT@`wV-?Vl&e4|u@>!l&C} zsntMC>VvfuyMW$8b_amOUey;Cv${i#9oWyK*`fxZ7`6z;M5(k`9?&$YoJYahR$sml z!^Kba(o?|Fnjh`YOT+n+n;)Dy3x1#`5e+m$Q#tGtJny+eQf)^~nDQi=`j~G6N@07V zzmL)|xX1oPI4TdF4-rC1)^Ze30558%rhXA^lZRwih53QzZ^JvG(-gwzXF!P+p)quY zN~lmP@$U_qY`FZT!?tp4|M90mSsma8$I*j3T~AG)*?d<0t7>qMpA`~U=k`^-^0TDK z@4i*b%MGLU#O$8rkzRwQ_pDGwG^f7gCYk(XpFpd02u=e6TPgj@BEBWnl9~JXq8EB! zxG=iq_QtOcJu=WD{1;L13O<*`N19v|cY9)!)&<|` z@nyO+fMRmoCD{34wFcR;QrLODv7OibXVQoJ%$N>wDs!g~Vom#sAH-V%X0HC)1dx{r zm~OEuy0d&9$qXlyA2B3h#!15&9IvW)K_S`Tq#<#Vs1A$BaeZG#NTF|=BHN<~NsEN; z5ue7&cH^;m81I!|eW9o8fSjCb@RPL{DuF{ZDu`aWZxstA-I$%IzefdOjVxcHTbSuE zMBX>!xvdz7xNgr1kNsHV{OF9HwHJmwuadM7Zrv;&233(;s9lej)~}&P6J6#851dS7 zQDrm%nt=#e8ji&b)pdoIE&I~x%Y328rM`{Hd*g8*0s`~aFDZLg&+{G2N!xca)z;O= zo$^7ns&}Y%aJ1=wM^m9p*!zhF5^5kr9K{jSXuTB0FmV-rcXZ#Beor3u#0+qo38Lmp zM~`eLrDJf@k(L3$K^&Z9=1M7VwUvJ}@I{3H_1#&pm%qrB>PM%2R~>##^%$cIo`(vk z*#0mWJha3J=vH7Uy<;j)&h$j!WQg`_DN7;V!lGO~2bQTm89q(kepcHTiHy z&SDx{%uercDP}rNJFuh|37Mo^TB$d)Ir1#v#JKfyXP8QQqs$z$Eo>9nE)M23-@Wo3 z?X6Qt2RpjMR5?Rrow_xG-9Y;7I;0LxsSv)SkXu#lfl0Rh=nCHqz|&kP`6q$E#ffU4bMxhq!*kdk)+o`tFbWBkIYuvzn;@w(Di6z@M++K z-P)-UxurG2cg%7Ci9CcsX@j`961rFvVuXu+o_ENih{6(N&D$r!#HUj5Q1A_{z}C0_ z{Pp~4bb1Cke^5zy$Jo8z?#d|4xF_l8K6n2=9ay>S5c12lI+LNiZkaGZ9KXFZPy`J) z!a@_Py^FF;aWSOG~CLF0_mF*@)r?g0c76XGi=Fz55bZrjztjQ zwM(oNw;6sNE)x8BvIs3m0Jvevnq)f85IDNWi2EKOsbN)-05{Dxs8B5z>_0`o`vIFI zDjo_pq~$aGfYGjL_zpq`_jn@*{ek*7=(8dE_%G;cT_2S0T9&p6jFT@}QWj5BZ?Qm9#QcLmwRG4O<=kOj!|S!3(=d2w0b9EpJ( zjQ`Y4J{fmzGz}rdv3`}qF$%g>>&FP_rNiF)9A*mNJiefI-|Bs47#he^=@#J@!$Q5D zxW*Kr|J#aVh9GUs5azV%+_NS4D0-Nf0^YFVY0ih9uP7>OY9tzV*>L|A; z>zy2t`DnZ?j`>G{yy&b!_UiPh~rw+`kHKX*Yf!i?=^f8xw@6dcq3TOgXgdwf3l z^k70;B`zt*bt>@U=eQV6c)*T!vt*E8N62&+(l%%*Kf%v7r}&mn7qv4>NnDI7>q`4vI)n5 zP492(T))HX=6ROAPyVx8pHTbbN~d~9wI~=&hN^b(v(tZML#SN8D|{_4wdzFAn;1=& z{dJ|7G-+$b1TBr!P1tA)FbqDf$R6UM4^bukDzG#u@p$Fdz4*TFMU*#~YG)|L<;#;tNV1}+tuMU07>?d%AAB4oIjRGJ5IUMD+M4X%6gn03bn&<7& zSgI_nh+6;F75pK>nu0qoeY_G-EQqBoC;rvBYFR3nG|HY1UK4u|2>?U(rA$KhPCoT{ zN3<$FJ({jp`FgV}%P0f#0!K8Om^s;FJr}^eeb-h)l2JOJlS>XZ1T$mo|CEdnx81%I$sLcuy zNKhwrQptVD8P0LXNjBJ~R8*Wu(lI6hW0ehYEcX7d1%vQKH_WflyECIyF`Ip_$QI5cF1n0Ocih<=nfl#V_3d>iilp z)t@fZnqpA;^7#I)JR(Ks;QJ z!s}a~qi039i1z_m%f6_mXuvCy-vORgH}MK*^*&!n$;COnn}~O8cT=yN_vs1`0sG5I(3nm;g3bs2oap|E!`j z<%=&UUwOW7jZUG`RBcI2f%;l#{35P$hD_evz%J6H?vd_`Piv5Kt%CkEzDL02P-?F8 zp;P9h<~vq3dAv>YMQO=o#v%j=_5R{uMk$qgOnK(jFwfO)J$2z5V+i(=7yp3@SUgr&5r$c7dQL_THV>1pm6&CY%a9>v z4kAMvVIsG!`b<+&SDF5#zZK4GGgvGbg!%IN;>Lp0s!a@A)+gB@r)422?K?o1ZtZC? zizKl}d8U$VJ%`Gci>!*<>t=D^$4aiJo0&vbiPhTcVCDykK$v5$uq?ejy zH#`qGQULGnx!eH)^Mn%tR205ozCXHm)$eAH^QlpsW3Pfjf6tNQdUwqgBd9Kk0J2e1 zRXgVN9=T2sPD4nOh6~KjJOP_lQ=me8)j#~?;e9>%7Ar<~bn}KHRz=d|W0>l<&e9eg1zi~Kf4LXyGM$t%*g_o;PwZ&bwn(G z$wrCqnhu)9^}PG0cL0U9ebp;EacK6q?oOHCz#t;4#$pLNS39|sdJI)8^KqOf)mBAt zyY`95Yco2z`+gYhG%)U#X-$R(y8An`>@aOau?e7~{<`)mPf7ADq+~LPE05icOP5`a zKXC$Z&(661((QcV?Kr@QskK7<3f2C-lq-2WD z3pW-jjbz}T>EcT8KM- zA2|k38Vwn%x~Tm94wkm){sujJ#%bem*X&B$n=kIVZ2OPrUc0bX=_wvY2d-bur7E=g zTE&rY>vFbgB==yx;&s(gCRbwy-8$W`Zob1X)Y*&*-qf(K=}UUWnlCL^++%w^J*>|4 zhWpV&kAiNm9~t(oQhCLkk>9PsOonbKIXim7d%^u5+Sgi(wf=QIqA!iD!(K>i8fb=H zRm72_$DGE~KP@e8l#4bnh4MY}sheN~Y|$x^33o_rmN@WM$j}yJYbYn?!2d0SD!L}5 z7xoYY2U2W~=>fh&zq=USNo9RzZg}nTTcb+#@4oze6;Rkvor3!JbzY_wp+qo-yv}!o z3}07!>S|9XSugqY=RbDCDB+Jr0=vt126zXa?_8IrGHY2SV1eB8iXqFRK}cJm38?=@J!;ndfb;68?h0DG5_vP ze@|DdaYoa*FfCf~(FKLx&WAegPxcz3;65YNml}3v5Kz^>o_jOL!2wKF7nX+Etc)*XrakRquTQMW1000T zItPD)1O#&KCd+=i@y{WFBgfN@<3iY$8109_X)68X;%L2fvo+S{^-xPXO%vN;C+9d9 zbb7eWTF|n@L$xYfBJR`OzPTj&eHN9~k|IUkCDq*bh-LAn^0M!aFY)ZDVH|XQGBg#l zpOOo{Y#69KAq*OGn!4}XrUlbn^pf8-u6wbJqRlh7gweFAyDjCx;S0A7Ntsh@0Jeu_ zPsA2uSO_2hZ6)Xu0FDOJ=j}*%15EK!RWNcm@bUOVen>cVF-Yx{g1vp4M)?Xb9pwmnpzj?zRRH_z|P?cy*4FSpLaKoxrrek2{_JSl-p_Gzs}Egpeez{%CgQx${%xc1r=zILPb`TU z_k+S)&u*MkU;O?Lj6WeG-Fpwz(9BL%JytpKbqqOPFP*h_B+4dsRd^z3+MhelHP*jc z0?t)aPS}CB6?r!HMjmE>8DaXQTN9%;XBI<50|(24T?xR3PaMvBS~^GMk8J=UCLMobO=_N@sUWNxqFjtrg-Tim8baGR9atJddKDcbw48(G{6SHe;>#X06xUB=BcZpaHEuc zz^}qG7wd)$faWp~Q&>YIz)gy^G&{r$lOBJ$KyT>kcj;`tj}*ECC;kIzZ&ZS*IZ880H$=kWFlu@b_?;)DF5J)P-@7|Bw zp%2*FaUyCT*(=A4THLB$Nbb&-m&MAnI=@e{&5HZ=--$k1gOhVrM*rXM+s$E*Cez}% zcBtzIOUS)7$S>_{XzLzm`RtQt1CvE3zpYY9PSZrff@s7p5`Ko&SbY z5f;wdxxYoS5fBQaM&e^sL8Pv!Lepe{Dr|Lup?_se^A;5ld$(wC#&nJbf0vN%GOQ}@%rcFw=X+`ePddZB?Gm7J@~Nw z9X~L@xpI%Zd3Ddt{yjHf5zf%l`occRZQ$yAv%y%h_Pgap>e$>J@jQreh%cbSmOv8+ ztlATSG5ug11wQ7UwWH_;Fr>?wyFcCwH+Kd3`|Z#@fpFuXSv7vg)LfSS*J2%!EAh2e zAE@komoiwy)u?qta^M=HA2a!XdkK>8svlPF;%pH7MfuncO`yrcQ{}eL{6>}FK@(e| z-^SBBxHkY%00pjmV(Yp3j{!tBMf<(u2nLLnj}lQ&Fd5eMFVCBC$_VlxxZd}lY=~N( zb&X>TB>QYOU>-?>{a3OUZt!I@*d}mTtibXq{mdJH>c8$ihR&Nemio8ztAG~c*<~xxhLULI+0AWjn)4wRmSbCj!S78i1m=L1 z2I}ALf3hXCJAJ=~&6{+0R!0F2t{mCp!OL32z*+;Yeu%FR5?hiS@QI;5FNmG~MEJI! zXT&VwwNuzskI{van$~4w-YD2~O(nB<7e}?Lbbrqt@Q^qAk-B*Bm$5&|PlT&I_Fump z)ed{?W{Ry2tbQNHyLCs)nK-P}-kH9vC1SF}JPyz7<9t1E?r(T8k~R7U8W-jFy69VZ z{0RKfEVVHCWW~HOCGj5|7*lAXnK`wS#6x`(r|ZVBiG91L1_S`VWOdMx&+%$tdxSP} z6rjUY*Zwu57u-O5`*lAp`iMdjFjzR#v+%cyIVv|5vnk1ooK%uK`?+t z#EkE6mpcdt+UucVEO3M)$$t*x^p53AVmCBY+G3}&7{a5pk8Z+piXl4I#gcugs;lB**g3XF(^Nz~e9=5?{R553?HJ~NMp zfs=#Hr7TT#+27qF(r(f*<&09ZherD&ud+x}q`~=j@(|yMTNTj2_$>J4d25&|I@4RAmLd0QIUGTmv$QeMxQ;&c|$0wvW^;3X|*oo zTvf1f=IQ^$(qit|E5R&X^;l_C-_k8LehZPo`n+50bg2TdGa^QVDn_|5`Ci@CTB*#` zb^bY)ak>8PYv-<%Z(3qXG8wi?c}84sZZb4yZwXe=@Q+gO_A@KVhdcgi50B! zl$e}btFi7z(st@ed75VmWJFZSI=&htlp*Q1G-G9 zwfEf1lOBT%?9UHh$LT5Ke`@Br(SqYB6!Ci%rr+470S5XBwJf99TwG|bBevMVQOK!A zPZK1~1lE6Tdj|xc-lA&;|CHYc+cQJS>N}uPF7~JP`-13QwaI)N?{T9_R;O(JAHwS9 zm3gZ2$P3a72}xSk`@D-Z@3qsLMY3&PS;5U{wCstM^BBg5JySRw`lMLIN?N3_pcc0tX zrF2?cwzXd6{kwD^q)r~HpHl}eh>5KKCD|F0yXv03$P9B7Kgq-a<$xvV)J~vde`Afx z65}~GNm3&7ma!b)%O@c*mF=V&VBO6!Lq`Q}bvaN`ozESp#2jLv_*=bpgn=#Yg)t2s z>xDCqRqkF6^1OhF9$7q)0?Kro)_3tO$R4V`3#y;B#qms2A=21BR-vl%N2AJIBX3Gh zx4%~Kwzq-moJEZsg=mRLX4#Sff-*-Ed9h;Lu1{)zOc6Q8#rXGDgU@w@vjsrmE2qm- zM{8%A(0x}_XnT+1lEY9IMGa}_4qVLm3y8mR57f7;a7X!k=M_R zE6YAH$n&a*w)m!cCuvj{I3`7EJb1)?XLrKy*Gu9!^Ny>eYg|zf2FG62BbTn|na85s zfBV(y=*+n!h+OI1V3pNO*55Y^2%?fD*2Ib*4wD0P>1IZ6 z&b-MFRda0a`@@Z$za>=~CLS-}T{7Gse?rqxUcL$HgGgZ^cx)NS0m1;Jb^y@g0mdM9 zP?&cplk4F#a$A)#pkEn4d6az=_~~^#68$vCc&*A1P;og+<4ywIO{n)srlO}1;dW`H zehDgZJOx}eXY;QCJ|wqEEq|vmglM8m0TWn0!CxQm%#_v)*?0#pQ8X-9vk_dr{NlC0N^Y}!VgYr| zc?Xre*Z67A%5n=j$S(E{-^|e%RnkyUyIG#>8{*3W#5z`fC1^d?nU*O_cwZ-8=OO}VouIjaGtKo6*strne^u`GR#QhU`B*}yN{PO zG{`fVDVl{4zenU)c&+@7>J5q#&Bd1=ET4yUc9wr(C^|Uhc|Wv+{okw9#oJj%J(agm zl1Cd7Q`WRC!XY_wI7{E}&pqKivn#4f1P~HgtV2*i3m#m!}MmbOXqS)r#TKBgt_P9zAxoX@}pfb;C4QnGCM&;^7aV7 zNz{mf%dJ-i^~3}&$D9pRtkWu&l7WW&7xq_lO;o+FO-_*6tRJZVZ3o|jUOzjgTwDb) zv8zgIsoe!yfLJU0H7U_RI(3Ts;AdEoN_!SYfKRdskDpDs8 z!hyY!NSE&UkQ|GlA+3~ExQ*&BTBaTpP4XYGV4qi5v*0wnLNnEp0NGNf^UZja^s!q4 zpQlZ}ceJx7@l@zRLJ&y$uvnyX)`+NmIAMY`wYaY^b;>^HH3DZ!J}@vQa$dt$L${jaYFPiu?FH( z!OT%Al1!~j-4=iFZ}*(?xC3Y4B1zjUFz3xqc4xv5j?^079>utJqkv|sjpmn_zq2na z4R}YcBko%hQ!gP~w0Y{D!`d3xq5U6DcFE_* zb#M+@7C2ke-H-|PL>KLG`8cOOT``owKW7794wx}LkK;8bzERmZ)!vJ_hIC7C!VGa^ zwlwM;FT;+{Ki=SCPJqL#B`lM)PKgUGJ2y7r`WZ&H%P$zcoko8RFNasq(NkEs=1KEY^c6ZG|H; zd{_`UUUv3pD^ zY8N%%>8T)ONe~ScrT#2@Iv*C+;0@k~DiUmj%<)S9zU|E#Coa8j-L2vhF2p}y3AWlt zB5I{Xm`$C#1yt~k80Mz4PR`fc=k{^)2G3i`%7L4hxQYhr9dgO4hx$i##$Q`sZsZUv zvl)I9JAHDG23x~!PPWUx!)8tV@AZ0FxaSzj^+(%ISFJQI9+9O0%&es&x%FcyVDaxlrT?)r`1Im* zF_=h*QdLs=FM~a-uw8mJN*i2dH}u`em}Wb)XVu-f>?Mnf5Sh#QJU00bD_#y+?KrqN zaBtRNg*-2N6eT(NS;o$|)Prbu!KJ=E)VDSYc)IGU6-;5_=osG_jt?2SjR~ydsG{1zKS!Dd(gV5 ziL*t;I`@q;21|i+s;JnLz&cCmd&mQ3`0;90_AaL1=UnuS^P>mfM(kDGa!0HR8Cq1= z)uAQPW=b=kS^^k@l_H)~U9=!6i=0oCkC%j^tQpG*>!`-LipYQ>>6e+m8#Ltie*frH zCW)O7SW0rWz81CyF68j+hjFb;$Vi`Qoj;8Gkp3BV(HAjbeI;Jo|2OF)vFs6Bbp~xyP|a zv?PnJ?B3scKI}TGPQ{?bo`aeR0|Nrdd35?&?00wrr+%W)D@9xE-%j2)083F&fFU$%3+_ACo5CH;rGq9|R2eZ5)Ay!(G+TReEm^MZ8$lp{_6MIP zD`N`V_I}@brQ!@vHonj4NE7F?7t%pT3)E9y!}zfNG+9H&CjL``>iBYW(cpWnMf_K~_Pt*|H@l2=i5K~Yl}byaTfD82Jec7@mXoO;7x zb78SgA9B5IA6yIE(5YHl_|%1=eV6Cw)w%tcl(Gh^I)2HQz0_t*Yq>S>)OTc$DTL9t zIs^K%gau|z^{?GMGk67?>x+BpwR~9qiTKnGB7d}EbeV$DM)UT?WSsw&u|28OJHO=< z#~qlw8SU(6_demcNS1f&`;@0}7@t#GEx*F(S( z!NqUDG&28)Amn#66l|l#Tzt$8MW_qxF~E1!0Qeh2GE26EzBRke)kuv0AzP1?RIIq zdOV=mfoS5>VMvgP*D4?YKntIF#RYUY27v$~+-l29F|lY}6fi3I$O_5}i8-ga<9rs$ zpdW{Mv&U#OW+};3;~&>o9Z zVFl2;pnX+EqOEg$@je^658bo}61(g({@lB$9Jtk5 zYFdy{I{h|cPG+XZVV6s=H-Y*pXRAy9#nN3b&o-b`e47cjk%M<{Ig*#B3jL&2FJG%6 z++9vk@0OO)px0YirgJ-@_)=>fA>8N6Zb;{nmN58mGRsZT}#cSQzVE7x#!rY|B zdN+HqxX?eyugl2{^+nvvtma$YH&2M3d2oB&K+5+ox4w(*g!_Dx&`;{m#Zc-92Pboq zXH_>}356==b5 zJ2=1*$4$S3JmtAc(n-x(#=BtRU%0Axq{Z#fY@(f5y~Wn^jUAc?H4b|k8rPp!C!Kx$ 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 -
0.93
0.93
0.95
0.95
0.97
0.97
1.00
1.00
Reference image
Reference image
x = -1
x = -1
x = 1
x = 1
y = 0
y = 0
y = 2
y = 2
0.93
0.93
0.96
0.96
0.90
0.90
1.02
1.02
Evaluated image
Evaluated image
x = 0
x = 0
x = 2
x = 2
y = 1
y = 1
y = 3
y = 3
0.471
0.471
0.577
0.577
1.106
1.106
0.816
0.816
Gamma index image
Gamma index image
x = -1
x = -1
x = 1
x = 1
y = 0
y = 0
y = 2
y = 2
2D gamma index – 3%G/3mm
2D gamma index – 3%G/3mm
Text is not SVG - cannot display
\ No newline at end of file +
0.93
0.93
0.95
0.95
0.97
0.97
1.00
1.00
Reference image
Reference image
x = -1
x = -1
x = 1
x = 1
y = 0
y = 0
y = 2
y = 2
0.93
0.93
0.96
0.96
0.90
0.90
1.02
1.02
Evaluated image
Evaluated image
x = 0
x = 0
x = 2
x = 2
y = 1
y = 1
y = 3
y = 3
0.471
0.471
0.577
0.577
1.106
1.106
0.816
0.816
Gamma index image
Gamma index image
x = -1
x = -1
x = 1
x = 1
y = 0
y = 0
y = 2
y = 2
2D gamma index – 3%G/3mm
2D gamma index – 3%G/3mm
\ No newline at end of file diff --git a/docs/source/_static/images/image_planes.svg b/docs/source/_static/images/image_planes.svg new file mode 100644 index 0000000..88c9898 --- /dev/null +++ b/docs/source/_static/images/image_planes.svg @@ -0,0 +1,3 @@ + + +
z
z
y
y
x
x
Axial
I → S
AxialI → S
Coronal
A → P
Coronal...
Sagittal
R → L
Sagittal...
LPS
LPS
\ No newline at end of file diff --git a/docs/source/_static/images/position_and_spacing.svg b/docs/source/_static/images/position_and_spacing.svg new file mode 100644 index 0000000..cb887d5 --- /dev/null +++ b/docs/source/_static/images/position_and_spacing.svg @@ -0,0 +1,3 @@ + + +
(0, 0)
(0, 0)
(Tx, Ty)
(Tx, T...
Sx
Sx
Sy
Sy
y
y
x
x
\ No newline at end of file diff --git a/docs/source/_static/images/reference_image_example.png b/docs/source/_static/images/reference_image_example.png new file mode 100644 index 0000000000000000000000000000000000000000..1b34cc1dc289857a612a6720bed921f08fafa75b GIT binary patch literal 53985 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

S#{XKBij3?H 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 -
4
4
6
6
8
8
10
10
2
2
0
0
-2
-2
4
4
2
2
0
0
-2
-2
-4
-4
6
6
8
8
x [mm]
x [mm]
y [mm]
y [mm]
spacing
spacing
step size
step size
maximum
search distance
maximum...
Text is not SVG - cannot display
\ No newline at end of file +
4
4
6
6
8
8
10
10
2
2
0
0
-2
-2
4
4
2
2
0
0
-2
-2
-4
-4
6
6
8
8
x [mm]
x [mm]
y [mm]
y [mm]
spacing
spacing
step size
step size
maximum
search distance
maximum...
\ No newline at end of file diff --git a/docs/source/_static/images/wendling_circle_distances.svg b/docs/source/_static/images/wendling_circle_distances.svg index d7ce5cf..83bbd83 100644 --- a/docs/source/_static/images/wendling_circle_distances.svg +++ b/docs/source/_static/images/wendling_circle_distances.svg @@ -1,3 +1,3 @@ -
4
6
8
10
2
0
-2
4
2
0
-2
-4
6
8
x [mm]
y [mm]
0
1
1
1
1
2
2
2
2
4
4
4
4
5
5
5
5
5
5
5
5
8
8
8
8
9
9
9
9
10
10
10
10
10
10
10
10
\ No newline at end of file +
4
4
6
6
8
8
10
10
2
2
0
0
-2
-2
4
4
2
2
0
0
-2
-2
-4
-4
6
6
8
8
x [mm]
x [mm]
y [mm]
y [mm]
0
0
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
\ No newline at end of file diff --git a/docs/source/algorithms.rst b/docs/source/algorithms.rst index 1ffa096..c14fb6f 100644 --- a/docs/source/algorithms.rst +++ b/docs/source/algorithms.rst @@ -53,6 +53,7 @@ than in some distant place. :scale: 133% Limited area (circle) on a 2D evaluated image. Gamma function is calculated only for black points. + Values at those points are interpolated on-the-fly. Such a limited area has a maximum search radius and step size, which are parameters of this method. Evaluated points, which are checked, are located on a grid with intervals equal to the step size, @@ -65,7 +66,7 @@ The values at points that do not exist in the evaluated image are determined on- Some optimizations of on-the-fly interpolation can be achieved by resampling the evaluated image onto the grid of the reference image before initiating gamma index calculations. However, YAGIT doesn't perform this step due to two reasons that can lead to less accurate results. -Firstly, this approach involves double interpolation - first during the resampling process +Firstly, this approach involves double interpolation -- first during the resampling process and second during on-the-fly interpolation. Second interpolation uses interpolated points from first interpolation, which can result in less accurate calculations. Another reason is the fact that the evaluated image we start with can have a denser grid than the reference image, diff --git a/docs/source/data_representation.rst b/docs/source/data_representation.rst index de7ac24..b00fd96 100644 --- a/docs/source/data_representation.rst +++ b/docs/source/data_representation.rst @@ -1,2 +1,219 @@ Data representation =================== + +Coordinate system +----------------- + +DICOM and MetaImage use patient (anatomical) coordinate system that is relative to the patient. +If patient orientation on the couch is changed, then the patient coordinate system is rotated accordingly. +Other alternatives are the couch (fixed, room) coordinate system and the beam (gantry) coordinate system. + +.. figure:: _static/images/coordinate_system.svg + :alt: DICOM LPS coordinate system + :align: center + :scale: 135% + + Directions and LPS coordinate system relative to a patient. + + L -- Left, R -- Right, A -- Anterior, P -- Posterior, S -- Superior, I -- Inferior. + +Specifically, DICOM uses LPS (right to Left, anterior to Posterior, inferior to Superior) coordinate system. +MetaImage uses the same system, but it denotes it as RAI (Right to left, Anterior to posterior, Inferior to superior). +YAGIT also uses this system. + +The three-letter coordinate system defines the axis directions as well as their order. +The first letter corresponds to the x-axis, the second to the y-axis, and the third to the z-axis. +For example, in the LPS system: L=x, P=y, S=z, and in the SLP system: S=x, L=y, P=z. + + +Image planes +------------ + +The 3D image can be viewed from three perspectives: axial, coronal and sagittal. +Axial (also known as transverse or horizontal) separates the superior from the inferior. +Coronal (also known as frontal) separates the anterior from the posterior. +Sagittal (also known as longitudinal) separates the left from the right. + +.. figure:: _static/images/image_planes.svg + :alt: Image planes (axial, coronal and sagittal) + :align: center + :scale: 135% + + 3D image planes -- axial, coronal and sagittal -- with coordinates consistent with LPS. + The black filled squares represent the first voxel of an image. + + +The i'th column, j'th row and k'th frame map to the coordinates xyz for the respective planes as follows: + +.. rst-class:: list list-math-right + +- Axial: :math:`ijk \rightarrow xyz` +- Coronal: :math:`ijk \rightarrow xzy` +- Sagittal: :math:`ijk \rightarrow yzx` + +A 3D image is stored in a file slice-by-slice using one out of three planes. +The plane used depends on the third letter of the coordinate system: +S or I for axial, A or P for coronal, L or R for sagittal. +In the LPS coordinate system, slices are stored using the axial plane. + +Note that when calculating the gamma index, YAGIT does not take into account whether the plane of the image was changed +after reading from a file. +It treats all images as if they were stored in the axial plane. + + +Image position and voxel spacing +-------------------------------- + +Image position refers to the coordinates x, y, z of the first voxel of the image, expressed in millimeters. +It determines the offset from the point (0, 0, 0), which is related to the treatment machine, +and it is the intersection point of the x, y, and z axes. + +Voxel spacing specifies the distances between adjacent voxels along each axis in millimeters. +Alternatively, it can be viewed as the size of a voxel. +The voxel spacing can have different values for each axis, +but if all three spacings are equal, the image is said to have isotropic voxel spacing. + +Additionally, DICOM allows for unevenly distributed spacing along the z-axis (spacing between slices), +as the spacing may be greater in areas that are farther from the main region of interest. +YAGIT doesn't support this kind of images. + +.. figure:: _static/images/position_and_spacing.svg + :alt: Image position and voxel spacing + :align: center + :scale: 130% + + Example of image position and pixel spacing for a 2D image. + + :math:`T_x, T_y` -- image position, :math:`S_x, S_y` -- pixel spacing. + + +Image orientation +----------------- + +The image orientation indicates how the patient is positioned on the couch -- +whether lying on their back, stomach, or side, +and whether they are oriented head-first or feet-first towards the machine. +The most basic orientation is HFS (Head First Supine). +In this case, the patient is positioned head-first towards the machine and lying on their back. + +The image orientation is provided in the form of direction cosines of the first row and the first column, +as well as the normal vector to these two directions. + +.. math:: + \vec{v_r} = + \begin{bmatrix} + A_x \\ + A_y \\ + A_z + \end{bmatrix} + ,\ \ \ + \vec{v_c} = + \begin{bmatrix} + B_x \\ + B_y \\ + B_z + \end{bmatrix} + ,\ \ \ + \vec{v_n} = + \vec{v_r} \times \vec{v_c} = + \begin{bmatrix} + C_x \\ + C_y \\ + C_z + \end{bmatrix} + +They are often written in the form of a single vector. + +.. math:: + \vec{v} = + \begin{bmatrix} A_x & A_y & A_z; & B_x & B_y & B_z; & C_x & C_y & C_z \end{bmatrix} + + +There are 8 basic image orientations: + +.. rst-class:: list list-code-right + +- HFS -- Head First Supine ``[ 1 0 0; 0 1 0; 0 0 1]`` +- HFP -- Head First Prone ``[-1 0 0; 0 -1 0; 0 0 1]`` +- HFDL -- Head First Decubitus Left ``[ 0 -1 0; 1 0 0; 0 0 1]`` +- HFDR -- Head First Decubitus Right ``[ 0 1 0; -1 0 0; 0 0 1]`` +- FFS -- Feet First Supine ``[-1 0 0; 0 1 0; 0 0 -1]`` +- FFP -- Feet First Prone ``[ 1 0 0; 0 -1 0; 0 0 -1]`` +- FFDL -- Feet First Decubitus Left ``[ 0 1, 0; 1 0 0; 0 0 -1]`` +- FFDR -- Feet First Decubitus Right ``[ 0 -1 0; -1 0 0; 0 0 -1]`` + +YAGIT supports only the HFS image orientation, for now. + + +Calculating xyz coordinates +--------------------------- + +To determine the xyz coordinates from the indices ijk (i'th column, j'th row, k'th frame), +the following formula should be used, +incorporating rotation (image orientation), scaling (pixel spacing) and translation (image position). + +.. math:: + \begin{bmatrix} + x \\ + y \\ + z + \end{bmatrix} + = + \begin{bmatrix} + A_x & B_x & C_x \\ + A_y & B_y & C_y \\ + A_z & B_z & C_z + \end{bmatrix} + \begin{bmatrix} + S_x & 0 & 0 \\ + 0 & S_y & 0 \\ + 0 & 0 & S_z + \end{bmatrix} + \begin{bmatrix} + i \\ + j \\ + k + \end{bmatrix} + + + \begin{bmatrix} + T_x \\ + T_y \\ + T_z + \end{bmatrix} + +| where: +| :math:`A_x, A_y, A_z` -- values from the direction cosine of the first row (x), +| :math:`B_x, B_y, B_z` -- values from the direction cosine of the first column (y), +| :math:`C_x, C_y, C_z` -- values from the normal vector of the image frames (z), +| :math:`S_x, S_y, S_z` -- xyz voxel spacings, +| :math:`T_x, T_y, T_z` -- xyz image positions of the first voxel. + + +This formula can be alternatively expressed using 4x4 affine matrix. + +.. math:: + \begin{bmatrix} + x \\ + y \\ + z \\ + 1 + \end{bmatrix} + = + \begin{bmatrix} + A_x S_x & B_x S_y & C_x S_z & T_x \\ + A_y S_x & B_y S_y & C_y S_z & T_y \\ + A_z S_x & B_z S_y & C_z S_z & T_z \\ + 0 & 0 & 0 & 1 + \end{bmatrix} + \begin{bmatrix} + i \\ + j \\ + k \\ + 1 + \end{bmatrix} + + +Data memory layout +------------------ + +.. TODO diff --git a/docs/source/gamma_index_parameters.rst b/docs/source/gamma_index_parameters.rst deleted file mode 100644 index 78f8975..0000000 --- a/docs/source/gamma_index_parameters.rst +++ /dev/null @@ -1,2 +0,0 @@ -Gamma index parameters -====================== diff --git a/docs/source/index.rst b/docs/source/index.rst index 96f0301..162168e 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -8,7 +8,7 @@ Yet Another Gamma Index Tool |release| documentation introduction gamma_index algorithms - gamma_index_parameters + parameters input_and_output_data data_representation @@ -17,5 +17,5 @@ Yet Another Gamma Index Tool |release| documentation :caption: Usage installation - api/api examples + api/api diff --git a/docs/source/input_and_output_data.rst b/docs/source/input_and_output_data.rst index d86a02b..aa5faf8 100644 --- a/docs/source/input_and_output_data.rst +++ b/docs/source/input_and_output_data.rst @@ -1,10 +1,76 @@ Input and output data ===================== +Algorithms computing the gamma index take two images with radiation dose distributions +and return a single image with gamma index values. + Input data ---------- +The input data for the gamma index calculation algorithm consists of two-dimensional or three-dimensional images +containing the distribution of radiation dose. +Two images are needed for comparison: the reference image (also known as measured) +and the evaluated image (also known as calculated or planned). +Typically, the reference image is obtained from measurements of the actual radiation dose by appropriate detectors. +Meanwhile, the evaluated image usually is the image generated by the Treatment Planning System (TPS). + +.. figure:: _static/images/reference_image_example.png + :alt: Example of a reference image + :align: center + :width: 90% + + Simple reference image with spatial distribution of radiation dose visualized in the `3D Slicer`_ program. + +.. _3D Slicer: https://www.slicer.org/ + +Such data are stored in various file formats. +These include, among others, DICOM (.dcm), MetaImage (.mha, .mhd, .raw), and EGSnrc files (.3ddose). + +YAGIT is able to read DICOM files with radiation dose data (Modality = RTDOSE) and MetaImage files. + + +Key elements of input data +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The algorithm calculating gamma index requires the following information from the input files: + +.. rst-class:: list + +- radiation dose values +- size -- number of frames, rows, and columns +- offset/position -- the position of the first voxel in the image, expressed in millimeters. + Each axis has its own offset value +- spacing -- the spacing between voxels expressed in millimeters. Each axis has its own spacing value + +In particular, the reference and evaluated images don't have to have the same sizes, offsets, or spacings. + Output data ----------- + +The algorithm outputs an image with gamma index values for each point of the reference image. +The resulting image has the same size, offset, and spacing as the reference image. + +.. figure:: _static/images/gamma_image_example.png + :alt: Example of a gamma index image + :align: center + :width: 90% + + The image with gamma index values calculated for the parameters 3%L/3mm visualized in the `3D Slicer`_ program. + The black areas contain NaN values. + +In YAGIT, the gamma index for reference points that fall below the dose threshold is set to NaN. +The same value is also assigned in the case of local normalization when the algorithm encounters a zero dose value +at a reference point, to avoid division by zero when calculating the gamma function. + +Due to the possibility of the resulting image containing NaN values, +a suitable file format for storing the gamma index image is MetaImage. +This is because MetaImage saves image directly in binary format +for both integers and floating-point numbers (including special values such as NaN and infinity). +DICOM, on the other hand, only stores integers as binary data. +If the image contains floating-point numbers, it needs to convert values before saving +and determine appropriate coefficients that will allow for the reconstruction of the original values, +but this prevents the storage of NaN values and infinity. +The only exception is DICOM Parametric Map, which allows for the direct storage of floating-point numbers, +but YAGIT doesn't support it. diff --git a/docs/source/introduction.rst b/docs/source/introduction.rst index 3497159..36314dd 100644 --- a/docs/source/introduction.rst +++ b/docs/source/introduction.rst @@ -75,7 +75,7 @@ while the evaluated image has dimensions of 200x200x200. They are very similar ( +------------+------------+------------+------------+------------+------------+ The table shows comparison of calculation times between YAGIT, FRED and PyMedPhys. -Other parameters: normalizing dose = max. reference image dose, dose cutoff = 5%, +Other parameters: normalizing dose = max. reference image dose, dose cutoff = 5% of max. reference image dose, search radius = 3*DTA, step size = DTA/10. When using 16 threads, YAGIT and FRED speed up about 8 times. diff --git a/docs/source/parameters.rst b/docs/source/parameters.rst new file mode 100644 index 0000000..b47cb30 --- /dev/null +++ b/docs/source/parameters.rst @@ -0,0 +1,95 @@ +Parameters +========== + +Gamma index is configurable by adjusting its parameters. They impact the results and the computation time. + + +General parameters +------------------ + +Algorithms calculating the gamma index has several parameters: + +.. rst-class:: list + +- DD acceptance criterion :math:`\Delta D` [%], +- DTA acceptance criterion :math:`\Delta d` [mm], +- normalization: + + - global -- a predetermined value, typically the maximum value in the reference image, + - local -- value at the current point in the reference image, + +- dose cutoff (DCO) -- the gamma index will not be calculated for reference points + with radiation dose values below this threshold. + +Frequently used parameters in radiotherapy are values within the range of 1--3% for the acceptance criterion DD +with global normalization and 1--3 mm for the acceptance criterion DTA. +These parameters are shortened, e.g. 3%G/3mm (3% DD criterion, global normalization, 3 mm DTA criterion). + +In YAGIT, in the case of local normalization, when the dose value at the current reference point is 0, +that point is skipped to avoid division by zero. +Similarly, in the case of a dose cutoff value greater than 0, +if a reference point with a value below this threshold is encountered, such a point is also skipped. +In both cases, the gamma index value will be set to NaN. +When calculating GIPR, NaN values are not taken into account in either the numerator or the denominator. + +Wendling method parameters +-------------------------- + +There are also two parameters exclusive to the Wendling method: + +.. rst-class:: list + +- maximum search distance [mm] -- the radius of the circle/sphere that will be searched in the evaluated image, +- step size [mm] -- the spacing between searched points inside the circle/sphere. + +The maximum search distance should be at least equal to the DTA acceptance criterion, +but it is preferable to be several times greater for better gamma index results. +The step size should be :math:`\frac{1}{10}` of the DTA acceptance criterion, +as recommended by the authors of this method, to achieve better results. + +Instead of using maximum search distance, some other tools use the maximum gamma index value. +The relation between these two parameters is as follows + +.. math:: + g = \frac{s}{\Delta d} + +| where: +| :math:`g` -- maximum gamma index value, +| :math:`s` -- maximum search distance, +| :math:`\Delta d` -- DTA acceptance criterion. + + +Impact of parameters changes on computation time +------------------------------------------------ + +DD and DTA +~~~~~~~~~~ + +The change of DD and DTA parameters in the classic method has no impact on the computation time, +because changing them doesn't affect the number of operations performed. + +In Wendling method, the computation time is inversely proportional to the value of the DD criterion +(:math:`t \sim \frac{1}{\Delta D}`) and proportional to the value of the DTA criterion (:math:`t \sim \Delta d`). +The proportionality with the DTA criterion holds true when only the DTA criterion is changed, +without adjusting maximum search distance and step size to it. +Changing DD and DTA acceptance criteria affects when the stopping condition will occur during the search +of the circle/sphere, thus also impacting the computation time. + +Normalization +~~~~~~~~~~~~~ + +In the classical method, changing the normalization from global to local reduces computation time +due to skipping all reference points with a value of 0. +There are many such points (usually around 50%) in an average reference image. + +However, in Wendling method, the runtime increases because when using local normalization +for reference points with small doses, the stopping condition occurs much later. +These problematic points can be skipped by appropriately setting the dose cutoff. + +Dose cutoff +~~~~~~~~~~~ + +Changing the dose cutoff value can significantly affect computation time because typical images contain +a large background region (an area where the dose value is equal to 0) +and numerous low-dose regions (areas where the dose value is relatively low compared to other regions). +In both methods, the larger the dose cutoff, the shorter the computation time. From 9b9718c3d8cf63895e4f7ca3cc7f57be1c89ddc5 Mon Sep 17 00:00:00 2001 From: michal367 Date: Tue, 12 Mar 2024 20:56:09 +0100 Subject: [PATCH 04/25] add documentation part 3 --- docs/source/_static/images/1d_index.svg | 3 ++ docs/source/_static/images/3d_index.svg | 3 ++ .../_static/images/position_and_spacing.svg | 2 +- docs/source/data_representation.rst | 51 ++++++++++++++++--- docs/source/input_and_output_data.rst | 6 ++- docs/source/parameters.rst | 6 +-- 6 files changed, 59 insertions(+), 12 deletions(-) create mode 100644 docs/source/_static/images/1d_index.svg create mode 100644 docs/source/_static/images/3d_index.svg diff --git a/docs/source/_static/images/1d_index.svg b/docs/source/_static/images/1d_index.svg new file mode 100644 index 0000000..b180a00 --- /dev/null +++ b/docs/source/_static/images/1d_index.svg @@ -0,0 +1,3 @@ + + +
frame 0
frame 0
frame 1
frame 1
0
0
1
1
2
2
3
3
6
6
4
4
5
5
7
7
8
8
x
x
y
y
x
x
y
y
9
9
10
10
11
11
12
12
15
15
13
13
14
14
16
16
17
17
\ No newline at end of file diff --git a/docs/source/_static/images/3d_index.svg b/docs/source/_static/images/3d_index.svg new file mode 100644 index 0000000..b80e211 --- /dev/null +++ b/docs/source/_static/images/3d_index.svg @@ -0,0 +1,3 @@ + + +
frame 0
frame 0
frame 1
frame 1
(0,0,0)
(0,0,0)
(0,0,1)
(0,0,1)
(0,0,2)
(0,0,2)
(0,1,0)
(0,1,0)
(0,2,0)
(0,2,0)
(0,1,1)
(0,1,1)
(0,1,2)
(0,1,2)
(0,2,1)
(0,2,1)
(0,2,2)
(0,2,2)
(1,0,0)
(1,0,0)
(1,0,1)
(1,0,1)
(1,0,2)
(1,0,2)
(1,1,0)
(1,1,0)
(1,2,0)
(1,2,0)
(1,1,1)
(1,1,1)
(1,1,2)
(1,1,2)
(1,2,1)
(1,2,1)
(1,2,2)
(1,2,2)
x
x
y
y
x
x
y
y
\ No newline at end of file diff --git a/docs/source/_static/images/position_and_spacing.svg b/docs/source/_static/images/position_and_spacing.svg index cb887d5..53c2850 100644 --- a/docs/source/_static/images/position_and_spacing.svg +++ b/docs/source/_static/images/position_and_spacing.svg @@ -1,3 +1,3 @@ -
(0, 0)
(0, 0)
(Tx, Ty)
(Tx, T...
Sx
Sx
Sy
Sy
y
y
x
x
\ No newline at end of file +
(0, 0)
(0, 0)
(Tx, Ty)
(Tx, T...
Sx
Sx
Sy
Sy
y
y
x
x
\ No newline at end of file diff --git a/docs/source/data_representation.rst b/docs/source/data_representation.rst index b00fd96..e9aea4b 100644 --- a/docs/source/data_representation.rst +++ b/docs/source/data_representation.rst @@ -6,7 +6,8 @@ Coordinate system DICOM and MetaImage use patient (anatomical) coordinate system that is relative to the patient. If patient orientation on the couch is changed, then the patient coordinate system is rotated accordingly. -Other alternatives are the couch (fixed, room) coordinate system and the beam (gantry) coordinate system. +Other coordinate systems used in radiotherapy are the couch (fixed, room) coordinate system +and the beam (gantry) coordinate system. .. figure:: _static/images/coordinate_system.svg :alt: DICOM LPS coordinate system @@ -43,7 +44,7 @@ Sagittal (also known as longitudinal) separates the left from the right. The black filled squares represent the first voxel of an image. -The i'th column, j'th row and k'th frame map to the coordinates xyz for the respective planes as follows: +The ith column, jth row, kth frame map to the coordinates xyz for the respective planes as follows: .. rst-class:: list list-math-right @@ -148,9 +149,9 @@ YAGIT supports only the HFS image orientation, for now. Calculating xyz coordinates --------------------------- -To determine the xyz coordinates from the indices ijk (i'th column, j'th row, k'th frame), +To determine the xyz coordinates from the indexes ijk (ith column, jth row, kth frame), the following formula should be used, -incorporating rotation (image orientation), scaling (pixel spacing) and translation (image position). +incorporating rotation (image orientation), scaling (voxel spacing) and translation (image position). .. math:: \begin{bmatrix} @@ -213,7 +214,43 @@ This formula can be alternatively expressed using 4x4 affine matrix. \end{bmatrix} -Data memory layout ------------------- +Data indexing and memory order +------------------------------ -.. TODO +Accessing a single voxel in the image is done using the image coordinate system, +where columns, rows, and frames are numbered using indexes. + +In YAGIT, the image indexes are written frame-first, column-last -- +instead of using ijk (ith column, jth row, kth frame) it uses kji (kth frame, jth row, ith column). +It's the same indexing as used in matrices and in most programming languages. + +.. figure:: _static/images/3d_index.svg + :alt: 3D indexing -- (k,j,i) + :align: center + :scale: 130% + + 3D indexing -- (k,j,i) -- in the axial plane. + + +YAGIT stores 2D and 3D images in the form of a linearized one-dimensional array. +It arranges single elements in memory according to the row-major order (in this case it is frame-major order). +DICOM and MetaImage also use this order. + +.. figure:: _static/images/1d_index.svg + :alt: Linear indexing + :align: center + :scale: 130% + + Linear indexing in the axial plane. + + +Data type +--------- + +Image data elements in YAGIT are stored using float (32-bit single precision floating point). +It provides 6--8 significant decimal digits of precision, which is sufficient for gamma index calculations. +In comparison, double (64-bit double precision floating point) provides 15--16 significant decimal digits of precision. + +Thanks to the fact that a float has a size that is two times smaller than a double, +it has two times less memory usage, can fit twice as many elements in the SIMD registers, +and results in fewer cache misses due to more data fitting in the cache. diff --git a/docs/source/input_and_output_data.rst b/docs/source/input_and_output_data.rst index aa5faf8..c341579 100644 --- a/docs/source/input_and_output_data.rst +++ b/docs/source/input_and_output_data.rst @@ -25,7 +25,11 @@ Meanwhile, the evaluated image usually is the image generated by the Treatment P .. _3D Slicer: https://www.slicer.org/ Such data are stored in various file formats. -These include, among others, DICOM (.dcm), MetaImage (.mha, .mhd, .raw), and EGSnrc files (.3ddose). +These include, among others, `DICOM`_ (.dcm), ITK `MetaImage`_ (.mha, .mhd, .raw), and `DOSXYZnrc`_ 3D dose (.3ddose). + +.. _DICOM: https://www.dicomstandard.org/ +.. _MetaImage: https://github.com/Kitware/MetaIO +.. _DOSXYZnrc: https://github.com/nrc-cnrc/EGSnrc YAGIT is able to read DICOM files with radiation dose data (Modality = RTDOSE) and MetaImage files. diff --git a/docs/source/parameters.rst b/docs/source/parameters.rst index b47cb30..b3091bf 100644 --- a/docs/source/parameters.rst +++ b/docs/source/parameters.rst @@ -47,15 +47,15 @@ but it is preferable to be several times greater for better gamma index results. The step size should be :math:`\frac{1}{10}` of the DTA acceptance criterion, as recommended by the authors of this method, to achieve better results. -Instead of using maximum search distance, some other tools use the maximum gamma index value. +Instead of using maximum search distance, some other tools use the maximum gamma searched for. The relation between these two parameters is as follows .. math:: g = \frac{s}{\Delta d} | where: -| :math:`g` -- maximum gamma index value, -| :math:`s` -- maximum search distance, +| :math:`g` -- maximum gamma searched for, so that :math:`\frac{r(\vec{r_r}, \vec{r_e})}{\Delta d} \le g`, +| :math:`s` -- maximum search distance, so that :math:`r(\vec{r_r}, \vec{r_e}) \le s`, | :math:`\Delta d` -- DTA acceptance criterion. From 2d430f5b3b0589edf0756363b09f1fb8c89b5119 Mon Sep 17 00:00:00 2001 From: michal367 Date: Sat, 23 Mar 2024 13:50:28 +0100 Subject: [PATCH 05/25] fix calling make.bat in setup.bat --- setup.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.bat b/setup.bat index bde525b..deda14f 100644 --- a/setup.bat +++ b/setup.bat @@ -98,7 +98,7 @@ if %BUILD_DOCUMENTATION% == ON ( echo BUILDING DOCUMENTATION... cd docs doxygen - make html + call make.bat html echo DOCUMENTATION MAIN PAGE: %cd:\=/%/docs/build/html/index.html ) From ca3e58dd0cc94e2ec32235fe61e76c852aaa8843 Mon Sep 17 00:00:00 2001 From: michal367 Date: Sat, 23 Mar 2024 19:10:56 +0100 Subject: [PATCH 06/25] fix cd in setup.bat --- setup.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.bat b/setup.bat index deda14f..d55bd98 100644 --- a/setup.bat +++ b/setup.bat @@ -93,13 +93,15 @@ if %BUILD_PERFORMANCE_TESTING% == ON ( @REM ============================================================ +set YAGIT_DIR=%cd:\=/% if %BUILD_DOCUMENTATION% == ON ( echo: echo BUILDING DOCUMENTATION... cd docs doxygen call make.bat html - echo DOCUMENTATION MAIN PAGE: %cd:\=/%/docs/build/html/index.html + echo DOCUMENTATION MAIN PAGE: %YAGIT_DIR%/docs/build/html/index.html + cd .. ) From 96d96441ccacaf645dbbb280a566da51c3687e5a Mon Sep 17 00:00:00 2001 From: michal367 Date: Sat, 23 Mar 2024 20:14:45 +0100 Subject: [PATCH 07/25] add installation instructions in documentation --- docs/source/_static/css/style.css | 18 +++ docs/source/gamma_index.rst | 4 +- docs/source/installation.rst | 220 ++++++++++++++++++++++++++++++ 3 files changed, 240 insertions(+), 2 deletions(-) diff --git a/docs/source/_static/css/style.css b/docs/source/_static/css/style.css index f50d8b5..c246b75 100644 --- a/docs/source/_static/css/style.css +++ b/docs/source/_static/css/style.css @@ -41,6 +41,15 @@ ul.list li > blockquote { margin: 0 0 5px 0; } +.code { + margin-top: -18px; +} + +code { + color: #9b2f5f !important; + font-weight: 700; +} + table.center-headers th { text-align: center; vertical-align: middle; @@ -50,6 +59,14 @@ table.right-align-vals td:not(:first-child) { text-align: right; } +table.wrap-text td { + white-space: normal; +} + +table.wrap-text td > p { + line-height: 1.2rem !important; +} + .math.math-left { text-align: left; } @@ -64,6 +81,7 @@ table.right-align-vals td:not(:first-child) { padding: 0; color: black !important; font-size: 95%; + font-weight: normal; } .list-math-right .math { diff --git a/docs/source/gamma_index.rst b/docs/source/gamma_index.rst index 8451f3d..5712e99 100644 --- a/docs/source/gamma_index.rst +++ b/docs/source/gamma_index.rst @@ -18,8 +18,8 @@ Its acceptance criterion is expressed in percentages [%]. It is related to globa .. rst-class:: list -- global - a predetermined value, typically the maximum value in the reference image, -- local - value at the current point in the reference image. +- global -- a predetermined value, typically the maximum value in the reference image, +- local -- value at the current point in the reference image. If DD value at :math:`\vec{r_r}` point is at most the value of acceptance criterion (e.g. 3%, global), then this point passes the test. Otherwise it fails. diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 11e4437..d6424a2 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -1,2 +1,222 @@ Installation ============ + +YAGIT requires C++ compiler that supports C++17 standard. +It also requires `CMake`_ (3.16 or newer). + +.. _CMake: https://cmake.org/ + +YAGIT uses these dependencies: + +.. rst-class:: list + +- `GDCM`_ -- used for reading DICOM files. +- `xsimd`_ -- used for vectorization. Used only when ``GAMMA_VERSION=SIMD`` or ``GAMMA_VERSION=THREADS_SIMD``. +- `GoogleTest`_ -- used for unit tests. Used only when ``BUILD_TESTING=ON``. + +.. _GDCM: https://github.com/malaterre/GDCM +.. _xsimd: https://github.com/xtensor-stack/xsimd +.. _GoogleTest: https://github.com/google/googletest + +You can build and install YAGIT using `setup script <#setup-script-install>`_ +or doing it `manually <#manual-install>`_. + + +Setup script installation +------------------------- + +To build YAGIT, simply run *setup.sh* or *setup.bat* script, depending on your operating system. + +On Linux, run: + +.. rst-class:: code +.. code-block:: + + ./setup.sh + +On Windows, run: + +.. rst-class:: code +.. code-block:: + + setup.bat + + +Note that, by default these scripts will only build the library but not install it. +To install it, configure the options appropriately in the script file. + +For now, the Windows script can only install dependencies using `Conan`_ package manager. + +.. _Conan: https://conan.io/ + + +Script options +~~~~~~~~~~~~~~ + +You can freely configure options that are in the script files. +Some of the options are the same as in the `CMake YAGIT options`_ section as they are simply passed to CMake. + +.. rst-class:: wrap-text +.. table:: + :align: center + + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | Option | Values | Default | Description | + +===============================+========================+=============+============================================+ + | ``BUILD_TYPE`` | ``Release``, ``Debug``,| ``Release`` | Build type used in the script | + | | ``RelWithDebInfo``, | | by CMake for single-target generators | + | | ``MinSizeRel`` | | (e.g. Makefile Generators) and | + | | | | by a compiler for multi-target generators | + | | | | (e.g. Visual Studio Generators). | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_SHARED_LIBS`` | ``ON``, ``OFF`` | ``OFF`` | Equivalent to the CMake YAGIT option. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``INSTALL_DEPENDENCIES`` | ``OFF``, ``LOCAL`` | ``LOCAL`` | Method of installing dependencies. | + | | ``GLOBAL``, ``CONAN`` | | Value ``OFF`` doesn't install any | + | | | | dependencies, and it assumes | + | | | | they are already installed system-wide. | + | | | | Value ``LOCAL`` installs dependencies | + | | | | locally to *build/deps* directory. | + | | | | Value ``GLOBAL`` installs dependencies | + | | | | system-wide. It requires admin privileges. | + | | | | Value ``CONAN`` installs dependencies | + | | | | using `Conan`_ package manager. | + | | | | It requires installed Conan. | + | | | | This option is only availble in *setup.sh*.| + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``GAMMA_VERSION`` | ``SEQUENTIAL``, | ``THREADS`` | Equivalent to the CMake YAGIT option. | + | | ``THREADS``, | | | + | | ``SIMD``, | | | + | | ``THREADS_SIMD`` | | | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``SIMD_EXTENSION`` | ``DEFAULT``, | ``DEFAULT`` | Equivalent to the CMake YAGIT option. | + | | ``SSE2``, ``SSE3``, | | | + | | ``SSSE3``, ``SSE4.1``, | | | + | | ``SSE4.2``, ``AVX``, | | | + | | ``AVX2``, ``AVX512``, | | | + | | ``NATIVE`` | | | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``ENABLE_FMA`` | ``ON``, ``OFF`` | ``OFF`` | Equivalent to the CMake YAGIT option. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_EXAMPLES`` | ``ON``, ``OFF`` | ``ON`` | Equivalent to the CMake YAGIT option. | + | | | | Additionally it runs examples. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_TESTING`` | ``ON``, ``OFF`` | ``OFF`` | Equivalent to the CMake YAGIT option. | + | | | | Additionally it runs unit tests. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_PERFORMANCE_TESTING`` | ``ON``, ``OFF`` | ``OFF`` | Equivalent to the CMake YAGIT option. | + | | | | Additionally it runs performance tests. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``REF_IMG`` | --- | --- | Path to a reference image | + | | | | used in examples and performance tests. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``EVAL_IMG`` | --- | --- | Path to an evaluated image | + | | | | used in examples and performance tests. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_DOCUMENTATION`` | ``ON``, ``OFF`` | ``OFF`` | Build documentation (*docs* directory). | + | | | | It requires `Doxygen`_, | + | | | | `Python`_ and libraries | + | | | | listed in *docs/requirements.txt*. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``INSTALL`` | ``ON``, ``OFF`` | ``OFF`` | Install YAGIT library. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``INSTALL_DIR`` | --- | ./yagit | Directory where YAGIT will be installed | + | | | | (only if ``INSTALL=ON``). | + | | | | If this is set to an empty string, | + | | | | then it will be installed system-wide. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + + +.. _Doxygen: https://www.doxygen.nl/ +.. _Python: https://www.python.org/ + + +Manual installation +------------------- + +If you prefer to perform the installation manually without the script, +then follow the commands below to build and install YAGIT on Linux. +Before running them, ensure that you have installed the dependencies +(e.g. using a package manager or by building from source). + +.. code-block:: + + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release + cmake --build . -j + sudo cmake --install . + + +If you don't have admin privileges or you want to install in a specific directory, then use this command: + +.. rst-class:: code +.. code-block:: + + cmake --install . --prefix + + +CMake YAGIT options +------------------- + +.. rst-class:: wrap-text +.. table:: + :align: center + + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | Option | Values | Default | Description | + +===============================+========================+=============+============================================+ + | ``BUILD_SHARED_LIBS`` | ``ON``, ``OFF`` | ``OFF`` | Build YAGIT as shared or static library. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_EXAMPLES`` | ``ON``, ``OFF`` | ``OFF`` | Build examples | + | | | | (*examples* directory). | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_TESTING`` | ``ON``, ``OFF`` | ``OFF`` | Build unit tests | + | | | | (*tests/unit* directory). | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``BUILD_PERFORMANCE_TESTING`` | ``ON``, ``OFF`` | ``OFF`` | Build performance tests | + | | | | (*tests/performance* directory). | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``GAMMA_VERSION`` | ``SEQUENTIAL``, | ``THREADS`` | Implementation of an algorithm calculating | + | | ``THREADS``, | | the gamma index. | + | | ``SIMD``, | | | + | | ``THREADS_SIMD`` | | | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``SIMD_EXTENSION`` | ``DEFAULT``, | ``DEFAULT`` | SIMD instruction set extension. | + | | ``SSE2``, ``SSE3``, | | Works only when ``GAMMA_VERSION`` is | + | | ``SSSE3``, ``SSE4.1``, | | set to ``SIMD`` or ``THREADS_SIMD``. | + | | ``SSE4.2``, ``AVX``, | | Value ``DEFAULT`` adds no additional | + | | ``AVX2``, ``AVX512``, | | compilation flags. | + | | ``NATIVE`` | | Value ``NATIVE`` adds *-march=native* | + | | | | if compiler supports it. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + | ``ENABLE_FMA`` | ``ON``, ``OFF`` | ``OFF`` | Enable fused multiply-add (FMA) | + | | | | when building YAGIT library. | + +-------------------------------+------------------------+-------------+--------------------------------------------+ + +To use these options, pass them to CMake during configuration using ``-D
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

1BB7=Iz9uMl`D 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ĢPbwyV*rzGrA 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 bL%)STn7I@Qx%|(KPXBxEe}-*9fBpDBLP8Ue literal 0 HcmV?d00001 diff --git a/docs/source/index.rst b/docs/source/index.rst index f52f9aa..3a37af6 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,6 +11,7 @@ Yet Another Gamma Index Tool documentation parameters input_and_output_data data_representation + performance .. toctree:: diff --git a/docs/source/introduction.rst b/docs/source/introduction.rst index 6b77de3..1d5f8e6 100644 --- a/docs/source/introduction.rst +++ b/docs/source/introduction.rst @@ -23,115 +23,60 @@ Most important features of YAGIT are: - linear, bilinear, and trilinear interpolation of data. -Performance ------------ - -The performance of YAGIT has been compared with the performance of `FRED`_ and `PyMedPhys`_. -The gamma index module of FRED has been tested using the `FRED tools`_ library, -which calls functions of that module internally. - -.. _FRED: https://www.fred-mc.org/ -.. _FRED tools: https://github.com/jasqs/FREDtools -.. _PyMedPhys: https://github.com/pymedphys/pymedphys +Simple example +-------------- -Performance tests have been executed on a machine with an AMD Ryzen 7 5800H processor, -which has a clock speed of 3.2 GHz and features 8 cores and 16 threads. The machine has 16 GB of RAM DDR4 3200 MHz. +Below is a fragment of a program that calculates the 2D gamma index and saves the result to a file. -It has been tested on Windows 11 Home 64-bit (version 22H2) operating system with WSL2 and Ubuntu 22.04.2 LTS. -FRED's gamma index module requires Linux, so all tools have been tested on WSL2 to maintain an identical environment. +.. code-block:: c++ -This system contains gcc and g++ compilers in version 11.4.0 with glibc 2.35 and libstdc++ 3.4.30, CMake 3.22.1, -and Python 3.10.12. + // read a reference image and an evaluated image from DICOM files + const auto ref2d = yagit::DataReader::readRTDoseDicom("img_ref2d.dcm"); + const auto eval2d = yagit::DataReader::readRTDoseDicom("img_eval2d.dcm"); -Tested versions of tools are: + // set gamma index parameters + yagit::GammaParameters params; + params.ddThreshold = 3.0; // [%] + params.dtaThreshold = 3.0; // [mm] + params.normalization = yagit::GammaNormalization::Global; + params.globalNormDose = ref2d.max(); + params.doseCutoff = 0; + params.maxSearchDistance = 10; // [mm] + params.stepSize = params.dtaThreshold / 10; // [mm] -.. rst-class:: list + // calculate the 2D gamma index using the Wendling method + const auto gamma = yagit::gammaIndex2D(ref2d, eval2d, params); -- YAGIT built from 51d34ae commit (05.09.2023) using CMake tool in Release mode and g++ compiler, -- FRED tools 0.6.79 with libFredGI.so 4.2, -- PyMedPhys 0.39.3. - -Two 3D DICOM images have been used in the tests. -They have been generated using irradiation plans from DCPT LET-measurements 2022 [1]_. -The reference image has dimensions of 198x198x198, while the evaluated image has dimensions of 200x200x200. -They are very similar (GIPR ~ 99%). - - -.. rst-class:: center-headers right-align-vals -.. table:: - :align: center - - +------------+----------------------------------------------------------------+ - | | Average time [s] | - | +-------------------------+-------------------------+------------+ - | DD/DTA | YAGIT | FRED | PyMedPhys | - | +------------+------------+------------+------------+------------+ - | | 1 thread | 16 threads | 1 thread | 16 threads | 1 thread | - +============+============+============+============+============+============+ - | Wendling method -- 3D | - +------------+------------+------------+------------+------------+------------+ - | 3\%G/3mm | 3.022 | 0.363 | 7.991 | 1.078 | 200.822 | - +------------+------------+------------+------------+------------+------------+ - | 2\%G/2mm | 8.637 | 1.021 | 21.472 | 2.598 | 445.684 | - +------------+------------+------------+------------+------------+------------+ - | 3\%L/3mm | 3.534 | 0.427 | 9.145 | 1.238 | 224.542 | - +------------+------------+------------+------------+------------+------------+ - | 2\%L/2mm | 9.618 | 1.183 | 23.895 | 2.878 | 498.518 | - +------------+------------+------------+------------+------------+------------+ - -The table shows the comparison of calculation times between YAGIT, FRED, and PyMedPhys. -Other parameters: normalization dose = max value in the reference image, -dose cutoff = 5% of max value in the reference image, search radius = 3*DTA, step size = DTA/10. - -When using 16 threads, YAGIT and FRED speed up about 8 times. -It is 8, not 16, because the CPU on which it has been run has 8 cores. -16 threads have been used to achieve better speedup due to simultaneous multithreading (SMT). -PyMedPhys has been tested only with one thread because it doesn't support multithreaded gamma index. - - -.. figure:: _static/images/yfp_1thread.svg - :alt: Single-threaded gamma index using Wendling method - :align: center + // save the gamma index image to a MetaImage file + yagit::DataWriter::writeToMetaImage(gamma, "gamma2d.mha"); -The first image shows differences in computation times between single-threaded YAGIT, FRED, and PyMedPhys. -YAGIT is about 2.5 times faster than FRED and about 50--70 times faster than PyMedPhys. +The image below shows a 2D reference image, a 2D evaluated image, and their comparison. +The gamma index (3%G/3mm) has been calculated using the code above. +In addition, the difference between the evaluated image and the reference image is also shown. -.. figure:: _static/images/yf_16threads.svg - :alt: Multi-threaded gamma index using Wendling method +.. figure:: _static/images/introduction_example.jpg + :alt: Reference image, Evaluated image, Dose difference (eval - ref) image, Gamma index (3%G/3mm) image :align: center -The second image shows differences in computation times between multi-threaded YAGIT and FRED. -YAGIT is about 2--3 times faster than FRED. + +More examples with complete code are presented on the :doc:`examples ` subpage. -.. rst-class:: center-headers right-align-vals -.. table:: - :align: center +Performance +----------- - +------------+--------------------------------------+ - | | GIPR [%] | - | DD/DTA +------------+------------+------------+ - | | YAGIT | FRED | PyMedPhys | - +============+============+============+============+ - | Wendling method -- 3D | - +------------+------------+------------+------------+ - | 3\%G/3mm | 99.960 | 99.960 | 99.967 | - +------------+------------+------------+------------+ - | 2\%G/2mm | 99.144 | 99.145 | 99.232 | - +------------+------------+------------+------------+ - | 3\%L/3mm | 99.959 | 99.959 | 99.966 | - +------------+------------+------------+------------+ - | 2\%L/2mm | 99.049 | 99.050 | 99.025 | - +------------+------------+------------+------------+ +Calculating the 3D gamma index for large images can take a long time, +so an efficient implementation of the algorithm is crucial. +YAGIT is the fastest free library for calculating the gamma index. -In this table, it can be noticed that the values of GIPR in YAGIT and FRED are nearly identical. -However, PyMedPhys returns values that slightly differ from the other two tools. +.. figure:: _static/images/yf_16threads.svg + :alt: Multi-threaded gamma index using Wendling method + :align: center + A sample comparison of computation times for YAGIT and `FRED`_. + The gamma index has been calculated for two 3D images with dimensions of approximately 200x200x200 and GIPR ~ 99%. -References ----------- +.. _FRED: https://www.fred-mc.org/ -.. [1] N. Bassler, L. Grzanka, J. B. Christensen, J. Villads, H. Brkić, Y. Perrot, L. Pasariček, and M. Romero-Expósito, - “MC particle transport simulations for the 2022 LET-measurements at DCPT: v1.0.0”. - Zenodo, February 09, 2024. doi: 10.5281/zenodo.10641085. +More information about the performance of YAGIT is presented on the :doc:`performance ` subpage. diff --git a/docs/source/performance.rst b/docs/source/performance.rst new file mode 100644 index 0000000..fcf0090 --- /dev/null +++ b/docs/source/performance.rst @@ -0,0 +1,121 @@ +Performance +=========== + +The performance of YAGIT has been compared with the performance of `FRED`_ and `PyMedPhys`_. +The gamma index module of FRED has been tested using the `FRED tools`_ library, +which calls functions of that module internally. + +.. _FRED: https://www.fred-mc.org/ +.. _FRED tools: https://github.com/jasqs/FREDtools +.. _PyMedPhys: https://github.com/pymedphys/pymedphys + +Performance tests have been executed on a machine with an AMD Ryzen 7 5800H processor, +which has a clock speed of 3.2 GHz and features 8 cores and 16 threads. The machine has 16 GB of RAM DDR4 3200 MHz. + +It has been tested on Windows 11 Home 64-bit (version 22H2) operating system with WSL2 and Ubuntu 22.04.2 LTS. +FRED's gamma index module requires Linux, so all tools have been tested on WSL2 to maintain an identical environment. + +This system contains gcc and g++ compilers in version 11.4.0 with glibc 2.35 and libstdc++ 3.4.30, CMake 3.22.1, +and Python 3.10.12. + +Tested versions of tools are: + +.. rst-class:: list + +- YAGIT built from 51d34ae commit (05.09.2023) using CMake tool in Release mode and g++ compiler, +- FRED tools 0.6.79 with libFredGI.so 4.2, +- PyMedPhys 0.39.3. + +Two 3D DICOM images have been used in the tests. +They have been generated using irradiation plans from DCPT LET-measurements 2022 [1]_. +The reference image has been created in Eclipse TPS using an analytical dose calculation algorithm for proton therapy, +and the evaluated image has been created in Topas using Monte Carlo (MC) simulation. +The reference image has dimensions of 198x198x198, while the evaluated image has dimensions of 200x200x200. +The GIPR is quite high (~ 99%), which affects the computation time in the case of the tested Wendling method -- +in general, the higher the GIPR, the faster the gamma index is calculated. + + +Performance comparison +---------------------- + +.. rst-class:: center-headers right-align-vals +.. table:: + :align: center + + +------------+----------------------------------------------------------------+ + | | Average time [s] | + | +-------------------------+-------------------------+------------+ + | DD/DTA | YAGIT | FRED | PyMedPhys | + | +------------+------------+------------+------------+------------+ + | | 1 thread | 16 threads | 1 thread | 16 threads | 1 thread | + +============+============+============+============+============+============+ + | Wendling method -- 3D | + +------------+------------+------------+------------+------------+------------+ + | 3\%G/3mm | 3.022 | 0.363 | 7.991 | 1.078 | 200.822 | + +------------+------------+------------+------------+------------+------------+ + | 2\%G/2mm | 8.637 | 1.021 | 21.472 | 2.598 | 445.684 | + +------------+------------+------------+------------+------------+------------+ + | 3\%L/3mm | 3.534 | 0.427 | 9.145 | 1.238 | 224.542 | + +------------+------------+------------+------------+------------+------------+ + | 2\%L/2mm | 9.618 | 1.183 | 23.895 | 2.878 | 498.518 | + +------------+------------+------------+------------+------------+------------+ + +The table shows the comparison of calculation times between YAGIT, FRED, and PyMedPhys. +Other parameters: normalization dose = max value in the reference image, +dose cutoff = 5% of max value in the reference image, search radius = 3*DTA, step size = DTA/10. + +When using 16 threads, YAGIT and FRED speed up about 8 times. +It is 8, not 16, because the CPU on which it has been run has 8 cores. +16 threads have been used to achieve better speedup due to simultaneous multithreading (SMT). +PyMedPhys has been tested only with one thread because it doesn't support multithreaded gamma index. + + +.. figure:: _static/images/yfp_1thread.svg + :alt: Single-threaded gamma index using Wendling method + :align: center + +The first image shows differences in computation times between single-threaded YAGIT, FRED, and PyMedPhys. +YAGIT is about 2.5 times faster than FRED and about 50--70 times faster than PyMedPhys. + + +.. figure:: _static/images/yf_16threads.svg + :alt: Multi-threaded gamma index using Wendling method + :align: center + +The second image shows differences in computation times between multi-threaded YAGIT and FRED. +YAGIT is about 2--3 times faster than FRED. + + +GIPR comparison +---------------------- + +.. rst-class:: center-headers right-align-vals +.. table:: + :align: center + + +------------+--------------------------------------+ + | | GIPR [%] | + | DD/DTA +------------+------------+------------+ + | | YAGIT | FRED | PyMedPhys | + +============+============+============+============+ + | Wendling method -- 3D | + +------------+------------+------------+------------+ + | 3\%G/3mm | 99.960 | 99.960 | 99.967 | + +------------+------------+------------+------------+ + | 2\%G/2mm | 99.144 | 99.145 | 99.232 | + +------------+------------+------------+------------+ + | 3\%L/3mm | 99.959 | 99.959 | 99.966 | + +------------+------------+------------+------------+ + | 2\%L/2mm | 99.049 | 99.050 | 99.025 | + +------------+------------+------------+------------+ + +In this table, it can be noticed that the values of GIPR in YAGIT and FRED are nearly identical. +However, PyMedPhys returns values that slightly differ from the other two tools. + + +References +---------- + +.. [1] N. Bassler, L. Grzanka, J. B. Christensen, J. Villads, H. Brkić, Y. Perrot, L. Pasariček, and M. Romero-Expósito, + “MC particle transport simulations for the 2022 LET-measurements at DCPT: v1.0.0”. + Zenodo, February 09, 2024. doi: 10.5281/zenodo.10641085. From 03967e385462b24c0bed3d8397e63ea5a217d999 Mon Sep 17 00:00:00 2001 From: michal367 Date: Tue, 9 Apr 2024 20:21:20 +0200 Subject: [PATCH 23/25] add script for plotting introduction example --- docs/other/plot_introduction_example.py | 133 ++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 docs/other/plot_introduction_example.py diff --git a/docs/other/plot_introduction_example.py b/docs/other/plot_introduction_example.py new file mode 100644 index 0000000..d4dce3d --- /dev/null +++ b/docs/other/plot_introduction_example.py @@ -0,0 +1,133 @@ +############################################################################################# +# Copyright (C) 2024 'Yet Another Gamma Index Tool' Developers. +# +# This file is part of 'Yet Another Gamma Index Tool'. +# +# 'Yet Another Gamma Index Tool' is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# 'Yet Another Gamma Index Tool' is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with 'Yet Another Gamma Index Tool'. If not, see . +############################################################################################# + +# Python script for plotting image that is used on Introduction subpage of documentation. +# It consists of 4 images: a reference image, an evaluated image, a dose difference image, and a gamma index image. + +import matplotlib.pyplot as plt +import numpy as np +import SimpleITK as sitk +from matplotlib.colors import LinearSegmentedColormap +from mpl_toolkits.axes_grid1 import make_axes_locatable + + +# ============================================== +titles = ["Reference image", "Evaluated image", "Dose difference (eval - ref) image", "Gamma index (3%G/3mm) image"] +image_files = ["img_ref2d.mha", "img_eval2d.mha", "dd.mha", "gamma2d.mha"] +image_types = ["dose", "dose", "dd", "gamma"] +colorbar_labels = ["dose [Gy]", "dose [Gy]", "dose diff [Gy]", "gamma index"] + +# set vmin and vmax manually +dose_min, dose_max = 0, 2.8 +dd_min, dd_max = -0.5, 0.9 +gamma_min, gamma_max = 0, 1.6 # gamma_max >= 1.1 + + +# ============================================== + +def val_to_perc(val, min, max): + percent = (val - min) / (max - min) + if percent < 0 or percent > 1: + raise Exception("percent outside [0,1] range") + return percent + + +dose_colors = [(0, 0, 0), (0, 0, 0.6), (0, 0.5, 1), (0, 1, 1), + (0.5, 1, 0.5), (1, 1, 0), (1, 0.5, 0), (1, 0, 0), (0.5, 0, 0)] +dose_positions = np.linspace(0, 1, len(dose_colors)) +dose_cmap = LinearSegmentedColormap.from_list("dose_cmap", list(zip(dose_positions, dose_colors))) + +dd_colors = [(0, "#cc99ff"), + (val_to_perc(-0.25, dd_min, dd_max), "#8000ff"), + (val_to_perc(-0.05, dd_min, dd_max), "#4d0099"), + (val_to_perc(0, dd_min, dd_max), "black"), + (val_to_perc(0.05, dd_min, dd_max), "#004d99"), + (val_to_perc(0.25, dd_min, dd_max), "#0080ff"), + (1, "#cce6ff")] +dd_cmap = LinearSegmentedColormap.from_list("dd_cmap", dd_colors) + +gamma_colors = [(0, "#062e03"), + (val_to_perc(0.3, gamma_min, gamma_max), "green"), + (val_to_perc(0.6, gamma_min, gamma_max), "yellowgreen"), + (val_to_perc(0.999, gamma_min, gamma_max), "orange"), + (val_to_perc(1, gamma_min, gamma_max), "#ff0000"), + (1, "#660000")] +gamma_cmap = LinearSegmentedColormap.from_list("gamma_cmap", gamma_colors) + + +# ============================================== + +def read_metaimage_file(file_path): + image = sitk.ReadImage(file_path) + image_array = sitk.GetArrayFromImage(image)[0] # extract only the first frame + + size = image.GetSize() + origin = image.GetOrigin() + spacing = image.GetSpacing() + + return image_array, size, origin, spacing + +longest_title_len = len(max(titles, key=len)) + +def print_image_info(title, image_array, size, origin, spacing): + print(f"{title:<{longest_title_len + 2}}", + "size:", size[0:2], " origin:", origin[0:2], " spacing:", spacing[0:2], + " min:", image_array.min(), " max:", image_array.max()) + + +fig, axes = plt.subplots(2, 2, figsize=(9, 8)) + +for i, ax in enumerate(axes.flat): + image_array, size, origin, spacing = read_metaimage_file(image_files[i]) + print_image_info(titles[i], image_array, size, origin, spacing) + + if image_types[i] == "dose": im = ax.imshow(image_array, cmap=dose_cmap, vmin=dose_min, vmax=dose_max) + elif image_types[i] == "dd": im = ax.imshow(image_array, cmap=dd_cmap, vmin=dd_min, vmax=dd_max) + elif image_types[i] == "gamma": im = ax.imshow(image_array, cmap=gamma_cmap, vmin=gamma_min, vmax=gamma_max) + else: im = ax.imshow(image_array, cmap="grey") + + # ax.axis("off") + x_ticks = [i for i in range(0, size[0], 32)] + y_ticks = [i for i in range(0, size[1], 32)] + x_ticklabels = [int(origin[0] + i*spacing[0]) for i in x_ticks] + y_ticklabels = [int(origin[1] + i*spacing[1]) for i in y_ticks] + ax.set_xticks(x_ticks, labels=x_ticklabels, fontsize=9) + ax.set_yticks(y_ticks, labels=y_ticklabels, fontsize=9) + ax.xaxis.tick_top() + + ax.set_ylabel("y [mm]") + ax.set_xlabel("x [mm]") + ax.xaxis.set_label_position("top") + + ax.set_title(titles[i], y=-0.135) + + divider = make_axes_locatable(ax) + cax = divider.append_axes("right", size="5%", pad=0.1) + fig.colorbar(im, cax=cax, label=colorbar_labels[i]) + + +# ============================================== +plt.subplots_adjust(left=0.07, right=0.93, + bottom=0.09, top=0.91, + wspace=0.34, hspace=0.34) + +# plt.savefig("introduction_example.png", format="png") +plt.savefig("introduction_example.jpg", format="jpg") + +plt.show() From a2ad3738d5f835150b6eee124b5da0d02ab291c0 Mon Sep 17 00:00:00 2001 From: michal367 Date: Tue, 9 Apr 2024 21:02:06 +0200 Subject: [PATCH 24/25] doc fixes --- docs/source/algorithms.rst | 4 ++-- docs/source/gamma_index.rst | 13 ++++++------- docs/source/input_and_output_data.rst | 11 ++++++----- docs/source/parameters.rst | 6 +++--- docs/source/performance.rst | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/source/algorithms.rst b/docs/source/algorithms.rst index 86d675d..b09ad68 100644 --- a/docs/source/algorithms.rst +++ b/docs/source/algorithms.rst @@ -65,11 +65,11 @@ for precise results. The values at points that do not exist in the evaluated image are determined on-the-fly using interpolation (e.g., bilinear for 2D and trilinear for 3D). -Some optimizations of on-the-fly interpolation can be achieved by resampling the evaluated image onto the grid +Some optimizations of the on-the-fly interpolation can be achieved by resampling the evaluated image onto the grid of the reference image before initiating gamma index calculations. However, YAGIT doesn't perform this step due to two reasons that can lead to less accurate results. Firstly, this approach involves double interpolation -- -first during the resampling process and second during on-the-fly interpolation. +first during the resampling process and second during the on-the-fly interpolation. The second interpolation uses interpolated points from the first interpolation, which can result in less accurate results. Another reason is the fact that the evaluated image we start with can have a denser grid than the reference image, diff --git a/docs/source/gamma_index.rst b/docs/source/gamma_index.rst index 6146944..acd2dbb 100644 --- a/docs/source/gamma_index.rst +++ b/docs/source/gamma_index.rst @@ -24,8 +24,8 @@ Its acceptance criterion is expressed in percentages [%]. It is relative to glob If the DD value at :math:`\vec{r_r}` point is less than or equal to the value of the acceptance criterion (e.g., 3%, global), then this point passes the test. Otherwise, it fails. -The drawback of this test is that it struggles with high gradient regions, as small shifts in the spatial -distribution of radiation doses can result in large DD values. +The drawback of this test is that it struggles with high-gradient regions, as small shifts in the spatial +distribution of radiation dose can result in large DD values. Distance To Agreement @@ -43,15 +43,15 @@ Its acceptance criterion is expressed in millimeters [mm]. If the DTA value at :math:`\vec{r_r}` point is less than or equal to the value of the acceptance criterion (e.g., 3 mm), then this point passes the test. Otherwise, it fails. -The drawback of this method is that it encounters difficulties in low gradient areas, -where minor dose misalignments may require a large search radius (large DTA value). +The drawback of this method is that it encounters difficulties in low-gradient areas, +where minor dose misalignments may require a large search radius, resulting in a large DTA value. Gamma function and gamma index ------------------------------ To overcome the disadvantages of DD and DTA, the gamma index was developed. -Before calculating it, it is necessary to first determine the gamma function, which combines DD and DTA. +First, it is necessary to calculate the gamma function, which combines DD and DTA. In the case of the DTA component, only the distance is calculated without taking into account the condition of equal doses. @@ -83,8 +83,7 @@ that is, how many gamma index values are less than or equal to 1. .. math:: GIPR = \frac{| \{\gamma(\vec{r_r}) \le 1\} |}{| \{\gamma(\vec{r_r})\} |} -When this value is sufficiently high (e.g., 90%), it can be considered that -the two compared images are sufficiently similar to each other. +If this value is sufficiently high (e.g., at least 90%), the evaluated image is acceptable. Flow diagram diff --git a/docs/source/input_and_output_data.rst b/docs/source/input_and_output_data.rst index 9f78040..1105030 100644 --- a/docs/source/input_and_output_data.rst +++ b/docs/source/input_and_output_data.rst @@ -9,11 +9,12 @@ Input data ---------- The input data for the gamma index calculation algorithm consists of two-dimensional or three-dimensional images -containing the distribution of radiation dose. -Two images are needed for comparison: the reference image (also known as measured) -and the evaluated image (also known as calculated or planned). -Typically, the reference image is obtained from measurements of the actual radiation dose by appropriate detectors. -Meanwhile, the evaluated image is usually the image generated by the Treatment Planning System (TPS). +containing a spatial distribution of radiation dose. +Two images are needed for comparison: a reference image and an evaluated image. +Typically, the reference image is a measured image, +which is obtained from measurements of an actual radiation dose by appropriate detectors. +Meanwhile, the evaluated image is usually a calculated/planned image, +which is an image generated by a treatment planning system (TPS). .. figure:: _static/images/reference_image_example.png :alt: Example of a reference image diff --git a/docs/source/parameters.rst b/docs/source/parameters.rst index 8715c03..d01b900 100644 --- a/docs/source/parameters.rst +++ b/docs/source/parameters.rst @@ -25,10 +25,10 @@ Frequently used parameters in radiotherapy are values within the range of 1--3% with global normalization and 1--3 mm for the acceptance criterion DTA. These parameters are shortened, e.g., 3%G/3mm (3% DD criterion, global normalization, 3 mm DTA criterion). -In YAGIT, in the case of local normalization, when the dose value at the current reference point is 0, +In YAGIT, in the case of local normalization, if the dose value at the current reference point is 0, that point is skipped to avoid division by zero. -Similarly, when a reference point has a value below the dose cutoff value, such a point is also skipped. -In both cases, the gamma index value will be set to NaN. +Similarly, if a reference point has a value below the dose cutoff value, such a point is also skipped. +In both cases, the gamma index value is set to NaN. When calculating GIPR, NaN values are not taken into account in either the numerator or the denominator. diff --git a/docs/source/performance.rst b/docs/source/performance.rst index fcf0090..af06075 100644 --- a/docs/source/performance.rst +++ b/docs/source/performance.rst @@ -29,7 +29,7 @@ Tested versions of tools are: Two 3D DICOM images have been used in the tests. They have been generated using irradiation plans from DCPT LET-measurements 2022 [1]_. The reference image has been created in Eclipse TPS using an analytical dose calculation algorithm for proton therapy, -and the evaluated image has been created in Topas using Monte Carlo (MC) simulation. +and the evaluated image has been created in TOPAS using Monte Carlo (MC) simulation. The reference image has dimensions of 198x198x198, while the evaluated image has dimensions of 200x200x200. The GIPR is quite high (~ 99%), which affects the computation time in the case of the tested Wendling method -- in general, the higher the GIPR, the faster the gamma index is calculated. From b4953f20019b7c7cf5a930ae985756dc9ede1e70 Mon Sep 17 00:00:00 2001 From: michal367 Date: Tue, 9 Apr 2024 21:13:09 +0200 Subject: [PATCH 25/25] fix typo --- .github/workflows/documentation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index d75318f..1bd65c2 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -5,7 +5,7 @@ on: types: [ published ] jobs: - documenation: + documentation: runs-on: ubuntu-latest steps: