Skip to content

Commit

Permalink
Fixed bugs: new version 2.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
brjdenis committed Nov 3, 2020
1 parent 2f70f4b commit 4522da5
Show file tree
Hide file tree
Showing 7 changed files with 635 additions and 576 deletions.
5 changes: 3 additions & 2 deletions docs/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@ Changelog


***************
Version 2.1.0
Version 2.0.1
***************

Bug fixes
==========

* (Planar imaging) `#8 <https://github.com/brjdenis/pyqaserver/issues/8>`_ Reference image analysis did not work.
* (Catphan) `#9 <https://github.com/brjdenis/pyqaserver/issues/9>`_ Unable to save results to the database because of an error in the passing of variable to html.

* (Winston-Lutz) `#10 <https://github.com/brjdenis/pyqaserver/issues/10>`_ The Winkler diagram was wrong. For gantry angles 180 and 90 the x axis inversion was not taken into account.
* (plotly.jy) Plotting in certain situations did not work in Chrome. Removed "scattergl".

***************
Version 2.0.0
Expand Down
13 changes: 8 additions & 5 deletions docs/source/winstonlutz.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ This way was adapted for Elekta machines, but it will work in general. Four test

- **Couch rotation only**

Set the Test type to **Couch only**. Put gantry to 0 and acquire images of the BB at different couch angles. The analysis is similar to the one above, only that this time the MV isocenter is missing from the image, and the software will assume the CAX as the true isocenter.
Set the Test type to **Couch only**. Put gantry to 0 and acquire images of the BB at different couch angles. The analysis is similar to the one above, only that this time the MV isocenter is missing from the image. For each point in the scatter diagram, the EPID center is considered static. The CAX may wobble a bit, depending on the stability of the beam.

- **Collimator rotation only**

Set the Test type to **Collimator only**. If your collimator has some asymmetry or a significant wobble, you can estimate the radius of this with this test. Put the BB inside the field and acquire many images at different collimator angles.
Set the Test type to **Collimator only**. If your collimator has some asymmetry or a significant wobble, you can estimate the radius of this with this test. Put the BB inside the field and acquire many images at different collimator angles. The BB is considered as static and all CAX scatter points are moving around.


Options
Expand Down Expand Up @@ -194,13 +194,16 @@ Interpreting results
When you do the *Gnt/coll + couch rotation* test, the software will calculate the position of the couch axis of rotation with respect to the average MV isocenter of the linac. Ideally, they should match.

**Scatter diagram**
The BB is in the center of the diagram when only blue dots are shown. Blue dots represent field CAX. When *Show EPID2CAX on scatter plot?* is checked, additional yellow dots are displayed that represent the center of the EPID with respect to the field CAX, which is in the center of the diagram. The green circle corresponds to the normal tolerance, the red circle is the action tolerance. Both are defined in the configuration.
The BB is in the center of the diagram when only blue dots are shown. Blue dots represent field CAX. When *Show EPID2CAX on scatter plot?* is checked, additional yellow dots are displayed that represent the center of the EPID with respect to the field CAX, which is in the center of the diagram. The green circle corresponds to the normal tolerance, the red circle is the action tolerance. This diagram shows CAX points on the EPID plane, not in 3D space.

**Gantry 2D CAX projection**
The intersection of beam paths with the LAT-VRT plane (Winkler et al diagrams). Solid lines are beam paths at gantry angles 0 and 90. Dashed lines are beam paths at gantry angles 180 and 270. BB is in the center of the diagram. The cross represents the gantry axis of rotation.
(Winkler et al) The intersection of beam paths with the LAT-VRT plane (Winkler et al diagrams). Solid lines are beam paths at gantry angles 0 and 90. Dashed lines are beam paths at gantry angles 180 and 270. BB is in the center of the diagram. Purple lines are averages over opposing collimator angles. The cross represents the gantry axis of rotation.

**Couch diagram**
When the right test type is chosen, this diagram will appear. The diagram's coordinate system is that of the EPID. The blue square is the average MV isocenter calculated from first 8 images. The first red dot is the reference image of the BB that is used to define the position of the average MV isocenter. Other red dots are BB positions projected onto the EPID at different couch angles. The cross is the center of the fitted circle which represents the couch axis of rotation. Small blue dots are CAX. They may change a bit because of errors in beam steering and MLC positioning between images, particularly on Elekta linacs.
The diagram's coordinate system is that of the EPID. The blue square is the average MV isocenter calculated from first 8 images. The first red dot is the reference image of the BB that is used to define the position of the average MV isocenter. Other red dots are BB positions projected onto the EPID at different couch angles. The cross is the center of the fitted circle which represents the couch axis of rotation. Small blue dots are CAX. They may change a bit because of errors in beam steering and MLC positioning between images, particularly on Elekta linacs. The "couch only" test gives a similar diagram, except that the MV isocenter is missing.

**Collimator diagram**
Similar to couch diagram, except that the central point and reference is the BB not the EPID center.

**Status**
You can get either Passed, Borderline or Failed status. If you are using 4 or 8 images, then you have the option of applying the tolerance to any each image in the series, or to the section *Collimator asymmetry* where radius R is calculated by averaging over collimator pairs. See your configuration.
Expand Down
2 changes: 1 addition & 1 deletion pyqaserver/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "2.0.0"
__version__ = "2.0.1"
6 changes: 5 additions & 1 deletion pyqaserver/views/winston_lutz_results_collimatoronly.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,13 @@
<h3 class="panel-title">Estimated collimator wobble</h3>
</div>
<div class="panel-body">
Radius:
</div>
<table class="table table-borderless">
<tr>
<td>
Radius
</td>
</tr>
<tr>
<td>
{{round(iso_size, 2)}} mm
Expand Down
12 changes: 10 additions & 2 deletions pyqaserver/views/winston_lutz_results_couchonly.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,13 @@
<h3 class="panel-title">Estimated BB wobble</h3>
</div>
<div class="panel-body">
Radius:
</div>
<table class="table table-borderless">
<tr>
<td>
Radius
</td>
</tr>
<tr>
<td>
{{round(iso_size, 2)}} mm
Expand All @@ -126,9 +130,13 @@
<h3 class="panel-title">Estimated couch axis to CAX distance</h3>
</div>
<div class="panel-body">
Distance:
</div>
<table class="table table-borderless">
<tr>
<td>
Distance
</td>
</tr>
<tr>
<td>
{{round( ((cax_avg[0]-iso_position[0])**2 + (cax_avg[1]-iso_position[1])**2)**0.5 , 2)}} mm
Expand Down
8 changes: 6 additions & 2 deletions pyqaserver/views/winston_lutz_results_gntcollcouch.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -469,14 +469,18 @@
<h3 class="panel-title">Estimated BB wobble (couch rotation)</h3>
</div>
<div class="panel-body">
Radius:

</div>
<table class="table table-borderless">
<tr>
<td>
Radius
</td>
</tr>
<tr>
<td>
{{round(couch_wobble, 2)}} mm
</td>

</tr>

</table>
Expand Down
Loading

0 comments on commit 4522da5

Please sign in to comment.